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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7617|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道4 r/ D2 M% b8 u7 X! a/ n

0 q; \9 @: k# _. P6 X' M  J3 P" g[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。% `$ t! G: d& N* F- I1 Z7 \
实验环境
) k4 w3 s- b4 M; ]! i
/ {- v9 t" p3 N& l6 T' X
[color=#333333 !important]CentOS Linux 两台4 t$ B; K/ j+ ~4 g& g) a$ M6 |1 E. w
创建DNS服务器
- H9 [$ `. j2 f) {) f3 p. s
1 j# S+ k3 h; J; E1.安装bind( T9 X1 B  ?& h% e  v

+ N) j& @8 h. p" }
[color=#333333 !important]yum install bind*. [" _; n+ s) |, O8 x
2.配置named文件+ t2 ]( }/ ^$ t5 e: r" p; Y7 n- r2 D
% U4 E% h! N8 O) E4 p
[color=#333333 !important]修改/etc/named.conf
& Y' l/ t( e6 [, a; J; P$ M
[color=#333333 !important]将下图中选中的地方改为any
( y+ D: [1 @6 [  }) K[color=#333333 !important]
, R0 ]2 o, S: [9 T! h8 L3. 设置NS记录,A记录* U. x& I3 |& \$ t7 \# @
4 E+ I5 t7 {( P; s$ B1 s: c
[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件
, W/ I$ E/ _- z; R
[color=#333333 !important]
  T6 }  p3 o6 t# m/ s1 C: _5 G
[color=#333333 !important]增加正向解析记录
- P) t. d& M8 \/ Q[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字! M/ r+ n3 p8 T9 `3 v" T
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel' G' j: C2 a8 x! i6 m3 k
[color=#333333 !important]修改文件如下
' N8 }5 L- [7 h9 v% g; B4 o' c5 |[color=#333333 !important]添加NS记录,A记录" ~$ U8 t7 F/ f, r
[color=#333333 !important]* ~2 K5 A# G+ W2 Y: j5 a6 K
[color=#333333 !important]添加bind为自启动服务
, O: Y/ U: ?; D8 `5 n- D
[color=#333333 !important]systemctl enablenamed.service; T  j; O- U" u' {2 ~8 s, p* y) B
[color=#333333 !important]systemctl restartnamed.service
, ?# I6 q, Z" T. P3 d4 X8 l4 ~- F% i0 O
[color=#333333 !important]查看启动状态
+ X* {- H2 D9 T3 J8 j8 ]" S6 m* l
[color=#333333 !important]systemctl statusnamed.service
: o: d" O0 K+ @; S5 e& E  d4 T
[color=#333333 !important]4 I- b7 L2 P) w) E
[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)1 y8 Q; u; @8 t# d6 ^  l& R
Iodine: N" K' o! {) w1 b% V5 g6 B
1 E1 B' Y" l4 @8 x: h
[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。
4 A( @1 I( k$ ?  R5 s, n安装4 Y: K( G) _8 \, _5 W

: G4 P% K" t% ~% q. A1 k6 q( u$ ^[color=#333333 !important]下载地址:
! G% Z% w( p  F- }5 k
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip( M* f, U" C, G, S
[color=#333333 !important]unzip 解压. a5 g, ]+ `. S! I6 T6 [; L4 B9 U9 @
[color=#333333 !important]cd iodine-master
) o' Y  W  y0 }0 u3 J% [) Y8 k2 ^. s[color=#333333 !important]make# ^5 e/ B0 b  A, V2 Y2 L$ x
[color=#333333 !important]出现报错! B6 {) v# N/ |- h. [# G! T4 [
[color=#333333 !important]
' j9 K2 T$ X, r/ t1 @* H/ R[color=#333333 !important]yum -y install zlib-devel( T2 P- S3 W7 I4 l. p
[color=#333333 !important]make;make install
/ b& e+ b/ C/ F[color=#333333 !important]安装完成
2 Q& n: g; H. L4 J5 |1 T[color=#333333 !important]进入 bin: X' f5 j' H* H" j( }
[color=#333333 !important]iodined 服务器
+ }7 k" |! C9 H, o+ N) {[color=#333333 !important]iodine 客户端5 D1 T9 U; X1 F/ F$ M+ V
实验测试( f+ t' G# m0 U" B9 R* I* _3 q

; P) a& |  R3 l" w. c[color=#333333 !important]服务器# h) _4 ]1 a2 Q. v
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com5 m- C( B- D4 N& ?$ T6 w) y4 E
[color=#333333 !important]-f 前台显示,运行后一直在命令行等待
9 L: g) Y  |$ C, J: A. i$ [[color=#333333 !important]-c 中继模式|直连模式0 L; P0 P' H7 ~3 u* T8 ]
[color=#333333 !important]-P 认证密码
' {8 n- `/ g# n8 u  I0 e
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。" b- ?5 f9 O/ U( D
[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。# s2 J( s3 c" q
[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡6 ~$ B; P  R* ~; V3 F
[color=#333333 !important]
) t+ H2 q# w0 a! M" j[color=#333333 !important]: N& m. u) z5 Q1 ]
[color=#333333 !important]客户端. _! P5 `6 N$ {* ]' h4 _! J3 K8 H
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com3 @) K* T: Z4 @+ e2 K& r
[color=#333333 !important]-f 前台显示" l" \0 W. ?7 }9 n
[color=#333333 !important]-P 认证密码2 S: [0 e: Q8 y7 {8 D* M- L1 I6 V
[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析
: o8 g$ [! }$ J# l9 g1 Y
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。
, G# T% p* e0 Y0 t[color=#333333 !important]$ f+ S) H/ r- Q% A8 ~% o2 D
流量包分析7 ^  O7 E& |: |+ [

. C0 r5 Y% H/ P  Y. y2 x  a: l
[color=#333333 !important]抓包
+ U$ }8 ?( o& o. I1 S# }[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap
- v7 S$ q! n" W. @
建立链接的包分析
8 K) t5 {) t% F5 v. w2 u8 I, J2 i" o( N
[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包1 D4 u5 W% t1 L" [
[color=#333333 !important]
, [" v7 K% \+ [[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀0 K5 V) Q; K; T
[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据
5 Y8 ~! q: c/ S8 G# O- \[color=#333333 !important]& _! f8 q/ r! M' L) k) \
[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节)
/ C; {$ V, A! O+ Y1 s/ z0 l[color=#333333 !important]
( T$ g1 G3 a% @5 S- {0 X[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。
& h. y! c2 C# L& f9 E. w通信流量包分析
% ]% k, Y' Z  }8 h. L- `& e1 t  m/ ]2 n$ n" ]# \6 n  r
[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析+ ~7 ~3 P+ x! ]; P; Z- ?9 Y) G. k
[color=#333333 !important]
7 H. x/ N; }7 }. p- m  s( k[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。
4 B0 Y2 C) G4 F2 j* r) `[color=#333333 !important]05fanyi05baidu03com# A% ^" y& z  m) l# W6 E1 B* R
[color=#333333 !important]
: @4 f  w* r- j& U[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。2 e9 x7 r) D, ]' ^: t* {! ]% e
[color=#333333 !important]8 R+ ?" m" J$ D2 j, |5 Z- z
suricata检测规则(并未测试,仅共参考)
3 `: V& |1 {* [! @3 |
4 h: L7 I' ?# c* l$ e7 i. F
    7 S2 k9 H; O; U! }6 z- s
  • - r. e  Q2 z. X* E
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;)Dns2tcp9 G+ k; @" i7 L# s+ W$ y# g

# u# W  U) O3 r5 X4 ]7 }8 y安装$ X$ x' ]$ Z, {) M9 |

0 G$ o) M4 p; a- g5 S6 y3 C[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell2 g- Q, a1 `' e, h5 C/ m' U
[color=#333333 !important]下载链接; u% e: D4 e, l" M
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag% S9 a4 W' V3 X2 q) ~
[color=#333333 !important]提取码:t1rw) a; v4 T% N$ |* r7 Z9 X
[color=#333333 !important]安装编译, R( M1 D8 Q: {7 {- K

    : t* H: X0 _' c! d* k6 d* d
  • " j* t9 b' b8 p' D  k( N! V
./configure    make;make install[color=#333333 !important]服务器端
: |* Q# G0 L# k  A2 o
    9 I6 K- v* x! C( g& n( O& o: D
  • ! F6 Q' {. W5 X1 K* A5 z8 p1 X0 S# @6 e
server/dns2tcpd[color=#333333 !important]客户端' C% C* `0 r* h: i+ N
    / \; \+ w2 J. B/ `9 A

  • ) E* }# q5 ?# {5 I+ m; k9 j: A" Z4 e
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载
% `3 K& ?4 e; T% `+ q: h! s1 a6 p

    4 q; X9 b' M. }) u& I3 u

  • , D  \, B& a6 G2 l  _
dns2tcpc.exe实验测试1 |7 P  U, w) z: X

' ]# [3 G( ?5 Y* Y[color=#333333 !important]服务器端
/ Z& ?, P* h; t+ p[color=#333333 !important]1.创建配置文件7 y2 z4 G3 p: J) G; ]2 C  a

    * C) U& [1 ?' `) O- c( A5 U+ C

  • 1 z- h; u& F5 ^% A) t& k/ F) P
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.启动
( W0 n3 ^3 W5 O( Q7 q% H; B
    8 c% ^" b3 Y& O9 _* V

  • ) y2 M- j  u% O
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接& b, |2 G& U, H
[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务% E9 v7 b+ r4 K
[color=#333333 !important]
+ N8 _9 K7 ]* g: ~7 P8 D, l
[color=#333333 !important]客户端
' M2 x: X4 g# V
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 2
4 [& m: Q" }$ ?: N  g[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源
/ x$ C5 g) q/ }[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP
) ^8 |: ]" u" E& R[color=#333333 !important]-l:端口: J! L' V1 r: _" W& ~" C6 _
[color=#333333 !important]-d:是否为调试模式 2 等级可以省略5 m" S, f) d; s, X% F% Z9 G
[color=#333333 !important]
! T- [4 }6 A6 R/ h3 B[color=#333333 !important]客户端使用访问服务器. y+ n. b. f  S" V
[color=#333333 !important]7 u8 a7 @( A9 ^% i
流量包分析! h% \$ H& p! Y5 I7 o

' S' k" {! r9 h. D- r, t, q[color=#333333 !important]建立链接并未产生通信包
7 V" n8 S% |8 D% o[color=#333333 !important]2 F8 D. }* q6 Q- p" Q! _
[color=#333333 !important]使用ssh访问时,才会产生数据包
- @4 D: u$ n! w3 J* Q( _) ^[color=#333333 !important]
5 ]. \- S/ W' f* f) m8 M  b( G+ s[color=#333333 !important]数据包分析8 _0 P3 E& @' U  U; [
[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中& Z- c6 j* \+ [, w  n, X
[color=#333333 !important]! N7 f# ^& U' \  P/ {
[color=#333333 !important]
5 d3 u+ A2 a/ a" V[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。! V$ _8 G' C; p* c0 p
Suricata规则检测(并未测试,仅共参考)9 ?( F; [1 x8 {% g! f
$ P3 U4 g( b4 j  M1 g
[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测. Q/ t" y0 |/ B
    ! ^$ |; I; `4 S0 c$ P0 B7 z
  • * S( C: g, E. R; M3 n  X: ?
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]结尾
& d$ E* ~& D5 W% g# Y, R[color=#333333 !important]小白水文,求大神放过
* w) o+ D4 |8 W: q4 A% u[color=#333333 !important]pcap包下载地址:
! N' K* y3 J$ u
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw( Q0 }0 u1 j* b8 G
[color=#333333 !important]提取码:n5ha& d5 s* S. `! {% ?
[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载
0 B6 l. |0 l% b0 d4 u  u0 e8 i2 P
, B9 _1 x- m7 i0 R精彩推荐
6 F. @' |$ L6 y4 I4 n) W0 ?2 v7 ?% f8 c+ r+ _( d/ O
" U: e8 g+ D, ]5 O

# u! y7 h' J4 ~) I* ^, t
0 d# ~' k* \, Y( }
+ q. R- i3 y( a, Q) t% m1 B5 Y+ |+ \* H+ s4 L. E) ~( P
来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=1
* y1 Y/ x+ w& C. N5 D9 z免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-16 12:34 , Processed in 0.058276 second(s), 27 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

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