打开支付宝首页搜“523966799”领红包,领到大红包的小伙伴赶紧使用哦!

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7497|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式
DNS隧道
7 h; L6 \8 [0 @. y. m4 T$ |5 ^# i- X8 F- p6 M
[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。  b) f- n# W# @" m, ]0 T
实验环境& C' E  [$ o- g# Y8 ~

2 f' P* d0 @" L7 {
[color=#333333 !important]CentOS Linux 两台
3 t9 W# Y% K7 h$ h5 I; J
创建DNS服务器- K/ o2 V1 `  D" {& x; l* W
& ~/ z  ~+ L! h/ o6 z$ L% \+ [
1.安装bind
, H2 t2 r3 K4 z; `) @  j$ X8 p
4 e1 h8 X4 j& V7 [' z* m9 p- y
[color=#333333 !important]yum install bind*
# b, D  k* G/ l( f
2.配置named文件  o6 }$ n2 e4 x! H
$ [1 l  }4 l; L  h; s. {
[color=#333333 !important]修改/etc/named.conf+ B" w6 p& V4 G/ d2 k  `) O3 N
[color=#333333 !important]将下图中选中的地方改为any! ?# y6 u0 _; w+ H% t$ Q
[color=#333333 !important]" Y9 H3 ~7 m9 D
3. 设置NS记录,A记录4 d0 S  r/ J) O  v( i6 e6 v
$ g- X: q- H0 A0 R( O
[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件
5 J" u% p# f2 y* g
[color=#333333 !important]

# x& ^# N$ W4 T/ V) N6 l- S/ D[color=#333333 !important]增加正向解析记录
+ }; }% s) N* _* _, R[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字# X: p7 v0 g/ C' E% t6 g; ^
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel
* J7 \, Y: [5 X. G
[color=#333333 !important]修改文件如下
) {7 Y8 b$ O5 C# N: l/ u[color=#333333 !important]添加NS记录,A记录8 n' l! ~2 U3 X* \9 U( @
[color=#333333 !important]
% ^; i- c/ ~3 E+ n: c[color=#333333 !important]添加bind为自启动服务- K$ j  a4 x  \# n! z( s( {7 m2 {* x
[color=#333333 !important]systemctl enablenamed.service( M+ ?) A3 Q/ Y, T( H7 E/ u
[color=#333333 !important]systemctl restartnamed.service
0 M7 X' a2 U9 d! T
[color=#333333 !important]查看启动状态/ H# T' ~* l$ k6 o' B( k9 }
[color=#333333 !important]systemctl statusnamed.service
, o/ M! e, U% G- a' S. O' h
[color=#333333 !important]
2 ~- x; r" U( p" ?% y  T[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)# U+ W! y0 w& z. n3 A
Iodine% f' ]/ v' [2 |: \6 y
. C- \8 X% L1 R8 w) Z, ]' k+ `
[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。
# P$ [% q# K# H0 c安装
  b* X% B" Z7 u& a5 i) b1 V. J8 d; f4 o7 G
[color=#333333 !important]下载地址:* q* W1 p* {. M1 }! n, h* w8 N
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip
! a) ]( M/ S1 ^/ h. i
[color=#333333 !important]unzip 解压
4 T  ?- R" \) f1 {* z$ q[color=#333333 !important]cd iodine-master
0 t* F: L, j# ]. H! l& D  ^" P[color=#333333 !important]make( p' P6 g" S9 Y9 {
[color=#333333 !important]出现报错
3 x, O- I( b6 O& \# R[color=#333333 !important]
) `: P3 E: `& K  N: H" I9 @8 T$ a[color=#333333 !important]yum -y install zlib-devel+ ~: ]- W( n( B) f; r$ ^
[color=#333333 !important]make;make install) J& v7 D. W- w' X9 j+ {& \
[color=#333333 !important]安装完成, z' d$ R) @" w% B7 h0 E; v
[color=#333333 !important]进入 bin
2 k  N# n( h" ?0 {+ V( {0 |[color=#333333 !important]iodined 服务器
7 n3 X. J6 `2 s3 x) F3 a8 r+ H[color=#333333 !important]iodine 客户端
% P, S$ A0 X" c- A9 c5 m/ b实验测试3 P  e% B3 A7 N' T9 n# |$ g
, U  O$ P5 r+ |2 ^9 r% @
[color=#333333 !important]服务器
* n' [+ D# g# j- {% T7 D
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com% O0 w# V9 n; t4 _
[color=#333333 !important]-f 前台显示,运行后一直在命令行等待
. Y; A- b: H7 [8 s5 h2 Q[color=#333333 !important]-c 中继模式|直连模式5 c0 b) ?5 w0 A5 u  a
[color=#333333 !important]-P 认证密码, b7 C7 @! d; r# Y; M2 z
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。: u% x& x! d) ?, |
[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。( `- P# ]; b; [7 X3 S4 @
[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡
" }5 I  x' |3 p* Z5 H[color=#333333 !important]% M$ X2 ]7 I3 s0 Z' A& V
[color=#333333 !important]
+ l3 l; @1 v5 }+ ^  D[color=#333333 !important]客户端& X, {. l' Z, |2 d) T% X
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com  a3 \7 L" L: `, `( Y& c/ H) P
[color=#333333 !important]-f 前台显示  N7 D% d6 [/ ~5 n. g
[color=#333333 !important]-P 认证密码
4 v0 j) t1 n& S1 X3 A9 i[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析
: N5 r! h) {4 Q
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。
# `0 j$ q; p) K[color=#333333 !important]9 r7 M. ]0 b1 I3 ^: ^, M! [4 \
流量包分析
$ n* m1 n5 U+ o4 \8 E0 ]- T7 ]+ m( G
[color=#333333 !important]抓包
, c' a/ [" n: f8 v) G1 U$ _& E[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap* V9 W- h5 {8 J5 u* X
建立链接的包分析7 `4 r# v5 C4 n( {* |( x& i
- M$ ]3 j0 d5 ]) W6 `1 C. Q( p7 z$ h8 R+ t
[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包/ |  K( z" N0 f8 \$ [& }3 h1 v
[color=#333333 !important]
4 n% m1 q% V1 Q1 M! Q" {; z[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀
5 U; O8 f: d. Y$ ]/ O[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据* b! C. `9 {/ y, i- m* O
[color=#333333 !important]
# X2 m- b9 Q2 w; ]' J! P* M; m[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节). l9 X, ]3 u' Y
[color=#333333 !important]
8 P1 X" B9 _, p& t4 g' `" v[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。
- y; F! E5 X; S: G+ @( m/ v通信流量包分析; ?# e6 f+ f, ^! `1 ?7 [  x5 k

) T) s& N5 D* J' U% ^, s7 ]6 M- {% l4 ~[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析
6 o5 `% S# q* [( V. h9 F5 G- m* m[color=#333333 !important]
* H* i4 E5 L6 b; J! o[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。8 G, ?. d3 k( g. O6 E
[color=#333333 !important]05fanyi05baidu03com
3 d& J# D- U# s6 j* {[color=#333333 !important]) f0 d1 p8 Q( ?- F% d9 A
[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。1 I0 Y) ?1 I0 A/ g) E  P$ x6 L9 a' e
[color=#333333 !important]
: f3 |) {) l; j0 v3 L4 _suricata检测规则(并未测试,仅共参考)) K. F  ^% t# U2 D& {* A

  W  I0 `0 o& [: A$ H' o

    . Z8 R# @3 i" x/ R8 G5 X

  • # l- H% n" P1 m; h' d/ B! I! _
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
# H. \- K9 Q: b, p* }1 {/ M! j2 N2 r. k& q2 o- B5 q  j7 A
安装0 I! v+ K# x# P; u) j- k
$ v; A. h4 @3 y/ J% {
[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell7 f- N+ c. C6 w& _) x
[color=#333333 !important]下载链接% H2 P* r! [7 h# f' Z5 n& G" |
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag5 P' a" a) {% Z
[color=#333333 !important]提取码:t1rw- j! o/ \8 L6 D% W3 f
[color=#333333 !important]安装编译: K5 Y. F' k- P- u( r9 ?
    7 ~: }6 D  x% S; W3 p

  • " ~$ A0 N0 U1 O! D3 ?
./configure    make;make install[color=#333333 !important]服务器端, J$ _- g% S& O2 I3 I
    % r( `9 [5 p! T- W3 n! @6 F

  • 1 W" C# t8 j, U  F: C6 E
server/dns2tcpd[color=#333333 !important]客户端
& y; N. y. s3 l! I
    # n5 |) m) i, N" }! h7 ]$ t

  • ( @5 C0 l) R/ n! t, u1 F: j4 X
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载& I8 X; F: \6 D
    ; _; p& T2 R' v2 T8 e1 B# Y% }/ U2 U
  • 6 ^& Q( Y& O2 N) h" n
dns2tcpc.exe实验测试- Y% q+ g) s$ I% S9 E7 e6 h
! Y0 B* c; g4 R% m' v1 p
[color=#333333 !important]服务器端. ?- H( u& j" j$ E6 s4 }, ]/ W1 x
[color=#333333 !important]1.创建配置文件
3 ]( w) ^( r8 v8 `+ ~

    2 e3 w" B7 P2 w0 z! K; A3 M; @

  • ' f- `: ^4 ^; y- s' [
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.启动
6 z, ?( @. Q. f' ]6 U' I

    ! q2 }$ e1 r# j7 ^6 |

  • ) ?' ~4 R1 _1 Z7 w( ?. n; B+ x
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接
4 g& ?% `5 e: }8 g+ O[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务) r& @4 H9 N4 l+ A
[color=#333333 !important]

* C# f* j& i7 B/ E6 |[color=#333333 !important]客户端
3 E& C' _+ s% J' d7 A
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 2
2 s: f, t/ ]2 h' q  X[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源
& S: o$ I7 U$ ^[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP
2 g% p# B2 R5 m# F/ A0 q[color=#333333 !important]-l:端口5 w$ V2 ^: O: d
[color=#333333 !important]-d:是否为调试模式 2 等级可以省略
- g7 c% ?- u% t) R- i& H0 |
[color=#333333 !important]) g& n6 @/ K3 N0 I; f4 L& [
[color=#333333 !important]客户端使用访问服务器
2 f4 g) s: g- B# c& |5 W- Y[color=#333333 !important]
% V) L% k; e, a流量包分析0 c4 W5 S: y# m0 G  W3 V

% {3 d0 x" k; B! d# M[color=#333333 !important]建立链接并未产生通信包  q! x, h4 b3 K. t0 S
[color=#333333 !important]
9 S0 z* j5 ]3 A# V3 K0 [8 y* Q[color=#333333 !important]使用ssh访问时,才会产生数据包/ l- o: S* _: i2 |% O; [, c" C
[color=#333333 !important]; X! l1 a/ w0 S0 e- z! e8 |
[color=#333333 !important]数据包分析
- k  t" n" ?. I. \[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中
. S- l  j+ P( S! K$ C[color=#333333 !important]
4 u0 T( }: v+ w6 S/ _[color=#333333 !important]
3 J0 d3 T, S- i& d[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。
$ P, r  D* C, B4 I; y+ gSuricata规则检测(并未测试,仅共参考). u5 T3 N5 Q7 ^6 u3 v- @5 t! j* g

# ~' s3 r3 a$ @( ][color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测1 _3 C7 t; y+ s* Z. h

    , h5 e0 F; j, ]+ f  n
  • , b0 |+ O3 w7 \4 n+ _
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]结尾$ D9 y- ~- P& Q" A
[color=#333333 !important]小白水文,求大神放过
0 g/ j, E( ]5 }! n7 y+ u9 A3 U[color=#333333 !important]pcap包下载地址:
$ V3 E( d. v* |. p5 r8 F+ M
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw
4 E6 a# j$ S) a7 {8 [3 D- \" V
[color=#333333 !important]提取码:n5ha
& P9 H1 R# f; F: l  j( i7 L  o[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载0 u: d/ |) a6 g

5 T/ Y. R! w4 j. ^( o5 V" N9 o- P2 l9 R精彩推荐& A" h+ S; L) g2 g) ?9 b3 Z
- V4 p, g& O: q- x  t+ L

1 `5 V- u4 m" s6 h! J
) i0 z0 V* t; t& B
1 q$ h- X$ `) [- T6 p' N- }  [' _$ \# d4 M( @' Y$ X0 Z
- {0 p, \% T7 K+ s6 E+ V0 G$ Q
来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=1
/ R: K: u9 e" R- K. l2 t( O免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

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

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2024-9-20 09:39 , Processed in 0.044345 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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