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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7804|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道0 H0 N8 \) [% y' W

% T4 {8 h. n  D$ ]  a4 i( Y8 @$ ~, h[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。
& N; J3 a) ]8 [% F* Y! Q( k实验环境
6 z) q) g2 k% d8 ^5 d; ?5 ?5 I/ ~0 D% D8 z# s8 Y
[color=#333333 !important]CentOS Linux 两台
: b/ c# n# C+ K" p  n( q
创建DNS服务器
9 i5 D9 M( U5 c' t& r" m6 @2 ?/ @- \6 n& ^
1.安装bind
7 B& ^  @5 ?4 D5 A
2 }1 M2 T0 p8 M) h3 ~7 w
[color=#333333 !important]yum install bind*
2 N; `6 e  j: F" Q* G
2.配置named文件: O1 Q9 Q3 G5 H0 g" ?
, n6 C+ w2 E; n7 Q" r! K; u& h0 M
[color=#333333 !important]修改/etc/named.conf
( o: y2 J+ A7 l4 }$ s
[color=#333333 !important]将下图中选中的地方改为any
+ J. y$ h6 J4 _+ z8 g/ A- q0 }8 _# y[color=#333333 !important]
& X( K. s! N! j, m5 u+ Y3. 设置NS记录,A记录
: r* N% ]. R. P, ?! u( K; c
; i! a, y; q$ q% H! f9 N- I[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件1 P- m8 c  U, ^
[color=#333333 !important]

3 w3 t! ]6 x" @2 E7 Y- j; f  }4 I[color=#333333 !important]增加正向解析记录2 W: K2 e3 X# |4 k9 M/ e
[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字% u$ S9 `4 p. a0 a( C' ?: Q
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel
* L0 K4 v6 d% F# e/ W
[color=#333333 !important]修改文件如下# T* I4 m. t2 A# J
[color=#333333 !important]添加NS记录,A记录% F! b/ R, d& \& Q/ I# C+ u
[color=#333333 !important]
9 F! ]: Y- a# E! [5 m$ @[color=#333333 !important]添加bind为自启动服务7 S% C* Q- n% m5 d
[color=#333333 !important]systemctl enablenamed.service
$ V& F) f, z4 c[color=#333333 !important]systemctl restartnamed.service
, @: i; y0 ?9 W( x7 c
[color=#333333 !important]查看启动状态
8 U7 Q/ @7 e/ A0 p5 P* f& d* o& E
[color=#333333 !important]systemctl statusnamed.service0 J* I/ _1 Q6 U* [5 E0 [
[color=#333333 !important]# o# z; q- \/ T0 C8 v
[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)4 [* e. I, k* \/ ]% A
Iodine
" w; S4 I8 r" @, o+ }. D+ R3 d3 v2 }3 k" Y
[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。9 n9 R2 U  f( f  I% V! R; h" l4 _8 p8 Y
安装* a. W% u4 D& W

$ m6 m  n) H1 D. [[color=#333333 !important]下载地址:- W& f: J2 T1 d8 x8 J" L
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip3 f0 l9 S. C0 u8 [  a
[color=#333333 !important]unzip 解压
( x- a( A+ r$ E/ k3 N" H[color=#333333 !important]cd iodine-master
. i& j3 v6 V# J2 E% `8 }9 X[color=#333333 !important]make
" ?4 v4 R& y2 v5 S, W/ k) x8 p[color=#333333 !important]出现报错5 E/ e5 f- q; `+ r; z, w
[color=#333333 !important]
( d  y' x3 |- X: X6 f) b[color=#333333 !important]yum -y install zlib-devel6 K( W2 \$ Y9 [
[color=#333333 !important]make;make install  g7 G/ p7 J4 m4 H/ s
[color=#333333 !important]安装完成8 v* Q0 y4 _, I, x* X9 T
[color=#333333 !important]进入 bin
9 t/ s# i' `+ \$ B* z[color=#333333 !important]iodined 服务器
2 ^" P  g: |' x: X4 z* o0 i& q[color=#333333 !important]iodine 客户端
0 p# H. @# M" Q实验测试
8 X. n" t$ }' {7 i" t
6 }3 ?; U) F1 i2 D[color=#333333 !important]服务器
3 @( x4 k) Q; ^
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com! p0 O! a4 _1 J  e; n
[color=#333333 !important]-f 前台显示,运行后一直在命令行等待
9 [0 Z% N8 }  k" n  k[color=#333333 !important]-c 中继模式|直连模式
" E5 [( N5 }+ z7 f7 R  \' z2 y[color=#333333 !important]-P 认证密码
  g5 J  Z, b% p+ }' L* D
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。1 P, M8 J$ b. y/ u* Z& M
[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。; K9 ^/ Z- Y! n3 T; M0 C5 D' C: }. Z
[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡& y4 H1 `4 ^  E1 r0 T. U$ l, J
[color=#333333 !important]
' E) f$ o: i7 r: U[color=#333333 !important]
) z6 W  e( S3 d  g[color=#333333 !important]客户端6 T* Z& G4 _" }2 e8 w  m6 p, t
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com8 \" k% w8 u+ `. w. K
[color=#333333 !important]-f 前台显示. r! E  B2 S2 `' w
[color=#333333 !important]-P 认证密码
) A9 V! {! t7 e, ]5 O" y) e[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析) \& a7 c& ?2 T! ]# Y$ \
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。
/ O& T" [! q0 Z. W* z[color=#333333 !important]
$ F# S! |& T2 E! B+ w6 Q2 K$ P流量包分析
+ w& F2 X0 k! m, K9 Q" k
* V! i! b; P. s) M( Q7 Z& _& C
[color=#333333 !important]抓包
5 W2 k' T  P6 |5 y6 U7 k2 B[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap7 O! ~$ h. A& C- G) j) R& `
建立链接的包分析4 T4 Y. X) ^5 Q4 P+ F- `* D# ?
" `+ k# Q4 `3 G/ m
[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包$ ]2 d: e9 k, Y7 e( [" W+ V
[color=#333333 !important]
$ D5 e( ^2 t2 f: A( [. B[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀
8 g: x: N3 m( Y- E6 o. d[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据
( \- O  }1 [1 J7 l+ C/ N  d( {[color=#333333 !important]
: |6 w' E/ A! _* i[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节)8 Y- r1 @6 R# W  ?, o, w! c/ H
[color=#333333 !important]
  _, y/ f5 X$ n) F% z7 D9 o[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。
/ m4 z7 |/ `& i5 m, Z8 T: p2 U通信流量包分析8 X2 S, W' J4 \, {
6 a6 c) @+ q& R; m* V5 W
[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析5 R4 K; ?4 a8 `. V. I
[color=#333333 !important]: |2 c, Y/ P$ x" S) G( {
[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。) e, x9 i  {9 o& [# [
[color=#333333 !important]05fanyi05baidu03com
/ u& O5 {# a/ {9 {! D& d[color=#333333 !important]6 i1 D0 a( G1 J( b- v# X1 [
[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。
/ W# h) e4 U) I$ s* |0 _[color=#333333 !important]
8 I+ a; ~! \! Z/ n: psuricata检测规则(并未测试,仅共参考)
+ p: F2 [& @$ @9 X, _' x1 x+ S5 B

    - y& d! V9 E8 X: P
  • $ ?5 I0 p6 K9 |4 {+ B4 E
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( Z* |, c' r7 Q& _! b

, b# c/ o+ J5 e& {安装0 n3 h! C2 G0 O, R' a1 D1 v2 B! S

' t5 M* e1 v4 q( Y. x7 ]9 d& t/ Z[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell
1 N) \, E2 z* M- }/ H* d. B2 |/ J[color=#333333 !important]下载链接' Q8 Y& @, A( p  ?
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag4 U) I9 k2 p. D! o+ E" v
[color=#333333 !important]提取码:t1rw
# m8 c/ e6 E2 F0 l4 k' O[color=#333333 !important]安装编译
2 E: m* d  ]6 ^9 m

    & j' c9 b" D. ]- I9 r1 q
  • 7 K& h% h; @2 z4 b
./configure    make;make install[color=#333333 !important]服务器端# r* q2 {( d1 G0 Q
    ( O0 M+ [4 x0 p

  •   C' A9 S5 L; k' t" r& y$ G& [
server/dns2tcpd[color=#333333 !important]客户端  z- w7 X: x3 y2 ]! S* Y
    ' H8 t" A* D2 c' S
  • - o, [! _1 ]6 ?7 l
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载
0 x# f9 C& }% s7 ~4 l1 D- I  e' ~
    - l: u( J- E) v+ f/ ?1 i
  • & r; G$ w4 }" \) h. P. ^
dns2tcpc.exe实验测试
7 w, T& t4 K* L4 u
6 g! W, {( l. @* |& K( d" {8 }[color=#333333 !important]服务器端
0 i: r3 \( X5 z- U: h! D[color=#333333 !important]1.创建配置文件) l3 ?1 m6 d+ d# g
    1 l% J6 [0 L, F0 U# p7 |- d+ f. }0 N
  • ; A3 W  V  r1 T$ c2 X$ 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.启动
1 E# {% c, Q$ r7 L5 ^
    # a- ?- O$ N+ s/ C$ F

  • % ?. a/ C. K+ n9 Z2 O. j" v* J
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接
; J# l! D: B% G/ R2 N[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务
9 [- J4 l7 Y/ y3 J3 }: V
[color=#333333 !important]

, w4 [' X% h6 U9 ], D' z! C[color=#333333 !important]客户端
6 Z6 [; P5 w* M2 w1 ~, b' w) e
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 2( E7 Y. v' r9 H" ~
[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源
8 P+ v7 O1 e* g1 ]- d[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP+ s/ K& p: W, S9 A0 h4 p+ S8 I
[color=#333333 !important]-l:端口
+ U; @4 P) p. `# Z2 K[color=#333333 !important]-d:是否为调试模式 2 等级可以省略% l$ i: u/ E; d; K3 M: u) _: }& Z
[color=#333333 !important]
1 E! _6 s* a7 o; `" y[color=#333333 !important]客户端使用访问服务器- M& C1 ^; ~. q/ D6 s! R
[color=#333333 !important]+ h( T/ `4 ~8 M9 U( [* I( m1 N
流量包分析
" f! s7 y- \' J0 d- q4 _+ z
% W7 w. Q8 i5 A[color=#333333 !important]建立链接并未产生通信包
( N! q# V1 i7 M5 }+ N' U7 ?; F[color=#333333 !important]9 {: m4 S/ E& T; c9 T7 {7 y
[color=#333333 !important]使用ssh访问时,才会产生数据包+ ?% B# |# C2 Q% O  @
[color=#333333 !important]
0 e6 F) p9 H2 {0 }& d[color=#333333 !important]数据包分析
) M3 p. b" z6 ?2 K# s1 t[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中" ~; m4 P( L" x4 q2 K4 K
[color=#333333 !important]  K. a" R! J' b0 e
[color=#333333 !important]
/ Y* k. i8 i6 T0 T[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。
) }  ]0 H" u1 x* jSuricata规则检测(并未测试,仅共参考)
4 O; \' `! D/ z6 z1 G3 R% V6 B8 ]0 A6 T9 l+ I
[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测7 ?0 \  J& d1 [3 g  m* m

    ! S! j2 ?. o4 t$ U- ?

  •   r$ e' e6 a8 U
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]结尾
5 `; c% q& L! y' I[color=#333333 !important]小白水文,求大神放过3 \% r. M0 ^4 o8 I
[color=#333333 !important]pcap包下载地址:
' z3 v1 Q  T. s5 J; f& ~- X
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw
+ d8 g4 O9 [! b! [; F
[color=#333333 !important]提取码:n5ha
* S% I. b) q$ n' x# g9 t[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载
# A  {9 K2 u! m2 `/ K; l  w5 t0 `4 G5 h
精彩推荐8 i6 D; }% o& w

. C$ l6 Y1 U6 e& K1 ]
# U1 G1 ]1 e- k/ t- g- @, u
/ F' d/ E, n8 y; o$ N* E1 g  ~% Z
; @  m. s( R7 A8 f+ `

- Y. A7 R+ }. E; @7 z3 u+ H8 v% K. [) M! }" X" o! H
来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=1
0 {; x8 ]: D$ Z6 z2 p免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-15 15:30 , Processed in 0.082173 second(s), 28 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2026 Discuz! Team.

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