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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7527|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道
# A+ O4 \( D1 L
" y( t( q( a9 u( `# M3 o) A$ n[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。- [3 U( k1 a! K' f3 s
实验环境
6 E2 I  K9 o! O" H+ W
$ U; c( S$ {$ F0 o( K& X
[color=#333333 !important]CentOS Linux 两台
# @# t+ P& m7 o7 n) ]/ D
创建DNS服务器4 S( g7 |& H. M% ^3 E4 a
/ g! K( _" T) [6 E( `7 J/ U8 L( C: ^7 T3 K
1.安装bind7 p8 L" a, k2 \; {, P( z4 P
' c, }1 ^/ Q  X. R) ]) F
[color=#333333 !important]yum install bind*! `/ W$ Q- \9 z% a" j4 a, a
2.配置named文件$ \- [, B5 y1 _' O

. l5 S3 @$ S. }9 ^3 {0 ^/ j. ?
[color=#333333 !important]修改/etc/named.conf
" |, Q7 W+ Y: G
[color=#333333 !important]将下图中选中的地方改为any  }- L1 s6 ^# _* N( s
[color=#333333 !important]# p# i. I* I5 k1 O9 J! `2 m5 F8 J$ g8 S! |
3. 设置NS记录,A记录
4 L4 H4 m) ^9 o, V7 L# u3 d
& v/ {" E/ @( w, T) e& j[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件, E6 Y8 K- l$ s/ j: @: b4 f
[color=#333333 !important]

8 j4 r7 j% ]! `, m1 j* `+ W9 @  Q[color=#333333 !important]增加正向解析记录
' @2 i& e& j% w0 ~  Y2 V[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字
# o; ?2 O1 N6 N/ g7 v
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel( h7 e$ Z9 c+ W$ G7 o( {6 o" v
[color=#333333 !important]修改文件如下
+ Q$ S0 T% `2 [% E; F[color=#333333 !important]添加NS记录,A记录$ Y' j: k$ G6 A: }
[color=#333333 !important]9 G/ J4 g# d; Q) D/ U" T3 _# U
[color=#333333 !important]添加bind为自启动服务
9 R# u6 S4 N7 R  H! H
[color=#333333 !important]systemctl enablenamed.service
6 d9 G- Y/ E" T0 q; p[color=#333333 !important]systemctl restartnamed.service- Z4 V/ g5 y* \4 W* {- l
[color=#333333 !important]查看启动状态
5 ]7 r: a5 ]; v, c, `' H) D7 s
[color=#333333 !important]systemctl statusnamed.service1 b( t) c6 q; F% r
[color=#333333 !important]+ H7 ?" H( H% Y6 n/ ?  i
[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)% c* v% C1 z# q  P7 B. [
Iodine
* \0 Q* J. G5 w& W& _/ F' v! h" Y2 F" e8 y% H. T4 H- l2 f
[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。
. Q) I. Q6 m6 _: v安装! y1 ?+ \: a' n1 H0 E
* T# B0 M( l; y8 L
[color=#333333 !important]下载地址:, V* q9 _* Q6 V* P, X
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip
) h" @% O! @# ~4 B
[color=#333333 !important]unzip 解压( q8 f) n  [1 k4 N: O" c+ \
[color=#333333 !important]cd iodine-master
" t. c& V0 _6 a* K4 X* H[color=#333333 !important]make
% [' y; ]* E- Y2 m& `[color=#333333 !important]出现报错
( q* a' X8 s+ k1 k! t" _8 u6 V7 X, c[color=#333333 !important]3 J/ U% X* t7 q& R* ?8 M
[color=#333333 !important]yum -y install zlib-devel
' q+ R, {, w/ y[color=#333333 !important]make;make install
7 E  u$ C( {7 H; |[color=#333333 !important]安装完成% X. q9 p/ j6 m6 Q
[color=#333333 !important]进入 bin
/ d: b/ u) d7 K" r: ?& i7 N[color=#333333 !important]iodined 服务器
# i3 z, w, w3 M, g1 e. V& Z[color=#333333 !important]iodine 客户端
9 B4 `. y6 q8 S+ n) M/ C# B实验测试
, x* e  M: l2 t/ O  E  E  ]0 R
5 i) Q# b' j* Z5 X8 _- }2 d[color=#333333 !important]服务器) d& S0 H5 T1 g% R/ O
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com; R8 F# ~2 ^  J4 \- A: k- j9 ]
[color=#333333 !important]-f 前台显示,运行后一直在命令行等待
8 }# h1 J! B3 q; g" ?5 K4 h[color=#333333 !important]-c 中继模式|直连模式
5 O. ^' B" N+ a5 Q3 U[color=#333333 !important]-P 认证密码5 s$ |, u. D+ B6 b- U- }- l
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。. {0 H" t# c4 H  G! J3 H0 C
[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。  T! F/ c7 R- o. G8 P& Q
[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡
2 D; ]/ ~9 h9 N5 R[color=#333333 !important]
$ C. ?1 D! R% N5 ^+ r, p[color=#333333 !important]4 }! g) A7 M. l; l  F
[color=#333333 !important]客户端
3 ?5 `5 Q, M, N: z4 T8 A" G
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com
! ~. q4 Z- [2 r( I% }* H[color=#333333 !important]-f 前台显示
$ D6 U* g3 _- d- ?$ [, l) }: M* A[color=#333333 !important]-P 认证密码( g" a, K+ E. r6 F: R! Z. n
[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析# g2 R/ o/ L5 b6 H
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。3 c+ O5 |) v- L' x' @9 _
[color=#333333 !important]* a0 b6 H3 C4 t7 L
流量包分析
, _3 y4 o: a; |- h# b2 W7 X3 s1 p1 ^& _4 B6 X) |
[color=#333333 !important]抓包
+ l0 I6 s* @# P% ?[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap/ C4 t5 r% x2 c3 G
建立链接的包分析; o5 F: C$ o4 \/ L/ H  |: X
3 Z- v  f0 u# U! T) U- P
[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包
; L2 |( z' z$ r% x, E# m  h+ y[color=#333333 !important]+ n0 R% v& P. c- T9 I
[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀" e8 }8 F, v4 _: T4 S/ D+ R# p2 i
[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据
/ c3 w0 R  u" X4 n5 ]; d[color=#333333 !important]! B6 g: d3 W. w6 R9 ?
[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节)
$ @3 g; s" ?8 r# d* Z$ o- \[color=#333333 !important]
$ z, @: A8 U! z8 [[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。# y, p. T& i+ _4 [4 K
通信流量包分析& q0 r/ Y( b+ @/ Q! U& K

# O; ?: B( e2 c[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析
) d% h% v) o! A8 O[color=#333333 !important]
1 x1 h2 a! X% V1 P8 w[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。1 w3 U/ e/ o6 @9 `& J& H2 Z
[color=#333333 !important]05fanyi05baidu03com' c9 V6 k3 k, l% s7 d( s8 y
[color=#333333 !important]* x9 m! K, S( F- g/ A
[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。% M% h+ f7 `( x: r' [  \+ E, t
[color=#333333 !important]! r6 N5 l2 A) U6 d. e+ ~. x, U
suricata检测规则(并未测试,仅共参考)
; c2 n) a3 K, P, T% U( \0 G/ z
  e! @! ?5 H9 o; M. U  m
    + d% ^5 [4 C( i' m' u+ @$ [7 F
  • % g, b% x9 a& O- m
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;)Dns2tcp1 x  m2 k# `: I

! ^& k$ k. T1 J* o安装# A& c- r4 g' O% P
7 Q; [6 k( l! g+ ^
[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell4 S3 `- ?: H+ U; f" N4 L% C0 Q
[color=#333333 !important]下载链接- Y1 J* [9 Z2 J/ a7 b' y
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag
/ k8 w5 R! J8 I8 O
[color=#333333 !important]提取码:t1rw1 k9 {. c+ ~0 N
[color=#333333 !important]安装编译
9 b& D; k4 ?  g3 _' B5 n/ Y9 K& V3 C4 L
    5 @& F0 _8 s- q5 B/ @# v+ \
  •   y  e* R* K2 [& w( }$ E! j! t
./configure    make;make install[color=#333333 !important]服务器端
+ S& [$ ?; z* _* B+ P5 D$ L

    * c' q9 ~4 k& i2 S4 n6 Z

  • % u7 X1 ~0 P/ j8 D4 ~
server/dns2tcpd[color=#333333 !important]客户端
" T- Q$ n- h& l. K0 s

    # M0 a) C0 o( p6 m
  • % z7 A3 Z3 ~% }! q
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载
& s5 W* V. k0 O  ~" h

    2 J/ e8 u0 _" c9 O# D% H# I
  • + B$ m5 ?9 s7 K* O$ s8 D$ N) |: R: A7 l
dns2tcpc.exe实验测试- H( C/ ^7 R  a( P

8 J& e* n/ c- P% ^  C[color=#333333 !important]服务器端' A6 w* U) @( b' V6 R
[color=#333333 !important]1.创建配置文件
( A% F: I. t/ Y! u$ N
    5 n: _5 i: L. Z0 \! h0 [8 t
  • : O* t  W$ X# p; 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.启动
/ S5 \/ Y9 N5 I( b# q! q
    - `  ~; F. j; A- o/ i! ~$ c2 R
  • ) P- X. Q: J8 B$ ]/ M
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接
4 @2 B! W  g" S% N9 ]5 c[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务1 n! q! _! u* Q. t1 D! }
[color=#333333 !important]

5 R6 s/ E! X3 Y! j' f- Z& O7 t% E$ b[color=#333333 !important]客户端2 q! o& S' K) ]" i
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 2
4 i* m0 e8 C4 i% f( X% L+ Z, C[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源
  X  o  D9 Z9 C4 v6 P% e[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP
7 F( c7 B) k* t( R3 ?1 E' R$ h[color=#333333 !important]-l:端口9 X* F9 \3 b' u- c; h: S
[color=#333333 !important]-d:是否为调试模式 2 等级可以省略4 J- b6 u3 E# y, I3 k5 S. o
[color=#333333 !important]
* K" k2 I/ F! Y4 H* Z; H[color=#333333 !important]客户端使用访问服务器
2 H' R2 m9 G% v3 ^2 {[color=#333333 !important]
+ b6 u" P/ `+ t* R/ V7 K流量包分析
, j9 u, ~: U1 {, a- z; L3 F/ Z2 q/ G2 p+ ?( x
[color=#333333 !important]建立链接并未产生通信包
& S. ~( C$ g$ |# [3 P[color=#333333 !important]
+ M9 R+ A( o$ s0 z0 |[color=#333333 !important]使用ssh访问时,才会产生数据包8 B* H3 \2 r* r
[color=#333333 !important]
; g. X/ o7 p6 \8 z6 p, r- Z' L[color=#333333 !important]数据包分析
1 i0 j# \- v4 ~1 U9 J[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中
! h% J( ^$ w, m. Z3 L[color=#333333 !important]' ~+ f; ?" h. l3 ^- B
[color=#333333 !important]
, p4 [% R/ q4 M0 g) ~0 ?9 v. m' l[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。, u% m$ G* h4 m: O9 z
Suricata规则检测(并未测试,仅共参考)/ g* ?9 F- e7 e# V
8 ]. Z% x: f0 x- b  w  X7 i
[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测; {: u- T1 I1 R3 J7 o7 T, T) \
    ) T- M6 a0 g- F6 n

  • ' `8 v9 A; s5 S1 \' g7 a
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]结尾
/ c( T- B2 g: S2 y5 o$ H, j% }[color=#333333 !important]小白水文,求大神放过) T0 Y. L) `' S+ @! v
[color=#333333 !important]pcap包下载地址:
& \" r7 B9 G5 @- \
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw
0 o, }" `5 g- {0 M  U1 y
[color=#333333 !important]提取码:n5ha
- X" S6 X8 c. w7 \[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载
4 o+ `, r# F- C2 r. u
" P' V5 u" ?; m精彩推荐2 y* N+ W( V0 e& P  H+ \
& a* A1 Q" f" p9 h
9 v( D* b2 A1 {3 x: V

& O8 [3 O/ O9 R# [$ \. J, C% l) a" Z% ?4 e2 ]; [+ {) @8 {# a% z

9 J( q5 A, L+ H9 e' H" C/ k
. b. Q5 h; A7 r2 D) k* d, ?# [8 J来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=18 T9 i. x2 @6 C
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-2-23 01:24 , Processed in 0.046268 second(s), 27 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

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