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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7621|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道
  Q( P6 R# z2 Y$ t' \! J- E" f' k  f
[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。
, ?9 m6 M4 d' ?+ Z2 o* k8 I实验环境) Q' }1 I( D: _' V
! g1 i% C" a6 o) x1 D1 K
[color=#333333 !important]CentOS Linux 两台
( Z7 b0 h2 ~/ m- O$ `$ f
创建DNS服务器
9 y. _( o% G5 W% T5 L& j6 {+ E, y# I( |5 a5 r- E& a
1.安装bind* T1 Q/ R7 ^5 a" Y, O/ J

% B, m' d' s4 h+ t7 f
[color=#333333 !important]yum install bind*3 Q) F: d" S% ^7 D. X: V1 L
2.配置named文件: Z; a+ G/ u0 y' d  q. O1 M
9 {1 l) M4 v7 r, P
[color=#333333 !important]修改/etc/named.conf
. Y% n/ Z2 T- H7 T; y7 h
[color=#333333 !important]将下图中选中的地方改为any
0 _/ G3 u) h" \6 {( R0 i- Z[color=#333333 !important]
) I- Z$ J! Y: V$ u; ?3. 设置NS记录,A记录7 F3 p% z; |4 c, y: S
% H8 p" |9 @- N
[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件* P7 t9 p! q  f, K0 `
[color=#333333 !important]
7 f/ D! [2 X( p( t' K% \
[color=#333333 !important]增加正向解析记录
7 b  k& R4 s' z+ j) n; M) x[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字4 ^+ Y, e5 d( A7 I* @0 b
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel
' b! p. Y4 @5 U% M5 j5 X
[color=#333333 !important]修改文件如下4 [( A5 W0 r1 j( d$ w
[color=#333333 !important]添加NS记录,A记录
- p4 `3 i9 e! k[color=#333333 !important]/ {0 {$ L' m+ J5 b" Q+ B- }
[color=#333333 !important]添加bind为自启动服务% t. d+ R0 K; T+ g
[color=#333333 !important]systemctl enablenamed.service
5 q/ G  J/ N: E. I( o" e) c+ W[color=#333333 !important]systemctl restartnamed.service
  U5 y  \# Y5 x  z
[color=#333333 !important]查看启动状态7 C% v& r0 H$ }/ |. A8 [  F% G
[color=#333333 !important]systemctl statusnamed.service
2 V- B1 D. h) T7 O# z2 ?. A
[color=#333333 !important]) `$ ]8 W0 j* e
[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)& T. e) {: T8 `7 [
Iodine
. t7 z: H* s# h4 L1 O; n- B5 t! v9 l6 I) o! }
[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。
4 V  Z- }* w4 `9 Q安装
0 Y/ ^  S2 O* J. b  A# C# i1 z0 V  f: ^0 v  ?3 M2 }! J! N# R
[color=#333333 !important]下载地址:$ U7 K0 J% r4 p& g/ |! y# A
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip/ S5 n* c' Q% W$ J; q8 l
[color=#333333 !important]unzip 解压/ p5 p: g3 e7 n7 ^
[color=#333333 !important]cd iodine-master, C5 G/ \9 Y: ^
[color=#333333 !important]make
/ ^1 z4 \4 h) ?. o/ [1 n[color=#333333 !important]出现报错( J) Q$ y1 _( G; ]6 V/ k8 C! n
[color=#333333 !important]% B  |8 Y; e2 a* w0 `$ V. K- r
[color=#333333 !important]yum -y install zlib-devel  D& H7 p2 k% S8 P0 }3 n0 l
[color=#333333 !important]make;make install
1 |6 {$ H  d# I) U[color=#333333 !important]安装完成
5 Z) U) q/ ^7 A0 Q. c1 m[color=#333333 !important]进入 bin
2 t3 \, A: K$ f: M( c+ w[color=#333333 !important]iodined 服务器- t; j: n  [8 P) n4 ~! {
[color=#333333 !important]iodine 客户端
# r( C5 K- X0 Q/ _  ?( z实验测试* }5 c: q! k0 e! B+ K2 L

0 c" g3 A" q% K[color=#333333 !important]服务器+ n( _0 J; H) M7 h4 U% ]6 a
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com
8 {  O% I3 i, ]* j. w/ }[color=#333333 !important]-f 前台显示,运行后一直在命令行等待; ~. ]5 a! {# e$ t/ D
[color=#333333 !important]-c 中继模式|直连模式
9 y$ `2 h0 I7 {7 W4 u( T[color=#333333 !important]-P 认证密码% q: J: ]" M- G4 P2 k8 l, K8 o
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。/ ?6 w8 e5 k4 M3 u0 D, |( s
[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。8 j: U* v% ]2 P8 I
[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡
6 T5 c4 d$ J; }6 P; x[color=#333333 !important]
& h5 Z/ Z6 i0 S2 y" X[color=#333333 !important]
5 N% d, U' }- f) G+ N; M6 e- ][color=#333333 !important]客户端0 Y! ~, F) H& F; C6 F7 [
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com
8 w1 x& J  W9 F$ _[color=#333333 !important]-f 前台显示
# Q/ H$ ?! ^7 H$ _6 f8 n[color=#333333 !important]-P 认证密码
* v( b7 Z( V  g7 O0 W6 b1 Z8 x[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析
* i" l& z! c: V3 S9 `& Z
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。
$ M/ _  r& h; y1 W+ [0 {[color=#333333 !important]0 K- P: l  ]* E0 y
流量包分析  f, X. Z+ ^* e
# W# ~1 z# g5 D- B
[color=#333333 !important]抓包
$ [1 P) o. U3 ~5 r; d$ j  {[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap
( U6 E; m3 m2 t& [9 w3 C+ w# G: J
建立链接的包分析
# c. P+ R7 r  |' x
7 A% c8 C. c, N! W[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包
: f" c- N$ Z! E; _9 c[color=#333333 !important]
) _3 w  [# ?5 \[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀
  V, [" H: ~4 o# \3 n8 Q[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据1 M5 O. R7 k1 E1 n5 C% T+ j
[color=#333333 !important]
! U* _6 m8 n' i, a4 ][color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节)
9 y5 j$ b0 l8 ~" ^3 c[color=#333333 !important]
, K% z$ F& A2 U; S! Q8 z3 o8 w[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。
( m- i$ i6 D9 x0 v通信流量包分析
. d+ Y. O4 {* |
: J% ?, Q* N) w/ [( X& \[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析
7 s$ W9 V" T1 w- u+ }[color=#333333 !important]7 s4 l7 n  Q' @/ ^
[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。% \2 i" ?% M( ^9 L
[color=#333333 !important]05fanyi05baidu03com5 l' P, n4 V% i! b
[color=#333333 !important]: e& W, W# [) f3 M! T. T: D
[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。' k* h3 H. }: [) b  f: `5 {
[color=#333333 !important]' G- c  n. d; A; _
suricata检测规则(并未测试,仅共参考)
  w/ r" M. s% a( ]# L6 e# P7 n
0 C  Y$ R1 H! j& `6 L7 x
    6 x  R7 e3 @' e& f! b. W
  • ! O8 r# ~% C9 H/ n
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
& D! x4 |3 H3 C7 t- Z
& S* ~5 U3 d9 M安装. Q- @0 V! l5 I. R) g4 x* w5 _

" h+ B0 |7 K' Q[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell$ q( Y, Q5 [! [. ~# E  z7 }2 L+ L+ Z
[color=#333333 !important]下载链接' }$ c) q: z8 L8 I$ J
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag  {* w7 c' X7 p$ p. t9 B1 V
[color=#333333 !important]提取码:t1rw9 p) k3 Z! B; g( `% m5 I* _
[color=#333333 !important]安装编译
: r) a4 K9 e$ [/ E

    - S0 Q# x8 y. x; a+ W+ }2 p8 v; S+ h
  • 9 A4 I+ a+ H$ T2 ]( U
./configure    make;make install[color=#333333 !important]服务器端6 \/ z- H9 o1 Q& x+ g
    & t: J* P. U) _4 ]# {' c

  • 1 k2 j# }* ?$ {. e, L1 H
server/dns2tcpd[color=#333333 !important]客户端9 B! Q# z- f5 C9 V: z
    ( E: z; w; ?& P, T8 x

  • ! t; y, @0 i3 s( F' G. Y% D
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载
# N. E% u$ n; c6 g" B

    , E6 Q: P3 A2 a+ J  S, D& {

  • ' E3 D" U' t, \. g' `7 T1 f
dns2tcpc.exe实验测试
' |* E) l9 `' f  U! f$ B& d; Y8 _3 S
[color=#333333 !important]服务器端
0 ^5 Q  ?4 X# @) @6 o$ |[color=#333333 !important]1.创建配置文件
1 n9 [; e7 `7 b' j

    & i& M: a! E+ P
  • 3 S4 }. @2 ~% K
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.启动
- p& G% p$ V4 P/ s/ {; k2 e6 k1 N
    9 d9 U7 [  y4 [" Z" U8 R

  •   k: z+ b% s$ x+ z4 e8 N2 |% [. H: w
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接
- |" J) V6 _2 l% e# V[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务# |8 `0 }7 `/ ]1 m! i4 y# G! _! w  e
[color=#333333 !important]
+ a# |3 f- H6 ]5 ]9 a% |# J1 x$ Z
[color=#333333 !important]客户端: q2 s  Q2 o) I- m/ f+ Q
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 20 Z* @4 v. I, e* a; C: {
[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源
$ u) w4 e3 c* S% q5 h2 d[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP
9 W8 s# \% ]" S% x% V[color=#333333 !important]-l:端口5 F% f) l. R; Y' f$ R$ x6 u
[color=#333333 !important]-d:是否为调试模式 2 等级可以省略
3 M6 T+ X7 F! G: c* B3 e
[color=#333333 !important]6 w; a+ q  G, @  Q: r# E/ V
[color=#333333 !important]客户端使用访问服务器* {3 H# n0 O& x' t7 d( Y0 n
[color=#333333 !important]
3 I0 i7 O  n5 l# u% I流量包分析0 T7 L+ B0 k9 p% o3 W
0 |+ S7 e3 x" C' [# k. C
[color=#333333 !important]建立链接并未产生通信包( c2 A+ g4 V' M7 C* {. d
[color=#333333 !important]
% _  y% J2 U0 Z# R# s1 Q[color=#333333 !important]使用ssh访问时,才会产生数据包
1 J2 e4 U8 ~9 q4 U$ b9 ?' \[color=#333333 !important]
! u- F: V4 e+ f( o1 s9 {# ?[color=#333333 !important]数据包分析
) o% H. o+ s5 F) ]7 L8 R9 `[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中. s) [$ z5 G( K: n
[color=#333333 !important]
, ^* D& c3 |* _4 i: R9 k. S. J$ l[color=#333333 !important]
  }* D& ~0 N/ p) l! }[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。- H" i9 X9 z( w( N! S% O; v
Suricata规则检测(并未测试,仅共参考)
: c0 A* a6 U3 o( v6 k
3 Q! |4 @; |5 L: w& z( H[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测; a; z1 S/ T+ x4 H+ q5 ]
    4 q; a2 C" G2 z: q( `6 {
  • 8 e% x4 A7 u1 L6 R; d/ @
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]结尾
% {& q2 Y' e1 [) z! D[color=#333333 !important]小白水文,求大神放过% V. r/ K; Q/ W) c
[color=#333333 !important]pcap包下载地址:. E+ r. t$ T* c- R- T& |
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw
4 Z/ s. c' `% G7 _% [- d% y
[color=#333333 !important]提取码:n5ha
7 m# \0 W% i$ M& q  \[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载
2 |8 Q3 y4 G0 s# R$ y! x$ h: h. `( k5 l  q. G
精彩推荐' g5 R1 f' `* x- l$ [
0 |  Z" s8 {9 O; m* R0 {
$ R# |9 _9 k8 N' J% d  I$ Y* x- {
' _$ @/ q! c( |; f9 r  w) ?

# }* Y+ V! L- D
  t5 R- }: L: U; [6 _/ z
' e, X3 {8 T$ s5 Y. E1 m; B2 n  m2 \来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=13 x! j" A' r/ ^! y* Q
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-19 04:54 , Processed in 0.048441 second(s), 27 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

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