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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7902|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道6 n5 F) {6 w+ s4 T

) y0 x$ X/ j; ][color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。( r$ A- @% f, @$ I4 x  L/ |) A
实验环境0 p) O7 b+ d9 @

# W, g% S9 P* C5 u! V* Y
[color=#333333 !important]CentOS Linux 两台& j8 m( K8 i8 g: N0 s% S) R+ d
创建DNS服务器
/ @: k: @7 ~6 h, f3 g- h5 c
4 A) s& n4 |- c. a! z4 L2 q1.安装bind! n7 B* u$ W- t; z" a

$ X9 W4 u; t7 k+ L; s
[color=#333333 !important]yum install bind*8 m$ ~. V) u! @7 G5 N
2.配置named文件7 R. b; ?+ A, P7 i
- N! ~' J0 P0 D
[color=#333333 !important]修改/etc/named.conf
% d6 G0 a. C4 F
[color=#333333 !important]将下图中选中的地方改为any
" ]6 g4 Z6 o' E" ~4 Q; j0 ]$ u[color=#333333 !important]
9 E7 I; R, f8 b) T+ b5 N8 ~3. 设置NS记录,A记录
) m, z+ K# P0 K. k! K
) U7 I; R. C1 G6 s. i( M/ j[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件, I" L1 y5 G9 a
[color=#333333 !important]

& x; g0 p9 m/ v: u- H[color=#333333 !important]增加正向解析记录
) y& N& W0 e, k[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字  R3 t3 ^9 p7 e/ j! b* q( x6 l
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel$ F% J2 C. O8 J4 ]( V, Y0 P6 ?: L
[color=#333333 !important]修改文件如下" `% j7 L- Q/ [$ ?+ ?* U! I& N
[color=#333333 !important]添加NS记录,A记录
0 V$ j- a; `5 n4 O5 S[color=#333333 !important]
; w! s- i9 @* T) m1 e[color=#333333 !important]添加bind为自启动服务
4 j- F$ K7 K# a& ?! Q- x- J
[color=#333333 !important]systemctl enablenamed.service: y0 u! p- G5 |, @
[color=#333333 !important]systemctl restartnamed.service- _8 c9 [9 [: `
[color=#333333 !important]查看启动状态
0 Q6 u. J; d- p( _# h8 ?
[color=#333333 !important]systemctl statusnamed.service8 m; V# a3 O5 o* Y# y, S
[color=#333333 !important]4 Z, D! B/ Z) q+ {6 G8 u& ^
[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)
8 a4 u: K9 [# [+ Y& y5 S% ?Iodine
( D: {6 J) G5 Y! j& ^3 H1 A, E, w4 O; T& u2 e" X2 S& r7 ]  [
[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。0 k' ^6 _- f% v6 c5 d# K
安装1 r4 n$ v( _& `" z
, B9 V- t3 ^/ n/ s5 w, Q
[color=#333333 !important]下载地址:; ~3 ?( N. N; K4 H
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip
6 Y0 y9 {9 A! Y2 a( D' J
[color=#333333 !important]unzip 解压' }% ^! Y+ L% |) [- H, t" `4 N/ x
[color=#333333 !important]cd iodine-master
% n8 j: v$ ?' ?$ ?6 G+ V% l[color=#333333 !important]make
1 X7 X) z9 i4 i! C/ @: ?3 x" w[color=#333333 !important]出现报错- J; u9 R% U, m& r- I1 Z
[color=#333333 !important]. n( ?* u6 Z+ @: V4 f' a
[color=#333333 !important]yum -y install zlib-devel: p3 a( U+ T: o! w6 V' Z
[color=#333333 !important]make;make install1 A/ x) p. y! B% T3 w
[color=#333333 !important]安装完成
7 |$ O4 L( ]# o( r  e8 q[color=#333333 !important]进入 bin
$ B6 u+ R$ U3 v5 ~/ I8 C" x[color=#333333 !important]iodined 服务器
6 a$ c$ }$ d' |3 ?( Q# h[color=#333333 !important]iodine 客户端6 n, y1 X0 F2 }( J
实验测试
5 f+ s( b  d; Z4 }' `0 {* k
" F- z6 t; x& `: q& T: B0 u/ Q6 \[color=#333333 !important]服务器+ M  Y; X0 C' h. I! F' a
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com
  J- B5 L- H7 E[color=#333333 !important]-f 前台显示,运行后一直在命令行等待7 J; s% U7 o6 K$ T5 A' [
[color=#333333 !important]-c 中继模式|直连模式7 ]+ d& d0 G# A5 @% J0 Q9 b2 X
[color=#333333 !important]-P 认证密码- n# i/ T$ I) H, b
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。! O- l& s0 [7 ?5 F3 j, ?
[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。
; I" E9 h$ p5 B[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡5 K! m9 ^- s- H$ i
[color=#333333 !important]
6 a: S/ F: K# ]5 u1 e[color=#333333 !important]5 @4 m6 A) b# l4 S. `7 j. j
[color=#333333 !important]客户端- c8 P# f; m3 Z" i
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com+ h" L/ K, r. w+ |' Y
[color=#333333 !important]-f 前台显示
. q) V- J3 \# T8 L[color=#333333 !important]-P 认证密码
( g8 K- e* x3 O4 p! p[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析/ \% q' Y7 e. D3 k9 Q1 W) w0 ]4 S
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。
, b2 P& h1 _5 G4 |) N$ O[color=#333333 !important]
0 p" F" Y! G, ]5 M. X  K流量包分析+ Q, \# g: d6 O: B) A+ d) A

$ _, }+ a* Y7 `* F/ G8 {( R
[color=#333333 !important]抓包
  C& |5 e+ \# i( C, C[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap$ z# R& ~/ |; l( c: W9 O% X
建立链接的包分析+ F' r. R* R$ n
4 n! @& y, J" O7 P% z* b) a
[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包
, ~9 }4 K  u* d% ?[color=#333333 !important]
# `$ W; A- E2 d5 b# t$ p[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀
# h1 K: L$ C; p6 J' D5 w6 [[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据0 y' p8 v7 H: Q  B0 z9 i
[color=#333333 !important]! n, A0 @0 |9 T, }& g2 s! ^  L% k
[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节)
; V0 O" F! T3 S- o/ ~  e! \[color=#333333 !important]+ y" e% ~/ l3 W$ j
[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。7 ^! Z/ x) O& I, T
通信流量包分析$ s# [: k0 v& u! G/ n" W7 x
5 z8 |$ P  T# B' C
[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析2 {# O; I6 s: f  f
[color=#333333 !important]
7 Y3 y( N1 q0 f5 @3 ~, z! U6 b[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。! P# j  y0 E4 P4 U$ A) F
[color=#333333 !important]05fanyi05baidu03com4 B2 g9 Q* C( |% c
[color=#333333 !important]
, z* q1 B) }1 Z: k& @6 l[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。) U; L4 J$ |# M% X" z6 F; V  s
[color=#333333 !important]- h/ R, z6 V# u
suricata检测规则(并未测试,仅共参考)
+ z# j, n* O3 u: o- |4 g7 ?  Z
- E1 L/ `2 n3 f! B2 R# c; S4 s
    3 k5 G% P" q2 E

  • 0 G7 ]: J& s" c0 X( ?, N5 Y
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* W$ `! w4 _8 Z. G, l  V% G
9 x3 a; @, H8 w8 x$ L- s) r9 m9 N% x
安装
8 c# ?% ~: ?; Q' p  X( v) N- r" G- U' Z$ s. {% \& t1 ]4 Y2 f
[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell7 i* Q1 f" J. l. q" u# I
[color=#333333 !important]下载链接# Y% a$ B0 d& |' _
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag
7 p1 {  |5 e- m+ |5 q% E  e. E1 D" c! P
[color=#333333 !important]提取码:t1rw
' R1 ?* V0 @1 {[color=#333333 !important]安装编译7 q$ k& [8 A2 j0 c- g% q
    2 Y# n$ f& v- b0 C, q0 H: R

  • % {2 G: S* R& f' ]* V
./configure    make;make install[color=#333333 !important]服务器端% ]0 \$ F! G# c5 j* n5 F) M$ _. D5 k: o
    , H" z' @' H8 j" A
  • 7 J, h6 y' c* r+ h/ ?
server/dns2tcpd[color=#333333 !important]客户端
# i; ?+ r- v- H: L9 n! a9 `
    # U+ S: A: ]3 `) L/ @
  • ( [% o5 Q5 u- }: [* R4 A6 f. i
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载
; w& y! k; d0 \; D. }, n( ~" g
    " s" e/ ]" u. |% e4 b

  • 6 a/ U" p" J9 K+ R- f3 v
dns2tcpc.exe实验测试6 Y- @4 g6 T0 e7 U( ]6 u
# A. Z* E7 O4 v& E/ q5 R5 L8 M9 e
[color=#333333 !important]服务器端( \- }  ^$ G/ `: W. X7 Q
[color=#333333 !important]1.创建配置文件! ]% S& J" x4 E  }5 k! f+ r( O

    1 u6 J0 |2 j& `3 P3 ^
  • 2 O4 M6 Y$ c- t. q6 E
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.启动+ }% I- n/ Z; z: f0 h: J) \( i% ]
    4 m8 k" o5 n* Q- x/ U2 F7 h

  • $ P: V, T1 ]* m8 U
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接
. o9 Y( X) r; n1 M- G& O[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务
0 P/ ^! J" U. b0 M/ G
[color=#333333 !important]
2 a, p5 \2 T5 h0 h" c
[color=#333333 !important]客户端
1 H3 Z( O5 Q7 F$ V, T
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 2
0 U) ~4 s. F1 I[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源
+ E: B9 k, h! i; M' r3 c, N' l[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP
: y: u- k' B3 L6 e[color=#333333 !important]-l:端口/ B: k% F) Z8 O9 W/ F7 r
[color=#333333 !important]-d:是否为调试模式 2 等级可以省略
2 C6 y$ q! b) G/ k" t
[color=#333333 !important]
  s  T) I" f" R2 a7 Y! m[color=#333333 !important]客户端使用访问服务器: V! n* Q# r" D
[color=#333333 !important]. _- j. I. w- b$ Y9 {: M: I
流量包分析
) b6 N7 F& w' ?+ _$ y$ t4 l
  }  [8 y4 l6 T) P$ s8 k[color=#333333 !important]建立链接并未产生通信包" J* {8 ]  M: v, t
[color=#333333 !important]$ _" t( D7 n' X
[color=#333333 !important]使用ssh访问时,才会产生数据包$ C" U: M. A( n  }# d! v
[color=#333333 !important]
# @* n6 X" ]0 D7 W' ^[color=#333333 !important]数据包分析
; Y3 u( J$ l, X! |[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中" e) s) b  g- _
[color=#333333 !important]: w$ z* T/ h% B! W* o' P
[color=#333333 !important]# T4 b/ i2 G- R& W# ?9 p$ u/ x
[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。
, `$ z, d$ A. N* r4 gSuricata规则检测(并未测试,仅共参考)
6 M0 n" k4 ~, z0 a, e/ L* I/ i4 B2 D6 C, Q+ ^
[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测
+ Z) E. [/ Y" @6 m; e8 W. z
    8 y$ |# t% z1 H  E9 L4 l

  • ! V9 h3 R( o& s" 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]结尾4 f- h. y. b$ U. ~3 m; A; \9 j1 ]
[color=#333333 !important]小白水文,求大神放过% w8 ^( b' B) h: m7 H0 q
[color=#333333 !important]pcap包下载地址:
% H( z; p8 C) d* y
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw
. g/ C$ L" D2 v/ Z  m8 ^0 I
[color=#333333 !important]提取码:n5ha1 q1 Y/ c6 w# o, R1 J, e9 d3 ?* V
[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载
/ Z: X/ q9 M9 U/ K( A& A  F8 V3 c: [0 g. N' A
精彩推荐
- d6 ~2 \5 p2 B# _! t; F
: U, Y6 ]& Y4 o" l1 c) N( z9 [
9 p9 b" t7 d3 `- W  O% B7 ]4 l+ ]

% ^) O( _# s9 _- b# @. T1 M/ l+ a; u) a$ J6 \

" X+ A4 h& W% k7 y
: D4 z4 J3 ?8 w& S2 H( s' A来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=1
: J) W. K" Y/ T: r9 F7 D8 f免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-14 13:33 , Processed in 0.047537 second(s), 27 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2026 Discuz! Team.

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