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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7879|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道
1 ?+ x- O8 c) _6 k8 U2 Q; d6 X" v0 \5 [: X7 W* s
[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。8 `+ n; H4 ]1 O# J, o7 I1 p
实验环境2 q( F, d; K/ T  x

& q! A8 q% u4 Q! Y$ L
[color=#333333 !important]CentOS Linux 两台
+ C" I- [6 p8 b2 \9 ^" E
创建DNS服务器9 y9 e" x: {$ I6 h
& \5 G: I1 f3 o
1.安装bind
0 w4 T7 O+ g/ _- |1 Q9 l0 e' N) B3 [" w* \# q- G
[color=#333333 !important]yum install bind*
8 n8 Q  v* q* l+ j& s
2.配置named文件- B' j- f3 h  _: X4 U

  D( Q: x/ v9 \3 T
[color=#333333 !important]修改/etc/named.conf
+ I1 \9 V8 V4 q9 J0 u* ]9 f' r
[color=#333333 !important]将下图中选中的地方改为any' \/ L' r  u3 o. F3 c2 g/ F% j' J. Q
[color=#333333 !important]
6 \: G" W+ a% G0 I  Y* T8 a( M3. 设置NS记录,A记录
# q! X6 y8 ^/ n& y, ?
* @- V5 f. F. e[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件; S' w, s( J. S
[color=#333333 !important]

3 l+ E5 N9 l: s4 K5 C4 M* z[color=#333333 !important]增加正向解析记录
% Y, G8 `$ r+ d0 T+ _[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字
+ P; c1 Z# ?; @0 ?3 Z8 C( m2 g1 S
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel/ L# W( L3 t: Z& n) x3 |- `* t1 g
[color=#333333 !important]修改文件如下( G$ g1 l7 D/ d' O0 E5 o
[color=#333333 !important]添加NS记录,A记录0 T- n* o; M8 b; \2 e
[color=#333333 !important]4 z9 L. L; o9 R
[color=#333333 !important]添加bind为自启动服务+ N3 J% I& j( @# m4 h- k
[color=#333333 !important]systemctl enablenamed.service+ B4 L$ W2 K2 h" w1 b' K2 Q; {. y
[color=#333333 !important]systemctl restartnamed.service1 S. [3 R  ~! H& s
[color=#333333 !important]查看启动状态; _- r- S7 T% H. H
[color=#333333 !important]systemctl statusnamed.service8 C' [- s$ k& S- o3 v1 o
[color=#333333 !important]
8 l" t- V' [6 l- M7 q! p0 g1 s[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)
+ l8 N  }9 }8 c$ j1 gIodine8 |6 m. v% v6 n2 w: }4 C. G+ o+ X
4 M9 _) J: b, _5 Z
[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。
7 H' M- O0 x# g) W安装; A  x2 F6 V7 B4 B4 y
9 y5 ?: P! P% t. M
[color=#333333 !important]下载地址:
( O6 ~& n/ [& g# `) Y6 ?, S
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip: u% B, i" b) F* ~
[color=#333333 !important]unzip 解压  g! K! ?- J9 [7 ?: w
[color=#333333 !important]cd iodine-master- l! M$ k5 z! V! H2 l) k2 x
[color=#333333 !important]make. ^8 J, p' ]5 y# |! ]. O8 v
[color=#333333 !important]出现报错) B' U/ e/ _9 ?% r, Z
[color=#333333 !important]- ]) e$ n# k& f" l! G
[color=#333333 !important]yum -y install zlib-devel9 ?- V+ B' s& i- i/ L: T) W- k/ d
[color=#333333 !important]make;make install& }+ S, T* Q; I. W6 W& J5 a
[color=#333333 !important]安装完成
; r$ e& p) I1 q2 b% `: H[color=#333333 !important]进入 bin
+ n+ A: a4 g8 f: i3 ^4 p# d[color=#333333 !important]iodined 服务器& q% m0 H( [; R8 _
[color=#333333 !important]iodine 客户端. \- w2 |/ v( [$ K& y( X5 z
实验测试/ g& F' j6 y9 Z- }7 e$ J

8 ~" S2 \9 [" l( Y[color=#333333 !important]服务器3 }( g- u( Q! |
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com
3 d7 g0 U$ g' J) e$ V; f8 Z, n1 G[color=#333333 !important]-f 前台显示,运行后一直在命令行等待1 O: K( G: W) b3 F1 ^2 r. o" }
[color=#333333 !important]-c 中继模式|直连模式
, S( L3 ]* c. j[color=#333333 !important]-P 认证密码
' B! p+ Q" s& \
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。
* o4 j% l# K8 k: I/ s) t& R0 ?/ I9 R[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。
' S7 d4 @- w0 v- I: Q0 A+ s[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡
! L# k- e  v' Q8 @[color=#333333 !important]
. h% C+ ~' o  n" m) i[color=#333333 !important]: E5 t7 M9 s0 U# c0 a0 B
[color=#333333 !important]客户端
2 ?7 G9 I5 L6 m
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com
5 C0 u1 o2 x. F, t1 O3 ?[color=#333333 !important]-f 前台显示
& D; k/ E) A! }1 e6 }[color=#333333 !important]-P 认证密码  g1 R! z" y6 N" }( x
[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析( s) \% b, D  `8 F: u2 u
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。7 C8 f. F6 {( M0 N
[color=#333333 !important]
/ l9 @4 w' g1 L' n流量包分析
. H. B, C+ o% z+ G; k6 x% t2 J8 D3 s; c! N: x( g6 B
[color=#333333 !important]抓包, e2 v" |+ W+ C
[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap
$ M+ d4 `% M, x4 H2 O$ u3 |
建立链接的包分析
; N& w) k% Z1 P6 v6 F" ?  J$ \/ y7 O0 C8 w/ ~5 y6 y
[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包  _  s+ k8 O8 \0 `+ S/ D- }
[color=#333333 !important]
. _4 G( q7 D5 @% [[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀* H1 Z# L/ V# G6 g2 i
[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据
. Y6 q2 o6 v* ]% z, x8 t: W# Q[color=#333333 !important]( ~/ g" O5 \* R- x& T
[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节)
+ B2 b5 R+ x7 B- U' D4 p[color=#333333 !important]
7 U% l" t- b+ H' b[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。' \7 e- c! H/ I# u* g
通信流量包分析
, }0 C% S# J5 t' w
4 v& K  X+ v: F8 B( T$ H4 {+ M[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析
3 s: Y+ d1 {, e; u[color=#333333 !important]
0 O: G6 L- }0 y' e9 l# Q& X[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。
! B5 r/ X) z9 c3 d* `; |[color=#333333 !important]05fanyi05baidu03com
0 q+ a2 ?4 t, s* n; ?[color=#333333 !important]
3 x2 S2 u' O9 L: d! [. [& f[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。  A4 O4 ^% @) B
[color=#333333 !important]
+ b4 e0 J* j8 a4 c! M. m( ssuricata检测规则(并未测试,仅共参考)
4 M! O) ]3 @' ~* ~7 l. U' x' W  @
    1 L5 |. ?6 C/ S# A& i  z0 |
  • ) S1 O+ X3 d6 K$ X6 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& Y8 U; D6 x- b& M- F& k/ y
% \1 Q* |' d6 ^; x& Y
安装
9 C4 y& I/ Q( G  B: S! I9 h7 v; D! P1 U" R: W( z2 m  i
[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell9 c! u4 g. s" q
[color=#333333 !important]下载链接2 t9 N* a9 E( u( q) ]/ R# }
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag
$ u* S: U! z6 P% m
[color=#333333 !important]提取码:t1rw( v8 f1 I/ v5 C  j
[color=#333333 !important]安装编译9 P) ^) F  m2 n3 ~" j
    7 m2 L, Q" b; p

  • 6 r( ]" ~& r2 e- C# R
./configure    make;make install[color=#333333 !important]服务器端! S9 d* p# c3 x  U

    9 r& J- a2 p6 p+ H

  • ! N. n6 O! Z  Y9 z9 F2 J9 N* ^
server/dns2tcpd[color=#333333 !important]客户端
; r( X8 J; d6 Q' C

    ) S+ d; \4 p. Y3 h( S6 t

  • 7 e2 V# r8 g; n% |$ s3 H: N& N* g
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载
$ [# u5 G; V% x! m) f/ U3 t. s
    7 Q- E! V7 b+ m
  • , O' i8 \5 g, X5 g8 o! a& j0 a
dns2tcpc.exe实验测试
( D7 O3 S# i7 ]( G' q
, n( e6 o; X4 p2 \8 f[color=#333333 !important]服务器端
' u3 ?, a3 f) u* z% I[color=#333333 !important]1.创建配置文件4 y' W$ u1 V. K! T' I- L" R: U' [
    ; D/ V2 V, o. F# B$ O

  • $ ^* r+ i2 K: v" @, ?3 ~$ Z1 |5 ]1 s
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.启动, G0 A6 D, s+ X9 D! c
    6 o% s$ J8 e0 H3 q0 ~8 @, B1 w
  • 0 k+ A' W) N; S/ x/ E
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接
' a* t9 p1 X% k, u6 Q7 S. y' m, J[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务
' v. z6 m. r: J
[color=#333333 !important]

9 `5 h8 c& m9 X: m6 a; t[color=#333333 !important]客户端- @: _, o9 @- z: A8 h
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 25 v* e8 P# y% `# {- K
[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源3 n! m' {, E) b8 S! t% |* K
[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP
& L- p3 x2 e9 o6 O4 J* w4 j[color=#333333 !important]-l:端口' i. h6 @9 L7 g
[color=#333333 !important]-d:是否为调试模式 2 等级可以省略
! i8 E+ w: M) {; J% g! U# k
[color=#333333 !important]
1 W! I+ `9 b. _) B( M: q* L[color=#333333 !important]客户端使用访问服务器
* G& c5 l4 n8 w[color=#333333 !important]
9 z! V( t4 F/ b* w: H1 K! l! H, j流量包分析
2 {( ~+ D2 m9 w1 f0 \$ x4 A; O" E, i8 f2 F, Z2 r8 Q
[color=#333333 !important]建立链接并未产生通信包
1 q$ T& K6 O& I4 w+ O5 b[color=#333333 !important]& D- _/ \# S8 `
[color=#333333 !important]使用ssh访问时,才会产生数据包' n: }7 w. g' U  Y: w
[color=#333333 !important]$ m0 z; ]% |: |
[color=#333333 !important]数据包分析
/ X8 ^1 @# m% k5 U  P3 y[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中8 V! l; U, t. e$ a5 V5 `
[color=#333333 !important]) N" g. _0 n6 M8 U5 g
[color=#333333 !important]
8 V% x; ?  e# w/ }+ V0 x[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。  u& }. b6 q4 ]! ?
Suricata规则检测(并未测试,仅共参考)
. Q* R" Y6 Z* }0 L
( u" w4 t2 D6 A[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测
1 V0 g* V2 G% Z- O2 ?. y4 n

    / d+ q( W" A4 y  t, Y5 N" P# H+ }3 n

  • , ?& Q6 e+ g+ V# f) Y
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]结尾
$ n! ~6 S0 C5 \" U9 ~" Q. V8 t[color=#333333 !important]小白水文,求大神放过
* x4 P1 r& K" x% O[color=#333333 !important]pcap包下载地址:
  W! L& P6 o! j) Z
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw  ]/ {3 M8 ?9 x5 \8 J  M2 o: q
[color=#333333 !important]提取码:n5ha
; b0 C1 L* Y% L+ P& x1 J[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载1 R% j) j- O. R# h( R# d

( I  F9 e0 m) ]$ f* j' i" }精彩推荐
3 n) \% o4 H# Z% R6 o* `6 a. ^" u. ~9 `( q* U4 s2 ~- K6 `
% s9 ?5 b  g4 p. m' _9 K9 P% I

7 h  Z2 F9 A$ H! A% A. Z+ G1 D  l& C7 `. f2 [/ c/ V8 Y
7 Y, P& _; o5 J0 _

5 e3 T; e: p2 ]- v. u! R, o! d& \来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=1
" b/ N, K4 y" O) q! v- ^( q免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-29 23:23 , Processed in 0.066567 second(s), 28 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2026 Discuz! Team.

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