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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7580|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道
1 h3 c8 H5 A/ L# q
4 \6 |! k$ _* {6 @0 S- h& V0 b  |[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。
% X+ p* s, p# U) H/ Y  k1 }" l实验环境
- e* P$ o& |1 v" F( K, A+ X  ?  S1 M2 Z; ^  O) s: ]
[color=#333333 !important]CentOS Linux 两台
/ h& ^4 \: }, `& n
创建DNS服务器
* ?( X# [* f2 I7 h# x7 {* @8 S
) k) J0 z2 Z* o' w1.安装bind3 P' ]0 I. R% c4 x+ Y- [* p4 \
; ~  c# L1 K& l
[color=#333333 !important]yum install bind*7 t7 o5 q2 q  v1 S2 e. [
2.配置named文件
% O  r# j) g0 }9 [, f4 _
6 T, H7 G( E* \! y! m2 c; g% v
[color=#333333 !important]修改/etc/named.conf
4 v2 Y' B0 h2 V
[color=#333333 !important]将下图中选中的地方改为any
  D. q6 p: x9 E: r- P[color=#333333 !important]
% b+ e* N* o9 D1 o5 `) V6 b3. 设置NS记录,A记录3 n  d" ^/ e7 P0 j1 u
8 D  K) H. k( P! H
[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件
- A7 E8 P& T9 j! m
[color=#333333 !important]

- B2 R; W0 s# w; s7 h4 ][color=#333333 !important]增加正向解析记录, u/ M, I7 o! l% Q* R( I) r
[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字
9 h& H- v2 U- m! a) ?! C! u1 g( K
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel
$ n# z# ^$ }: Z# ?1 I
[color=#333333 !important]修改文件如下
$ W+ N; ]3 y, d# C2 r9 f[color=#333333 !important]添加NS记录,A记录0 C; X$ g  y2 u. F1 d: [
[color=#333333 !important]
/ P/ j/ T8 P* P$ }( F6 w2 O  f0 u[color=#333333 !important]添加bind为自启动服务/ ~4 U! o. d: E( j! Z* m3 W
[color=#333333 !important]systemctl enablenamed.service
/ W- u! m7 G/ F. u8 F+ `9 \- B0 ][color=#333333 !important]systemctl restartnamed.service- z+ _0 ~) x8 L
[color=#333333 !important]查看启动状态
1 O( ]9 L! r, K3 S
[color=#333333 !important]systemctl statusnamed.service- g' F! z# \2 W8 b
[color=#333333 !important]% d: b& \4 z2 X1 `
[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)& t8 }, J1 Z3 I! F/ h: }2 o$ f9 O3 E
Iodine* b5 F* f- o% a+ S9 C
7 y, V/ B4 y. F  S
[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。, v- t% V( Q! y' b9 q  b$ S
安装3 e7 t! s5 a) w5 x- n2 C6 e
- W  j: y* P" a$ |& ~/ C8 k( T
[color=#333333 !important]下载地址:: Q" l6 g3 v, l0 ^8 @
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip! D/ `. P4 o- |# L; S
[color=#333333 !important]unzip 解压
2 j3 A, w* n: e9 ~9 n[color=#333333 !important]cd iodine-master
+ N& v* [7 I% [- b7 V6 D[color=#333333 !important]make" x/ |: j& f# A3 b) q% D
[color=#333333 !important]出现报错% a5 A9 ^1 E& ?0 }; {
[color=#333333 !important]
2 {2 Q  w, p- n; c[color=#333333 !important]yum -y install zlib-devel
7 |4 j* M/ }. @3 L% F[color=#333333 !important]make;make install
% o2 a; G) E4 D$ e8 Y' u[color=#333333 !important]安装完成8 \& T, Z0 h" Z/ u' e( f
[color=#333333 !important]进入 bin
! I6 W5 G( m  j$ t" I& W[color=#333333 !important]iodined 服务器
0 u$ K9 X% t0 W# g[color=#333333 !important]iodine 客户端
2 v* o, ~, |2 [: _1 x实验测试: F1 c$ H8 v" X2 i* y2 m% z

3 b# g; Q* m2 @9 N  y[color=#333333 !important]服务器
) O  Y! a# a4 t4 D
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com
8 b4 q' a% M7 ^. a0 U+ C[color=#333333 !important]-f 前台显示,运行后一直在命令行等待, l) g# P8 n7 Q  a; v
[color=#333333 !important]-c 中继模式|直连模式: h1 L1 A) F! S9 w5 U
[color=#333333 !important]-P 认证密码
8 k$ E' z! s& ?, w! {7 C+ c1 \
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。; d( U8 _% Q& P& x
[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。1 I" C& k) p4 q. L( t
[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡. A7 v  ?. F! K
[color=#333333 !important]! Q1 |' g- K) M- ]
[color=#333333 !important]
. ]; W' r$ G6 H$ ~8 I: d7 X5 X[color=#333333 !important]客户端
5 R# R  h5 ]8 A$ y$ u4 G+ y1 D
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com/ \# f3 Z% b+ q- s7 o- n  A
[color=#333333 !important]-f 前台显示: H$ n( I, V5 s1 _$ v3 G+ c
[color=#333333 !important]-P 认证密码
$ d3 G' {0 U* [+ i[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析5 X: Y9 m4 C+ E( T; e4 ]
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。9 C* q+ l, ]  ]- c) h& X9 O
[color=#333333 !important]; K6 ]+ ^  f# i! }) }- i1 A, j
流量包分析
9 d8 Y7 Q: u9 O/ [; i. r! E% [. I) l) A) S( s  ~- X, i" I0 l3 G4 z' y
[color=#333333 !important]抓包
3 ~) k/ k& F( l, j0 x) `1 i[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap+ T0 Q6 W: X4 v0 C
建立链接的包分析
( o0 }9 h$ i" f8 q; A/ L: y$ w& G4 P7 e* o' t9 S8 z
[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包
3 s( j! }0 O3 `  ^, [5 G[color=#333333 !important]- Z$ b$ l  u" Y9 H- }8 M. n' [
[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀' l8 b4 S1 z4 w
[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据; @4 _1 Q/ h- w, d6 ~
[color=#333333 !important]
5 h4 b  h9 V% n; H[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节)$ B$ t0 Q, {3 |  F4 C4 @
[color=#333333 !important]
9 B, Q4 h" c1 N( g0 T% }0 R5 u" X[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。
2 Q! m9 y) C. v  K7 H通信流量包分析
4 h: L5 t* O  |+ n4 v/ Z, u/ n% F0 u1 ^& W1 L7 x: n  ?7 x
[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析: n: J3 Q$ L4 l* q4 _
[color=#333333 !important]
8 r# j6 k3 A1 t, t9 N0 w' O[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。6 }* x' G- j- p6 h; ]0 C
[color=#333333 !important]05fanyi05baidu03com
6 X. ^% U; j4 h% p7 u[color=#333333 !important]
; h9 f; H, y" K! @4 n! U. \[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。! c3 p) Z4 P: ?
[color=#333333 !important]
% S! P/ t- G& c. @0 t# Zsuricata检测规则(并未测试,仅共参考)
2 @: e6 ]0 V. z; r8 ~2 Y
5 L# a7 a0 Y% q0 O

    " L9 j0 N+ x6 X8 V
  • 7 N( n: `/ Z4 w# {1 x: H6 F
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;)Dns2tcp4 K. l8 M$ v3 E. a0 i
: d* t1 i/ q$ i! Z2 H& C9 }
安装, ]# z3 W* Q, s, L

. Q: ~/ o1 D0 I. L# X! [7 i* Q[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell3 b) x0 k6 P- }0 w
[color=#333333 !important]下载链接
( D) a1 O1 D; z$ B
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag8 O7 P/ ]/ N3 j, e
[color=#333333 !important]提取码:t1rw* V- v0 \3 `, E3 `+ k. f
[color=#333333 !important]安装编译
. L# [3 }' s* M# s6 n2 a2 ~# z

    5 \' Z1 H: T! e8 p1 H

  • ) _9 s" [, I% E& V
./configure    make;make install[color=#333333 !important]服务器端3 {: |% C2 X( h1 c# W; \

    0 D$ N2 M  {/ n0 V' R6 G/ d
  •   t7 V+ _' _7 q, i% G! M
server/dns2tcpd[color=#333333 !important]客户端
5 b% @2 S7 v# S# E) {
    2 l: }3 |5 y' ^! B8 d; V4 |/ m

  • 4 ]* J! E6 [+ ^. n1 Z$ T
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载1 x! }4 w! c7 P9 ]0 z& j* p4 E

    1 m- Q9 e5 ]( J, V1 U' b4 L
  • 5 L  E- V4 X, }( h
dns2tcpc.exe实验测试$ O% j7 w# y( k. K7 s
- D: r8 c% y) n) m9 E! y( _7 `
[color=#333333 !important]服务器端
2 Q/ U+ k! D" H. v[color=#333333 !important]1.创建配置文件2 W1 b: g; ^$ R, A2 o* k: R' T

    ( Z, M' k2 J$ j. L3 c* M0 t# [! B
  • : Q9 j" x/ W) ]  \$ F* p8 I
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.启动+ ]- n& K5 @' Z( `. p8 Y
    ) |* o, R3 C1 ~' b. {

  • 9 d' J+ l/ I( v5 a
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接4 R/ |; _2 \5 X, v# G6 d
[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务0 c$ D) Z& ^  e# C; b
[color=#333333 !important]
/ d$ x2 g: [2 p
[color=#333333 !important]客户端
- Y! X$ q  p3 o& l/ Y' L
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 2, Q' ~5 ]! \: x
[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源
9 B$ T3 i+ u! g[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP
/ c& u. p' ~+ B2 F! R[color=#333333 !important]-l:端口! k. R3 r1 F  a" Z  R
[color=#333333 !important]-d:是否为调试模式 2 等级可以省略
( N; H+ F/ a6 Q% {/ }
[color=#333333 !important]5 f" \( L) a" L9 P3 `* d
[color=#333333 !important]客户端使用访问服务器7 J* ]  f! Z- w/ v: L5 O
[color=#333333 !important]2 r% Q  i/ {+ i: H: `
流量包分析# M; r! S5 G) N. q# d" f3 Y, |. O2 [

5 ^% a0 D( _' Z7 f[color=#333333 !important]建立链接并未产生通信包. |. k, T6 i+ [8 [9 j0 j' X5 L6 r
[color=#333333 !important]0 W5 G* @( T$ T+ Z3 @$ ?4 I
[color=#333333 !important]使用ssh访问时,才会产生数据包9 O0 H# P. Z* F+ t- D* s+ O
[color=#333333 !important]
& v7 s9 Y, r% _0 |0 Q( ]" V/ V[color=#333333 !important]数据包分析+ \3 g7 g6 Q$ u5 Z* [7 T. r
[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中
, O' n9 ?/ k% w$ g% n[color=#333333 !important]
9 {# ?7 v6 ^; @5 S$ E[color=#333333 !important]
1 ~; H- f1 S: L5 X& z* J8 @[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。
5 v( \! F  e) }2 f- u) p: LSuricata规则检测(并未测试,仅共参考)
' @, l; I9 t" z2 h) v% T
1 F* d3 q0 o  B2 |3 ?( |[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测/ H7 Z( V) R1 \! l1 E1 N
    + g9 l- D0 B: r+ R9 G' n
  • $ b% \1 F0 l- O6 C! r, l2 `
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]结尾
# ~1 i& G( H: D3 K1 ^" }& K[color=#333333 !important]小白水文,求大神放过  C: G' V6 Q/ m2 X6 S. Q
[color=#333333 !important]pcap包下载地址:( r3 I6 S7 I/ F' S
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw! U" m- R4 R' D. k. N
[color=#333333 !important]提取码:n5ha
( a& j4 N) G( `7 K) [- y7 S& g. y& ^[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载
) Z1 ?* @+ u! q) c3 Q& Z% `. L9 ]
精彩推荐
4 Y& M, ~. k! n
% A, q! x' I4 A4 U8 \% H! l
, x$ H: M% W9 F) i+ @

/ S& j( z1 z- r$ Y$ @3 [
4 @  R' x8 s" r
1 f! k+ o" B7 Z  k% v$ ~+ r0 D. p- b) R0 s0 h
来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=1
3 J8 A5 m- b+ _% X免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-8-17 14:25 , Processed in 0.059189 second(s), 28 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

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