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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7756|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道$ G' u& q" P# z& G
- v& j* W. R* C+ N- {* Z2 Z
[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。% ?' {! }2 t& B5 K2 x; _. ^
实验环境
$ }$ K$ o# V+ d/ G9 Z' _) j8 N; ^! W( z! `9 R- N
[color=#333333 !important]CentOS Linux 两台2 _/ X4 d- I! x* [( t
创建DNS服务器8 m% y  f1 v) J/ J+ b( s+ b# m
1 B7 Q5 H+ I4 n3 [0 K
1.安装bind; f5 ?5 m0 c6 f/ W* t

8 u) Z2 ]# p- s
[color=#333333 !important]yum install bind*! ^8 j1 u0 K3 X* |0 q
2.配置named文件4 N4 g# j* i5 V! n# u- N2 N7 H  s3 ?

- }( o7 g& C6 y( F" B+ N
[color=#333333 !important]修改/etc/named.conf2 U7 N8 d; d+ a- M& _
[color=#333333 !important]将下图中选中的地方改为any
7 U5 F2 b5 [5 A[color=#333333 !important]
* \7 t: O  G7 T) [2 \: O& x6 r3. 设置NS记录,A记录
) s% b6 I7 ^+ c( G1 h" N$ I5 i' y# G3 x- W  s
[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件- o8 O' P1 {1 G0 _2 Q/ f: g( o$ i
[color=#333333 !important]
: s5 c# w; b3 r; K  Q9 S
[color=#333333 !important]增加正向解析记录3 f/ j5 l  y8 T7 i2 M8 M
[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字
" {1 w7 I0 q  Y4 x% H9 K
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel5 [. D; h0 E2 a8 [
[color=#333333 !important]修改文件如下6 t( ^) F, @9 ~: }' X: K
[color=#333333 !important]添加NS记录,A记录
  k8 x3 n) t- \, q[color=#333333 !important]
! @1 n# F# |3 P$ I* ^% e[color=#333333 !important]添加bind为自启动服务
9 Q! J7 T' I4 d+ S1 `
[color=#333333 !important]systemctl enablenamed.service
$ g* I+ j4 F) k7 a( O) |[color=#333333 !important]systemctl restartnamed.service
4 X8 u0 g2 ?* d9 q/ q
[color=#333333 !important]查看启动状态3 n% |$ J' @! r4 o& w
[color=#333333 !important]systemctl statusnamed.service: c: @8 V& y" N
[color=#333333 !important]  L+ x( p" _5 N/ n$ r9 P
[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)
, H1 c  P& U7 s+ G) R0 e# ]( q$ qIodine
  p, F; F9 ?8 N- C& D; Z0 W
% U9 M7 y* h. P6 g4 u[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。
( s! d/ {4 L( h# \; w- W) T安装
' p6 L2 R: H1 N! C5 z
2 i$ c- n% n8 q# p[color=#333333 !important]下载地址:0 ?. d( T% [5 L& F8 K5 V
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip- ?' @; C: L. Y! m- r# @! C
[color=#333333 !important]unzip 解压# S( g) u3 U/ D, o6 E6 f
[color=#333333 !important]cd iodine-master/ g1 z0 V5 [6 `/ f# G3 n
[color=#333333 !important]make
& N8 U7 l6 o3 _8 J7 v5 H[color=#333333 !important]出现报错$ Z6 U5 X" o8 z$ I% f
[color=#333333 !important]
# L7 c, }8 V1 _% {[color=#333333 !important]yum -y install zlib-devel  j3 G4 }3 Y$ ?/ N0 L" _' V! ^( [" H& _2 f
[color=#333333 !important]make;make install
, y+ y2 X1 G0 ]) y, G, H[color=#333333 !important]安装完成# A$ _( w5 U5 w! L
[color=#333333 !important]进入 bin" ~( V& H; I2 |! c
[color=#333333 !important]iodined 服务器
% h/ C+ ?; X$ {1 G: T6 L  \[color=#333333 !important]iodine 客户端
* w! ]' d7 w% S# U2 I! R! n2 P1 y实验测试
) B) }  O* l( W4 _2 d
* S' @' ]$ P  ^- ^0 o: U' j% s[color=#333333 !important]服务器8 ?1 P, A: K3 X5 b
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com
7 \' A8 c  a  n6 |% a[color=#333333 !important]-f 前台显示,运行后一直在命令行等待: d# T8 x' {! h" v' [( q, r4 |
[color=#333333 !important]-c 中继模式|直连模式/ ]8 h. `' T/ m7 T. X' N
[color=#333333 !important]-P 认证密码
0 D' N/ f( U9 _8 l2 r
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。
/ D' ^6 ~# W0 Z2 ?( N[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。* k' d7 V9 \( M% u3 }: C
[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡
, {5 F/ B7 y/ F5 m' X: c[color=#333333 !important]4 Q0 x* Y4 h- b7 E( W7 H/ G) j
[color=#333333 !important]
2 d! ?& [, g8 Z% z( P[color=#333333 !important]客户端; y$ o( ]8 O3 n- a5 d
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com
! P  E$ G# z# T/ g: N3 h[color=#333333 !important]-f 前台显示
+ G3 V7 A# f0 W" ^  V$ a[color=#333333 !important]-P 认证密码, j$ ~  |' j& F3 q; A0 c9 b
[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析
1 o6 q  V/ z% N  R: z' t( D( ]
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。
& ^& m, C* u( F( m+ h, v/ G( w[color=#333333 !important]( R& d! o* B+ V9 E! m
流量包分析4 L# d1 t# c2 F
! Y+ H$ w/ D0 @- y; F9 A
[color=#333333 !important]抓包/ D# Z$ p9 X- e& r- \( s6 J
[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap
& }. }- e+ P( P2 g0 B
建立链接的包分析
4 e7 q4 X/ A9 P5 y2 _) m1 p; x! H" z* |
[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包
- y1 h, M* N9 i[color=#333333 !important]
, t; O) g& A: `( x& ^0 x: v[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀* J$ T% s# j- m! v, s, F
[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据! Y( b% R0 Q' W' D
[color=#333333 !important]
0 d5 ]. N4 t- Z, G) R[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节)
3 L5 L& G! i( p  Z[color=#333333 !important]& w0 e( @2 f1 \4 z
[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。
7 d$ q0 x' m% G$ `通信流量包分析% U) n( _& p% s5 q- g4 _

& Z: A; `) {1 N, k* [4 |[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析9 s" Z, n* R* H& c0 c5 R; ]
[color=#333333 !important]
5 a# a; x5 P# h: D& c4 x7 \- Z, b[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。
5 n" F1 v1 W) ?9 Q& b6 Q. R[color=#333333 !important]05fanyi05baidu03com: V9 I7 j7 R- h1 g2 z/ ~' j' w( G0 J
[color=#333333 !important]: x8 n3 b& b- m7 _/ Z
[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。: l& ^; z( M: y. R7 u& J
[color=#333333 !important]
; q) I# N. I! P* c* R% t* _suricata检测规则(并未测试,仅共参考)
/ {, Y5 d, L/ F$ k! i, N
9 C) [# g$ O1 e# W* S+ v, W( q; p0 J2 ?
    ( p% I( D1 ]6 L6 B! A
  • 4 J2 I/ {" I3 f
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
4 n5 B5 v3 d9 i. W0 c
0 u* I& F# H; _& W( V, O安装
1 j( z" R/ k% }5 `; m  Q$ h' s4 b* H
[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell
. w+ E  G1 S% l7 @' \: l* o; Z- e0 Q[color=#333333 !important]下载链接
) U1 L! X' ?* K: w3 `0 f8 w( B
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag) @* {( P' M! i" j" [8 G; T
[color=#333333 !important]提取码:t1rw
0 F" x9 Z* {% U0 [[color=#333333 !important]安装编译: T$ q" Y* L# a8 y) \% D; ~

    + G" @# [. e$ O$ `) P& D

  • / A" [; o2 k5 F& {* R- c' l7 ^. S
./configure    make;make install[color=#333333 !important]服务器端
+ P9 q' K/ g" t& T8 `
    ; }: h$ |4 k# e' C8 M8 f- C2 O
  • 6 a$ }" N) g5 x6 A! p: A3 g
server/dns2tcpd[color=#333333 !important]客户端2 t( p- L; a) j( j# P) e0 h! d, w6 @
    / C8 x, D  _9 B$ `1 w: X" C

  • 5 S+ ]' z, H6 [9 \% J
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载
$ \, Q% p  t; `1 o& t3 l4 v; Q

    4 ^& l) O3 R6 t1 e' }3 p1 t

  • 6 y7 f/ D2 ^- E2 F
dns2tcpc.exe实验测试" N5 ^- Y7 O( m/ }) N, Y( P# I
- G' ~+ _4 B5 Z6 L* b* Y9 _' d9 r
[color=#333333 !important]服务器端
( I# W0 d* z$ G4 j( o6 C) n. c[color=#333333 !important]1.创建配置文件
, Q" M+ r$ [/ b1 I
    " Y9 b3 U4 x$ {3 v) }' F
  • * t$ |) `5 P+ B  a) x' g
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.启动* n) l0 h2 p, ]! x+ u

    % ]& Q3 w' e, x, T9 d6 j

  • 9 F0 Z! L1 D, z  ^6 q. \
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接1 Q& y( o, u" n! ]; B  l5 o* f
[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务2 |0 Y1 d* I; \6 z4 M
[color=#333333 !important]
3 X' [/ V9 f* `% j; z6 y2 E1 P& S6 t
[color=#333333 !important]客户端: P  H% k! c1 r8 I0 T
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 2
! v, s" m0 D* X5 B[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源' ^* @* ~6 x2 J* c9 p5 g5 @
[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP6 h, k  }7 H0 U1 K/ d
[color=#333333 !important]-l:端口
( n  B0 K6 Y# y( T[color=#333333 !important]-d:是否为调试模式 2 等级可以省略; D+ F6 h; y4 w8 r! {5 V. Y
[color=#333333 !important]
' {6 r0 O) _& p$ h[color=#333333 !important]客户端使用访问服务器. I8 r; {! u5 [/ k% Z* X+ [0 d
[color=#333333 !important]5 r, y; n8 D! }- @9 p" s$ Y8 {7 a
流量包分析
  l4 P+ [+ W7 z% |3 @* B
8 X; f/ |2 v4 t- j[color=#333333 !important]建立链接并未产生通信包
1 N1 }8 U4 J& u) V* W[color=#333333 !important]0 ~" R$ @* R6 B5 ^* P$ d
[color=#333333 !important]使用ssh访问时,才会产生数据包
+ L+ F3 X- i- L  \, W* l8 R: y[color=#333333 !important]
4 J0 K2 P+ A7 O0 c7 l) N[color=#333333 !important]数据包分析
; Y6 C$ L6 f% A% H+ ?! @[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中
! A& j9 ?* g/ Y% |[color=#333333 !important]
, M7 f' d+ X0 t( O+ o[color=#333333 !important]
+ U4 m& M4 O% ~8 e6 g, H# }! c[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。
4 ]; |& }2 a# WSuricata规则检测(并未测试,仅共参考)1 _, A- H( k) D/ i# c! C

; r6 T0 a' Z! F) P# e% F[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测
% |3 O6 t, g) ^

    " ~* L/ d# K. Q# }6 O) \

  • + L* F, M1 P/ v: A& ^1 s$ R
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]结尾
, |$ X' h' t: D& d1 B[color=#333333 !important]小白水文,求大神放过
; F$ C. d  l3 z" Z[color=#333333 !important]pcap包下载地址:5 G' i$ ?( N4 ]; v4 J
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw
. i1 ^3 y3 E: w3 f
[color=#333333 !important]提取码:n5ha
7 T* \3 G0 c0 \5 Y1 o% E2 b+ R[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载6 l6 Z4 }, ]& n1 M

- a# g: m% ?& n9 n9 P" U精彩推荐
5 ]5 u3 L- ^7 o. f$ c% A, O- P4 q5 D  n2 o

2 o9 \3 Q( d9 V7 v" X6 e4 _
0 H+ L6 [7 M( M! h. `
0 X/ ]( X, |% Z# W: ?! x0 j3 F6 R
7 x$ A. i/ q1 @; l! V( f' l$ G1 i2 `  O; Z5 ?' {: s. V0 V& m* g2 T
来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=1+ N( R7 X3 l3 d
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-13 23:23 , Processed in 0.046539 second(s), 28 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2026 Discuz! Team.

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