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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7918|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道. a1 q' F# o& u; e3 v5 `
4 ]0 @2 t  m9 G7 ]. ^
[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。
+ Y! F9 E& L) \8 J- d实验环境
' N* f9 m' g0 \9 B% }7 D: |0 C6 o9 [7 q7 A+ H; |! S% \
[color=#333333 !important]CentOS Linux 两台' \; b3 C+ A% D( d
创建DNS服务器
2 }8 B3 T5 b% d/ z* f# H2 c  s+ A2 v$ p* H" ?" T
1.安装bind5 M) _: g: B7 W3 G" n- a  u

+ P+ T* u  W" ?7 U! x( H" P
[color=#333333 !important]yum install bind*
5 _1 @0 V3 P2 o1 r+ H$ {, Q
2.配置named文件+ C1 N. w& s& O4 Y2 c6 {1 K6 u

7 Q7 z4 ?+ }0 h1 m+ {1 c" K# _
[color=#333333 !important]修改/etc/named.conf
3 L: A( x( @% _9 m. q  ~; [
[color=#333333 !important]将下图中选中的地方改为any
1 I( `! _4 h0 M! M; `! L& p[color=#333333 !important]3 f6 y" \$ A/ Y1 a" H
3. 设置NS记录,A记录
/ m9 Q3 k3 ~+ S0 [, o- {
. e0 S: d- A: [[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件! q8 i6 ^) c$ m2 q
[color=#333333 !important]
/ `' b3 T5 T  |
[color=#333333 !important]增加正向解析记录
; U; n# K# B" ~/ ][color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字# N  e% }3 _$ K
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel& \+ @, P. L6 M  l
[color=#333333 !important]修改文件如下
9 W  f, F0 e$ t1 x+ r5 v. r[color=#333333 !important]添加NS记录,A记录
6 A  t1 C( A" O: q9 m[color=#333333 !important]1 u& Y. U! x  n& E7 u
[color=#333333 !important]添加bind为自启动服务
( R: q8 _( J) e$ f; ]  |7 J* d
[color=#333333 !important]systemctl enablenamed.service" g- X/ D1 D4 W* k, Y! l$ z
[color=#333333 !important]systemctl restartnamed.service9 [/ p! u) |  k4 M7 `  z$ q
[color=#333333 !important]查看启动状态/ ?4 I! b" p- s% g, S
[color=#333333 !important]systemctl statusnamed.service
1 m' ~+ h( q# |, G7 Z
[color=#333333 !important]' A; ~) [0 |4 u% r
[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F); b" E  D* e. ~; C0 }" C( d
Iodine
8 Q" A7 l0 w6 u. D$ _- p& L! ?3 v) s8 g8 x! l) [) ^  ~
[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。/ N7 i: J0 F- z9 n) D
安装
& p/ g5 b, c0 x; b5 ]$ d1 `, E- ^! |( _/ [4 ?7 w
[color=#333333 !important]下载地址:
$ c: v- L8 Y" a$ G9 Q' M8 o3 S4 O" ?
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip
. @4 R, \$ P( H6 m( |5 y1 h9 S8 N
[color=#333333 !important]unzip 解压
+ _' o& \& c7 x) m  w[color=#333333 !important]cd iodine-master8 X  R: |9 A- v1 P" `  b7 b! {
[color=#333333 !important]make
8 X( ]4 O6 t; J( m' ]$ z  o) k" R[color=#333333 !important]出现报错2 w. f* J9 |- C* N
[color=#333333 !important]
0 I. |$ Y) c$ b% l- J. o. r1 |[color=#333333 !important]yum -y install zlib-devel1 j- }6 Y! u: P8 h1 f% ]
[color=#333333 !important]make;make install* D1 Y2 \  J2 c; ]/ _) A+ G* I
[color=#333333 !important]安装完成
. J! k) K0 [! N4 F' Z' @[color=#333333 !important]进入 bin
$ t8 v  b/ V+ p: w& W/ _[color=#333333 !important]iodined 服务器
: r- L% }- s$ C. g, e1 @: p[color=#333333 !important]iodine 客户端
( E* b+ n: @' C1 u) y8 ~. K1 d实验测试+ l0 I/ K1 j5 `6 }' E' a3 [7 k
, C' p' ?# c& W0 F+ |
[color=#333333 !important]服务器
! p8 ]2 V% d- k$ h9 `: X
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com* w/ ]* ]. F% z" q* W% z2 ~
[color=#333333 !important]-f 前台显示,运行后一直在命令行等待6 A0 t) ?1 e, l3 ^5 _* i, y3 Y! @4 x
[color=#333333 !important]-c 中继模式|直连模式
0 D5 L; ], c% o$ B3 y1 x- L( @[color=#333333 !important]-P 认证密码
4 n4 C/ g( g( j# z8 G, Y+ f
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。2 ^+ u1 M  x# S& j" g9 D
[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。
8 r5 c" K' b- B  ^& r7 c[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡8 v( t8 q7 c8 |& c5 x; j
[color=#333333 !important]8 E  s  `9 d9 a1 x# _5 R
[color=#333333 !important]
& s3 H8 D$ s0 E% Y; P; I! ^( x[color=#333333 !important]客户端. [. e. N" h4 K3 a9 d, D" w
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com
! S$ W- f$ G) @7 Y0 @- x[color=#333333 !important]-f 前台显示+ p5 @  {! f; h
[color=#333333 !important]-P 认证密码( x2 j5 P2 \' b* z; b0 U5 n2 W6 ]
[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析
$ o/ V4 z- ?$ Y- u. V9 b$ w! H
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。
* h# N% `  Y! q) `) m: @[color=#333333 !important]$ j5 u- {) a9 ]! S
流量包分析
+ k8 W9 v/ @! t- ]4 ]! o' B- n- o
[color=#333333 !important]抓包
% j' h9 `8 m1 I7 J' N5 U[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap
9 D' i8 Z- a5 W7 X9 J% z
建立链接的包分析9 m0 _5 `  i% |4 \

- b+ R; l% I. k9 B- {[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包4 c9 }% v. p) a! ]  a( D5 I3 u
[color=#333333 !important]
; C4 T. M4 a1 Z) Q9 H$ Y/ G[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀9 E* e0 [) n5 B9 D7 }
[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据4 G' ^; T2 d- \( {6 F- B
[color=#333333 !important], T6 J1 @  A9 s; A) J- N' G
[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节)
. _8 `0 D" K* F! d5 w[color=#333333 !important]
5 \! M9 Y5 h. m: v, k6 a[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。% p, x/ V# i7 h9 l; x2 O0 j  N
通信流量包分析  S! w8 |' f4 b4 @0 }

! t% J- g, i; b% h2 f[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析
- O1 \' ^6 b* I, g. X- j! ~[color=#333333 !important]
4 b$ V6 g# j! x. d* }2 F+ X; U[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。
0 d- j! I' D1 Y! i; R5 r1 E) C" t- f. Q[color=#333333 !important]05fanyi05baidu03com
$ {9 L. M* {3 D5 R7 g! K9 I[color=#333333 !important]* b4 J) c; q+ u2 }( ?
[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。/ e$ J6 t: ~2 B% E
[color=#333333 !important]
6 _" @& u8 O7 k- l, K7 {- Asuricata检测规则(并未测试,仅共参考)
% M- ]' o$ s" B; C& }$ A  k5 ~8 C, g$ `) z

    : M! J7 D) R, s7 T

  • . f- b+ K4 y4 b/ ^5 w3 s
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
/ N* R& @3 t1 H
+ a% C8 ~' w) _6 ~9 V9 ^) V安装* F& X3 V3 N9 W& q7 E+ }
8 d8 `2 l, m( @  ~% B& M
[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell1 O/ [9 P% {* X) P
[color=#333333 !important]下载链接
& v, l, i8 e8 F" v; p
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag) ~# V$ T/ @, z+ N( @
[color=#333333 !important]提取码:t1rw
9 @% N( p$ m$ @5 }9 l[color=#333333 !important]安装编译, Y/ ]- c+ m9 n0 E4 W

    0 I7 q# ~7 }# I. x" ?  e
  • : G7 n9 M% O3 l4 m5 I% g
./configure    make;make install[color=#333333 !important]服务器端' f$ _/ v- \& o
    2 {: \8 W+ x- M
  • + w7 q4 ~5 G4 q9 R/ `3 g
server/dns2tcpd[color=#333333 !important]客户端- t' Z1 H% k) {
    $ F% H8 v, I9 {7 {1 y

  • ' Y% ?2 C0 [' _% |1 H  A" w
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载
/ G0 G' ^- ~) T  b
    . W! W: \: q, A1 J

  • / B1 N; v0 x+ D9 ?2 l
dns2tcpc.exe实验测试, L6 i+ g' c0 f1 k
8 |5 p, p$ i  Q9 ?/ `! K
[color=#333333 !important]服务器端( @& |  W$ {" v4 J8 K2 i
[color=#333333 !important]1.创建配置文件
2 A4 c. _6 z2 c6 F
    1 H; i+ m( w! ?3 c4 g
  • 0 Y5 K) h. b6 r9 w+ [0 x
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.启动
5 D) _5 p' s8 t

    ) j  I  z; }5 @/ o6 B9 C% y. x

  • ( E3 }$ C8 P' H* J
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接4 r7 z: S! G/ p# z5 n5 E! d- y
[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务  |3 n: s5 E9 D! w2 e' |
[color=#333333 !important]
+ Y/ h# ?% x1 _
[color=#333333 !important]客户端
  }/ L0 t% d2 _+ U$ y# m4 V6 K
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 29 H5 a9 A# S! z# r4 B+ G; B
[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源; |4 R2 b2 \+ k  T" F, E
[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP) B) |" V/ L2 `" `8 K  y2 V
[color=#333333 !important]-l:端口
8 |) R3 {# W0 B4 |! G[color=#333333 !important]-d:是否为调试模式 2 等级可以省略4 I4 t1 r  K- P/ `
[color=#333333 !important]
1 c( I8 _. I6 B7 H, k% _: S1 Q[color=#333333 !important]客户端使用访问服务器2 t9 l" R# Q+ X3 k4 f! E4 {1 ?4 L1 r- q
[color=#333333 !important]
2 N, }3 r7 l$ f4 J# n9 Y4 @) v, j流量包分析
. K9 z: f" ]0 G( F/ m) k2 `7 g8 ?0 M
[color=#333333 !important]建立链接并未产生通信包' d/ C) u0 ]6 j% g8 f
[color=#333333 !important]
  y$ H! s/ v3 z# Z! p0 p- q1 m* p+ |[color=#333333 !important]使用ssh访问时,才会产生数据包
; y" K* S# z  J[color=#333333 !important]6 m! J  l5 h, n1 I  |2 R
[color=#333333 !important]数据包分析- y: v; Y2 l- R: {( P, r
[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中0 b$ B( g5 m* X# ]6 w4 S6 s- x, u
[color=#333333 !important]
; R/ j8 c! [# m  W; ]  Y2 Z[color=#333333 !important]2 r7 t. z$ q2 u7 e- h
[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。" i7 ]0 A( j, N( P
Suricata规则检测(并未测试,仅共参考)* E! Q( \! w  N4 N) a" }0 Z7 z
7 |7 @0 c; p- _  p* \9 a. M# B
[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测
4 _4 F( r  h/ l  Y8 L9 F

    * m- L' k. ]  z! O7 Y

  • ! Y( I' v' N1 X' K
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 _3 i4 f0 S; n" i8 w; N& h[color=#333333 !important]小白水文,求大神放过9 P4 Y7 E$ i6 I3 k
[color=#333333 !important]pcap包下载地址:. f  B0 e) w7 v9 r4 ~! `# M0 k1 }* P
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw
* z% i) g# c$ W7 l- s" b! K5 h
[color=#333333 !important]提取码:n5ha
& z$ |0 N, [5 e[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载! Y) J  o) m, z2 `0 i* \1 h2 O
9 ^3 t2 `- ^7 C3 O8 ?
精彩推荐
2 ]# F: D- ?; V- t. D2 Q
5 o0 l3 J% S1 s4 ^" O
$ y/ G- D0 |9 V8 F

3 J4 m  J8 K) m2 x' k$ P' D+ ]1 _' r- r6 E1 @! w5 S! m

3 w* J& c6 _- R& B/ W4 K1 z5 r& h; ]5 p
来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=1
' A# V8 m) ]( p) T& }免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-10-17 04:55 , Processed in 0.059737 second(s), 29 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2026 Discuz! Team.

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