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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7808|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道! @- c" r% k. ~4 {
1 V3 f; V& W; r$ V
[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。$ L1 h9 L, G7 g/ U8 \- B
实验环境
" L: g& i1 ?- R. L# n% t% d; I) b3 L
[color=#333333 !important]CentOS Linux 两台- L% ]  h0 X5 G8 ]
创建DNS服务器
5 l) i6 E2 a0 m; ^/ S" z% i9 v7 Z
1.安装bind
0 t  ]; ~5 P3 }/ z# p' e
2 f9 m5 q7 U1 T, I' X7 E
[color=#333333 !important]yum install bind*- g. v) O5 S8 W* G( \% H9 `
2.配置named文件& l9 v" ^" k1 Y, d! o! R
) q5 Q3 L* J- m; m8 z" x, K$ f  @
[color=#333333 !important]修改/etc/named.conf
7 B* j9 P7 ?, }
[color=#333333 !important]将下图中选中的地方改为any
7 J' ]6 L9 v. Z5 v/ w* Y/ {[color=#333333 !important]6 {8 H, p' @0 @: I; o; Z* R' Y
3. 设置NS记录,A记录
4 F) v9 O; ?$ v+ `% c5 A' d$ w$ v# t
[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件
2 f+ u7 M2 @* M8 C
[color=#333333 !important]

0 B  c) V0 ?3 t2 O/ g[color=#333333 !important]增加正向解析记录: A5 l' n2 w% M+ Z) s& _- v- M9 L
[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字
: T9 R/ z  W3 k$ Q" Q
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel
- q# B2 S: ~( Q  A; J0 V1 a
[color=#333333 !important]修改文件如下& {4 {& h& {* }) C
[color=#333333 !important]添加NS记录,A记录- v+ I- |/ H( _, k3 S1 Y, m
[color=#333333 !important]3 z3 i* B( |% e* j! L
[color=#333333 !important]添加bind为自启动服务% b# s9 J) m; [2 t' }) `
[color=#333333 !important]systemctl enablenamed.service
/ k) Q, y4 W# {/ B[color=#333333 !important]systemctl restartnamed.service, T  m' ?& G8 ~, D( n7 m) W1 h
[color=#333333 !important]查看启动状态  ~6 |5 M' X8 t7 C  _7 B  p' a: O
[color=#333333 !important]systemctl statusnamed.service
5 z6 F- P9 v5 t% [7 `0 _+ Y+ q+ |8 [
[color=#333333 !important]
' y; W+ s% n, t[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)
' ?3 ]0 {/ r) S1 D, M4 ^Iodine
' E0 f% o. h+ J0 x
4 j1 v( v5 m) j' h) N- [2 x[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。
; f, [2 d/ O  M8 [安装
. V- D6 h! e% g- u. R  i' p) i
0 x" O4 A" Z1 x[color=#333333 !important]下载地址:7 X5 A) E% X! X/ h0 y1 s
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip
8 u$ Q$ E# ]' `$ D/ A- W$ |! Y
[color=#333333 !important]unzip 解压
+ r7 u, V  T6 F1 E[color=#333333 !important]cd iodine-master/ C4 m4 g+ G. }1 o
[color=#333333 !important]make
/ e2 `. X$ u% `! j5 ^[color=#333333 !important]出现报错5 F* q5 V; y* Q2 M4 B- J/ O
[color=#333333 !important]
& b7 w) X4 k/ I+ h# L* C' b5 @[color=#333333 !important]yum -y install zlib-devel
' C1 K/ p; ?: q+ i+ {: x5 {0 c[color=#333333 !important]make;make install  S+ p! m- c( }1 j7 ]
[color=#333333 !important]安装完成& l7 `, t$ M$ l. V% x
[color=#333333 !important]进入 bin
+ `2 v9 Y1 ^" I( m[color=#333333 !important]iodined 服务器
8 ?: A! E, G0 M# l& h2 [[color=#333333 !important]iodine 客户端( D; H6 P" D; H* w( Z$ }! E
实验测试
' K2 r! a- H/ W' o, v
: f: Z' r. x5 d2 q3 E, b5 G+ b[color=#333333 !important]服务器
2 n7 U2 ?) x! r" r
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com# o6 U, F2 c# O! W' z, B( Q
[color=#333333 !important]-f 前台显示,运行后一直在命令行等待8 C) G( b. L3 P
[color=#333333 !important]-c 中继模式|直连模式4 e5 M( s/ e+ C
[color=#333333 !important]-P 认证密码  t  m( _2 j4 I3 k4 _" @
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。% m" j; r1 M7 q% ?& z1 I2 t, O- k
[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。" H( D  O* a7 A( D1 }
[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡3 z2 B* f% z# R4 a2 d* N' j
[color=#333333 !important]2 P- N* K4 K0 j6 S/ K! J8 N" K
[color=#333333 !important]7 @; V9 ^, X! d8 @0 i* F. s
[color=#333333 !important]客户端
1 U5 w; t! a; L2 U) u1 A6 v+ D
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com' a3 l0 ^5 l! i- }0 S
[color=#333333 !important]-f 前台显示, |# Q& \% I+ O* ~7 A' p
[color=#333333 !important]-P 认证密码6 I8 u9 V6 j! K( S$ O- R
[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析$ t1 |, l+ I' c# G$ t
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。
# K3 N. O1 A, o/ r* Z# S: ?# n[color=#333333 !important]/ s' n0 x1 I$ C$ p  t3 a
流量包分析/ j. X( y2 \! S3 O  d& B- }1 e
& N' z1 D5 n  R- J* M
[color=#333333 !important]抓包% Z: l5 Y  o! T: b
[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap
5 @! B) x6 T: }* b2 A
建立链接的包分析  U( \% k; F5 V* [& ]
( P1 V( s/ j  Z! N- c
[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包
& U3 Q- C7 O' }+ K% X( F2 ][color=#333333 !important]3 u; X8 F6 r+ V& o4 n: O
[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀! r- P0 P& p5 Z6 z; c( U
[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据
; q5 H' ?( S* X9 S3 q$ U[color=#333333 !important]  y$ E; L  W) l! [
[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节)% B! [. Z( A4 h/ \5 l- i! r: s
[color=#333333 !important]) D/ D- d' H* `: d
[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。* w) r4 Z# `& N5 P2 K
通信流量包分析
- \* Q3 _# D5 c; I" u, Q) C4 I$ B/ P! A/ ]( Y
[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析; T; W' U) _$ Y0 B6 q$ g: Q. i# A
[color=#333333 !important]
- c0 F- ?8 m! H' C! K( Y: X! \8 x[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。5 r8 ]6 |8 c' i8 ^$ }7 N
[color=#333333 !important]05fanyi05baidu03com
0 L# l0 C* m7 y# O5 ~2 K" f[color=#333333 !important]
0 Y5 {9 G2 W: e. s' S7 [[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。1 Y& W% |, M) F3 L6 l- u# F# J% F
[color=#333333 !important]% }# C! ^8 J+ N  w: T: `- v8 [- c  F, u
suricata检测规则(并未测试,仅共参考)
; ]$ l* L8 [* q" a  E5 @5 C4 p# ~( D: E
7 l3 z1 r5 ?; f
    5 {$ Z4 g9 L. N- t5 L( {6 [
  • 3 |% a: b6 ~2 f0 v! s+ F) X- Z
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;)Dns2tcp0 d7 J$ I. H  _6 p) z) V
" p; c% o1 x6 N3 Z1 H* o
安装! ]5 `& j& x2 O

1 z+ M) g- G/ M: P! A6 ^5 h- Y[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell
9 f1 L4 _) O: N+ l) K[color=#333333 !important]下载链接! V) B2 ?3 O. E0 q+ S' s# Z7 S. h
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag
' ~& t) S% X. e$ O8 a$ A$ }
[color=#333333 !important]提取码:t1rw3 l1 B( n$ \6 w/ c9 y
[color=#333333 !important]安装编译; g( y" G/ r. E& T8 s7 ]' p: Q% B4 m0 _$ [
    1 Z4 ~- e3 B4 B% M
  • 9 ^. y4 B! W6 C6 c- {, x) a
./configure    make;make install[color=#333333 !important]服务器端
: w1 f  \, [% D1 e3 t
    / R" d' H; t6 d$ M9 S- t

  • ( a: ^( N* z1 K
server/dns2tcpd[color=#333333 !important]客户端
2 a2 C, [& I0 v' ~

    # |- N: E# n: o2 F  B* p1 |6 s: X

  • & f" L6 i: S! R1 L4 V' X; K
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载0 m2 H! N1 X8 |) |( u
    / e3 p! A4 Q( z

  • & V: z* j4 n0 F1 Y% A' ^+ d4 I
dns2tcpc.exe实验测试
/ |4 g$ r) A! U8 V& X4 F! Y" H5 |: o& z0 v
[color=#333333 !important]服务器端
& H# Y9 d: @7 v, \, Y. K[color=#333333 !important]1.创建配置文件
' Y" M% C. m  Q& T, C3 y7 ^8 X

    7 v% e" ]1 n, T9 H
  • 6 k" E, s7 H, t6 X. m# J
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.启动
6 A8 V$ [: t# F1 ?* ~3 x
    ' F$ A0 u! t: p, _1 L

  • # P+ G; o5 {( G& \; G) ~; [6 S
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接- j' G) g6 m2 O: k1 s5 h
[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务2 G0 m3 i: C) J. _2 G% b
[color=#333333 !important]
) \" m% g8 w5 U6 B& n/ K! s
[color=#333333 !important]客户端
0 I  r; L7 `. x8 [" Z' b% A
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 2
) \9 Q( R. T! ^$ [[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源
' K, k* H' Y# i[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP
8 ^1 {$ \; Z; z' S& R[color=#333333 !important]-l:端口
, b" p/ l" n3 J[color=#333333 !important]-d:是否为调试模式 2 等级可以省略
. c) y, X7 |6 o
[color=#333333 !important]
$ G2 T6 \- X, D) [) Z, V* |% g2 W[color=#333333 !important]客户端使用访问服务器6 m3 }" q  {$ |; E# \
[color=#333333 !important]
1 V1 ]; S3 S% ]流量包分析  D9 e  \1 R( p# l

/ |6 ?' j4 B6 U, f% a- i! q/ D% u[color=#333333 !important]建立链接并未产生通信包
/ I5 p; K$ n2 w9 i[color=#333333 !important]
5 Q, q5 {3 @' [9 ~[color=#333333 !important]使用ssh访问时,才会产生数据包
" e3 D1 U2 Z% T/ p[color=#333333 !important]
5 A# `& X8 f, O$ A3 D: C[color=#333333 !important]数据包分析& D& F% E5 k" o; P3 s
[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中
! X0 |: h0 O, d( ^! V% b[color=#333333 !important]
2 z( }8 X! E% r' l[color=#333333 !important]
, Z) O, f9 a- B5 B2 e& ?3 |6 _! ~[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。9 A7 t5 h" O5 o4 m$ B9 x$ h
Suricata规则检测(并未测试,仅共参考)
8 E3 V3 b- ?: f7 [% R- y" k
) [( a1 S, f- ~' j[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测
1 [& K+ }2 ~/ @- `0 }8 ~# Q1 b3 x

    : a7 ^! Y0 M# x5 y/ z& ?
  • % t/ P! j" c. h% W, k$ A4 M
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]结尾
/ T' L0 W- w) o. Y[color=#333333 !important]小白水文,求大神放过
5 K4 a1 {/ {2 {$ M[color=#333333 !important]pcap包下载地址:/ ^) c7 c( h& {  ^1 X$ {( a/ j
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw
- f0 ]# G6 E% w: x* `0 ]
[color=#333333 !important]提取码:n5ha2 y! e) v- K0 |& F; I1 _( k
[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载
5 \' m. ~4 Q: {% @! G. C7 H  `
6 e6 {. k8 y, F  \1 `精彩推荐
+ v! u% q, m: ?$ A, F
; y/ O% L" {7 A: F
: w' T+ u- |) q( u* l' Z
( D; K, w! a" D( B4 u2 [0 h
5 g) z5 h* z3 v/ k6 ]

0 [% s* C$ F* i6 a1 K1 o# ^3 d3 M! ?0 y$ y, l* T
来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=1
8 ]% ~& l4 Q, g8 `* D' o免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-16 03:21 , Processed in 0.040525 second(s), 26 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2026 Discuz! Team.

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