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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7646|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道
) D# Y! v! `: C5 i  t
1 N& {5 C% |/ y4 r[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。
5 D4 B+ ~' n/ ]( s8 z实验环境: ?  f/ i  U2 ~7 d. Q- q+ w
- y" B! M* ?- k2 v) P3 W
[color=#333333 !important]CentOS Linux 两台0 T  }" ]; f% i: \$ b8 y8 o
创建DNS服务器
9 g$ e0 X$ B$ B! |7 r2 j' m% B1 p
  S- v8 h2 z$ x  D1 B0 \1.安装bind8 u5 O# W. S8 R9 L, ^" X, V! Q
  v- E' |3 u3 x% j
[color=#333333 !important]yum install bind*
1 w- B) c$ }& ]
2.配置named文件% w$ _3 d4 f+ f
& r$ q0 Y) J! g  Z
[color=#333333 !important]修改/etc/named.conf
3 c: J. S5 s( c& o. W7 b
[color=#333333 !important]将下图中选中的地方改为any
- p% V0 {9 @, V  J[color=#333333 !important]4 C3 Q: j1 q  D* ~! `
3. 设置NS记录,A记录' J/ \1 L* d" a0 ^/ d# k* b) E

) l5 C% x' h* W3 h) h[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件
1 X7 f' B) h( W) I3 n- ~
[color=#333333 !important]
1 S' \2 B6 g2 z8 `0 e7 r2 x
[color=#333333 !important]增加正向解析记录
! e" ]! D1 ^( P; [  O! d4 B9 y% v[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字4 L# w- f8 I4 n% u; K4 O
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel
1 U. V$ N% J8 v7 I" N% B
[color=#333333 !important]修改文件如下" }1 h7 X7 W) J& h
[color=#333333 !important]添加NS记录,A记录
3 X0 L$ u5 I/ O! b$ G5 B$ B7 q[color=#333333 !important]
, @8 `3 {! N. K: i+ w; h2 \[color=#333333 !important]添加bind为自启动服务
. n* U4 A' d! V! v
[color=#333333 !important]systemctl enablenamed.service
- M8 g6 |* ]* g0 z- l3 [& a; q[color=#333333 !important]systemctl restartnamed.service
0 G. W/ o: N+ S2 Q
[color=#333333 !important]查看启动状态
" @# d" V& r! [' x. {( a1 H# k( m# t. T
[color=#333333 !important]systemctl statusnamed.service: Y! t* I. m9 P) u8 h% t# J
[color=#333333 !important]# G* o3 n! [/ O. X) M7 H
[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)
7 L- p$ o  d5 _6 u8 G3 pIodine! m; \2 N/ E9 c) l* r7 ^
4 j8 D1 L& [6 x$ K; J4 b
[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。8 D! r9 G% ^8 i$ n1 P6 B3 b
安装
4 L) a, f1 O' H# f# G' f8 N( w4 c3 V* {! z8 [% K1 E- B* ?
[color=#333333 !important]下载地址:
7 v0 R- ^2 B" ^
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip7 Y3 e3 T* u5 a% D# f- g
[color=#333333 !important]unzip 解压
& h% y+ d; ^$ e9 ~/ @+ O# H& c[color=#333333 !important]cd iodine-master
& q6 V! M& A1 T# a+ o9 v9 \- \[color=#333333 !important]make
* R! F! l4 i+ W+ I, P! |1 w, n[color=#333333 !important]出现报错
6 O0 z7 _" Y" B; S[color=#333333 !important]
0 ^. D- {6 U- O) K" o( o% R[color=#333333 !important]yum -y install zlib-devel, A5 I7 B( z- \) Q' i6 r
[color=#333333 !important]make;make install
$ ~: l7 E2 m$ }  I- u[color=#333333 !important]安装完成2 A0 w. ]& Z. s& j
[color=#333333 !important]进入 bin
$ e. z4 c! c9 x( ^[color=#333333 !important]iodined 服务器
1 M4 t# {! H/ X3 \[color=#333333 !important]iodine 客户端- y' @  j7 x8 L; h
实验测试
$ \0 K/ ]5 F2 m" X1 Q6 o/ I! T1 O/ A& B( X# o" M5 V) b) z
[color=#333333 !important]服务器
: T. }& v% W- s, F( X: P' W# ?
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com
1 l0 I7 y( H! H. D# h[color=#333333 !important]-f 前台显示,运行后一直在命令行等待2 E& y8 a# X1 d% ^4 C3 b
[color=#333333 !important]-c 中继模式|直连模式
2 E* z! |: O' d) q. _[color=#333333 !important]-P 认证密码+ B% m8 @% \( r
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。
6 ?) T( o8 n9 w, k/ v' |- @+ E$ B) n; @[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。+ j* r2 e8 h+ j& c
[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡
0 F& H( [; b- i! `9 s[color=#333333 !important]
5 c% s( u$ b* E% e& M[color=#333333 !important]
2 K, x" |! W5 T[color=#333333 !important]客户端
8 Z3 E9 s' q/ \5 n# F
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com9 Q( c  J3 ?# J) M
[color=#333333 !important]-f 前台显示( L4 g" e! U- D- u. Z7 B
[color=#333333 !important]-P 认证密码
4 H- j  y, k8 m6 S[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析; }1 A8 v2 e& ^4 O) ~) x
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。
) [3 ^5 L' T& ~/ h$ \( W6 F[color=#333333 !important]  _! L: v! W: H: C8 [  V
流量包分析
" A+ p( g! }; x2 q, \5 @2 Q
, h" N. {4 d- t" \
[color=#333333 !important]抓包, P0 l! ]& B6 T) u
[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap
  d9 @4 V# @* i! _9 R
建立链接的包分析
2 M# H" k  S% I/ k, p; q) {! p( |8 ?) X- f
[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包
: S6 V; x4 @, ~( P[color=#333333 !important]4 ^2 d4 P" I$ m$ s$ M2 }! ~
[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀
0 H3 a1 ?$ W8 B, l/ s4 V. ]# J8 K[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据
* U; D- t) j! @% I! S$ F[color=#333333 !important]6 Y, t5 z' E* e: K& ?$ m
[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节). z% \% |4 c" S$ {5 T6 k0 W' D1 y7 D
[color=#333333 !important]
  |6 V, t4 K5 K* I1 C[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。
& a" ?& o' c/ J% L5 h7 A通信流量包分析" P) N5 g  T' C9 x
4 m! {9 ]! u$ V( U( O: U  z* _/ Q+ F
[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析6 @9 S! f& w, a4 r* H
[color=#333333 !important]
9 d( k# z: Z# t% R[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。
2 E4 n7 _% [6 m8 Z- [% S[color=#333333 !important]05fanyi05baidu03com) R  k. \: Q  t6 g
[color=#333333 !important]" |5 d  a! w6 E: H% x6 J0 @
[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。
6 m) |% c% ?/ {8 Z/ f2 ?[color=#333333 !important]
0 S  O  R+ D! [suricata检测规则(并未测试,仅共参考)  S. E0 p5 M- U& W. c
- T4 I+ L7 H# }; Y# r
    / q' {9 L. y5 B- O

  • " r- U" O/ ]$ O) c9 X( [
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/ Y& r4 D' _- S) p" }% _9 w4 I4 x

, r; v: y3 {8 [- k. |& R安装
/ Z' \; @- V$ [# g  k
. L$ B. h% R: z& u[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell
' [  [3 q  B: p/ P1 n) Y% C2 q[color=#333333 !important]下载链接
) T& R0 K* f# K3 g7 G
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag& f) [: w6 T% a0 U. Y# x
[color=#333333 !important]提取码:t1rw
2 o) r; l; Y3 H" S* t$ Y* Q[color=#333333 !important]安装编译( Q/ U  [6 Q4 g

    / @+ W8 `0 z7 b) p

  • $ @& F9 Q1 C8 K" z2 G
./configure    make;make install[color=#333333 !important]服务器端
: L3 I- j. |3 v6 _
    0 K0 Y* S! l: o. m. r' U* B6 b

  • ( _+ {1 ^& ?# D2 i, d7 J/ o
server/dns2tcpd[color=#333333 !important]客户端! `) ^6 M8 O# a1 X# G# B9 `
    . L7 t1 n- D, p0 X

  • * G1 F* W" U: c4 @( [- H
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载
. S( G2 i- T. P" @: J; v! h

    " M( Q; `- k. Y- K

  • # D+ k+ M7 e- b  [5 V' B
dns2tcpc.exe实验测试
3 W" M. [) A# d5 ?0 h- k3 T
% ]7 n; H  l: E" r; Q[color=#333333 !important]服务器端
4 Z! y* N; O# q[color=#333333 !important]1.创建配置文件
) f5 I" A8 a$ ~/ X

    0 L  \5 R( L5 n" H( A9 h

  • ' {& o- l& H  A
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.启动. U8 _; c2 C5 m7 |2 s

    # ^) k: Q& C1 z2 }8 m$ F6 f" x

  • . @, `* a# \' _  N' e  s
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接
1 m7 p4 o& }3 S7 a[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务2 @, P% u; j; Y: e
[color=#333333 !important]
5 ^( }: z, N! w* |8 O. L* M
[color=#333333 !important]客户端! }) d: [1 H1 [- ?8 i5 m* W
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 2
3 q9 E4 d* R+ W# ~, L, d[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源
% p" Y' E$ `# M6 i4 i6 k# ]. G6 Q[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP
1 k# {5 N1 M: ?8 L6 Y[color=#333333 !important]-l:端口6 ?9 X! d/ X6 H& m
[color=#333333 !important]-d:是否为调试模式 2 等级可以省略& n% D9 r& _2 T
[color=#333333 !important]' Y7 x( O: F2 Q1 ^) W. J
[color=#333333 !important]客户端使用访问服务器! e, k- f5 }1 f, l
[color=#333333 !important]- C4 u/ F9 L0 `# B) `
流量包分析
$ x) d# o) g( |1 g1 o) H. S
9 E$ N3 U9 M' E5 [5 @[color=#333333 !important]建立链接并未产生通信包9 v+ c+ S% i9 O8 G* S. C2 y
[color=#333333 !important]7 d( C9 k- {% O# I; D
[color=#333333 !important]使用ssh访问时,才会产生数据包% o0 l" y( t. `5 b  u: g# m! @  ~7 C
[color=#333333 !important]
$ D: W. ]6 j( ~. ^[color=#333333 !important]数据包分析
* d0 c( G  N5 l  U$ W[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中% B9 \( b1 n# f! O
[color=#333333 !important]
8 M2 e& Z3 |- f" d$ ^+ Z[color=#333333 !important]
% }! s3 t" `! B8 Z5 s) ^[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。' [3 A) y  u" L0 C
Suricata规则检测(并未测试,仅共参考)7 X$ r) E- p( N' @: q9 W
. @8 j/ U* O* r* P( u
[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测6 _% ]+ l7 G1 g) C: n+ b
    ) U! K6 v& ^7 t0 g2 T

  • 2 \: `) T8 w% j; e
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]结尾# I. V* t8 E& k. q- I$ F
[color=#333333 !important]小白水文,求大神放过% l7 C; P; k) {: b4 \/ ]
[color=#333333 !important]pcap包下载地址:
& }2 c. E- |3 V8 ?
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw
# {/ @$ t8 C' ?1 ?
[color=#333333 !important]提取码:n5ha
# i6 s# f$ Y1 F[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载
, T2 i( Q' t! Y/ }
! Z! X, b8 H+ H精彩推荐
. Y2 f$ V9 c4 u6 [% D0 Y0 Q$ I1 `6 Q8 P) w7 D0 r, `

3 O/ o* j4 s0 c) H, {8 L  Z1 @/ }9 l( n
4 n5 ?8 U7 ~' j4 e

1 H% i8 W( N( G) C/ `/ ^5 V: C: c' W) n2 V& u, s$ x6 g# p
来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=15 U9 S% L& ?; j" ^7 }" Q7 Y, D
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-16 07:50 , Processed in 0.058511 second(s), 28 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

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