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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7564|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道
$ o" S* [7 _0 a& t" R) b7 I5 z3 w( k5 A5 ?/ Q
[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。
& y  m# d6 B3 }* L) q% d实验环境
4 B( f4 A  _1 l) ~7 ^
6 m. Z5 o1 {6 ?% a. _
[color=#333333 !important]CentOS Linux 两台4 W0 B# h# m: @  i
创建DNS服务器
+ U$ T- s. e! W- b
7 }3 R, K1 q  H. b9 E4 p1.安装bind- K) C1 T* k1 J* x" @! Y: o. O

7 L) @9 i4 u! z/ L' [/ x2 e
[color=#333333 !important]yum install bind** {0 T& p0 H! N
2.配置named文件* ?% d( w+ H5 Z9 o6 J2 H+ r1 @
7 c' Q; f" Q+ Q; H+ H$ x
[color=#333333 !important]修改/etc/named.conf
( v8 c( P1 d- n  `
[color=#333333 !important]将下图中选中的地方改为any
0 V  a% b5 _, _& i- c[color=#333333 !important]
5 m, O, K7 k& ^; O5 e$ \3. 设置NS记录,A记录: }0 A: x: S( @1 q
6 ], ]0 N( h$ @* p
[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件
. R8 {( \8 h) h0 y( }+ d
[color=#333333 !important]
" C& Z1 u  e0 |4 X3 b5 [
[color=#333333 !important]增加正向解析记录
, |( f0 z0 h4 a4 g' u0 n) ~, t[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字
5 ?/ g4 F1 Y' ?9 K
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel
( u7 S' D" O' G5 e5 D+ P
[color=#333333 !important]修改文件如下- I- ]8 _6 i: P2 z7 ]
[color=#333333 !important]添加NS记录,A记录
8 W$ |! r0 O" v[color=#333333 !important]* A+ i5 _) H! H
[color=#333333 !important]添加bind为自启动服务* U; W. o% P3 X2 Q5 _% s2 \( k7 b
[color=#333333 !important]systemctl enablenamed.service# F- }7 b0 W1 d! n8 b7 n
[color=#333333 !important]systemctl restartnamed.service
: R" ~2 ^; g$ S/ N5 h
[color=#333333 !important]查看启动状态' U! [# Z, x" [$ h5 `( A
[color=#333333 !important]systemctl statusnamed.service9 }, r  x# H7 ~% @& _
[color=#333333 !important]
* s( W* n/ `4 [5 I/ l[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)
& l9 C5 Z$ X* `Iodine
7 q$ O& r5 R- S! E* w2 N( Y  P+ O8 s3 P( l+ P0 i( L1 \
[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。
) S& M4 D" D! U" w' b$ d# X# m" a安装* V& d/ }$ X! |' Z
0 I( N# D: {% P5 A
[color=#333333 !important]下载地址:
# B3 c& V2 i! K& a) S0 U9 p
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip% N8 I: x6 q8 C1 ?0 L! L! g# p
[color=#333333 !important]unzip 解压
8 L" N8 e% I$ a0 |. O( F[color=#333333 !important]cd iodine-master! W; k& ~, u7 D0 L
[color=#333333 !important]make
7 d7 J( P: h8 [$ w/ P[color=#333333 !important]出现报错! ^/ `+ W; h% j
[color=#333333 !important]
5 S" L; `6 u3 @0 P& r& X5 C[color=#333333 !important]yum -y install zlib-devel/ L) e1 y  Q3 \. ?) S% m& n
[color=#333333 !important]make;make install
; I0 L) N) V/ i4 y* l% p[color=#333333 !important]安装完成8 l6 F" E( U* m
[color=#333333 !important]进入 bin. U! C% ?  a8 E
[color=#333333 !important]iodined 服务器7 ?) l3 z: n* _  k, l# m& o' z3 k
[color=#333333 !important]iodine 客户端
1 j" n9 ?5 l) S, v实验测试# Y3 u. V, P6 a# X2 f3 n0 r. C5 ^
- X1 F: D- d4 J$ J2 G9 w/ x* P
[color=#333333 !important]服务器
$ S8 V( H: a# h$ E6 |$ N$ n" n
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com
8 I7 z& t1 a8 g/ U6 N[color=#333333 !important]-f 前台显示,运行后一直在命令行等待
' `! ^  J- [7 Q& `' S0 j- H[color=#333333 !important]-c 中继模式|直连模式! B8 S/ ?; {% |# q
[color=#333333 !important]-P 认证密码
  z& k. O3 X6 D7 A, ?) v$ @1 y
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。
" @0 A5 d8 {# f0 U3 a0 n( [* n& V6 x* K[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。
' M2 S; i  _% G. \3 t+ U[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡
. K: r0 E& I4 i  K) i$ e6 X# f[color=#333333 !important]' f* r: O5 k3 y0 V0 R
[color=#333333 !important]6 u8 G) f6 W2 n$ i
[color=#333333 !important]客户端+ B" i1 s' I& j* t
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com0 E$ F2 H) _- ^* R( R
[color=#333333 !important]-f 前台显示. c# h  N3 g- j: i+ ^
[color=#333333 !important]-P 认证密码
4 y: W3 K6 k1 u[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析
" a* n( ~5 k7 h( b
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。
4 N4 W: m0 S. S0 a: w3 I* B& `[color=#333333 !important]
- V; I! m9 U5 I8 ~流量包分析" ~6 W: u% U. M4 W9 |6 D" M" Z
5 d# u: ~6 y. Y+ _$ N
[color=#333333 !important]抓包3 O2 j9 W1 S2 Q) D% X, d
[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap, _7 x% x- M3 x& s' O6 j! m8 \
建立链接的包分析4 K  O( ], U. i
2 X& y. W1 [+ v# C' F" c( A
[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包8 D9 m, J6 B5 |# W8 l; C6 G# N4 M6 ~
[color=#333333 !important]
( G7 k4 ]4 Z: P9 D# j[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀
) {+ V8 [9 T: _+ d* v& C" m6 ^3 u[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据
+ v, w5 f  _/ O[color=#333333 !important]
* H* \7 a: I% M/ C[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节)8 Q* n9 Y1 f* S% F% M/ J& O
[color=#333333 !important]8 _, m0 R* I$ Q+ v. F
[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。9 p  F" N' \# _4 j2 i  m% I6 Y- m
通信流量包分析
9 H, F) }% L$ D' H  Y% r. U9 N; F8 x/ x
0 _3 C6 I7 V; w# @, b; W  N! `+ ~[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析- x4 I& {$ B9 H: {7 I
[color=#333333 !important]
3 d; i  d+ l: l! ~" G( ][color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。
$ l' Z3 P9 Z, |9 |[color=#333333 !important]05fanyi05baidu03com
3 j/ Q8 D" M) p[color=#333333 !important]
  J, q6 s/ ?0 Y[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。
0 K& E/ E+ O3 X* J, m- w0 e* r[color=#333333 !important]
& `4 e* v! V; b& {' R9 P; bsuricata检测规则(并未测试,仅共参考)1 ~2 q& I8 R6 G" c$ E* K& O, A
+ V" K; B8 t6 Y1 e4 ]# G

    7 i% Y" I# r6 z5 T3 E7 ]  n! M

  • 6 Z, g- Z5 s+ E* X
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; M# j5 s* x& o0 i( e/ A7 l7 w

3 O  d- `6 |* m) O, S安装
4 i" g7 m9 Z# M. o3 R3 Q7 x& q% m" V) a
[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell& l! j4 w( F/ Z% j. f0 `3 h6 ~. d
[color=#333333 !important]下载链接
1 U% p7 {, n3 K. p9 J) b
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag3 {) \' G5 M) V0 f' {
[color=#333333 !important]提取码:t1rw6 S7 J, U0 O3 U  U! _
[color=#333333 !important]安装编译* i; Z: O0 y; |8 u

    5 l: P# P4 j" J

  • ; T! C6 r& G+ B0 q% s
./configure    make;make install[color=#333333 !important]服务器端
/ X) g/ y! O; S& s
    / J3 K# `/ j  k& p+ D7 s
  • ) C' K8 s' H8 c; A7 H
server/dns2tcpd[color=#333333 !important]客户端* B( T$ ?# d9 j/ d  O
    # j* H+ M; j7 P9 j
  • 1 o+ m, u  c' N9 Y% }" c$ c$ ]
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载8 N; K! q- Z. `7 a& c6 ?8 r8 m

    3 r! q8 `: B) w, ]

  • 1 h0 }% D1 @/ X5 |% x4 V
dns2tcpc.exe实验测试
$ N9 _% K- l0 B* O0 m) G
5 J9 Q0 f  W0 w[color=#333333 !important]服务器端
$ W, S9 S, }0 Q4 r% p- }- i* S[color=#333333 !important]1.创建配置文件; Z" _1 c& Y4 e; C/ T

    5 q) `1 R8 J! M

  • / @* ]$ b, ^5 ]! q1 B. B
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.启动0 g& m3 i& G4 u, Z

    7 \+ ^2 F9 F. ~& c& j! ]" u& K

  • 1 S. l$ s, ~( q) v' [7 M
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接
' k  A9 K0 p, b0 U, S[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务
0 y) p" E& i! o1 ~: h6 H3 O
[color=#333333 !important]
# ~; u' u! K  ^6 A
[color=#333333 !important]客户端# g/ ]8 X/ D2 i1 g+ p+ _
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 2
# |$ F7 e# J' E6 P' K' t3 P[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源& m6 W, c2 H: `, I* ~3 t
[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP
6 I# [1 G8 R; n! k* N[color=#333333 !important]-l:端口
" i- [! J# T  a- k, \[color=#333333 !important]-d:是否为调试模式 2 等级可以省略4 V: O# Y% _( l1 G2 ^( A5 l
[color=#333333 !important]
, A; K9 ]: s! `! U1 b[color=#333333 !important]客户端使用访问服务器
. x8 k( I( x4 @9 l- ]' X[color=#333333 !important]' \. f* \. N4 H. a- e' z
流量包分析
. r1 J8 h  @9 k4 L. f; t2 M* A0 l& R, O6 d
[color=#333333 !important]建立链接并未产生通信包
5 z' d4 }3 Y% j& ^0 c2 T[color=#333333 !important]
" N1 b5 z( V' Z[color=#333333 !important]使用ssh访问时,才会产生数据包6 O/ y3 I# F* v9 X9 A
[color=#333333 !important]5 [1 c1 W, d, G5 i
[color=#333333 !important]数据包分析
0 J) J. E7 g6 T[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中
* d8 M& s4 h  a4 c7 h[color=#333333 !important]
& K! m: T+ n, ^+ ?% T[color=#333333 !important], n6 G% b; @, g; A% ~
[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。0 X. |& m! w6 C4 R5 \
Suricata规则检测(并未测试,仅共参考)
2 W0 f; O7 |6 f( R- f" q
: x6 d' j; a; w! L! c[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测
/ J( m7 I$ v" r: ?6 S6 q: {

    7 F/ ]- M; a- K' y

  • 3 v1 ]8 e# @5 {/ z4 p
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]结尾
% b) y) d" p9 J+ y[color=#333333 !important]小白水文,求大神放过3 S3 D6 t7 ]" N! E6 L
[color=#333333 !important]pcap包下载地址:
; @: G, w% M0 S0 K
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw) R* y! w; E' }* B" }9 s9 u3 M% H
[color=#333333 !important]提取码:n5ha
9 R& D3 p$ n: t, n2 j[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载" ^( P" m* t" A0 p7 }6 ~5 F% r
, i1 N8 v, w: X2 E
精彩推荐
: N% u9 C6 f- p* z- Z/ F7 X; Y% u* J2 l: k* I- Y: M: d1 }. {2 f
" f6 z" N) m$ c1 `* z
4 a8 Z6 s; G- w" n) Z9 Y; f

9 B9 z0 H5 l! ~! C' x, R2 s( y0 L
$ K6 n2 s: O$ N1 K* q$ g
# |& x3 O/ s- l8 e) d来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=1; [; [2 }' R% A) |' K% y( N2 t5 R
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-7-6 21:56 , Processed in 0.051056 second(s), 28 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

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