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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7713|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道
3 s' D' y* b! w+ w: U
, B- e6 G. j, ?[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。
! W- g! r9 y/ J! ~  ~实验环境9 ~4 h. I8 g9 Y2 l, y8 [4 X# e

: a* B* h7 D( t# m
[color=#333333 !important]CentOS Linux 两台9 u) _" ]% z1 i- T' f- o
创建DNS服务器
7 U; z/ ]/ Z( @& u4 i3 h7 Z
) M4 P" t' M9 j/ C1.安装bind
+ x' e/ o: \9 }. W: F% C1 v6 A( w: i; s$ P3 s7 U2 ~2 `
[color=#333333 !important]yum install bind*
0 K: g2 P! N# X* e9 l2 [
2.配置named文件
1 s1 [5 N8 ?; U: K
4 X0 Z% }7 d" c+ B
[color=#333333 !important]修改/etc/named.conf  U( s7 q2 I7 ^
[color=#333333 !important]将下图中选中的地方改为any
/ E: S1 r' b, k1 J+ h9 N/ u[color=#333333 !important]
4 U- [2 n8 w/ l/ ~; ]3. 设置NS记录,A记录( h8 u- V- t$ {

2 r5 c$ T* ?+ {[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件
( h+ [2 m$ r% E  ^% C
[color=#333333 !important]
2 P" J1 @3 @6 [( K' t- t! D
[color=#333333 !important]增加正向解析记录
9 j' W8 `% T- W4 D) B- y( d: d[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字+ q5 ]8 A+ K7 N/ u8 t4 b6 `& v
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel
3 V7 w: M6 {4 O2 E2 r# m
[color=#333333 !important]修改文件如下
& C  e+ p( v; s1 b- a' W9 `[color=#333333 !important]添加NS记录,A记录
5 W' Y6 G1 f6 T! v/ M) l! C  `* [[color=#333333 !important]( C2 H/ ?9 R! L1 S1 u0 u% ^
[color=#333333 !important]添加bind为自启动服务
: S" Z2 u  R6 K! ]- p2 V6 e7 J7 E; Q
[color=#333333 !important]systemctl enablenamed.service
2 P* P0 i7 D! I# @% ]; ][color=#333333 !important]systemctl restartnamed.service* b/ j: P5 A- k( D0 Y5 @
[color=#333333 !important]查看启动状态
$ \7 @* S& `$ M/ I/ Q
[color=#333333 !important]systemctl statusnamed.service+ S  l, X, l0 m: D3 Y: G
[color=#333333 !important]
6 ~& W& l3 H& i# a7 p* x[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)
3 D* V: T4 n) A! o: LIodine2 u% K# E. T3 b) V

+ W3 p6 _' [  A8 G[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。0 ^8 }* P" `) ~
安装
' e$ ^4 |! b% ?* ]9 I3 b# t  S6 ?- p: f) ^
[color=#333333 !important]下载地址:, N- c& u$ ]2 K( c. S9 P) ]; q
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip5 l5 u0 a7 I4 e
[color=#333333 !important]unzip 解压
" L& ]# o, ]# d% b2 b+ s7 X+ \$ l[color=#333333 !important]cd iodine-master8 I- t# P- l, o* a" y2 t- g9 C
[color=#333333 !important]make0 }' h$ F! Z0 d/ v
[color=#333333 !important]出现报错- M2 Y0 A% g; y1 ?+ |. x
[color=#333333 !important]1 Q, y; ^$ f- F: ~' H0 M/ `  Z
[color=#333333 !important]yum -y install zlib-devel
" G" B. F3 Y- @% O! S[color=#333333 !important]make;make install" I- y! v5 l- [, E7 a
[color=#333333 !important]安装完成
( Y) {2 }8 S* s: I[color=#333333 !important]进入 bin1 Z- y$ e$ t! z
[color=#333333 !important]iodined 服务器
. Y) {# b# S% ?[color=#333333 !important]iodine 客户端2 i/ X3 b6 f! ?) Z) A
实验测试' r/ b8 H2 I# W& A! p& c: Z
2 i( C& |) G$ J- d$ Z
[color=#333333 !important]服务器) m1 D/ y3 l2 P$ b/ ~9 A' i
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com/ k( F% X3 f/ m6 k* k7 V. V
[color=#333333 !important]-f 前台显示,运行后一直在命令行等待0 }9 T, D& ?& d" _8 S8 M+ ~
[color=#333333 !important]-c 中继模式|直连模式
2 V2 U0 O- b7 l[color=#333333 !important]-P 认证密码+ X- T# I& |% z' S% J
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。: Y: `1 C3 j+ w3 {/ Q& Z7 _( ]( C
[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。$ u+ L  A" V: @) [3 b
[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡) ~) N* s. Q3 l8 l2 t
[color=#333333 !important]) k. k7 A; ~8 K9 H0 S- J7 x$ V
[color=#333333 !important]
1 p. L7 I# P; X) T; u[color=#333333 !important]客户端
. p( |, W8 p) E* F$ h
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com! b; j! i: E2 U1 P7 @
[color=#333333 !important]-f 前台显示
) I/ s; C) s: o[color=#333333 !important]-P 认证密码
% A, s! X. l6 b. Z  z[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析
' s& J- F2 [* W9 k# b7 }/ o) G
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。
6 F3 M7 W3 S9 Q# G# D; O$ v[color=#333333 !important]6 h0 l. a, Z# [: ~& J
流量包分析2 ]4 y* _  x$ q: n0 n

1 H( e0 G4 z+ G; Z1 G6 A
[color=#333333 !important]抓包) t7 [) k1 F- M% t5 k7 H, h& V
[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap9 X1 Z' L( T' V# Z3 x4 `& s6 j9 B
建立链接的包分析( w! w9 f& O, f
' e1 g4 p7 J% H# t1 Y
[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包
: u2 x# {3 n! p% D1 R; o[color=#333333 !important]" c9 _0 j# k5 ?
[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀
& [' h- K$ L; ?) X! C[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据5 d! l( k  q2 V+ n3 O8 w
[color=#333333 !important]8 g( t; h/ |" k* U. C2 i/ H* ^
[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节)
$ f  X- q* N1 u; h[color=#333333 !important]
& {4 r" T6 N: J, F2 t3 |[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。
+ h) o3 z+ q" e( ^, O通信流量包分析, m+ h: i9 w: ]3 Y
& P$ F& O% A) @: }
[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析" E! \) Y7 ^: _1 m1 w
[color=#333333 !important]' c0 {1 Z9 {# p5 v) ~/ H4 P
[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。9 ?$ T2 n5 x# R  c
[color=#333333 !important]05fanyi05baidu03com
0 R) A! y& r& a* D+ e) H- e[color=#333333 !important]
7 n  J6 G  P! g1 e. A; j, \; ?( }[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。
. D. j$ [- ~0 K/ Y- f3 E[color=#333333 !important]8 s. @* D3 ]. p4 k" P
suricata检测规则(并未测试,仅共参考)7 R5 l- a$ y8 I! o7 g/ T

9 |: J; e# f) A  P/ V7 ]$ i
    + _8 _% i$ m/ ^

  • 3 w2 T0 F; P2 B# l" 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;)Dns2tcp" A- f9 z$ E  B8 M, ^' S8 O

( T( t* P4 V3 t; l& P5 l! Q安装0 n8 r* h% ^# V5 \
  I7 l! J/ ~! x
[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell
9 X# Z& c, \4 G[color=#333333 !important]下载链接
  k2 f# G1 f3 z2 _
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag
0 d! O7 V" K) ~7 N
[color=#333333 !important]提取码:t1rw# F8 _/ Y* s5 ?6 I$ c! N
[color=#333333 !important]安装编译6 f& t8 m( V  H$ Y5 J4 v2 G: ^9 y; Y
    ( Z3 _$ j3 g/ r  z4 A. p' G; Q

  • 7 d+ |4 f4 J- w6 m
./configure    make;make install[color=#333333 !important]服务器端
! j" A* @* V) s% a3 U

    ( n# q, G1 Z' n) D4 r
  • 4 Y- Z7 p  N% D
server/dns2tcpd[color=#333333 !important]客户端
% h! i; {$ \( m! ^9 Z! \
    " x5 x, `2 Y7 m" I( G3 P
  • " O! A% Z9 R) Z) K5 }
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载' H' v# }$ C6 f

    & H; @; b, `& o! N/ b' d2 U' S
  • 6 p# K- z$ I+ u3 y
dns2tcpc.exe实验测试! C2 U! n/ Y9 }3 g. J4 i7 V( ]7 y
2 O1 n0 U, L5 ~7 _. B
[color=#333333 !important]服务器端) F& U. k7 C; X  q$ J( @3 T+ S/ G3 J
[color=#333333 !important]1.创建配置文件
& G% y8 q( t' t! ?
    + M' j" G* d# r6 u1 o! N
  • 9 D: Q$ B3 g/ r& x) l; p" 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.启动
" j8 j' E6 e. N. n3 `, r
      W/ N& z& m, _% o

  • $ t' c$ `: t& K9 m+ \& c
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接
3 i9 G% l" N& r1 {3 }- G. z[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务
0 P- |# O7 Q* C  l/ o$ ], T
[color=#333333 !important]
# Z! y1 }) \' A# z
[color=#333333 !important]客户端
/ u& ?+ c) u* Q- i* F1 ^! }
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 27 E' f  U. n' J, m
[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源
) _/ E5 Y# {- N5 {  b[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP
. C" N& @+ p5 A! R0 M! e- i7 ~+ J[color=#333333 !important]-l:端口
8 {7 {/ \' r2 C2 Y2 }4 {+ N[color=#333333 !important]-d:是否为调试模式 2 等级可以省略: m% C  n# P8 t2 J& S& n: |1 {3 E
[color=#333333 !important]- L. I" D( P; p& a, V. G8 m. K
[color=#333333 !important]客户端使用访问服务器
7 k  h8 G0 l! c# x2 A8 g7 B[color=#333333 !important]
$ u; \0 V& e3 \. |2 n9 s4 f流量包分析: }2 t/ \4 M( f6 X: `

- a& @+ O  ]  D8 s& G- b* n[color=#333333 !important]建立链接并未产生通信包% R2 l" E$ b/ k3 i
[color=#333333 !important]
7 H& u( P, O3 z: x. S[color=#333333 !important]使用ssh访问时,才会产生数据包2 E' T" ?9 m0 u0 b
[color=#333333 !important], @6 J+ U8 n# \, t1 u
[color=#333333 !important]数据包分析: f! x# B- w3 d+ r- w1 i
[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中1 a) u: a) F( h( m1 d4 @7 u
[color=#333333 !important]9 \+ w5 L9 l5 \! `3 ], P! k3 e2 g
[color=#333333 !important]
5 |: @8 W" f9 L' h0 j, t8 G, O5 [[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。
) o  F1 c9 l- `8 p6 O) SSuricata规则检测(并未测试,仅共参考)* }/ p' ]1 ~3 f) s! u% ]

% n) i3 C7 V; S! S[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测& {* V& r4 N9 m6 R$ T" G+ b
    / _+ @( k% i! M1 W4 l. V
  • ; s- H5 t1 F! i
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]结尾! M- Y/ i( l0 {# }. e
[color=#333333 !important]小白水文,求大神放过
2 Z5 u1 G9 h$ ^) d! l[color=#333333 !important]pcap包下载地址:
+ x4 I+ l* ^( c" r0 T; Z/ I+ O
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw
0 T$ J) J) T: ]  \1 a) F
[color=#333333 !important]提取码:n5ha
1 r5 i3 w/ I6 O  j6 ^[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载
: G; Z! [: u3 s* J( t6 p* G; o! E$ e4 S: V
精彩推荐0 g* w% d8 l7 z2 w  d8 E

, w5 f9 Q' y& ^, c: o/ c( H

$ o; ?/ Z% E) A/ K9 T
. g' y  B) O8 Y1 E5 ~4 _5 Y) B2 w: @9 K) c) ~0 q

3 i4 f9 D- J6 Q! @4 b: R+ A
9 ~2 J$ L: X1 I+ X- E: Q, s! g5 O来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=1) W" U; F" }2 Y* z5 j- ~7 u6 H* m
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-18 11:01 , Processed in 0.056781 second(s), 28 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2026 Discuz! Team.

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