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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7915|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道& h3 o6 q  U# B- k
; ]( d6 F3 O. a, B% |
[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。" ^, K+ ]8 {! K5 W" @3 a
实验环境5 n7 D% z" b& E+ N, i3 h
0 `2 Z# M. \& \. Z1 C# b3 h
[color=#333333 !important]CentOS Linux 两台
& G: |! x6 u7 _9 o  m7 i
创建DNS服务器. l* K+ Z, o# ~) y% y
7 ]/ s" A# H$ ]" n
1.安装bind
6 g, l  d: H3 y7 f9 |! M6 U  P
[color=#333333 !important]yum install bind*
9 b/ E0 V  ~& g* q6 L3 N
2.配置named文件) b" s8 v& u, R; e  Y1 o. \: Y& ?

, {3 d+ U! x) [# H) N% U
[color=#333333 !important]修改/etc/named.conf
1 }5 ?0 a* ]( j2 ]: x
[color=#333333 !important]将下图中选中的地方改为any: m$ K& K  R8 r0 g  G- H
[color=#333333 !important]
$ a  g( ?% @5 p& t3 x1 {$ R( _3. 设置NS记录,A记录
8 r3 i6 w  e1 k) U/ y" ~* b
8 L# o0 K* x8 {- z: [9 P" [[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件7 T5 z" ^9 N3 H4 n- g6 _0 Z8 y
[color=#333333 !important]
1 [0 v& P8 V5 o4 o+ g
[color=#333333 !important]增加正向解析记录' A( y9 J4 k# T$ p7 W$ n
[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字
3 l) x/ Y* d7 l+ s) h
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel
! J# d8 \8 J" G; C
[color=#333333 !important]修改文件如下
& J: {3 O7 j9 g[color=#333333 !important]添加NS记录,A记录* H% V( I6 q0 l: @- ~- l
[color=#333333 !important]
! N) z, _. _( B7 i: y7 e[color=#333333 !important]添加bind为自启动服务
: x0 m2 i- G1 [0 {4 D/ J
[color=#333333 !important]systemctl enablenamed.service
4 L! Y5 K8 `. A1 h[color=#333333 !important]systemctl restartnamed.service
" K- D$ G' I( P) U. H. b
[color=#333333 !important]查看启动状态
6 z, V; ~+ O5 x
[color=#333333 !important]systemctl statusnamed.service, I  j6 \# i; G) h7 }) r
[color=#333333 !important]& F2 J" t4 z0 K3 a  h
[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F): L; Z' K& P$ k: S6 Z1 _
Iodine0 X$ [& ]# b" L" H
" q1 L: t0 w: {6 N3 j1 z' H
[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。
/ _$ [- r+ t8 {6 w2 S! c安装; V% Z  I" r" O" f7 Y& }1 A" a

" |- W. F% f/ V$ B. ^1 e( L% ~[color=#333333 !important]下载地址:
1 ~1 L0 _7 L8 Z8 D
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip$ ]  ~% M* t6 ~6 i) g% N* O
[color=#333333 !important]unzip 解压1 I2 ~; X  R" v6 I$ e1 ?7 w5 F
[color=#333333 !important]cd iodine-master
9 w3 i8 N  I6 R! A9 x2 x[color=#333333 !important]make
  }/ P( k9 T9 c4 ]+ |! Z[color=#333333 !important]出现报错$ {6 k5 I( I+ q' N+ ?2 ~; F7 a
[color=#333333 !important]
- {" f; V+ j# z7 w* W9 i[color=#333333 !important]yum -y install zlib-devel; {# ?& j: `& m5 `1 z6 l4 d
[color=#333333 !important]make;make install
0 p- I4 ]6 q- \3 p2 w8 Y[color=#333333 !important]安装完成
) q. F. t' h" U9 n[color=#333333 !important]进入 bin
* g3 f  v3 V& g$ N6 j[color=#333333 !important]iodined 服务器
1 f. ?. j: b2 B8 q2 f[color=#333333 !important]iodine 客户端$ o1 w: V4 K% T6 L4 A
实验测试' @7 y: I% o4 e

+ l+ X  @/ ^1 M/ x6 M[color=#333333 !important]服务器3 Y) l+ ]+ S9 s2 a
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com
; C$ `% y5 ^4 f3 \* P5 ^[color=#333333 !important]-f 前台显示,运行后一直在命令行等待
2 e$ h! x! x. ]  f[color=#333333 !important]-c 中继模式|直连模式8 |) j# ?9 D- V" K% }4 n
[color=#333333 !important]-P 认证密码* p2 {, @% H: q" N- z- I
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。' Q( K( R, p+ o$ p
[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。
, W2 G0 [. y8 O3 A' @# n[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡
5 i3 a/ h  Y/ |  M" O0 ~. m[color=#333333 !important]3 G$ }. S- L  L6 q
[color=#333333 !important]% a: Y  o0 T) C6 x, U
[color=#333333 !important]客户端
: i$ @8 k! c7 Z- j% O! w
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com
4 Q' P% @2 O4 u2 P[color=#333333 !important]-f 前台显示
' ~! D- L: h( c" Y8 v3 W[color=#333333 !important]-P 认证密码0 |; ]! {7 `0 U2 M7 H+ b; z# |
[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析
2 s8 {# H; J* F' n  X
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。
/ f( p6 Q4 |+ c$ w" H, I, I% H0 E[color=#333333 !important]
7 `# ~7 _6 I& M" I- K2 j流量包分析5 h% l2 b1 O2 F! s% C  g  I; E
0 u" l* b# p, G2 h9 C9 X9 C  a
[color=#333333 !important]抓包
& _4 h% x) }7 X1 b% X- o[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap; Y7 @* ?" r6 c' b* o$ b  j
建立链接的包分析
  h! X5 E/ O4 R- c4 y5 E# |0 k
[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包
2 R+ h1 M* e7 a% _) J[color=#333333 !important]
% [* Z) N7 b7 Y[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀
) @% |+ z* u# ?7 X[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据
( u& R6 b* x8 H/ N[color=#333333 !important]
& O+ F0 E. Z3 k+ p1 M/ f[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节)
- \; }# m+ w7 G' Q  w/ w( n[color=#333333 !important]
7 U! ~) ~2 z: Q[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。4 {2 C$ W' t2 {8 h# F" O
通信流量包分析
) `4 ]3 i( {2 N& n8 I+ g/ p- @" l7 z- _7 n- M9 t# w4 p0 |
[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析
1 M* i' g6 Y7 w6 e9 {% L7 ?/ H[color=#333333 !important]* s' T4 N5 Z: [8 \3 s
[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。$ R4 b2 m; w0 I9 ?7 E: ^/ B
[color=#333333 !important]05fanyi05baidu03com
  U) S1 c# Q3 E) L* t( b! Q[color=#333333 !important]
" q6 B) c* m; M/ m6 N) n" L$ O[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。
( f- x. ~; x5 T8 H% f[color=#333333 !important]# U% ?- E8 [7 ?: `3 A5 @! A
suricata检测规则(并未测试,仅共参考)
: P6 N( B8 `& C5 x5 C$ z$ }* }3 U1 n6 s* P( k( w
    / v. Q4 q2 W) t3 n

  •   l6 F1 y$ b3 {  R' J6 h
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
! d( X4 B: T& a. u% ?7 j6 s7 t
0 I! p  w) I7 E安装/ f" @; M3 \( i* ^
! A: J) ?: o6 m1 L
[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell- J2 \. V, ?' p7 \
[color=#333333 !important]下载链接
0 a" g- C0 _  G& m  [
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag3 B' K1 u) k) l0 r
[color=#333333 !important]提取码:t1rw$ P) f% m. v1 L# o
[color=#333333 !important]安装编译
! w2 c# w) r" |- `

    . z2 K) ^" S, r6 p% |. N
  • 8 c1 ?& I2 X6 g; h/ ]% L) h
./configure    make;make install[color=#333333 !important]服务器端4 d8 A% ]# C: M) I5 W

    / d4 s2 R4 c8 j* w. D' X9 l$ V
  • $ \; ~; g2 @! V/ L2 F! D9 w
server/dns2tcpd[color=#333333 !important]客户端& V$ B* c4 k+ e# [5 H
    , v# s+ M9 T0 K9 z

  • , L* K* |% E" \6 d
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载
3 v4 h6 R3 U* p( G$ @

    7 B  e1 `) `9 |( m

  • 3 C% u; d9 j' b/ Z
dns2tcpc.exe实验测试
5 a; E. d- w$ M9 n0 y) d  X( Z+ S, J1 N1 |7 o
[color=#333333 !important]服务器端% r. g4 y+ Q4 i* r1 E
[color=#333333 !important]1.创建配置文件
" ^' U1 W" b; z* ]- W' B& [* f
    $ ?+ L+ z$ h1 j

  • . ]: Y9 V1 i8 ]
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+ b0 H8 ?/ v- s. N, F$ l' ^. j

    * {7 w3 `3 E% H4 `
  • - B; }: U; {1 d* {- {; u
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接
! H8 N2 ~( ~2 ?, g6 _1 m[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务
" p7 P5 G, h+ \4 y
[color=#333333 !important]

8 l9 h/ C2 n8 q- l1 I[color=#333333 !important]客户端
# C2 Q( a% f! k; I5 y" }9 j
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 2
3 [& O4 r  m6 {5 S$ m6 L[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源5 i8 e) T* r& E& L( S. L/ I
[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP5 l) i9 ]0 r% _* b
[color=#333333 !important]-l:端口/ K: [/ k5 i* }, y9 E$ \
[color=#333333 !important]-d:是否为调试模式 2 等级可以省略
  a: X0 o6 Z$ W9 e
[color=#333333 !important]
5 W2 x: @) M$ ?& o" C" z5 a9 T0 Q[color=#333333 !important]客户端使用访问服务器
4 M9 L: W+ O8 p) v) V1 Z/ V9 k[color=#333333 !important]* b# w' a+ D1 t6 R  V3 K4 B
流量包分析
) [8 I3 [  ~; _, M  n% l2 E0 p/ Z9 F% t3 T0 N; v3 }
[color=#333333 !important]建立链接并未产生通信包
7 g; H5 y! X4 e, h5 B[color=#333333 !important]
2 r" J: d1 {, |7 b( _[color=#333333 !important]使用ssh访问时,才会产生数据包4 i8 s* @1 ]0 V0 N' K
[color=#333333 !important]
! a" I. q+ u3 m& W1 s[color=#333333 !important]数据包分析# \2 N! v7 t' H# T9 K6 D
[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中
, o7 f4 K' [, y/ G/ b6 z, i[color=#333333 !important]8 E6 V" q# n) R- c9 r
[color=#333333 !important]
( D/ k* b1 L0 @3 Z( K- l[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。
% Y8 i" \2 ~+ C- \8 XSuricata规则检测(并未测试,仅共参考)
0 i+ ^. L2 `  `5 g6 R( \# P( b/ @0 l. B9 d+ }4 r/ [+ F
[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测1 o$ n, Q  C, ^$ \+ u/ {1 p

    * m" }; s+ w% ~, W/ z& U

  •   b- B9 N! [# ?& R7 j% 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]结尾
. h/ U) g5 Z5 o) |[color=#333333 !important]小白水文,求大神放过
% ?5 @& i# }6 }$ M0 L+ w6 O[color=#333333 !important]pcap包下载地址:
9 e! T( U3 k" u1 x
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw
+ W9 F5 k- a2 X6 B
[color=#333333 !important]提取码:n5ha, Z# P7 W, P% ]2 X9 c4 t
[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载
/ {1 ^+ i. y0 ^/ d6 A3 w: P) C9 U( [# T" w( L
精彩推荐
9 ~( b8 i0 O% p9 n8 J, P) s5 P
' S; @0 U7 x1 c( G: O

" U4 Z# s# g6 y& z* |
0 S* `0 @4 v# I9 ~* \0 V) H( V+ F: E9 z) v- f6 |% a, l1 B) {
+ d8 `+ K% X' w; I4 ?3 _& J

- M, D- ]/ e  ~' }2 ?来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=1
1 q: N' g- l! t5 X6 a, R- _免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-10-14 03:53 , Processed in 0.053246 second(s), 29 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2026 Discuz! Team.

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