京东6.18大促主会场领京享红包更优惠

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7616|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道3 g1 Q. @3 a$ V

5 Q) p9 c+ M3 O" T/ H, M6 e[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。
( ?; C' e/ m' C5 G1 x实验环境2 g/ I2 g4 ^: H. h: q; D
; D& `- A/ y( s8 b, O+ H
[color=#333333 !important]CentOS Linux 两台7 J0 O: ?' E+ \
创建DNS服务器
" A$ G; l/ L/ N  Q0 ?# ~
4 K2 Z( w) h5 @4 B* W. W; o1.安装bind" c# T8 x+ m, b" ~
! Q* l9 ^, Q+ T) K+ z% I: j+ `
[color=#333333 !important]yum install bind*) D4 B& o0 j  M) s. u) Y
2.配置named文件8 z$ f; t& @# l- x2 o0 Z' J

- I" h6 g' v& l4 H
[color=#333333 !important]修改/etc/named.conf+ N) q2 t4 d9 F/ `0 I+ M& D  p9 ]) j
[color=#333333 !important]将下图中选中的地方改为any8 G; u. |3 Z" W9 V4 s( S
[color=#333333 !important]$ B" T) u. n3 ~
3. 设置NS记录,A记录. ?  |0 A6 z! o: u2 y9 W! {1 q4 v) n
; k( b) J' v8 m4 f/ c4 Q3 L
[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件; U& J4 d2 ^. ^+ @2 z" ]
[color=#333333 !important]
* _6 J5 ]: g) p) k) r1 n! _
[color=#333333 !important]增加正向解析记录
3 S& i, P+ I/ ]: J[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字0 ]& L$ l) j4 ?8 g
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel
! v8 }. V# ~, J% N
[color=#333333 !important]修改文件如下
% B" ~( \- R- g& K! b/ `7 T5 {5 A[color=#333333 !important]添加NS记录,A记录
/ L0 @. N' @/ _" B4 g" r[color=#333333 !important]
) T: y2 A8 G. x* U6 _3 a$ g[color=#333333 !important]添加bind为自启动服务
5 C3 D. K( ^( l7 K
[color=#333333 !important]systemctl enablenamed.service
0 r+ i+ A  Q" f* u6 A% b+ R[color=#333333 !important]systemctl restartnamed.service
6 B- A" F! @: B
[color=#333333 !important]查看启动状态9 c" ^5 v5 K0 Z: U3 d" j
[color=#333333 !important]systemctl statusnamed.service
& ?& H4 V% N8 u& x6 S
[color=#333333 !important]6 M/ X+ Q: ?, P( q% \
[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F). m& m( s2 J8 N. o& m
Iodine9 m" {, G9 g6 Q3 X# @) U

3 a5 \  _. g0 ^9 r- ?& T, O[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。
0 q$ |$ ?+ H  F% u& H0 F安装; Z8 d  S. a3 ?

$ {, N9 u$ l6 @1 B) T; d[color=#333333 !important]下载地址:
* k3 A8 L# `+ Q6 ?6 @
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip
8 E; }  y( k$ H1 z* K' e
[color=#333333 !important]unzip 解压& h/ }5 T4 O2 Z0 T1 }
[color=#333333 !important]cd iodine-master4 }' B( ~9 v/ y, j4 C* z: C
[color=#333333 !important]make* @5 _0 x6 l- ~& n) l9 l
[color=#333333 !important]出现报错( \& T% e! y- M! R
[color=#333333 !important]5 i- L0 K; Q' D) p
[color=#333333 !important]yum -y install zlib-devel
+ O- E( P& n( H; P( ?[color=#333333 !important]make;make install/ r. b: q' \5 ~. p8 Z
[color=#333333 !important]安装完成
$ o) _) M. `1 m5 C; O7 m[color=#333333 !important]进入 bin& y! N8 {. ~. }9 X1 O0 @
[color=#333333 !important]iodined 服务器
/ k- d+ j( Q1 T$ S[color=#333333 !important]iodine 客户端
" x  m+ G  b4 `. {. Y5 _实验测试
) v3 {9 l6 Q6 i) X9 s8 T& T
" W* P: a: i1 m1 P8 n[color=#333333 !important]服务器
0 @9 a4 P3 S- p! T( a
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com
& t, A  z# p) r' l[color=#333333 !important]-f 前台显示,运行后一直在命令行等待
/ v0 v" \% [6 O: R[color=#333333 !important]-c 中继模式|直连模式% @# R+ W, U! n. _& B
[color=#333333 !important]-P 认证密码
! X( j  p! _! C' y- r
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。+ t7 E5 A8 ]5 r$ K9 p9 m# Y
[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。8 F- a4 U$ O& {2 E/ I
[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡
' P* t$ b1 e4 ^( m3 w[color=#333333 !important]0 ~- L- b0 g7 W
[color=#333333 !important]& D$ J: t% z7 x5 |
[color=#333333 !important]客户端$ t2 {: V6 t' v9 K# V/ ~3 `5 t
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com
, H( z2 ]8 W; J+ i% b; E[color=#333333 !important]-f 前台显示
! P; G) I- h. G# d+ q[color=#333333 !important]-P 认证密码& v' J) J0 |; u6 K/ J5 H% S8 ~
[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析
8 B; ^* T4 ~: N; ?" ?$ X! l
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。
$ X+ S' K; c6 p) ~[color=#333333 !important]
. o) n8 s. S$ `6 e- d# ~" C  }流量包分析7 i; a5 q7 L/ Q# Z

4 ^1 l( S  U. U( F
[color=#333333 !important]抓包3 ~. p% s6 v+ u6 X. Z% ]
[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap4 ]$ a; w6 [5 y+ ]
建立链接的包分析9 b7 C9 W0 t" l& Z

* L; S/ o7 g+ @+ [4 N- ], H[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包
- t9 G" M2 e# c9 i. B[color=#333333 !important]8 N( S5 `' Y: ~+ `
[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀
5 f9 G) A$ I- x/ R) T[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据
. {2 n4 r0 J6 t- W# w1 ?[color=#333333 !important]. r* n7 _4 F# J9 {  t
[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节), W/ I" n. D( c  U0 T
[color=#333333 !important]
/ ~7 @/ g* Z0 ]7 W3 {% T7 _[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。  e" _8 k* Y# u6 |$ t- I# `
通信流量包分析
" M9 ^* z' x2 U7 S5 \: |
* Y" f1 [! o" S- l[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析/ s. y( D: [! Z- F* @
[color=#333333 !important]
$ _0 H. E7 |: H, a4 g! t[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。7 @- a  c$ k+ E, Z$ O7 f
[color=#333333 !important]05fanyi05baidu03com
6 ~$ k0 y0 V' B* Q- K- ]& O[color=#333333 !important]: l" I/ a! q7 Y0 f. _6 B
[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。
, b% @  p) i3 j* e5 a. S[color=#333333 !important]
+ i' O) J3 a, c1 {3 Z% psuricata检测规则(并未测试,仅共参考)
4 Z' Z% R. R. h2 d+ Z: A- _/ u7 r  g# v  t) G: a$ f$ ~
    8 i, f6 l, |5 Z4 ]5 T0 ?' ]  l

  • 8 E7 p$ q) |4 F: J
UDP payload协议偏移40个字节处是否为00 0a并且频率达到5秒3次以上。alert udp $HOME_NET any -> any 53 (msg:"dnstunnel-iodine-connect";content: "|00 0a|";offset:40;depth:4;threshold: type limit, track by_src, count 3, seconds 5;classtype:dns;sid:2010000; rev:1;)    通信包,query字段60 08开头,并且后面跟的不是59个字母或者数字的组合,或者后面的字母不存在\x00同时频率在60s一百次以上。alert udp $HOME_NET any -> any 53 (msg:"dnstunnel-iodine-traffic";dsize > 100;content:"|6008|";offset:12;pcre:    !"/[\x60\x08][a-zA-Z0-9]{59}/";threshold: type limit,track by_src, count 100, seconds 60;classtype:dns; sid:2010001; rev:1;)    alert udp $HOME_NET any -> any 53 (msg:"dnstunnel-iodine-traffic";dsize > 100;content:"|6008|";offset:12;content:"|00|";depth:    59;threshold: type limit, track by_src, count 100, seconds60;classtype:    dns; sid:2010002; rev:1;)Dns2tcp
0 H' c1 e, G* s  w- [
, @# S' V0 t2 p" T$ k8 Q# t安装, n$ f6 ~1 H" j0 n; k+ p
+ N' _, {- A, A. `# L( s& ~8 X5 H
[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell# s+ [, s" {, p* I0 U3 O
[color=#333333 !important]下载链接
0 i8 V6 n8 J7 @. L5 J
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag
, B8 W& ?* J' A& l0 X* y' p
[color=#333333 !important]提取码:t1rw
, O! J1 {! f5 }, ?' T5 W: g[color=#333333 !important]安装编译5 ?" v& y* _+ E3 I7 V. `/ j
    9 T4 j0 t( }4 R  }
  • + @' ^; @; c" d
./configure    make;make install[color=#333333 !important]服务器端
1 s5 C. @& v6 G" k
    , g. H1 S  K& b. c

  • % I" E7 w! ]* R' m( U$ _
server/dns2tcpd[color=#333333 !important]客户端
" z( I3 s9 a6 u1 H: L
    3 H* B% r* M( H$ l) v
  • ! }' M+ r& Z" ~4 u
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载
' u5 ?% C& _/ u. [4 N
    9 v1 L" B+ x6 u. x4 j$ f& n' i
  • & d3 U  J: R4 J, f
dns2tcpc.exe实验测试+ K" E9 @7 g* a0 C" [
8 i1 @" p) p% ^% x) a2 X$ d* j; `
[color=#333333 !important]服务器端
) `7 _) r! C' U, N[color=#333333 !important]1.创建配置文件
5 u7 Z# D2 H) F, p- H, @+ R/ e

    5 J- t8 P8 n' H! f" r: ~' B

  • % R. K6 R% [9 o
Vim/etc/dns2.conf    Listen  = 192.168.1.6(Linux服务器的IP,服务器的IP)     port   = 53         (监听本机的端口)    user   =nobody         chroot  = /tmp           domain =.ns.dnstuneltest.com(上面配置NS记录的域名)     resources =ssh:127.0.0.1:22,socks:127.0.0.1:1082,http:127.0.0.1:3128(设置本地监听的服务资源,根据自身服务开启的资源设置)[color=#333333 !important]2.启动
* ?. F. k# G4 u1 t" N. V0 U
    ! o5 N+ y/ [. z3 ~6 h  p7 V- z
  •   g+ N0 Z) r- C+ C
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接
5 v( |0 x# a8 u  m/ {[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务
! h. o7 M- f& ~0 m2 J* v/ l
[color=#333333 !important]

2 S$ x, T# ]9 k+ \& z[color=#333333 !important]客户端
2 F% f% C$ Z6 s+ c3 f2 F
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 2! i! Y4 C* L7 G3 \1 P
[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源5 N; o4 j8 D* ^1 h$ m3 Z
[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP
; q% Q% c6 ?( i$ I1 y[color=#333333 !important]-l:端口
9 m& L+ I& x9 ~) q" T[color=#333333 !important]-d:是否为调试模式 2 等级可以省略
0 H3 _8 Z& f% H: c) q, n2 w0 h
[color=#333333 !important]8 h# \( H3 P8 b# d3 k* y
[color=#333333 !important]客户端使用访问服务器
  z+ ~( p. C& @) u5 ~0 J[color=#333333 !important]
% ^+ J8 d, B' |! Q流量包分析  S" q2 Y' r- K: u. }6 E' ?. U

2 o  F7 K8 |; v; s: k% C[color=#333333 !important]建立链接并未产生通信包9 [1 G9 y% w7 _) I  v% \  K
[color=#333333 !important]  z' g! K2 ?0 j2 g  E! h
[color=#333333 !important]使用ssh访问时,才会产生数据包
* [* r" C2 ]. o- r0 D6 ~[color=#333333 !important]* k9 m: {. v% Z* a
[color=#333333 !important]数据包分析# k/ e8 U0 {* K1 e
[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中+ \) |! B8 G; l4 x
[color=#333333 !important]
) R3 y+ L+ I6 A3 V/ B! ^1 [[color=#333333 !important]! ]9 J9 @3 u5 n6 y' x
[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。& C8 a! @) a1 r6 G3 n
Suricata规则检测(并未测试,仅共参考)6 r( \7 t, r! ]  z5 S4 l8 I. b$ n
. S* v6 Q9 `: e2 P
[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测- j5 l/ k1 s6 j
      J5 }, U8 K7 c! o# x- T6 }& ^
  • * D, a) ~# i. i! [" J/ n6 s
alert udp $HOME_NET any -> any 53(msg:"dns tunnel-dns2tcp";content: "|0010|";offset:40;depth:4; threshold: type limit, track by_src, count 150,seconds 10;classtype:dns; sid:2010003; rev:1;)[color=#333333 !important]结尾9 E* p$ b1 |9 f  `  B, g
[color=#333333 !important]小白水文,求大神放过
) e  ]; r; F' |[color=#333333 !important]pcap包下载地址:
6 j) f* r7 T+ n' q" ]0 k
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw
* ]; W) T4 w9 H# {* \
[color=#333333 !important]提取码:n5ha
% W" K: F6 h! F0 y) u* p1 H[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载
# x8 h1 p' S3 I# d0 H. ^
- O6 Q3 `6 K3 u! _. y4 h' k7 G: j9 F精彩推荐
1 a; _% S) Z6 C' R- c' l
9 A. A$ E& O' c1 A) W
' _8 A/ x8 w$ E6 C% p' U1 j, e

: j4 A0 H2 @4 U4 B: @% a! E
, ?3 f( o! S1 ?; q4 I9 Y1 a* A' U0 z: T" a5 A" U

4 l+ d( Q) _# A5 w" X$ Z) L) H2 ]来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=1" ~" l4 _2 |2 W  I
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

帖子地址: 

梦想之都-俊月星空 优酷自频道欢迎您 http://i.youku.com/zhaojun917
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2025-10-16 07:10 , Processed in 0.041528 second(s), 25 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表