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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7712|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道
0 P3 ^& Q  N( o7 w( C5 h0 W5 j- v, R, G
[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。8 @8 S* u* k0 j5 H  }
实验环境
* U0 k% x3 D; H: P9 i( J2 k
% L7 r; i  g* X
[color=#333333 !important]CentOS Linux 两台
' A# Q4 y' }6 d4 g  V" U) _/ {1 t
创建DNS服务器9 i' @' D4 u; u

7 z# B, R6 O9 D" v1.安装bind7 u& L% V+ A; l0 _9 Y  L

8 E: `/ K  p# o( ?2 U! z$ m
[color=#333333 !important]yum install bind*
9 d( ^" U7 r* p. S. V' F5 C, @
2.配置named文件, z- j5 D& d7 ^- x/ h; |) @
7 |& `7 s: c" G# X& U; _$ J$ g
[color=#333333 !important]修改/etc/named.conf
+ l+ G: [6 o# A; g5 ?
[color=#333333 !important]将下图中选中的地方改为any. u2 P3 f; ]1 L4 f
[color=#333333 !important]' m8 u2 V- ~) T# E) {
3. 设置NS记录,A记录
4 K+ W4 w- R# N1 \! d/ A9 m3 ?6 A7 X3 c8 @8 G/ C# @$ T
[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件* s* z/ L- ~3 F4 I# w7 v% A
[color=#333333 !important]

0 \: o7 J/ N0 X[color=#333333 !important]增加正向解析记录1 ^# H8 n- v' C/ ~9 [* r6 B% H
[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字
5 ?8 u& h) b! x8 e
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel2 K* D- n! q! q
[color=#333333 !important]修改文件如下
4 C/ y6 t0 i7 }6 k0 C0 L) k[color=#333333 !important]添加NS记录,A记录
6 m: ~2 o: }: `8 W9 O[color=#333333 !important]0 O& B- U; }& D/ P8 `% F
[color=#333333 !important]添加bind为自启动服务  ~* X4 F  ^" `3 }- d3 a
[color=#333333 !important]systemctl enablenamed.service9 P8 Y5 H% F5 Y/ U0 W
[color=#333333 !important]systemctl restartnamed.service5 u8 X8 C0 _% |! m5 O
[color=#333333 !important]查看启动状态
# W4 c9 G0 y' [) g  I$ G% i
[color=#333333 !important]systemctl statusnamed.service
% g- P1 W, k8 }' w4 g  Y; R! T
[color=#333333 !important]
3 h+ F. g* u; E$ c[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)
1 L, U2 k- \, @, E9 x# eIodine) f; g- k' ^  I; ~
: y9 C7 Z# n  m# C) B
[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。5 U9 w8 Q1 M( |$ M1 o
安装7 C+ ?) G, P. I
8 G1 B+ Z4 Z- M0 r
[color=#333333 !important]下载地址:
$ Y2 k4 ?1 X) H, X
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip
3 f$ x* ]7 A& ]$ u
[color=#333333 !important]unzip 解压5 m. @! @+ }6 s# b6 o" g
[color=#333333 !important]cd iodine-master1 P/ \% A+ D4 T# W/ Y
[color=#333333 !important]make- `/ \& X; T+ B  b0 F5 J
[color=#333333 !important]出现报错
5 P% E. ]' O$ f2 R. w[color=#333333 !important]1 H* t% U/ U6 o$ F, h+ C
[color=#333333 !important]yum -y install zlib-devel9 O( m$ a& R7 c$ W
[color=#333333 !important]make;make install
- d. O$ q' H% B; ~[color=#333333 !important]安装完成
& b1 p( A$ K3 Z1 B  Z% x( ][color=#333333 !important]进入 bin, j4 x5 S4 f: m, e5 a& L- L
[color=#333333 !important]iodined 服务器
& c. G) }# e% c[color=#333333 !important]iodine 客户端5 q7 \% y  @* I6 `1 a4 F: @/ V: s
实验测试
+ h; A4 I; @. e' B9 L
2 A6 \) _# \/ l[color=#333333 !important]服务器& g2 {2 Y0 u2 a. }+ [5 a$ \
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com
4 D0 o. i0 l* S$ b% q( `[color=#333333 !important]-f 前台显示,运行后一直在命令行等待4 {* ~( D, q6 j
[color=#333333 !important]-c 中继模式|直连模式/ _1 g4 J$ [) Q8 U# H) h: T
[color=#333333 !important]-P 认证密码1 _$ u9 k7 n! r. _1 o
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。
, n/ m; P! g: l9 k# V! m5 E[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。
5 @* n+ D# ]/ H2 a[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡" _% I6 B& p  a' r5 T3 u& z
[color=#333333 !important]" J4 S& x4 C' M( P$ d: w
[color=#333333 !important]
, B1 K1 K8 m$ W6 t[color=#333333 !important]客户端8 i, Z% V* S2 g' N) @- i# h; e
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com
( Z& e! G. a' v0 Y2 V& `" h[color=#333333 !important]-f 前台显示
- v$ v* b2 ?1 R' Q" f, B[color=#333333 !important]-P 认证密码4 h7 ]% k# n; I) Y7 ~
[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析# U% ]( [" t& _
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。
8 X9 j3 B) F. V  [[color=#333333 !important]
: q3 ~& h. {: [3 _( s7 v4 q& M& N4 j流量包分析  R  s0 D8 w& y" k8 D. v' k

$ n2 ~; b. f& I8 b
[color=#333333 !important]抓包
+ d7 h1 e6 y: L[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap
- H! C* z+ ~5 J& l) ?! P7 b
建立链接的包分析
( p/ m- w; y2 I# e6 ~" f5 D9 V9 ]1 P" P7 m6 p3 u
[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包
/ Q  G7 G- y" K) ^% k3 F8 o[color=#333333 !important]
) V$ ~( m" G( [' h[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀7 P( }, r/ G% R5 S# d' d
[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据/ S. M) H/ ^: h* P' N) e  M
[color=#333333 !important]
* C: s9 t+ d6 b[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节)
4 w' E( E1 f/ s2 _5 L" _5 S[color=#333333 !important]
1 |; I* @- _2 E  W/ {' C[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。
) z5 F; D* {5 z( _) @5 I通信流量包分析: t& v- `: r- k

; c  s) H) b/ w8 }  ^[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析
! R4 z# z6 y/ L[color=#333333 !important]
1 O. {+ a+ y) x7 y- J[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。
6 t9 q6 s: G; S* D% h3 A& j7 w7 M5 }+ @[color=#333333 !important]05fanyi05baidu03com
2 ^6 F  J" X0 U$ _2 K[color=#333333 !important]
2 s% ]  K3 X, k. J3 O8 C0 U[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。
: i, o9 D* j& \7 H8 |[color=#333333 !important]# k9 B* B: i1 Q0 n) t: o( ^/ [+ X# l7 B
suricata检测规则(并未测试,仅共参考)
4 o* {2 ?' |2 d; r  n% Q* m& g
6 x& T3 b/ K1 w/ _" F2 b
    % y: @0 k% w. l  Z
  • # Y* a, g/ _2 j2 G
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
: z5 m7 u, k5 }* j8 \7 t7 P, Z; E  R0 G1 W7 u2 K& ]/ G7 I7 G
安装6 E9 \; V1 Z1 w5 Z7 U* O  E  f7 b
& N0 G2 Q1 O$ j0 {' s6 l
[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell4 X; D# |, ?$ Z/ e3 T9 L# H# Z' U
[color=#333333 !important]下载链接# Q! C! D9 `% Y: E# _3 \7 `
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag- L( g4 L; N4 w# N
[color=#333333 !important]提取码:t1rw
+ G. `: y% j0 P2 H% V0 g[color=#333333 !important]安装编译3 P2 [8 |, Y- g2 J$ q, r* N( M" l

    : D% [, [3 j9 A

  • 3 j9 T) U* Y5 m8 J( O8 [3 a
./configure    make;make install[color=#333333 !important]服务器端( s  _5 ?* {! @

    ( w) m  b1 T9 l$ Y

  • 7 z" j5 n9 u" w
server/dns2tcpd[color=#333333 !important]客户端8 t3 R& ~$ `! s  [4 N9 r' k

    " ?* _* F4 ?/ K& Y% B) u& b
  • 8 U4 @/ u( t1 k9 c
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载
4 U+ x9 R2 t  f5 F

    - D7 v3 f0 a/ N) k3 ]0 g
  • $ i1 P3 ?( a/ A7 d/ w5 R6 m; g
dns2tcpc.exe实验测试
1 V* X/ Q& c- T" v7 Z# y" @
! S9 T7 E9 d  t" a% Q9 D9 ~. X[color=#333333 !important]服务器端% r! s4 v- W  S2 L
[color=#333333 !important]1.创建配置文件, ^2 b4 H$ `7 J* U! a1 Z: a  `- S$ ^

    4 R; j/ v6 t% N% l$ f
  • ( i8 g9 B5 Y; g/ ^$ P
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.启动! x/ ^: ^- J$ y
    ' W! P5 N- u2 O. n5 p* `3 H* U( N* R0 j5 W
  • 7 x$ B! }" @! B0 k. ]1 t3 ~# Y
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接
9 Q1 V, V+ X5 t+ M/ _0 u9 ?6 ][color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务; s  @0 y1 z' A1 w9 m3 Y+ q
[color=#333333 !important]

6 A/ T+ U& \1 m) N) K: D[color=#333333 !important]客户端' @5 K- a3 e& |- F5 ]
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 2
2 P- g5 o" [0 N2 t) n9 W[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源* \! `$ h+ J7 `. G- N9 N" c" U, w/ k
[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP
. K1 W' [8 ^" @  ~- f6 I! C& T[color=#333333 !important]-l:端口
1 Z( |3 _- {  g/ t; V6 e2 r8 N4 I" s; B[color=#333333 !important]-d:是否为调试模式 2 等级可以省略
* j. J, r( h! z' u+ v7 c
[color=#333333 !important]- O( z: I9 {6 r0 e# V
[color=#333333 !important]客户端使用访问服务器4 ~0 \0 z: @8 r3 A3 A
[color=#333333 !important]  a1 X! c- N" P8 b4 |% h6 ]# u* `6 @
流量包分析
% g& [0 U: y, {" L  o- `% N9 R2 [: m1 n7 i2 e6 W! c) `
[color=#333333 !important]建立链接并未产生通信包
0 w+ r: E- T" b- o( {: f[color=#333333 !important]
* ~2 c4 w! Z! R8 q[color=#333333 !important]使用ssh访问时,才会产生数据包4 l# p* L9 s) d8 c& [+ m# q
[color=#333333 !important]( t! E# ^3 i. \6 s: W
[color=#333333 !important]数据包分析
% m8 @2 w+ m) l$ _[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中
  D3 D# c8 w$ _! b" w1 o[color=#333333 !important]
7 {6 f( l. d& ]1 W[color=#333333 !important]
8 v( x! Z/ t: k% ~[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。* U1 \7 E2 p( T. ]" C  m% u
Suricata规则检测(并未测试,仅共参考)
1 U6 N) q8 F: n6 M
+ u( b0 w; t' ?& f# N( ~[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测
# [/ j% w, ~7 ?, y- z

    7 R$ z3 C% H* {: Y4 Q; d9 g
  • 0 ~3 m: i1 d; r. h8 Z) H" Z
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]结尾0 n) t! P; d2 J. {
[color=#333333 !important]小白水文,求大神放过
% s! ]* Y. x7 \. v; l% P( @; S[color=#333333 !important]pcap包下载地址:) Q0 S5 T9 \6 R& W% R% R1 a
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw% l5 x  L" H) @, M2 i+ |
[color=#333333 !important]提取码:n5ha3 p% {4 ]) u9 V
[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载
+ n. z$ O0 Q% @- A) }7 B3 r% n* ~, b" o* X
精彩推荐# A+ ^- v" d) F! y
- W0 z; j$ g7 f- Y+ d9 @4 d
" L, a/ N& }1 T! T9 E

# n! R& ~3 E3 m& V
! I/ L! u) n5 }" ~0 U2 U7 u+ H! N/ ~

. @* V  K+ x0 j& U来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=1
& ^/ {/ L6 ]' E( k- Z9 E免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-18 03:18 , Processed in 0.049797 second(s), 28 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2026 Discuz! Team.

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