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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7880|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道) ~5 w, _6 y- l3 Y/ i0 y$ t$ e

7 P6 ?* C* W+ \& Q$ K[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。# ~# F1 U% q5 g8 I5 t6 }7 k
实验环境
/ n0 T8 l7 R( m" n! ~1 }- Q) D" v6 ^
[color=#333333 !important]CentOS Linux 两台
4 b) F7 y! w# v9 E' Y1 C; a; c/ D
创建DNS服务器7 w) p9 G* B/ B$ c2 e1 t

4 g2 Z- l( E6 c1.安装bind3 a8 y  X8 G1 e/ }7 }
0 d8 G8 @) `- q' L4 p$ W; t
[color=#333333 !important]yum install bind*
6 r' B% }, `8 x7 q
2.配置named文件
/ m3 B2 t. |9 O* j( e' A& F, x. ?0 S+ W1 |5 H
[color=#333333 !important]修改/etc/named.conf6 {, d0 h' `1 u
[color=#333333 !important]将下图中选中的地方改为any1 q( `' g7 E6 v0 n5 h3 F
[color=#333333 !important]
' ?. w  g7 M! D# j! V) U- x3. 设置NS记录,A记录
! {" z4 ^$ T. ?. c  P# b% A
8 \! Y$ e* I- }3 U) p9 D; P+ h[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件4 a, N) ]& w! N! [" R  E
[color=#333333 !important]
  m" s8 \& I0 ]+ J, z0 I
[color=#333333 !important]增加正向解析记录" U0 G/ A3 D% F$ o; z* `7 T
[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字
. U4 n! j4 Q3 q. P/ C' p3 h
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel! \1 H6 F+ h2 D/ V) b
[color=#333333 !important]修改文件如下
# [- b; t" U2 w; `2 q7 @[color=#333333 !important]添加NS记录,A记录
. \$ G. H( b- T2 f6 s[color=#333333 !important]
& x3 o& y: j% q0 s5 a[color=#333333 !important]添加bind为自启动服务5 i5 d; ?1 V0 n2 ]* a, S/ W- b7 k
[color=#333333 !important]systemctl enablenamed.service
6 c7 F! w( w% R[color=#333333 !important]systemctl restartnamed.service
: t! H* f& k$ G9 V0 m
[color=#333333 !important]查看启动状态, K1 u4 M' g7 D7 B4 p" ]7 }/ U& Z  Y
[color=#333333 !important]systemctl statusnamed.service! g4 n: U+ ^1 J* g3 v1 C0 }
[color=#333333 !important]3 W9 V5 J: `# z( d: y
[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)9 J4 B$ i7 r$ T
Iodine
2 x" L1 n& n6 r( h3 g7 j* i7 P8 O5 Z9 J% {* e1 ~( X" H6 w
[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。2 r8 ?: E% C! K3 z6 N
安装  w& B# k/ P6 p( L  Z" z( ^2 x

0 b% r5 a! O0 O* C# p+ f/ ^[color=#333333 !important]下载地址:
. r! p, _5 ^- F& M$ w
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip0 R& @7 j1 B( c& |. ^
[color=#333333 !important]unzip 解压6 k' I8 h  d) _/ z8 s: g$ ^, I# }' S
[color=#333333 !important]cd iodine-master# Y$ q4 E- G1 V& G
[color=#333333 !important]make. _* G" d5 M  C- i4 j; m" N+ r
[color=#333333 !important]出现报错6 g! n: K' m- ]' y8 T6 s
[color=#333333 !important]5 D, ^/ [3 d4 P" w( q
[color=#333333 !important]yum -y install zlib-devel& W& o' N" E% e
[color=#333333 !important]make;make install  V6 k0 }/ F$ Z4 h0 m8 X
[color=#333333 !important]安装完成( G$ f/ h5 A1 V+ {- D
[color=#333333 !important]进入 bin
% F, O& s$ G' Q. U7 Z[color=#333333 !important]iodined 服务器. M+ u, J$ Q! E. z4 u2 \
[color=#333333 !important]iodine 客户端) V1 z: {4 u% Y& H' J( R' M
实验测试, U! j% l. s! q; W: k- ~% R% e
1 Q( s3 ?4 h* C) w' Q4 J; G5 f
[color=#333333 !important]服务器+ U7 _- w, j0 U6 j+ y- Y' w
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com
# a( ~' D, M8 X) h0 F- B2 t0 m[color=#333333 !important]-f 前台显示,运行后一直在命令行等待0 U/ E% n" P! [- m
[color=#333333 !important]-c 中继模式|直连模式
4 H7 W3 p: E; K[color=#333333 !important]-P 认证密码
3 _' G7 k, l  {% J4 i/ U* R3 |
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。
) Z' U' c5 Y; G0 t8 C' }0 t6 ^( S[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。5 Q' U- G$ X/ [) R
[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡
$ ]6 s- e  `; q2 ^1 b3 `/ e$ R[color=#333333 !important]0 h/ P: v% |& }/ B
[color=#333333 !important]$ W4 s+ i$ J+ O5 _# f) s
[color=#333333 !important]客户端+ }9 |" i1 s" U5 U* n" S
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com4 C7 r( H2 C5 i- {& A5 z
[color=#333333 !important]-f 前台显示! q: f. z2 M# f$ s8 g0 }( h+ B6 s
[color=#333333 !important]-P 认证密码
* B" |* N6 r( a- W2 k! u[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析& g7 y/ e( V; q; x$ M
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。. a2 t# l8 o! t( r
[color=#333333 !important]
4 K1 F% l6 `  s流量包分析/ a' T0 w, J  b+ F1 ]
( V( U. ^6 w- Q- t
[color=#333333 !important]抓包% l, E* t9 H* w
[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap3 u) s! Z/ N7 t& i8 g1 l" W) @
建立链接的包分析$ z& _4 _  ]5 w' T0 c! W5 q

; ?" K+ v4 T4 Y* u! c9 X; U4 c[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包
1 _) B; v2 E2 t$ l: H8 p0 p( r[color=#333333 !important]6 Y4 m% @, y1 W- s" A3 D
[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀7 G1 A0 p- \7 i- N5 s
[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据* C) W% j% i- t* n) m6 u6 n: d
[color=#333333 !important]
2 E9 X5 ?8 K, W5 j; K3 `[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节)
5 z1 p* A4 L4 I* J( e[color=#333333 !important]# N* n# S" ~( h+ r
[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。7 p# J: C; c* m6 t
通信流量包分析: L2 \. t6 i; Q* V0 S1 h' A

" R7 G/ p! b: S8 n! F; a[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析+ g# Z9 Y! o/ y, @" x- U4 C
[color=#333333 !important]
- A8 b6 V) u0 f, D% L+ K) h[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。
, _5 m6 r8 K/ s[color=#333333 !important]05fanyi05baidu03com$ c6 ]4 V9 k. [1 w. a% J, U* |$ e$ q
[color=#333333 !important]
* q, M/ q! p  j* i) h[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。- U, @9 H, `/ Q" ]
[color=#333333 !important]: w! r, `  n- ~
suricata检测规则(并未测试,仅共参考)
! C8 y' {" U. k- o# u7 }' k4 G, f
  m# {* C$ T! G: _" t
    ' u: D# Y' o; J5 N
  • " \+ E+ {& G" C, y
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;)Dns2tcp7 l) C0 X, m, {+ C4 M: d6 d

9 N. }2 q1 q7 W安装, W0 {) Z: t* B- h% P& V
% z* a+ ~- K; }) a, C8 u
[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell; C4 ]9 j( G0 T0 Z( ?1 v
[color=#333333 !important]下载链接. U1 O% s8 Y  X
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag
' N! O% }7 q& `2 k% G# ]. ?$ z: H
[color=#333333 !important]提取码:t1rw# I: H7 B6 N3 l' V2 Q, Q/ q! P
[color=#333333 !important]安装编译
' S2 ~/ D) s3 j" Q( z5 [4 D9 @

    ) x+ }4 m) C) ^

  • : M0 v7 i" |; o5 f2 x4 k
./configure    make;make install[color=#333333 !important]服务器端
9 C" X. Q' b" p: P- `+ l
    ; }) q: o2 I5 Z$ e0 s$ \% U
  • % B4 J' B; g& I) V& H
server/dns2tcpd[color=#333333 !important]客户端
7 ^( i) h1 H, V( c; z
    3 j+ S8 z4 t4 n: ~/ n6 @
  • 0 C( R/ j4 Z8 }) M4 c( K' L  A4 W; u
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载* b( ]% U+ p* F3 u

    ( [1 Q) M. E" q8 ?* V1 S
  • 4 O% b* w5 m- s0 [5 y
dns2tcpc.exe实验测试8 [3 q; ^; H- d4 O: K% Z
3 D1 Y4 T9 {# c. ~7 [+ k' Y
[color=#333333 !important]服务器端
& a! n' k) ?- X8 B9 B$ g! W[color=#333333 !important]1.创建配置文件
+ k& g+ q- L) L6 Q( K

    6 ]) u7 z7 F9 \+ I) D1 W2 ?" A

  • 4 f" Z5 r' e0 ]0 Q
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.启动% @" Z/ g1 h5 l% S  @
    7 v/ X8 K4 s( S# v. i: b9 q1 \
  • 4 I% Y: b% ^# H) Q
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接
; q7 @. o. c$ d! O$ {, I0 p[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务6 H& ]+ \8 g' e& a6 |5 [
[color=#333333 !important]

) \" [; S6 I6 A+ G) N[color=#333333 !important]客户端
* Q: T$ W) v! R/ I( s3 }  `2 x2 g
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 28 E' I3 x& z9 t! x+ P2 i4 Z
[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源
' p' d3 L3 u/ T/ G/ c[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP
6 x# r5 l0 h1 h" V7 w8 D[color=#333333 !important]-l:端口& L- e3 Y9 p: X& k
[color=#333333 !important]-d:是否为调试模式 2 等级可以省略6 }1 t! }8 e9 w" E
[color=#333333 !important]
, @1 y. Q! P' a1 {[color=#333333 !important]客户端使用访问服务器
  E% b  v/ u6 \' V+ o[color=#333333 !important]) M7 {8 |9 s% O8 w! }. P
流量包分析
; b( Q" R7 ^" m$ _3 y# U# d  ], ?1 l) S. U  ]$ e" H' }3 j0 i
[color=#333333 !important]建立链接并未产生通信包* O6 ^, o3 K, z9 k5 Z6 c- @
[color=#333333 !important]  @, E# v7 u3 ^+ G& G5 |
[color=#333333 !important]使用ssh访问时,才会产生数据包: z3 b4 p8 a1 y# E1 N! b) b3 x
[color=#333333 !important]
2 q8 y7 m- d3 [3 u* f7 I[color=#333333 !important]数据包分析* z- l. b6 y% o  |* D
[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中
6 M) N" F' b2 z; h[color=#333333 !important]3 D1 o  ^/ c0 Y3 K: O- m8 B& ]
[color=#333333 !important]# ?5 ]" f! z/ O3 j( i7 z  c+ y' [; |1 m: I
[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。1 G; m$ l  j# s% B# _
Suricata规则检测(并未测试,仅共参考)/ a3 ]$ H! G3 u- y- X
- C- @/ ?' e! m6 t. K$ V1 V
[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测0 B9 n7 N) O! S  ~( r% f7 q7 u
    7 e' ]" p+ Q0 |  C! o% M% E% a

  • + \, y7 ^0 U2 z, y+ k* L/ Q! ]
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]结尾6 Y( E5 k  r0 {4 _+ Y" O
[color=#333333 !important]小白水文,求大神放过
& w$ e+ T  S  F  F7 j( \* N0 i: X' A[color=#333333 !important]pcap包下载地址:
7 Z5 B7 d; s( }+ \
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw6 X. M' z( ~, @
[color=#333333 !important]提取码:n5ha- I. J1 r0 ]/ S9 V2 k9 J, ~
[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载0 k/ j$ l5 m+ B2 O( [0 F6 n( ^+ [

" H. B; _) U$ D4 T8 X' h9 z精彩推荐( k: y4 Z4 m! O" n  @- ?
: [5 Z/ ]* G  B: E
. I  ]8 |7 O. k! E( _

5 q/ _0 K, `/ Z. i" `* E, `- y& q
: Y; G) a2 k9 x2 d
. L9 m! W# ~0 }9 m0 u
来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=10 S/ d* H  g" V/ N5 {1 z( X
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-30 00:16 , Processed in 0.047891 second(s), 26 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2026 Discuz! Team.

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