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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7807|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道% w5 A- J. j' }) i" G

2 J0 e- I: X0 h7 J$ `[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。) E# t9 x( \9 O4 Q
实验环境
, q) ~7 u4 c* m9 P& n
- F+ z/ h, S5 M
[color=#333333 !important]CentOS Linux 两台
' |6 v/ b; t& t: G$ O
创建DNS服务器5 V4 O/ L# _! a

; I" y; K( b. W. g* x( ]2 Y: q2 j( E% G1.安装bind7 F' K* _/ w6 z; W

. _5 n/ i& l+ n6 G
[color=#333333 !important]yum install bind*1 x! t8 y4 t2 e: u% |) K) F
2.配置named文件
; n  T" y9 ?  f; C* ~0 S
9 R* }' g) A& E+ V5 Q
[color=#333333 !important]修改/etc/named.conf
+ G4 Q8 D! ?) Q5 [
[color=#333333 !important]将下图中选中的地方改为any/ `) d1 w7 [; l* G" ]* O8 F
[color=#333333 !important]5 Q( F% K9 n& R8 l/ o: D5 ^1 u
3. 设置NS记录,A记录
' s( x9 L8 r7 @, K
/ u7 n! j' Z1 l4 W/ m2 G- ^[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件
7 j' J6 k# }$ w& B$ W
[color=#333333 !important]
0 M, K2 h" ~) j7 Y- L, S- d6 V
[color=#333333 !important]增加正向解析记录
% k1 D; }; r6 Q) j8 R1 s[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字, q% |# q6 w9 ~; u% O
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel9 Y: |  Y( y& x/ i3 c
[color=#333333 !important]修改文件如下
3 e) Y! S( `. o[color=#333333 !important]添加NS记录,A记录! J* [9 B4 }& n
[color=#333333 !important]
. d! \" m8 h5 Z. t[color=#333333 !important]添加bind为自启动服务
- V$ e4 W5 v. p8 X
[color=#333333 !important]systemctl enablenamed.service
0 E7 x! o! Y. E6 d[color=#333333 !important]systemctl restartnamed.service: g) k8 {9 K5 z
[color=#333333 !important]查看启动状态' ]% f% B' Z& g- e! z( H7 `9 L
[color=#333333 !important]systemctl statusnamed.service
! R! N! h5 D2 x$ g$ s* u
[color=#333333 !important]( i  _4 d9 G  _5 r
[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)  f& u, M% V8 F* g
Iodine
& A0 O  ~, _+ q. m
# l' ]8 ~( k5 v0 \6 a( s8 U[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。
  d# U) ^! }& J- H$ U- \安装1 E; u- V3 I# @1 {% u# X. L# B1 u

3 K; T+ t& k# ?/ K[color=#333333 !important]下载地址:4 `  h; P8 s& e; g
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip
; l# A& o: D8 E% n# q7 P
[color=#333333 !important]unzip 解压
8 ]6 \" _5 i3 _- h& z[color=#333333 !important]cd iodine-master8 G- d5 l7 _" A. r
[color=#333333 !important]make
/ G/ @# m  D# V6 O) K( i[color=#333333 !important]出现报错
) `1 O+ O/ b1 J- e; \; M, `, d[color=#333333 !important]2 W+ K; s% E2 t+ v
[color=#333333 !important]yum -y install zlib-devel
. R; N7 \# |& |. [[color=#333333 !important]make;make install
" P: {# v& p0 N+ t  D( U[color=#333333 !important]安装完成
' n5 t- V, A8 o; e  U[color=#333333 !important]进入 bin
0 m8 n2 B+ u, m3 F8 Z[color=#333333 !important]iodined 服务器  [6 @# a0 X% e4 ^
[color=#333333 !important]iodine 客户端
7 [- M& z% p) J7 S3 Q实验测试
$ m* U+ m1 }, j6 r) x# d2 C7 z% }- I% v( s1 t' R
[color=#333333 !important]服务器
+ ^  o1 l; l$ f
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com
: ^; A$ u' h+ K3 p  a2 c$ Z[color=#333333 !important]-f 前台显示,运行后一直在命令行等待+ D0 I. C, f% l+ B
[color=#333333 !important]-c 中继模式|直连模式
1 _" y* e) V' T& W5 ~[color=#333333 !important]-P 认证密码
; s$ M8 g9 U" M' S
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。
0 s1 w8 y0 ~6 B' {[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。
3 r9 u1 i0 X1 h- n, n, g3 v[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡
* B% S$ x$ g! y/ Z( L  S5 ]' l[color=#333333 !important]7 a- ~6 `/ j0 P: v1 b
[color=#333333 !important]
8 [; I, N+ H8 o; U[color=#333333 !important]客户端6 u2 r* U2 I! O
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com; g' B+ k) {. d
[color=#333333 !important]-f 前台显示
% ]9 c$ Z7 x6 S2 p[color=#333333 !important]-P 认证密码
5 l- D. q0 ^. ^1 ][color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析" a6 z9 m) h- @3 y) ?7 \, C
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。
" U# g, f% Z3 \& l: @- F6 `: m: m[color=#333333 !important]) M, l. I' Y' L# ]: K# s
流量包分析/ ?; ^& {1 p5 R& L0 D# F

: r( U3 h% J- Q; X+ A" @. o6 i. l. H
[color=#333333 !important]抓包
2 K/ y3 d/ T( l; A6 a[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap% S# i# l! L1 E6 @' r. q/ _
建立链接的包分析8 |5 X1 v$ x+ a$ y( A# L' a

6 S1 Y1 |; t% L  b. {+ b* h# Y[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包
9 C* t. x9 T, |/ A" }[color=#333333 !important]
3 P) V9 E  n0 g" k2 p+ e( [3 G[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀
) U/ z; g/ X+ d3 X  M( P* Z. }8 N[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据( @( \8 J: W5 E1 H1 ]. Y# @2 q0 }
[color=#333333 !important]; @/ G" P& f9 ~
[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节)4 n# @: Q) m3 d$ J0 a
[color=#333333 !important]$ n4 O! e" W6 L1 B0 ~
[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。/ E; M2 @7 z/ p2 R4 G; J" Q0 d
通信流量包分析7 K$ J) I1 z2 \
* `! f, p% K% r$ m- `9 L8 q; E
[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析
* [6 ?; b5 T! r# E. X. `! Y4 a[color=#333333 !important]" [. b6 [7 t% C! k4 s
[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。
3 v- {& p# R( T( W[color=#333333 !important]05fanyi05baidu03com# T6 O9 p0 b1 z; W
[color=#333333 !important]( w$ K4 |* t2 c
[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。) c# N: g& g1 H8 q8 i1 u+ g
[color=#333333 !important]1 K* h9 D. l/ Z7 Y' S! ?! Z
suricata检测规则(并未测试,仅共参考)3 n! x, k, @, c& ^- j& z
& t! f+ D5 K+ a/ N  W! G: C% O
    ' z* l4 p# N! b7 p2 `9 C* n6 P" M  d
  • : S- o6 I* O+ \. [  k
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# j/ W( m1 q/ ^9 ^, n
- A& y% h, `  Q+ c- r* r
安装
, d! B' t! C) g+ I3 ?) i' M3 H5 d
[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell
, ?% l! _3 Q- X, f& |" B$ E2 ][color=#333333 !important]下载链接
" X. @6 g0 ]2 I- `8 V$ W# [, ?) K
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag. v5 o; u7 |( e
[color=#333333 !important]提取码:t1rw! p  ?, [  i$ h# a3 U$ l4 x
[color=#333333 !important]安装编译2 z/ K' ?' l# [' f/ l$ G

    ! I( D; C/ h  p6 l' W  v  V, G
  • 5 ]( F' U7 a$ Y; F. O
./configure    make;make install[color=#333333 !important]服务器端( ~. d3 C4 g2 H4 j/ A  A" [8 t

    ; i8 y, `  S" g9 k0 z9 c) s

  • 7 A) ?" E) o  z
server/dns2tcpd[color=#333333 !important]客户端
7 V1 ~% P  y2 p3 K

    6 P% ~4 s: p5 u5 [  k3 j

  • 6 X1 ~8 Y6 M9 q7 y+ L% }
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载
3 T9 w- U: v$ Z% Z
    % _# k  D4 g6 e

  • - A* l6 r: E4 q
dns2tcpc.exe实验测试! ]. b: @8 `5 z2 x5 o% e3 F
  r: o/ `9 |- q" ^4 t6 f
[color=#333333 !important]服务器端& [& P4 i" R- \& \' i. p
[color=#333333 !important]1.创建配置文件
- j! Q* l% O0 U( Q6 k1 P
    , T. Y) w; F6 n+ _
  • : {; |8 T- z: ]9 [) y4 j4 c6 L# f
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.启动
& X2 |. w* W. s% q

    ) C3 u, A  o- `+ L1 i# S' O. z- C; U; O
  • . U! k& _  j2 {7 `* |  l. ?
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接) B- H( x# U% Y) {  [% O& m  D" V- t
[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务# U$ ~# d6 g( e+ i2 u
[color=#333333 !important]

" v! W4 {7 Q! }2 ^( K: U$ d[color=#333333 !important]客户端
4 O$ W: O: H- F" K2 I4 f
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 28 }9 |  F" h1 q0 a3 d; R/ h6 x! z
[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源
# O2 ~9 h5 s9 q  q* _2 c[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP. N5 l( B! j6 X& X0 F3 Y0 N
[color=#333333 !important]-l:端口' g5 ^: e/ z% q: k
[color=#333333 !important]-d:是否为调试模式 2 等级可以省略
- F/ `2 g$ y  J
[color=#333333 !important], Z6 ]. }- o7 J- i
[color=#333333 !important]客户端使用访问服务器
8 T( Q6 C2 M- _- w' T4 U[color=#333333 !important]6 J, L5 ~, Q2 {# x/ x6 o
流量包分析
1 ?8 F' |/ p% f+ q0 x+ i7 }6 q; V9 l0 w/ s" G
[color=#333333 !important]建立链接并未产生通信包
- {, `7 ]0 Y& B$ z1 \5 W, u( F3 a) S[color=#333333 !important]- S/ D( `8 c1 X
[color=#333333 !important]使用ssh访问时,才会产生数据包
; E/ c7 |6 w% i8 j[color=#333333 !important]0 h& ?1 p7 |/ q8 s
[color=#333333 !important]数据包分析, V  w- \* @6 X0 z! L4 S
[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中
! x1 a- J5 G0 D$ t8 l. g9 i[color=#333333 !important]
% q8 W" i0 Y2 O2 X[color=#333333 !important]9 g4 {0 s/ A5 c1 U- G
[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。* W( O# [# Z6 }  I  r* }
Suricata规则检测(并未测试,仅共参考)
1 @7 N' D8 Q) F2 g+ Z( s1 A+ {9 J; y" I3 l' C$ U4 Y/ Y, N
[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测
+ m% X# u! q  ?

    / s9 a# e8 z! v+ E6 s

  •   V/ B2 u, t: b: ?) p( t9 v9 ^+ c
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]结尾8 N5 M8 i& y* B2 J; F& v
[color=#333333 !important]小白水文,求大神放过
6 y3 |$ e* U) U9 s  j1 b[color=#333333 !important]pcap包下载地址:
9 ]( A# B* C' v$ M
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw1 t. [4 y. e, ]5 m3 C- t: M
[color=#333333 !important]提取码:n5ha. K: O' A% T5 u2 |
[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载
3 m+ |/ s2 u. x$ h4 I; U1 i! o  C& z7 L* L& \+ L. Y
精彩推荐- ^: Z. f! t4 h% ^

5 Y$ m3 Z' M% Q# k. `$ n
. n$ |+ d) D) S: m0 U, d5 Y5 i8 }

6 i  _4 M, ?' W/ s. v+ T" r' \
9 j/ b3 r6 Q. J9 ]
, M, V" d+ j9 c' L' q3 J0 \8 t' r+ s2 J& y9 Z
来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=1
$ w5 k+ C1 x& _1 x3 K1 [免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-16 03:19 , Processed in 0.049530 second(s), 28 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2026 Discuz! Team.

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