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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7620|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道
. G  `7 [+ ^; I- J2 N2 ]" A. D: R$ }. i
[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。) u3 v! `* l( f4 n3 B# R
实验环境1 Z& D& _. z8 B0 }

# b: \  u9 J5 w
[color=#333333 !important]CentOS Linux 两台
5 s+ k5 D5 X) V& F- B+ K- s# n" k0 W
创建DNS服务器/ \) W1 d( h" {6 p  H# r
' `3 r4 |$ c# k  z( u: r% U( _5 v
1.安装bind
8 l2 ?; F! X3 o) L. ?4 Q2 l1 K$ M3 F. _/ P0 g  ]  _3 H3 R1 j1 ~
[color=#333333 !important]yum install bind*
6 e3 J! c6 x- p! V$ r
2.配置named文件0 T  M" d4 z+ T/ P$ R. f. I+ j6 }

; W7 @; ^9 z- {5 }' a. c: u
[color=#333333 !important]修改/etc/named.conf% D+ u0 L$ h( G6 u, I& n" P& a
[color=#333333 !important]将下图中选中的地方改为any
$ E7 V: \% ]; C& I[color=#333333 !important]" M8 j5 F4 z5 C$ O0 Y+ }1 _
3. 设置NS记录,A记录
' ^. N% y& W$ @- `! }2 A4 D
5 d5 n( o9 c0 H* Y# Z3 ?; [( S[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件
2 l2 ~& r% `: y" A" W
[color=#333333 !important]

* _* q7 ]. a# x; v[color=#333333 !important]增加正向解析记录) h' M* C' U$ S
[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字" C- `% |, S' q9 Y3 M4 c6 c7 o
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel
5 H  k" q7 d/ v: |
[color=#333333 !important]修改文件如下( n  b6 X+ M& s. ^2 |' r# b
[color=#333333 !important]添加NS记录,A记录* w' D( ?. Z4 e' H7 |+ t. ~
[color=#333333 !important]4 E; t# n9 e2 i' f7 H; q, m9 x4 B
[color=#333333 !important]添加bind为自启动服务7 _8 c5 y' |6 k& `0 o) ?# n  V
[color=#333333 !important]systemctl enablenamed.service: ?4 t2 @1 E( |6 E
[color=#333333 !important]systemctl restartnamed.service
- n& s$ X% d$ K3 V2 f
[color=#333333 !important]查看启动状态" t: S+ J* p3 J0 F5 R2 G
[color=#333333 !important]systemctl statusnamed.service
* F4 P' ~5 H; k; H, Z
[color=#333333 !important]
. p2 R8 ?+ b8 z; y- H/ S[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)
9 z5 M9 r  O/ ?" ~3 L! cIodine
7 U4 @, v, u( M, D4 }9 p, H" ?$ K* m7 n8 f3 w
[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。+ v/ Z- s2 T% V8 `
安装
$ Z9 i+ |. A2 Q6 `9 @
; O- G( s5 W5 F+ M- t. h' A[color=#333333 !important]下载地址:) r/ a% D+ X, |8 h% w
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip
3 `, r4 p% b4 K5 A
[color=#333333 !important]unzip 解压) o- i6 [: F; R$ v' n% w" s
[color=#333333 !important]cd iodine-master1 }1 O. c: P6 v# |
[color=#333333 !important]make
1 E& C2 i3 o! ]% B[color=#333333 !important]出现报错
% G3 w% i/ W- u0 b[color=#333333 !important]
& c& G) Y8 U6 j3 r# q4 |[color=#333333 !important]yum -y install zlib-devel
# O4 {4 Y, S+ F% o9 y7 ^- Q% d6 X[color=#333333 !important]make;make install/ {* ?9 I, Q1 W+ D8 V3 @% B
[color=#333333 !important]安装完成
: }+ d0 m0 L6 Z: n/ Q& Z[color=#333333 !important]进入 bin
$ W& f; p/ j. d+ U3 K* l0 P: V[color=#333333 !important]iodined 服务器! t% a" b, |3 t5 P
[color=#333333 !important]iodine 客户端% O: i' V" w" d. q
实验测试  i  f- N- v2 X- t3 X( z0 N& z( d

  S$ Q* j) K7 X: g. P[color=#333333 !important]服务器
3 {9 s6 @  m8 N% ^. l  P
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com/ f( C/ u1 V3 I9 z1 O7 {
[color=#333333 !important]-f 前台显示,运行后一直在命令行等待
. H/ C; x: p( _$ E# @[color=#333333 !important]-c 中继模式|直连模式
/ f% f" H, X  q[color=#333333 !important]-P 认证密码
' [6 }7 a% s  I4 c* [; [/ h  e
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。
2 Y' p. e* X! Z3 o4 N3 D[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。
/ W: x( O: H# P  U[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡
$ c3 L8 }! U% ~. A& l, H[color=#333333 !important]
: T3 ?5 v  T2 f8 d# g/ B[color=#333333 !important]/ n* v- X5 z7 e8 o) k
[color=#333333 !important]客户端+ O% ?0 N/ r1 I: p" X
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com
3 d. [/ N7 E. ?9 E[color=#333333 !important]-f 前台显示
' k* b8 {" ?+ u[color=#333333 !important]-P 认证密码
  g5 y; l! Y3 X) k& s: \/ `  v6 u$ Y[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析
8 J9 u3 M9 d& u( F  i
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。
+ c; U$ k) i4 E0 g0 g& ^[color=#333333 !important]
/ N, Y* N& v( u9 t" M6 G% L8 w流量包分析; {7 _1 z# ^" m2 |

- A* [! E5 H9 J0 q: O4 t
[color=#333333 !important]抓包7 g% j5 F1 b; U7 F% f- t9 \8 D% `# \
[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap5 q7 E+ o. T2 m
建立链接的包分析1 }1 W: L; J& @4 Z+ r" Z1 k

3 x& S' U+ L& H6 m  I$ a[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包5 j) f% y# k- H) Q- B6 a3 o' L- w
[color=#333333 !important]
* ?/ s/ B" T* g3 ][color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀& }% C; H4 o4 n* E  P
[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据& K) P; S7 B8 I
[color=#333333 !important]+ u, @! |$ [4 x1 `% D
[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节), Z8 [4 M6 c' O
[color=#333333 !important]% F% ^: p3 P* [! y
[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。: D' n  h8 k  O; u" O3 w2 O
通信流量包分析
3 [- E( c. U6 B- W9 Q. \9 }( A- ]1 U9 L
[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析
! v  l3 I: q4 h0 u/ |[color=#333333 !important]2 O  X( C8 v3 o- \5 N- J- A. ^
[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。
. O# A3 v- A8 J* M" e: D[color=#333333 !important]05fanyi05baidu03com* i8 d0 {/ \6 S; O; ^. m, ]2 Y$ O6 _
[color=#333333 !important]
1 D8 t/ Y! w% X/ A5 g[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。
% A$ T' A# }  K0 r[color=#333333 !important]  s  Z* f& `- W+ I# G% h) I
suricata检测规则(并未测试,仅共参考)
4 \1 l! F4 U9 B8 y8 \: U, p' r, @3 c/ n" D! D" ^

    7 ?9 @; ~: [0 ^
  • + ?; h3 ?7 {& G3 ^3 K# G4 A+ l5 l
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! ~. p4 m4 a$ X, _7 K

% s9 L/ `4 ^& d安装: |& R! x1 V" ~, b1 n# U# {) S
% T+ u1 h9 s' L* z! W+ X
[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell
' ]" c) D. D; O1 H$ C) l[color=#333333 !important]下载链接
! C/ F! }% i; ?) ?, w
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag
) f5 h$ B/ A/ |
[color=#333333 !important]提取码:t1rw! f. y2 [: D- f% I
[color=#333333 !important]安装编译
, A) Y9 @. |! g& H/ `$ p( U0 E( p" _2 m( s
    % Q3 O5 y! z% P) R

  • 7 F9 N- ^- A  K) h' S
./configure    make;make install[color=#333333 !important]服务器端
* q! l$ m; ?( K1 ^3 r: n/ Y! E

    . w6 U- X$ `! t- w7 a/ G

  • : X: B& [* y* g3 w
server/dns2tcpd[color=#333333 !important]客户端: }# e$ c- v' a3 q* E0 ?
    / o2 `) h4 ?7 |6 f; ~
  • 7 T. g6 }% G9 s' u6 a: S8 U8 ^& d
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载
" G; n: H0 D( q: k' |- S3 @+ E: C
    : A" n" e- T- q) @

  • $ A& _2 q' F# k2 M- P
dns2tcpc.exe实验测试# A  s$ t, y4 @  _! x

3 z  V9 [1 k$ i$ p0 r, l: N9 B[color=#333333 !important]服务器端& `( W2 |7 Z* N$ ?" U
[color=#333333 !important]1.创建配置文件
+ o3 N4 B1 m; P
    & H# @/ D1 z; b2 P; Z
  • . l. }5 L$ b# `4 Y" }4 r2 g3 v5 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.启动! V5 r1 N4 \5 m% a+ \: N

    & L6 p4 p. @3 T7 ]' y

  • # e+ x0 g+ U2 `* c  a8 P: Z+ }
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接" [# z. T7 a1 }8 e9 d# z, L
[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务0 F4 {0 K+ @' x. e. C
[color=#333333 !important]

; ^. y$ j) j' R7 D* L[color=#333333 !important]客户端4 ]1 D, \' q! ]/ z0 Y
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 2: K  `' N5 r5 M8 j" Q+ n
[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源
6 b: @; H/ c  z  U2 g[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP
4 j8 \4 ]# s" X! S[color=#333333 !important]-l:端口
4 S2 @; c; G/ ^+ `: ^. z[color=#333333 !important]-d:是否为调试模式 2 等级可以省略5 j. t7 q* W! A3 Z; i
[color=#333333 !important]
5 N: _2 g1 v, P2 |* G+ u) `[color=#333333 !important]客户端使用访问服务器1 d" e8 |; _& |8 k+ o) L  s
[color=#333333 !important]
! _& M( d3 _' ]流量包分析' x: ?7 M' a8 [% \

0 f. o: B- ^6 {* {* D[color=#333333 !important]建立链接并未产生通信包5 E6 O4 ]  A4 F) l# y
[color=#333333 !important]1 [, N9 g8 z0 A2 l) {  t
[color=#333333 !important]使用ssh访问时,才会产生数据包- {$ W& o* V) b. L; X9 W, {
[color=#333333 !important]
* O  ^, w. l; ^[color=#333333 !important]数据包分析0 d/ N# A! [1 x  Q
[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中7 Y( d% o* ^+ p, m" m/ `- s; \9 V
[color=#333333 !important]! U1 M9 |: }% z& o6 s
[color=#333333 !important]. h  [% S/ L1 E, X- |. ~
[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。
5 P" I, h" {$ b8 RSuricata规则检测(并未测试,仅共参考)
& N  x3 Z& B4 f0 O8 g6 h1 I/ e7 }, W9 k( F
[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测; B5 ]( n( n8 N0 X
    9 f7 C) z5 G- i, a. i
  • , i0 |0 x7 H/ L7 N( }8 f, F. W# 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]结尾
' K0 c/ k; T. I0 J$ ?) o6 c[color=#333333 !important]小白水文,求大神放过
. c# ~7 f1 M9 \0 D6 |* S[color=#333333 !important]pcap包下载地址:
2 T$ g% f* C1 w2 _2 w
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw9 R. V, R7 R: F, |4 b
[color=#333333 !important]提取码:n5ha
6 k: |3 @8 [; _0 o% R5 j. e[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载8 k6 {5 T7 A( k$ h& z
  k/ Q0 v: v7 y. E+ U- H
精彩推荐) T  y3 [' Q  ]
/ L( o9 J, _: t: H' f: X

( y2 [. l, k: J3 s5 a9 _* z! e2 o: l$ w5 J9 C0 T. l- L4 W

2 U% [3 z% y. p+ f5 d3 n3 a) Y8 f# t6 i4 }7 e+ _6 B* O/ q

8 r6 n) p+ j) m7 N来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=1
' R6 S+ ^+ A; m$ y+ p7 G& Y) Q0 x免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-19 02:54 , Processed in 0.048889 second(s), 27 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

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