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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7726|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道! |4 l2 n  _& u( Z

' A. E& z- v4 S- l$ _; A[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。. C6 k/ T% X6 {7 ~
实验环境1 L8 l$ x3 v/ E+ l/ _
: y( h. G+ I1 a* i+ D. o
[color=#333333 !important]CentOS Linux 两台
& i, p9 S& c! }5 L
创建DNS服务器1 f& p& _4 g7 Z

& r: G9 [* K! C( I; z+ v1.安装bind! {  U3 ?7 w0 ^& B
9 H/ O0 X$ M5 g. `+ g
[color=#333333 !important]yum install bind*# n( H& B) o# Y
2.配置named文件& p  }; H  D9 ~) `' p5 X8 Y
8 Y* H' x! m& ?, M. e7 d
[color=#333333 !important]修改/etc/named.conf) T- Y/ v1 r8 }; z  _9 y
[color=#333333 !important]将下图中选中的地方改为any
. G9 i8 @6 S" t[color=#333333 !important]( |% @" i- M8 \+ l6 [+ p
3. 设置NS记录,A记录4 R6 g+ _2 [( W5 `" m1 j7 I
$ v( T* ~! A4 J2 {7 Y6 s
[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件
/ |) l+ Q- G& t7 g: @7 O) ^; u$ `
[color=#333333 !important]
4 {; x/ X: P, p) i
[color=#333333 !important]增加正向解析记录
! \5 {' u! D( a8 t) c- r[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字+ {& q' [& a1 J5 b! ^& j1 B5 h
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel
) {1 I& M+ r, x4 R) n
[color=#333333 !important]修改文件如下
6 k" m  P! X8 V$ v& \[color=#333333 !important]添加NS记录,A记录
! |7 s  ^5 Q* e! j; D[color=#333333 !important]
. S3 z: q/ S& e[color=#333333 !important]添加bind为自启动服务! U3 z! ^' ?. n5 A
[color=#333333 !important]systemctl enablenamed.service
$ x1 G) Y) n7 j6 K: E* z[color=#333333 !important]systemctl restartnamed.service  v' }1 f4 |! D6 c6 |% y8 F
[color=#333333 !important]查看启动状态
, \/ ~1 E- a  U' f/ K
[color=#333333 !important]systemctl statusnamed.service0 A7 `3 u: q+ d; V$ R4 L9 ?
[color=#333333 !important], c" O" Z, X2 q4 H
[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)2 p% {) y0 R  D  n8 i
Iodine! K+ ~% J! `' g+ y5 Q* l3 Q
. r0 z. e  e7 b
[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。' E% }' r. y/ D& B( F6 a4 m
安装
( ]8 {( ~( b1 O. \+ V
" @0 ?4 o% m' g9 ][color=#333333 !important]下载地址:
  ?& E. m& A7 y% p" C& R
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip0 C& i# ^- l8 {/ ?3 d
[color=#333333 !important]unzip 解压
$ W& h* K. E! }5 G+ z$ {0 f[color=#333333 !important]cd iodine-master, u( w8 w$ G* h
[color=#333333 !important]make  B+ _0 y. h' I/ A8 q2 M% ^% `
[color=#333333 !important]出现报错
; T; B- k0 _6 y: c[color=#333333 !important]0 a  l# Z" |* `, c8 N1 V, V3 o
[color=#333333 !important]yum -y install zlib-devel
/ X2 p1 g+ X) f4 u" T2 I2 B[color=#333333 !important]make;make install
+ v, h$ ~) T/ {% |. A& [[color=#333333 !important]安装完成
- Q! D% J, e" j$ M) |% O[color=#333333 !important]进入 bin
; I2 K/ \* c) w. x0 g( D4 m[color=#333333 !important]iodined 服务器9 ]7 x% T4 f& p4 z& ~+ X
[color=#333333 !important]iodine 客户端
* a1 N- p5 X* S! C: U1 a实验测试
9 j5 X6 s( r" T; R( ~/ s  ^  s5 g( _1 c6 x6 W0 A8 x# p% M
[color=#333333 !important]服务器( z! l5 t3 D6 X( w# `+ K; ]
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com$ f3 e: c" ~  e4 ~! Q5 V
[color=#333333 !important]-f 前台显示,运行后一直在命令行等待. {( X. b4 y. }/ s+ T
[color=#333333 !important]-c 中继模式|直连模式
9 v/ }2 Z, N0 Q/ s" ^[color=#333333 !important]-P 认证密码* C* A& b0 W- S& h& U5 q: c( Q% g" G
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。& D4 Z* F4 m$ S2 e" _9 o; m6 c
[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。
/ C$ {% ?; G1 D$ _: k  m[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡8 ~6 Q8 Z. D# l6 l4 J" o( h0 V
[color=#333333 !important]
0 a# Z1 k  A! p! \! _2 p3 U[color=#333333 !important]. f5 Y9 ~: n  N0 }0 G3 e4 ?5 W( }, x
[color=#333333 !important]客户端
0 n& E/ \# I, y8 t. |
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com1 |2 y0 D' T; w
[color=#333333 !important]-f 前台显示  A/ R4 ^! r& @* e4 E
[color=#333333 !important]-P 认证密码% f; q5 g4 G' }/ R: e
[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析
0 r: u1 a& v8 ]* a9 D$ M+ @
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。- [1 y5 Q1 x+ _  I
[color=#333333 !important]( Y/ h* s7 D: b
流量包分析1 H# @+ d2 t7 U, N$ U) b) e

; j. @8 ~8 L/ o4 N( b3 O  ]/ S6 |+ t
[color=#333333 !important]抓包
  k; L1 v5 ?3 P& d7 `4 `% J# s[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap
- Z' e( N* e/ c2 f# G- T
建立链接的包分析6 q0 Y8 b( [% S( Q) z% d

$ P3 O& w4 J! ][color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包# @2 E; v+ O8 i' q7 t- ^
[color=#333333 !important]" }# o- d( d8 f, i: D
[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀. b5 s; T/ ^' c. ^) P
[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据/ O! \. }% [# L- q, C
[color=#333333 !important]
8 @" D6 T# }( v4 G/ @/ v[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节)2 K: i) y+ k6 H* Q' H
[color=#333333 !important]1 \% N; j4 S# f
[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。% W% m7 M8 T, Z( q
通信流量包分析2 R) J6 c! w" T- y! J* k6 N
# ]9 M8 x% t  Y! Y$ U8 e
[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析* p# z2 O0 @1 X3 g1 E
[color=#333333 !important]
; I) F  a5 }# ]  a; P[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。
) t- q8 t( P: ^[color=#333333 !important]05fanyi05baidu03com; f  _8 x9 c4 j& J+ F" M! b
[color=#333333 !important]0 h8 `0 V1 K$ M" T9 H- |( v
[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。
/ t- E' a' A) R' j# J2 l7 A( C[color=#333333 !important]+ K7 _, V& P- \' t+ f) j4 i+ s
suricata检测规则(并未测试,仅共参考)) g" A5 M& I% ]3 L0 Q' k  f5 J

/ C3 H( d% I: U8 `* S2 R$ E

    - x  Y8 A9 E7 ~$ m
  • # k7 F5 ]7 i: B9 E- 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;)Dns2tcp! s5 M5 c5 }+ i0 G' n" j

7 j+ U7 F" K7 j* l8 F& @; K+ t安装: W$ v& h/ j4 E6 a$ p) x5 s% j

) V" q$ R2 T; P% X' {$ @- A2 [[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell8 z0 e& f9 L* \
[color=#333333 !important]下载链接
5 O+ g- F8 ~: M7 @
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag
9 N9 S$ P/ m1 H$ |; J
[color=#333333 !important]提取码:t1rw
; |3 \: U$ f! r/ G0 l6 V[color=#333333 !important]安装编译7 E; e  r' T- ?4 S- z2 K+ ]
    ( I4 q& i; V7 d" h* L

  • * _( \$ g  l# x# y! X* R$ u% u" A
./configure    make;make install[color=#333333 !important]服务器端- z4 b% q9 Y7 }0 a
    ! ]4 B! b, }2 k# n+ E
  • : Y! s  r& W, N7 d. j+ o
server/dns2tcpd[color=#333333 !important]客户端% ?0 ~& h- N) ]1 N# o. C; O

    + E7 R/ ~( i  D; _" Z( e7 \+ q

  • 0 t- L: j" ^5 m3 Y! O( d( @( z
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载
. o5 s  ]. Y* @

    ' U& y/ t5 Q& j8 o  {
  • 9 j4 d8 P4 L, X* v# a
dns2tcpc.exe实验测试; F* h$ B3 Z  B2 b+ \
- l, O! e7 s2 E# O) o
[color=#333333 !important]服务器端
# @, n# J0 L  S[color=#333333 !important]1.创建配置文件
$ g6 s9 d- [. H1 C
    + R) D* G6 ]- s6 K4 r

  • " X3 u( j  E* }7 y4 x  N& o1 `
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.启动
$ @$ O7 ?% M, k1 x( n6 r
    5 D. E9 l4 K* O8 b
  • " n: V* I# b% X; \1 D! ~: k9 X9 X
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接8 u5 Q$ y! d" |& T3 V! P
[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务
  n% e  X! [( _! |# `
[color=#333333 !important]
) S. s* E) f9 j$ Z
[color=#333333 !important]客户端; @, V  a0 u  y1 j5 u1 E
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 2: R5 S) o4 X6 _4 M0 p
[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源3 b: T' ~; W" a  q
[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP
; _, K% U9 U' f) d/ @[color=#333333 !important]-l:端口
7 B5 H7 s- z9 j8 y2 ?/ |, K[color=#333333 !important]-d:是否为调试模式 2 等级可以省略
0 {1 S* D- x& p, c; \, w
[color=#333333 !important]
2 M( \: a9 T4 E4 D[color=#333333 !important]客户端使用访问服务器, J+ v2 }6 V% d, o( T1 O% S$ p& e: s
[color=#333333 !important]
, G. A6 `4 g, v% Y  L4 B& S流量包分析
/ \1 F" G* r5 b- @2 d3 `. F
  b! r' o5 U% b$ ?[color=#333333 !important]建立链接并未产生通信包
# X' u7 K$ b. m* c/ L[color=#333333 !important]5 V3 a+ x0 W6 D% L2 w- P
[color=#333333 !important]使用ssh访问时,才会产生数据包( u& Z5 N3 N  Y" p2 [4 @0 w+ X9 d! U
[color=#333333 !important]
0 `' z( o8 ?8 k) |) B$ ]* F[color=#333333 !important]数据包分析* c6 h1 L0 v: ~7 Z4 ~
[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中: \1 l: A# Q2 o/ p% a( f- C4 }
[color=#333333 !important]' H6 u! _+ k2 _9 B- j. a8 }3 J
[color=#333333 !important]# B0 W% [0 R" W, J+ a4 M1 @7 P; t; j3 q
[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。
3 ~, n) w( p$ G  z  l2 J) z$ DSuricata规则检测(并未测试,仅共参考)/ }& O2 b  w4 ?/ S, u1 x8 Y& V3 Z

' z, l' m3 C6 f& y. t[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测
. K  t/ q$ \6 \6 Q1 g: v

    5 A8 S! s0 O' b# i* C4 e
  • + A. j$ q/ E; w% W; I+ \1 N; P, A
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]结尾5 ^5 [; g; s' l* o
[color=#333333 !important]小白水文,求大神放过
; v3 h/ W* \" O+ q- X[color=#333333 !important]pcap包下载地址:8 q6 ]( N0 E7 ]: @% U3 _, Q0 t
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw8 P* _2 [7 k& \7 f
[color=#333333 !important]提取码:n5ha
- `' i3 x! W9 k+ b! N1 p" M: s[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载
9 y* q  D! Y2 N
+ l2 X# M5 S2 D7 K& x4 f精彩推荐
! s. y0 x. x) [4 d1 F! j! `4 ?6 m# ^6 G8 L. ]
) k. N9 w  r3 a0 D$ I6 x7 i- D" n. i& Y) k
0 a( y' s; E9 @2 X. {. x) f
5 `+ `$ L* Q5 p. j3 X/ K  k0 t

+ u; j2 z0 H/ p5 E$ H4 \
3 m2 U1 }7 D  ]' Z' w7 t来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=1
2 p8 m* i4 j4 n免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-20 09:46 , Processed in 0.047191 second(s), 26 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2026 Discuz! Team.

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