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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7678|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道9 ?3 O+ Q! s- B. V2 `2 a

9 \) S' E8 Z1 j[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。
4 q) [5 ~) T7 T实验环境" R1 `1 f! G2 X( \" K
- M( O8 _) n; o4 F
[color=#333333 !important]CentOS Linux 两台
  L/ Z0 z0 ^9 H2 c, A$ H
创建DNS服务器
, S5 r* b& y( j& a% M/ [& y3 }# ]9 A3 T
1.安装bind
5 L; H2 Q- S' r8 m3 V5 [3 G7 z4 r0 Z
[color=#333333 !important]yum install bind*
& R6 c/ J3 Q; E& ^& J/ `
2.配置named文件' G6 n) |. S; e1 F6 g& x
& o4 k) J+ T& ]& Q, W( d6 g
[color=#333333 !important]修改/etc/named.conf
6 R+ e8 U. A( F: t
[color=#333333 !important]将下图中选中的地方改为any! @/ p7 Y3 M: T$ [, x; k0 e
[color=#333333 !important]8 F8 [! i+ H6 m6 y
3. 设置NS记录,A记录
! P+ E8 c  g% o. a# y! P4 Y: X4 ~9 I! ~+ G
[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件. |& I% g2 i. ]' H; o2 u8 n2 Z
[color=#333333 !important]

9 ~$ n/ U& U. D, s[color=#333333 !important]增加正向解析记录
! o& p  b# p3 \. }* I. j[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字
; D) R1 U4 j  l8 S" a1 |( l
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel
$ S0 H/ z  |9 n& h
[color=#333333 !important]修改文件如下
! P+ M3 Z7 K7 q, C0 p# ][color=#333333 !important]添加NS记录,A记录% o2 T% V6 F$ J% i
[color=#333333 !important]
' a3 g; C& ^' b* {[color=#333333 !important]添加bind为自启动服务
( _. b# y3 b: Z: f. U
[color=#333333 !important]systemctl enablenamed.service2 G6 Q- E4 [1 W% z
[color=#333333 !important]systemctl restartnamed.service3 Q: N+ z3 W2 G8 g& s
[color=#333333 !important]查看启动状态& Q$ L' M. R' H, R
[color=#333333 !important]systemctl statusnamed.service
3 [, @5 Q6 [! s, ]+ @
[color=#333333 !important]; d' K1 y) U4 I4 n3 C" S
[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)! q; G1 W8 V# y  f1 G  v1 E
Iodine+ v7 |7 I2 X5 o8 X3 v# H
5 T" E& a3 P7 r+ x9 J' _
[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。
0 f1 p- _/ N; e) k9 u; i; s/ O安装% S  o# J7 R2 }* H6 [) {

0 T+ y9 v0 ~* k- T( n- [/ _2 `[color=#333333 !important]下载地址:0 P$ h! C% h' P; o9 ?
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip/ m( T) F- V8 t. M. P3 _1 @
[color=#333333 !important]unzip 解压
4 Q, {: B8 r) }7 G* l. m) d[color=#333333 !important]cd iodine-master
' s. ?4 L# u# L  w6 `' |[color=#333333 !important]make
) Y7 Z% U) `2 r/ t" ]: z$ \) H% `! ][color=#333333 !important]出现报错; b- C+ @, ~3 H( z8 ~& @
[color=#333333 !important]' u% b! d7 _! g* N) R/ J4 F
[color=#333333 !important]yum -y install zlib-devel* h! E& j. U9 z3 N
[color=#333333 !important]make;make install  p* ]3 o& d" L" r
[color=#333333 !important]安装完成% o1 Y' K! {5 J
[color=#333333 !important]进入 bin& @1 ^, z0 h& a9 Z! a& F
[color=#333333 !important]iodined 服务器3 B" A) |* |" R) W! M
[color=#333333 !important]iodine 客户端- i6 ^2 }) H. s4 z
实验测试
( V3 N/ R9 U' U2 C* w& T3 s$ a
% ?* _( e' k  b+ ?, S# b[color=#333333 !important]服务器
( N; D' z6 Y. B. a0 v
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com/ L: c1 [, a+ f
[color=#333333 !important]-f 前台显示,运行后一直在命令行等待
; @* y6 a" `% m; \$ P4 P5 a/ ][color=#333333 !important]-c 中继模式|直连模式
/ ^5 z, D# B- ~" L6 \[color=#333333 !important]-P 认证密码
7 ]/ I; i/ G$ V1 n3 {9 e
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。
, W( @- G4 i  A[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。& d% a: L9 d# d9 h- e' w! W
[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡
9 c" A% a" r. j+ J5 m) n) }. ~[color=#333333 !important]. b  x0 E# e7 ~/ Z
[color=#333333 !important]
3 ^. Y5 G: c' V1 L6 y5 Y. Q0 }5 F% U[color=#333333 !important]客户端# T- E. G5 t' ~
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com
8 a2 @: W: @- I+ Y( g. l& D$ D[color=#333333 !important]-f 前台显示2 E0 J- H: ~$ Z0 Z. n
[color=#333333 !important]-P 认证密码
- R! J% \7 b# ^  g( Q% \* ~[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析
; P3 ?5 {/ |  a. Y8 C) V7 U4 x
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。: U. D' {- G5 U+ j  F% \
[color=#333333 !important]  M  f$ D5 P- V/ Q/ o8 ^, `/ k. n
流量包分析
6 g2 I, m9 X" T( @
! Y4 z$ |; h& T' K0 e
[color=#333333 !important]抓包5 ^6 S5 S5 |' F  ?2 H
[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap
: A. o# g+ J5 p  ]5 W; D
建立链接的包分析# Z1 M1 w1 N) U0 y- i5 Q

+ E0 r9 c& z( _) }2 [& U[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包
. M: L. i9 z5 L% F- `[color=#333333 !important]
1 u4 g$ _' b/ `4 v1 m3 @[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀& G  H8 {1 I+ x) D. P0 ?2 W
[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据4 S7 n& ?' V& |5 ~8 y# D
[color=#333333 !important]: Y3 t$ C( c5 e( A( p0 k$ g
[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节)( R) l& _; u" b/ b- m
[color=#333333 !important]
8 g# a( Z. u" J9 U: P4 O6 ^0 m8 W[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。* F' b; @; w* w
通信流量包分析( K9 h- B/ ~! _: ~: j* j
6 Q! p: L( a' ]" U% @0 F5 J1 G
[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析
; |2 E3 f' B. b" _9 Q; M6 t, Q[color=#333333 !important]$ O* Z' d# ]3 L, K/ p
[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。% l8 G: m0 |) D7 X+ @; R6 i
[color=#333333 !important]05fanyi05baidu03com
1 U( H( j4 `3 A7 o/ p) ], N, z[color=#333333 !important]6 z% l9 @+ [2 j9 t2 X2 c
[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。! b8 ^3 Z. u: u& |4 k$ Z' P
[color=#333333 !important]. T$ Q! E% B. F) J, |7 c4 ~" y
suricata检测规则(并未测试,仅共参考): f# f0 H+ w! y, A+ M; F* g) Z1 S
! I6 O$ U: L" S

      `3 [9 R! [. i( i7 b
  • 7 I* s" g$ C* |, R! H
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' h" ]5 y7 j% G# `# {$ G

5 A# O' }2 r0 T7 Y安装
# M& ]$ K; x- e  j4 ?, @3 {. o, n0 V7 o5 m
[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell; z, q# ^! L4 [) D9 f2 h* I
[color=#333333 !important]下载链接
* H# d+ G9 {5 w  [/ T6 F/ C6 z( i; P
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag
3 E- g' O0 V. C5 L
[color=#333333 !important]提取码:t1rw, T, b0 W- D& {% l$ W
[color=#333333 !important]安装编译$ b: G. P0 h5 |3 {7 F" c. U7 o
    1 d" l( o$ y1 B4 n$ L* m
  • & X" }8 Y$ S; Q( u& u
./configure    make;make install[color=#333333 !important]服务器端
5 z) A. f) ?+ x( v

    7 Y) N5 a- l& J4 d5 f1 {
  • ( t2 D2 |4 U1 U: ]; n" S% q
server/dns2tcpd[color=#333333 !important]客户端
3 Y6 g8 n' h: G( E* ]! F) o+ N
    1 b1 `; Z2 K  b1 b

  • 4 a2 `+ G0 P  c  i& d
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载+ ?$ \9 W, m' B. D% o) ?9 d5 P
    ; o  O9 l" x. M' Z: W! c7 c
  • ; ^6 F+ z; w* T( {1 t, X; V0 E; b
dns2tcpc.exe实验测试
& y" b/ k' u  X1 I& y! o* x9 p: v
[color=#333333 !important]服务器端
& o8 p8 q5 N0 q[color=#333333 !important]1.创建配置文件; q4 [- a3 ]! i- n& i  d
    9 o+ t* I4 y& [& c& o! Z. t" r

  • 3 F6 L2 o; ^* m: w% q
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.启动
' |! o' H9 N) w- A. @+ S9 T* |% H6 `

    4 y2 e2 R2 H( n

  • 1 n5 F% b* u- g5 U
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接
0 T' c+ U6 x& q[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务1 X' X5 W  Y/ k) s6 P" v
[color=#333333 !important]

) o( a8 g4 d( \0 @, p5 }7 E/ o. X[color=#333333 !important]客户端
- Q: D  h  \/ H
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 2  S  f, k' B6 j; {
[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源6 o$ Q* r: C" T- Y" G7 c- U
[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP
7 B# ~# v4 J6 M* @7 a[color=#333333 !important]-l:端口8 a7 h3 r% r4 A/ _
[color=#333333 !important]-d:是否为调试模式 2 等级可以省略* o6 ~# g' x! B. R+ z- O
[color=#333333 !important]8 R! v$ t' Y- v/ y: M
[color=#333333 !important]客户端使用访问服务器
+ f7 U4 }# Z4 p$ C  h4 p2 h( g[color=#333333 !important]
0 p" z. H4 }" E3 ?流量包分析6 y! I# |. Y( E: Z3 C

, P2 V2 v! m9 W) z[color=#333333 !important]建立链接并未产生通信包
0 s% {+ k& {9 D. t" A( e- b[color=#333333 !important]2 P# Y: A" k+ \. S5 G6 S; n% }% v" [
[color=#333333 !important]使用ssh访问时,才会产生数据包7 N! q: X3 w* g$ s0 C* R
[color=#333333 !important]
" Y) G* j# @4 w( m2 w3 p[color=#333333 !important]数据包分析
% u% y0 l- W$ I  H[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中1 P% L$ f; \) a5 e7 Z) U) Y
[color=#333333 !important]
' h" c  f+ n' Y  f' H5 w2 x. d[color=#333333 !important]- ^/ X$ F7 ]) r, Z. o) f$ u% l
[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。
8 t9 q3 [: I) P5 ?Suricata规则检测(并未测试,仅共参考)4 }4 q6 g8 d4 z/ Y% Q
; k* r, W) j8 k1 p; A, K) \; I  n
[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测! v9 K2 W# b/ [& C: P

    2 d/ h7 K+ G7 U- v4 `# _

  • ' d) }8 D6 G$ a8 {  }
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]结尾- h) v; C  U  C2 {
[color=#333333 !important]小白水文,求大神放过4 s4 V1 z; I( f" D; c
[color=#333333 !important]pcap包下载地址:
0 r; ~& I* m8 ]" r4 ^2 P6 O2 x
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw7 {. x+ c' f. s0 T
[color=#333333 !important]提取码:n5ha( U, Z' p% y8 n; A% v
[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载
# N( m/ v: k  |9 [
4 N0 d8 v. R- `  o, y  T  T精彩推荐
8 W5 Q& C$ I8 A
  h7 Q( u0 r' L1 J* v% m5 F# Z. G
" w) M- ^$ O% i0 E' R
5 {( `& k- w9 ~/ M5 T% ?' c1 L  [
/ r( G' Y& s9 ]* b. d  g
! ?! A) G- L# f$ d  b  k7 R7 R

3 n  F! N7 j* s' s3 X3 m来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=10 G# Q0 ^  {. L+ v
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-2 09:46 , Processed in 0.045457 second(s), 28 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2026 Discuz! Team.

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