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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7694|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道
  ^& ]$ K) n8 _: G
/ C# `5 F5 f$ u" g/ A[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。
9 Z8 o6 x2 I' d实验环境% t+ L' g5 b$ V+ s& [

$ q+ g. a7 ]- z
[color=#333333 !important]CentOS Linux 两台% e2 y. N+ H5 D' \4 e
创建DNS服务器4 P+ W2 h3 O. k2 [6 }/ C1 A7 s$ q

9 L1 o9 O& I/ j" o5 _, H; }* ?1.安装bind' y/ t9 d# P& [

' Q$ `0 {6 h) ~
[color=#333333 !important]yum install bind*
1 B5 j- H2 J8 q" a
2.配置named文件7 g4 W& `6 f& ^  V) J, }6 R
  ~  e. Y; }- l! S, u
[color=#333333 !important]修改/etc/named.conf
) ]/ f. m/ O, V2 Q2 q0 m9 U6 u
[color=#333333 !important]将下图中选中的地方改为any
  ?* }0 n% [, V$ ?[color=#333333 !important]* X' M" r$ x) L# T. t
3. 设置NS记录,A记录& i, I% ]  u7 Q8 e, C' F

% H& D2 O/ w" m: V2 ?& o[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件
$ l; G& {3 n; C
[color=#333333 !important]

- M7 k$ }2 G4 V, d) g$ A- l# @[color=#333333 !important]增加正向解析记录( K& L4 M. }3 N5 S5 {7 I$ x
[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字
# }: J) m8 K4 s4 t$ s& \
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel
* e- n& Y( u  y' E4 X7 E
[color=#333333 !important]修改文件如下
3 \- H+ k3 o; q! H[color=#333333 !important]添加NS记录,A记录
% o* V  f- H  w7 N. B[color=#333333 !important]0 G7 W9 r9 @7 H' c. M! ^
[color=#333333 !important]添加bind为自启动服务; |+ r# V, B' G! Q* |
[color=#333333 !important]systemctl enablenamed.service+ M( S7 r8 O2 a9 g* w
[color=#333333 !important]systemctl restartnamed.service9 M/ g: M2 a, r2 [" S
[color=#333333 !important]查看启动状态5 n$ a6 E0 C( S9 @
[color=#333333 !important]systemctl statusnamed.service) |2 T" R( l3 o) b
[color=#333333 !important]- r/ C7 A$ s7 Y
[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)
7 Y* s. {$ R! T& b' H# m/ G5 BIodine* I0 T2 t' L  t; }( N" q
+ {1 L' w/ k/ n
[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。* g& `- Z4 n/ I/ N. `
安装3 ~" _- @% W8 G; `7 x+ m) L3 ?' J3 X( F

) X0 E0 Y" |3 L[color=#333333 !important]下载地址:
* S, L* J6 X/ e$ R+ S4 H( \4 Q$ l
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip
/ I! M, h$ W( i& r
[color=#333333 !important]unzip 解压
1 ^! e6 M; D) v$ y  Q[color=#333333 !important]cd iodine-master2 `: w& G+ Z. A: r0 ]
[color=#333333 !important]make! D& A9 n& Y1 o" W4 [( s) x
[color=#333333 !important]出现报错
4 P& k! @; t- |. B# H- a( d9 O: T[color=#333333 !important]% Z3 B7 n, u: f: C3 R. @- E, N* V
[color=#333333 !important]yum -y install zlib-devel
# V; V8 @' b1 _[color=#333333 !important]make;make install! H/ o. |! }* g3 M5 @
[color=#333333 !important]安装完成: g  R2 |9 Z0 v- g/ s
[color=#333333 !important]进入 bin! |% [" X. t4 b. ~
[color=#333333 !important]iodined 服务器
. S5 O0 ^3 p% \1 v2 H[color=#333333 !important]iodine 客户端
$ Y$ T+ U8 [" F; W2 l实验测试
, x# P& _+ y& p. h4 f# G5 k: |( r7 s$ R/ k+ \5 H# U. p
[color=#333333 !important]服务器! N/ d3 P& ?6 ?% K" w
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com
8 f" t& K  c: x. u2 H& L' v9 ][color=#333333 !important]-f 前台显示,运行后一直在命令行等待
+ [" R; B7 e! ^# i) \[color=#333333 !important]-c 中继模式|直连模式
) b& i* k7 M1 R/ `8 u& h[color=#333333 !important]-P 认证密码7 y% G; w% t& q+ E/ g5 G
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。& x' M3 W2 g4 T0 _' b/ p
[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。* v& d! T* q, L( F  c& H2 ^* v
[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡
9 o- W! v$ t% E4 x9 J5 N[color=#333333 !important]8 @9 ^6 w3 F' r; s2 U
[color=#333333 !important]" f* p, w# F# e0 \! i
[color=#333333 !important]客户端
+ W$ B, X4 h5 P, ]& b5 }
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com
% l$ l" w# i( L0 m3 ]& c[color=#333333 !important]-f 前台显示
# x6 P' g6 |) h( A5 X5 D[color=#333333 !important]-P 认证密码
+ |- \; Q( S7 K7 t/ ~* A% w8 b[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析  {+ ^- E; I* ^# [! G7 u
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。) C8 n/ g% Q7 F# I5 V+ w1 I3 Y
[color=#333333 !important]2 O1 a1 ]3 i& c9 n: {) N
流量包分析
$ D4 Z) _, Y/ l; f+ H: D# [
6 ]  p4 s" K- X9 G
[color=#333333 !important]抓包
5 r9 b5 W8 C" f[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap
( L6 C2 F- {1 J- y/ Y- B9 v' d
建立链接的包分析
) y) V8 V, Y9 M' n) \4 [& L0 @% W0 z# D7 E4 M) r9 @
[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包
5 }  w3 d+ ]% d9 w3 C6 Y( W# |( L[color=#333333 !important]1 f1 e+ p3 V/ p! ^4 S/ D
[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀0 u% l: f4 u! K$ {
[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据
+ ?2 [* s" b8 e# s* a[color=#333333 !important]; G/ F8 A7 N, n7 X+ X* J5 S
[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节)% H& k0 _. R0 w8 t3 O5 i
[color=#333333 !important]8 o2 M3 m3 A1 N! A8 r6 F2 W9 Y+ w
[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。" I6 ^0 D' T, u9 Y! A
通信流量包分析" g* f2 E/ [3 {2 ?3 w: x; W0 R
3 B" G) p" ?# v( r4 w
[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析* L& m$ i4 \+ d) y0 F# y
[color=#333333 !important]$ I& x! r5 r) Z/ u6 q- C
[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。
- a7 S. C- o1 K  c6 b5 l[color=#333333 !important]05fanyi05baidu03com4 J1 z+ \8 c- c, M& y# a* _
[color=#333333 !important]
: u' w- x7 E& n[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。+ m  B: j% l; @$ L) ~
[color=#333333 !important]+ V; z2 N  ]1 V6 g8 u/ X- k1 i8 w$ p
suricata检测规则(并未测试,仅共参考)
. r8 }4 F, ~% _1 ^8 j9 H% I. g  A! [. {, y
    ! H7 E5 W9 ^) \  n
  • 1 v8 g1 z% K. w9 O
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 I- \/ {) K6 L( `
+ m  f/ v7 O: g3 c& e' b& e# l
安装6 A% j$ Y3 s' I/ T: ^
- @( S6 U1 O- r: T' x- G+ I  R
[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell
9 x+ v# U) X2 B( S4 a[color=#333333 !important]下载链接
0 r- }! o: o0 g$ i/ E4 [/ B- d
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag% d& W+ y; a8 {- I/ F) f
[color=#333333 !important]提取码:t1rw
$ q; `: S4 H0 |  j* ]) `+ u$ u[color=#333333 !important]安装编译
; M* S4 I9 a  V5 |( H7 H& `
    2 E. r* R9 C6 M# Z) y$ r
  • . K8 ]+ h* v; Z9 t$ f
./configure    make;make install[color=#333333 !important]服务器端, B) p7 k" C) _+ ]: b  }

    ; M. o4 c9 w- n# z, V  `

  • 8 ?+ d" N& g! t( d2 n
server/dns2tcpd[color=#333333 !important]客户端
* n6 c1 @3 E& q4 i& Z2 ?" h" l" X

    ) G/ f, e" G# O* k* K; [

  •   |& h& b* R1 E" q# e8 j( `* d
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载
$ j8 J5 y: ]7 r1 o: D/ C/ I1 J2 x

    $ l4 P9 F- m5 L* a* K" m2 g" _

  • , Y+ B* t- z( C7 L
dns2tcpc.exe实验测试9 R8 X+ |$ W# m5 n$ O9 \1 Y% p
9 h7 l2 ^7 m% e9 C. a
[color=#333333 !important]服务器端- X; a& N6 ~/ X0 R% }5 V) P6 f
[color=#333333 !important]1.创建配置文件
3 T* Y" |9 x0 y

    2 M: `/ i- K" j0 Z

  • 0 d0 F$ U# r2 V2 v+ t
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 m+ }: j: }8 i

    $ O. I- ~; \* H' g# ~! `  ]

  • * v3 [5 q3 _$ d
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接" S0 F4 f3 W' E3 z4 n3 U4 m
[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务
2 s+ w# V* E5 }3 [0 w* y
[color=#333333 !important]
+ I+ L, J" h+ H7 r# l& u: ?8 s
[color=#333333 !important]客户端
. C1 i% W* O7 R) r$ u6 I4 P) N
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 2
) C! y/ s& P* J* Y[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源
* B- n7 `; G- |[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP
, i. S1 P% G/ h' }[color=#333333 !important]-l:端口! x2 `1 C. t5 E+ r0 ~; w7 b
[color=#333333 !important]-d:是否为调试模式 2 等级可以省略& D- L! Z0 }, `  q) A# N
[color=#333333 !important]! {) Q* e+ F) @( P
[color=#333333 !important]客户端使用访问服务器
! q& |9 I1 V1 V- D4 u0 V6 i[color=#333333 !important]
' t) b. a  R* X5 I) _/ c% {流量包分析3 I9 x" p) L- V7 U( B, l2 L* f; ?* b" Y

; [7 o" a* E2 @6 P  w* |[color=#333333 !important]建立链接并未产生通信包
8 `+ L# i& y, Y4 b+ I' u[color=#333333 !important]
/ S1 i5 M  Z) o  m[color=#333333 !important]使用ssh访问时,才会产生数据包
- @1 A6 m  A$ P* t/ R1 v[color=#333333 !important]& Y8 {; ~3 j. U) z
[color=#333333 !important]数据包分析9 c& I+ x7 M% M- u5 @
[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中
/ @, d) g; w1 d* Z, `. e* H[color=#333333 !important]6 T" t3 o7 ?$ B
[color=#333333 !important]
- U2 O* j% V1 ^7 o' f- U+ [# l7 w- B# i% t[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。
; }0 U1 Z/ N4 qSuricata规则检测(并未测试,仅共参考)
  X% a& |% Q, d/ D- V/ z  D2 l+ P, \! s
[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测
6 O9 M9 {( \. K" ]. Q
    & [* l, B  F7 Q' G

  • ; s( u- l6 }6 O- N! n
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]结尾) g, A  {8 c! Q% X" P
[color=#333333 !important]小白水文,求大神放过
* _6 M- [  k$ N9 z+ b[color=#333333 !important]pcap包下载地址:
; ?3 @. Q% ~, }: h
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw4 R7 @) G/ P9 I6 \
[color=#333333 !important]提取码:n5ha2 X- e+ T; Y( u& H  o4 H& T( o) ]
[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载& O; b. z2 P# K! w6 U  @/ a. x& o/ r

5 R3 d: `4 ~( x" W/ y精彩推荐
' O" r# f( }4 h; |) g
% z3 c! f% F) M! H: X
( I. e0 O! B. d; Y
* U! U' `3 ^, P/ v$ Y! g

$ n( g! w9 i; j7 ^4 n4 H7 q0 |: I
+ K5 P- p2 ~6 o( u$ }$ [6 l. |
& f# ~, h- R) G+ |$ M来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=10 }1 |0 ~% F) r0 p9 Z7 V
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-16 21:16 , Processed in 0.059288 second(s), 28 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2026 Discuz! Team.

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