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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7763|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道% [! ^- y  K9 O, U

2 c3 z9 n! c. e9 R/ W. i, r[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。
& w8 a8 j4 e+ ?7 s实验环境
; s/ q  E: J# {4 b2 Z1 |
$ L' g; |& v/ ]9 ?/ u6 G3 Y
[color=#333333 !important]CentOS Linux 两台
9 l. ]4 \9 S. M! z1 F
创建DNS服务器( Y* I9 D' j8 w

& z2 I6 c/ n' p+ v& Y" m1 E1.安装bind
4 i1 ~0 A4 V8 t. f' Y: t8 v! D6 e( S0 p  C; }9 U" Z" f. a) b
[color=#333333 !important]yum install bind*
$ t: T: B, D% Z
2.配置named文件
# j- r3 j) c9 E9 ^7 G
! k. e9 r6 M' p2 A, }1 I
[color=#333333 !important]修改/etc/named.conf: g) Z6 M. x. x, V! K
[color=#333333 !important]将下图中选中的地方改为any
  x7 e0 h6 B7 j" E' [3 \( @[color=#333333 !important]
( G5 b: _: [; n5 N; V# |3. 设置NS记录,A记录
* ?2 |, O9 w, O& J! C' L! S2 s& k, N! R9 @! K. G+ q
[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件
- S3 w+ C4 Z9 U, G) I2 W: U
[color=#333333 !important]

- V  `* {9 ~9 c' b# K8 Y[color=#333333 !important]增加正向解析记录
$ H# y+ F( I  P' d/ l; A, z[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字
, t5 @5 X$ V' M  m, C
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel; E3 L( q: V: D- h5 U- [
[color=#333333 !important]修改文件如下
) I; i; k2 F2 ?  o1 B( X/ W[color=#333333 !important]添加NS记录,A记录
( \' K( }3 X( A$ Z" K+ A% p$ E+ K[color=#333333 !important]5 m. \# q+ n0 G% ?( u" ]
[color=#333333 !important]添加bind为自启动服务
+ p4 v# V; P% a0 B6 `/ ]
[color=#333333 !important]systemctl enablenamed.service
+ ~) p9 r7 j& o2 D[color=#333333 !important]systemctl restartnamed.service
7 ~! {. ~) s: H" J: [
[color=#333333 !important]查看启动状态
- z8 G# G3 v+ o: G, C/ e" L7 E
[color=#333333 !important]systemctl statusnamed.service
2 K# o, F! f4 {( Y8 K, u
[color=#333333 !important]
, `6 _5 t/ s0 ?3 T[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)
6 h7 m& o( x5 V  U0 d; g$ P+ i3 hIodine
# B4 K2 w( r8 k% g8 B, _& R# u5 u: t0 L- z  \0 _  c4 M/ E# v
[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。
1 y% L( G8 L0 t/ [- F安装6 |) x0 W9 O" E. ~( e

! j0 o1 V+ _% l& N[color=#333333 !important]下载地址:# C- \* O& Y6 y* r
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip
/ E, }- J2 [+ [
[color=#333333 !important]unzip 解压
. _3 C# |+ o. Q- k1 ^- b[color=#333333 !important]cd iodine-master
5 A+ i0 ]& T% H3 {[color=#333333 !important]make
0 s7 W1 I! S; r[color=#333333 !important]出现报错: k8 l; `, ?, {! O: ]. |6 k* _
[color=#333333 !important]. @" b/ s, L! [! E: o3 g
[color=#333333 !important]yum -y install zlib-devel
* J: N5 W3 j* h9 p. M& S[color=#333333 !important]make;make install' |, H% e3 R# S. N6 {1 @! L* `7 L
[color=#333333 !important]安装完成
( g: m6 P! x+ z# p/ {( V[color=#333333 !important]进入 bin+ }+ A: e7 m4 X# j3 R" y! k& t
[color=#333333 !important]iodined 服务器2 L' }7 B9 }: l  ?1 d
[color=#333333 !important]iodine 客户端
- y" W* k* |( N: k0 {' P* Z9 ^0 |实验测试
7 I+ l2 M2 s7 ~1 c: K) z+ I  n: k( P* `1 ~# I: P
[color=#333333 !important]服务器
) c9 z4 \+ d8 \) U& M
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com  c/ i4 H8 [" `. Z/ Z8 F; }
[color=#333333 !important]-f 前台显示,运行后一直在命令行等待
, o3 t' F* J2 ^1 @6 k. M' L[color=#333333 !important]-c 中继模式|直连模式
3 v4 S! ?! E% i: e3 \! u[color=#333333 !important]-P 认证密码+ c2 Y' _( X  t- |; y4 @
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。
! w1 T- G3 Q" @+ o. Q$ H" e[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。
  Y; r; R4 M! l0 C/ @+ d. W[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡# w/ t* c- B. v- h
[color=#333333 !important]
1 `. B: R5 m6 F+ S[color=#333333 !important], m  w1 D& \: _' }+ p& D
[color=#333333 !important]客户端
8 ~' I! z$ T" L- x  n
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com
8 R. g+ P0 o9 ?8 Q. P/ s[color=#333333 !important]-f 前台显示
( c) a( d  I4 X/ l2 a0 H[color=#333333 !important]-P 认证密码- K! w9 b- S# c2 x) G
[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析
" S# _* p" W4 {# c7 ^
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。
# ^  s& e* I  d# ~[color=#333333 !important]/ i9 }. ^/ Q* y1 ~- j
流量包分析
8 g  ^$ A; Q. A
0 x) J8 B% F2 y$ z. n! I$ E* P
[color=#333333 !important]抓包
' \# w. s; P* a5 W[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap
3 \" n8 c' M/ E& e  o
建立链接的包分析
* W6 _: G% J7 x5 d
% Z5 I. w% j7 {9 P[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包5 P& b; M' A& t2 }# q( [$ i
[color=#333333 !important]
- L4 u7 _: ~% T[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀
% Y. W6 p$ c( {2 @! d: A$ C1 U[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据8 f3 ^. D+ j4 w  i9 N" b9 X# f
[color=#333333 !important]
0 a+ V: x4 @( m9 `% a8 D8 }# Q[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节)
5 W( w6 ^7 \( m3 ], K! ][color=#333333 !important]
/ T; f) A. Y$ u% `[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。. ]4 O; Y/ h' t; }# o
通信流量包分析) p; Q/ A+ x+ b; P8 P
  _3 v7 A0 \/ _. {- \5 g
[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析
' P) t0 c1 ~3 e[color=#333333 !important]
3 Z% F8 @$ ]) G' u[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。& H+ S( ^9 D: U
[color=#333333 !important]05fanyi05baidu03com: W# t! J9 t( e& g! \( u# i, R
[color=#333333 !important]
$ R& k8 ?- E" x[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。  P' R$ }& ?$ Z$ x4 k
[color=#333333 !important]
6 [  A( ]: w. D- F, e7 Ssuricata检测规则(并未测试,仅共参考)  ]+ L+ t% H2 d# ]
, ^1 h( {2 s/ j9 R# Y
    8 q$ o5 g" D4 V3 D" c

  •   m/ |0 X4 g0 M7 Z9 d7 L3 {2 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;)Dns2tcp
. Q! w' l. R8 t( X( U$ g1 Z/ f
: y1 A% X# T' M6 `( J/ Q2 C  N安装- _: }; [1 U# Y) C! |
0 V- D/ G/ {' U& g& s0 J
[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell. u' ^8 E% g3 O+ i0 h5 u. n
[color=#333333 !important]下载链接
$ P, ?! a* X7 _( T* S& b4 x( e; |
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag
& u$ O' [* b: k
[color=#333333 !important]提取码:t1rw- O& ]2 S. H5 W3 G9 A
[color=#333333 !important]安装编译4 @( L" W% _5 Q8 _$ i

    ! e9 F1 h8 u1 l# y* Z/ I

  • . \$ l  [3 Q) S5 c) R& I
./configure    make;make install[color=#333333 !important]服务器端
7 G% s6 }' `- C+ ^9 n

    6 ?7 T0 q  F2 o$ w# u! F+ s

  • 0 O: B, @& E0 ^9 p
server/dns2tcpd[color=#333333 !important]客户端+ j' W& G7 n; j2 ~' w4 c7 z

    2 F( X3 P# o; ^$ \" g" e3 M. g
  • + W8 C# d) s' m' s# P
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载' ?# z+ K0 r' B6 w7 E; m- l9 q
    % `4 j/ \' |3 Z& {

  • # ~1 B/ U: V& M) D: o  H
dns2tcpc.exe实验测试
0 X6 y  z0 \, v8 \9 y( @: G( Q" S+ v& G; `! k
[color=#333333 !important]服务器端
1 T  H5 ^  w  Q5 z7 o  z[color=#333333 !important]1.创建配置文件+ `' `. v9 I8 J: N  f  j5 T
    0 {2 U8 {' Q' R+ ?) v0 m) W

  • ) t* C' I9 `% K7 q' U
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.启动
; w/ v2 t, Z% j
    : s$ L+ H* r) R

  • & g2 T, |- L0 P: y& T, J
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接
9 @' u) ^$ \- M) w) w! @9 t[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务, c. J2 N5 @, X0 ?
[color=#333333 !important]

7 U9 _4 H3 z& c$ r5 q[color=#333333 !important]客户端+ J. b6 {3 D0 I' z- E/ f
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 2. z8 z9 a' K; ^5 f0 l3 D
[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源
5 B' p+ M  C- a. K8 w: S" Z2 q5 Z[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP. d9 N1 [. t  b' \9 U
[color=#333333 !important]-l:端口. n3 u+ N" q( j/ Z, J; M
[color=#333333 !important]-d:是否为调试模式 2 等级可以省略
* n( o( m* y# x& s- Z) S7 j
[color=#333333 !important]  d0 ~- B  l& @4 C( J! i+ B
[color=#333333 !important]客户端使用访问服务器- }3 l6 ]: ?# @5 p
[color=#333333 !important]  E4 A4 B/ v& L% X  V' R
流量包分析
( ^- w. D5 t7 @* N& V: ^6 e3 D- ^
[color=#333333 !important]建立链接并未产生通信包
& U+ `4 Z( B0 I# Q# U[color=#333333 !important]& w! G  V  c% @" p( V
[color=#333333 !important]使用ssh访问时,才会产生数据包
+ G# N# g& Z/ a! A[color=#333333 !important]
7 {' Y4 x: o" r) E6 S[color=#333333 !important]数据包分析/ k7 O" X* @% r& L0 S! F. R
[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中
4 x! R8 B6 i) S' h* |2 r0 G[color=#333333 !important]% E; _; |5 I2 n3 z6 x( ]
[color=#333333 !important]! y6 C! c5 A' U8 n% y
[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。, ?( e- z1 _: e6 x& w. K
Suricata规则检测(并未测试,仅共参考)" r" r- Q3 F& w& {8 a+ ?% \% ~

4 O/ R; C0 ]. h# ?[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测( d& x' g3 S4 c7 X! Y: l7 g" a1 ~7 l
    & V  ~; }7 Q, c0 n: R' K

  • , Z8 e" C' z3 K+ 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. D0 z2 w1 W, m0 U7 p/ z6 [[color=#333333 !important]小白水文,求大神放过0 z9 g$ K! _6 x( u. ?
[color=#333333 !important]pcap包下载地址:0 {5 |, W- d2 Z- v* y1 S3 I. [3 d
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw4 j* m0 h) s# M( i
[color=#333333 !important]提取码:n5ha
" w" E9 B) e* A1 Y[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载8 |4 d! e7 l9 }

; o$ c( I0 B4 A9 D: {精彩推荐0 u# S+ A; v# R7 n* [4 `: v

% n& Z" f8 z: w! t! t
+ v+ |) _9 I) l4 R! b. |
& W+ q' H9 T! {, x0 \
1 S! a8 O3 G( {( F8 u

0 d( S: ^0 d( E. f
6 l( J2 g9 w* e来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=1. b2 B8 i8 u* z% e6 u& p; ~
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-15 00:19 , Processed in 0.039418 second(s), 26 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2026 Discuz! Team.

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