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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7565|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道( C( J0 j' q& M1 ?; O6 f

6 [- I1 n2 t% S' e* Q8 K- W' \[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。
6 m( ^  N+ j$ I6 ?9 T实验环境
8 g0 F- S5 P% E7 b3 A& `9 J5 V
6 G$ g) q  [; R
[color=#333333 !important]CentOS Linux 两台
) l, c* N0 O8 Y3 x! L6 F, |
创建DNS服务器
, b) h' {) ~( k6 m) {0 P
8 j4 Z- v! n  j% }1.安装bind$ _  {; m. z! V# o/ b
# v  g  ?1 O1 M0 v8 E
[color=#333333 !important]yum install bind*
* @2 p: m9 [) r& o4 o% h* @
2.配置named文件
9 d9 {9 H) z  {9 k& g) L9 p" f4 d2 p. A; W4 D8 V! Q
[color=#333333 !important]修改/etc/named.conf
9 W. z- t/ v) U- z! c" k1 r
[color=#333333 !important]将下图中选中的地方改为any3 V- s' `7 q9 e3 W# h: K- Q
[color=#333333 !important]
& \/ j! D% Z% U) `! k+ l$ f& X( e3. 设置NS记录,A记录
4 ~  _' H* \; w3 n4 }$ w/ k+ |; J& d4 i0 u! l. x
[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件" b8 ?4 p2 h% l/ y1 ?, C6 y6 P# s
[color=#333333 !important]
* S8 R( i8 q- Z+ @4 b: f
[color=#333333 !important]增加正向解析记录
' b. M0 u6 W! Q[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字9 U- K6 m) ?& W
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel
, ?9 J! a' F# P9 u, L
[color=#333333 !important]修改文件如下* H4 I, |, y8 u# ]! }# X/ J
[color=#333333 !important]添加NS记录,A记录
, g4 s2 s" B1 j8 i$ `# v1 a% |% [[color=#333333 !important], Y4 K8 I5 G$ _# q/ v
[color=#333333 !important]添加bind为自启动服务0 u1 t2 x) h1 x9 l
[color=#333333 !important]systemctl enablenamed.service& K5 N1 w( M+ o1 X
[color=#333333 !important]systemctl restartnamed.service9 S* A+ i6 w4 h/ U
[color=#333333 !important]查看启动状态! F( u/ X( _0 ?" x
[color=#333333 !important]systemctl statusnamed.service
& g; z% ^& `9 Q, T# f4 D/ J) J
[color=#333333 !important]
  J) e1 d4 R, {+ O[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)* i4 p' c( y' Z- U6 |/ y: p2 }
Iodine' K3 `& N2 }6 `& g: J4 w# S3 O+ M
. W9 Q- P: [1 O7 {8 |( e
[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。
' V& M0 l8 Q! w/ t- c安装: }+ i, `( j: G5 Z' c, B( {- [

6 y& ~8 g) _% L* c1 W[color=#333333 !important]下载地址:
' H" \) E5 N7 ~7 Y
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip- D: U: Z6 d. I# U
[color=#333333 !important]unzip 解压
4 {, W2 L7 d3 c- s9 H' [[color=#333333 !important]cd iodine-master% c% V' m8 \( `  a3 N5 F2 f5 A
[color=#333333 !important]make3 R8 h, |2 k  V& @0 x: R# U
[color=#333333 !important]出现报错1 t0 g( I$ h! @5 ~: Y; E
[color=#333333 !important]
8 h9 @7 e5 K( j$ C. H[color=#333333 !important]yum -y install zlib-devel
2 g( M7 p! C$ @) k9 g' T% C[color=#333333 !important]make;make install8 C1 T( a1 ?; d$ p
[color=#333333 !important]安装完成
" q7 d+ H2 A& X- g[color=#333333 !important]进入 bin
' p' r" M1 M+ Y, h! ?. V* `1 C[color=#333333 !important]iodined 服务器
8 D8 |0 f4 V- s3 `* a+ b[color=#333333 !important]iodine 客户端( B; m  k3 y1 H$ {- S4 O
实验测试7 s7 K2 m( d! `# \5 _- a1 ~& F
  u* y3 O: P8 H
[color=#333333 !important]服务器/ f3 y+ A4 a" ?
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com
9 b' q1 Z" f& G: P; ^& U' V[color=#333333 !important]-f 前台显示,运行后一直在命令行等待
( o* @2 D+ d, j1 ]# N' S+ Q1 }) A$ C[color=#333333 !important]-c 中继模式|直连模式
0 @- i8 q" Z& h9 |- U0 _% J8 ?4 W% m[color=#333333 !important]-P 认证密码
- C1 K& R$ r7 k- O: M1 H, Q3 R
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。2 n( t$ M6 E( A9 t
[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。
- T% S' W* S. g  J1 I[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡: s- Z( r6 P1 I$ G) [! a0 z& J5 C
[color=#333333 !important]! K0 D, l! ~7 ~9 G3 n0 X
[color=#333333 !important]) C/ M& _. D/ s
[color=#333333 !important]客户端
- W- X2 h) }/ z
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com, B2 h8 u) i5 `6 C6 \- v7 {3 b
[color=#333333 !important]-f 前台显示/ D  a: w' L3 h# w% l! l
[color=#333333 !important]-P 认证密码4 K& G: Q. m2 Y: A8 L
[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析
$ |4 o$ p$ _4 R5 k! h
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。5 n" ?- J- H3 N4 s- j
[color=#333333 !important]
1 Y/ d7 d$ P1 c  ^+ _6 a1 F/ S流量包分析
1 i5 l6 |; ~9 R+ i" A, z; [6 ?$ l% r1 \6 R+ I. K7 z; x" ^2 T  }* m+ w
[color=#333333 !important]抓包0 G+ q5 p, G' e( p  H- ^
[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap( c- N" k: o- Y+ g( n0 U
建立链接的包分析
% I. ~, P+ x8 V3 H! r, V5 P& [0 o5 S6 V
[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包; T8 l( ], ~- X; f% h
[color=#333333 !important]
/ [# C, `6 a6 R0 t[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀. T9 Z, s6 S9 @" w& V3 p+ c! S
[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据/ l/ Y- ~( M0 h
[color=#333333 !important]' w0 o6 D6 E4 ]- d! T
[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节)+ C5 T0 M& B5 A
[color=#333333 !important]* M+ C  j5 [( V: m; @& b
[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。/ M+ j, H; R( K9 K6 N, t
通信流量包分析. t9 I' C6 j( P; ]
6 {. W$ k9 z) q: k6 |; [4 t
[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析9 u) U: e+ y& H4 P2 d- G
[color=#333333 !important]
0 h0 l" N1 n5 C. G7 B' K9 l9 k[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。1 [2 i3 N  `! O8 q0 b6 n  e
[color=#333333 !important]05fanyi05baidu03com
% y1 X+ U) [! O" X( c% L[color=#333333 !important]& d- o% J# C0 c, V
[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。
4 Z$ E8 d$ B' r! O[color=#333333 !important]+ y- a% _$ B9 b( N1 k% o5 T. h" g
suricata检测规则(并未测试,仅共参考)
9 D4 a  I' T. G5 c
/ `' W- Q% u8 k6 j. \" _) A

    & V# R: Q6 H  B- X) r  D

  • 8 b1 {4 N8 M) m- 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
' D2 z; n0 B  J8 \" R, b0 y) A% R; }
安装
2 p6 d5 i$ a2 }
- `# G" s- v$ Z2 ?' y% @3 P[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell1 j3 Y: Q+ ^, `' D
[color=#333333 !important]下载链接0 L: t$ a( d7 N7 t" p
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag9 S& X7 f* R% O2 K  R' K
[color=#333333 !important]提取码:t1rw
) O5 C3 u( K3 P" V2 P6 b" X0 p7 l[color=#333333 !important]安装编译3 ~  P; w! @  N% X7 I4 N+ S- @* e! k
    : w. y) h' S4 I1 [$ v+ {
  • 3 c2 J6 S& S1 u& S2 y- }/ `% n
./configure    make;make install[color=#333333 !important]服务器端  F5 t- h2 t* w( E3 j3 x

    . `9 G. i, G3 T; }: M& v
  •   \( k9 t1 J# W0 G
server/dns2tcpd[color=#333333 !important]客户端: o2 X# b$ b- X# k3 s

    4 @, y& U8 q; B! I8 K9 f! O
  • ; P7 G5 C* T& v+ U. x
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载
- ~/ U6 h+ u/ e

    , b4 R7 a* [  F$ o* }7 c

  • ) w) l' y9 t* G8 w7 [
dns2tcpc.exe实验测试% V/ h" H+ e3 o
5 t, G! M' C$ G/ H  r3 |
[color=#333333 !important]服务器端8 ~0 v! z6 O2 @+ g$ \
[color=#333333 !important]1.创建配置文件
( A& l5 P  ~* j9 L9 S' Z, k7 I3 Q
    8 P/ b+ r- A" r& Y
  • ! ~5 a" L/ v/ g4 j  D7 ^/ [% T  M
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.启动+ |$ R$ L7 T3 `0 d$ A4 i3 z* S& x
      v9 l1 w7 k6 {# W( J

  • % |" a. L/ k2 c2 Q4 q& M
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接" [- D2 `9 U4 l7 H! G! g0 J1 ~0 D
[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务+ ?8 I; _7 b) t& y* s
[color=#333333 !important]

* }( g8 m! X- \( m& \% z4 ?[color=#333333 !important]客户端; P$ W1 o0 a+ X# v! e5 m& L
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 2
1 [* i  m5 T1 F2 {0 w3 K; u[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源
0 _* l! t9 l- Z& `: R+ m! R[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP
5 z' p( k5 L" v9 J* b[color=#333333 !important]-l:端口
1 }1 w" b$ ?/ k) @[color=#333333 !important]-d:是否为调试模式 2 等级可以省略
+ Z0 k) J& I1 L. K. s
[color=#333333 !important]4 o5 n  H) M0 M) o! P/ R
[color=#333333 !important]客户端使用访问服务器
2 N$ s' j/ T/ w. E7 w, S[color=#333333 !important]. B. i2 v* C% q  ~8 y9 Z4 [0 d, Q
流量包分析; K; L2 {' U9 e+ n* O# d

+ c+ l) r8 k* I8 f[color=#333333 !important]建立链接并未产生通信包
& m' S) f/ u; s2 l& u5 K[color=#333333 !important]
% A- h- `) A- Z+ g1 a1 \9 H5 O" t. \% F[color=#333333 !important]使用ssh访问时,才会产生数据包
: i( f# ?$ N$ q0 Q[color=#333333 !important]$ B6 S7 w# }/ e6 A- d8 y$ `' K0 N+ E
[color=#333333 !important]数据包分析
3 U4 A; A4 j& _[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中1 q2 d) V1 h5 J# d8 s6 F
[color=#333333 !important]
# w0 A3 W% G) h; L1 C[color=#333333 !important]& F8 E& f1 Q3 w1 q. F
[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。
2 b! _( @# \* q( XSuricata规则检测(并未测试,仅共参考)
( M5 y+ V, u, C. y3 ~
! q3 Y2 U+ h- J/ U) S[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测
) g1 X1 A: s- F* j, J

    ( c  k, [3 l, P% X" c2 {

  • . t) L' ]/ Z9 G
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]结尾3 x$ |5 u/ X, y0 L8 q0 X- D7 K
[color=#333333 !important]小白水文,求大神放过
4 G) s9 m* Y. ]5 o[color=#333333 !important]pcap包下载地址:; `# R; w0 n: g+ c$ U- S
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw) K$ a1 I+ U' H
[color=#333333 !important]提取码:n5ha4 e8 m) i5 }% _8 [& I4 E
[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载9 e" A( H0 k9 j6 C/ D: ?  c" ]; w% p

2 m  e  Y! i) X) M- N9 w精彩推荐
5 N% l! W0 n; |0 A* r) I9 ]6 ?3 v% F) |$ F8 U0 T1 p9 _

  Y7 ?1 i/ O% v" e) j) p- N# F+ M
" S) L3 K4 f2 f! ~& b( T
9 c8 g9 C: w  o: M- T
1 ~$ \" u$ t0 c. u1 a% T) g& k& W8 _* z$ _; k- c# V$ t
来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=1
6 S# Q3 E) E  Y: A4 O免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /6 下一条

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

GMT+8, 2025-7-7 00:50 , Processed in 0.055683 second(s), 28 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

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