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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7528|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道
5 z% S) H  t$ Q, P  @! f8 {
5 N' w) {) J8 U! K  j# t[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。
  j9 r$ i! k$ ^/ B+ {实验环境4 m+ O. J! B. e

+ l- L7 D/ _  t8 q5 t9 G. |
[color=#333333 !important]CentOS Linux 两台
) }: e# k3 z5 G: i% L
创建DNS服务器
$ F% R2 Y# m$ f$ @
! w0 N- ]( c8 D4 N1.安装bind
: L0 @  S, D' m2 D1 R7 v+ m
$ p% ]6 M7 h$ e/ `9 d
[color=#333333 !important]yum install bind*
4 E5 ?5 F, L. q  d
2.配置named文件8 a* `" E( Q* M) f. f2 r
: B% R9 M0 }6 g* O0 o: U* r; x
[color=#333333 !important]修改/etc/named.conf0 W4 L9 M/ u$ ?# t) N  v- Z. T6 s
[color=#333333 !important]将下图中选中的地方改为any
8 `0 M1 G  C' m8 B* w[color=#333333 !important]% z) N, P9 c8 E2 ^2 X5 G% B* t
3. 设置NS记录,A记录8 X6 p; Z4 p+ I; c6 T

: d2 s, v. w0 h0 t- t& H' i$ I, t[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件
0 C* G$ Q/ c4 F4 O. T' a- c
[color=#333333 !important]

- S9 O# K6 l! `6 f1 ^[color=#333333 !important]增加正向解析记录
0 s- h. q# G+ }7 @7 j+ L[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字7 J: {% ^+ i+ K: {1 I
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel
0 F3 e; i/ E& |4 O
[color=#333333 !important]修改文件如下
0 ?3 J$ G, k2 A. n  H( s[color=#333333 !important]添加NS记录,A记录# S) H! _: u  V- r5 c# C1 N
[color=#333333 !important]
; t  O% `- X$ w! O+ n9 l& z[color=#333333 !important]添加bind为自启动服务
& j, B# ]+ {9 G& P4 }" D
[color=#333333 !important]systemctl enablenamed.service( _3 u/ M4 Y6 {
[color=#333333 !important]systemctl restartnamed.service
0 e4 D. o, ^" z% g
[color=#333333 !important]查看启动状态  O3 b' w  Y) X( T, `
[color=#333333 !important]systemctl statusnamed.service% c" y9 a5 g4 b" ~4 Q) {- l' x
[color=#333333 !important]; o# H0 l1 u0 h* e$ R, V& }" `
[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)
4 b/ g% W9 J; s( x# [2 a/ _. lIodine
9 w" \/ j) h( I5 v. |8 J3 }) L0 \
3 _' K4 u* ~7 |, b; b5 f[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。
2 D$ w6 e- H( h. `# T安装
. [! W" _( P7 l
" i" C+ ]/ ~( s9 o7 }0 F[color=#333333 !important]下载地址:7 Q/ n1 {# R9 k9 i
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip
5 |! D" B& q9 F/ D2 q8 {
[color=#333333 !important]unzip 解压( D( ^! T4 h, `. I
[color=#333333 !important]cd iodine-master
  y9 o7 N: U2 X[color=#333333 !important]make; l& K  p2 j5 @/ b3 H$ v& |
[color=#333333 !important]出现报错
/ N6 t/ e5 ?9 h: ^4 z[color=#333333 !important]" k9 q4 ]5 c. R0 @% e: x
[color=#333333 !important]yum -y install zlib-devel
, D4 [4 s# Q  r[color=#333333 !important]make;make install
6 _& w& u' q+ w" I[color=#333333 !important]安装完成4 P& F7 I- D% ^, `5 O$ u. i
[color=#333333 !important]进入 bin
5 Y1 C1 |) f' {[color=#333333 !important]iodined 服务器
# {5 f1 h, s* W- G2 j[color=#333333 !important]iodine 客户端
8 f7 ~0 G5 I% K- y实验测试9 s3 C  D+ v8 p
8 s1 D& w' w8 Q! f, D
[color=#333333 !important]服务器& I+ f% h8 s5 e
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com; f. X3 I5 x- z* k
[color=#333333 !important]-f 前台显示,运行后一直在命令行等待
1 m7 @% K5 U* b. J4 k+ h( a  I6 p6 j[color=#333333 !important]-c 中继模式|直连模式
! {0 o6 n% z# }, f[color=#333333 !important]-P 认证密码8 a+ ]% E0 p" |
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。; c) e' O8 H) h6 u. Q
[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。
; m* K$ [8 X" F5 j7 ]' H) p$ I[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡0 ~& @2 N3 c! X+ z: D; z2 x& M' b
[color=#333333 !important]* p, X) @4 [% a7 r( @
[color=#333333 !important]7 a1 G9 H5 d; Q/ n
[color=#333333 !important]客户端( q2 i. i; ~* U( k5 {
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com1 G" u) `. U0 ?. Q9 h, {0 a: V; F
[color=#333333 !important]-f 前台显示
9 ~* {: q7 [3 w! x/ ?[color=#333333 !important]-P 认证密码
& A+ n+ K+ r& C4 J* V[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析/ q5 ^7 v. @8 `: S# {; {
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。
6 E% p: E# E7 W& k2 n! ]) X[color=#333333 !important]
# d2 R7 r. c) _. N. q流量包分析9 Y8 k- ^9 w3 N+ e

$ Q2 O  B8 E) K4 B# {4 Y2 a8 G- Y* o
[color=#333333 !important]抓包( i7 l2 H# R: j8 Y
[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap
- R  w7 ~) V* E
建立链接的包分析1 k) s, l& J5 d% {% X+ u
9 {: t9 R( c+ ?% ^) C6 _. u& t
[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包
+ G" L+ R# ^6 N! T. q. }6 f[color=#333333 !important]
5 s" s- y2 L1 H% A7 [[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀9 I. R$ s2 a2 E2 f) X2 L
[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据3 G2 ^& x9 K5 S! Y
[color=#333333 !important]0 {# ~( u2 ]# M! r  q  |# T
[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节), m9 V  u( z. Z
[color=#333333 !important]9 N5 J6 u' m4 L) ]) [
[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。5 {4 `$ W8 h+ y$ t( ?
通信流量包分析
" x& H% z# x. w( R; ^
- ~, V0 O0 ~3 E" W$ K[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析
0 X% ~( }) m5 l4 H[color=#333333 !important]
% c7 G: N( J3 u$ y- S0 o[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。5 [! B4 A0 k# z5 Z' h" M( g% |! T
[color=#333333 !important]05fanyi05baidu03com8 c+ w% ~2 w9 ^. B
[color=#333333 !important]
% d* G, s" P  w7 B[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。
  n: d( m9 e- o* ?& b[color=#333333 !important], l  _4 U7 w! j& f
suricata检测规则(并未测试,仅共参考)
: e! }& ^  Q2 m$ Z) i# f# O) o
5 Y: n! Y4 E, n, M2 `: J
    * n# L  w. l$ F  ~
  • 4 u+ P! d, L6 X; ]5 R+ z
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;)Dns2tcp9 ~7 c# k- S" f) F: Q* h- m! \2 O

4 e3 W& |& _+ |! M安装; g  T) V. n: v# V) [

7 Z% e) Z! Y4 ~; B/ X% h[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell
4 j1 n# Q. ~" G4 r+ g" d2 D+ E[color=#333333 !important]下载链接
6 N' u% U5 R+ Y1 r8 b
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag, _9 w  E) d2 D2 z6 H+ K3 O
[color=#333333 !important]提取码:t1rw
' }5 O0 ^8 ^+ R4 P5 B2 }5 Y[color=#333333 !important]安装编译4 ~6 r8 e: W& z3 \7 a( H& u5 ~, U

    ) g3 Y3 K, }4 C8 C9 V

  • , N7 E3 Q* T1 g0 u; O
./configure    make;make install[color=#333333 !important]服务器端, R0 P( z. G: g7 V  }
    0 h' M, c) C$ q+ e4 G$ j; ^, S9 V
  •   f' L' F% Z& S+ y. U2 z
server/dns2tcpd[color=#333333 !important]客户端
$ p+ [% q1 i- t* ]$ r

    " s" ~! _5 Q; S8 l9 h5 V- C
  • 7 e( e& [9 ~# ^+ r+ `2 h
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载& M/ _9 J1 o& F9 Q
    7 c; w$ V. H3 Q7 x, _

  • 0 t  M, \8 V# }
dns2tcpc.exe实验测试
$ |& j2 H& I8 ~9 |4 \+ k  c
' z! O$ Q0 d- G7 P[color=#333333 !important]服务器端! R' t+ I  }3 {5 @4 V
[color=#333333 !important]1.创建配置文件7 w6 G) {6 T/ c+ @0 f

    # |( W" y/ o& C" q
  • % B* T  W4 v: k
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.启动. ?& n2 i- M' y) b

    8 Z; |0 ~6 P; D" O* D  V; N

  • 8 b8 n4 ~1 |$ q6 H$ A0 m( r6 t5 ?
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接
, p) Z0 H% J4 w; L[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务
" Q/ U/ J+ [! M; v  \2 n
[color=#333333 !important]

$ K, S. b6 |- F[color=#333333 !important]客户端! o$ }" b  ~5 L5 A0 H6 n2 B9 R
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 21 v- x& k. G( F3 K/ u+ N$ r
[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源8 {% r) m2 Y. l: S* D
[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP
+ m. W& w, u5 q5 ~: @[color=#333333 !important]-l:端口3 X# `" s3 o5 A
[color=#333333 !important]-d:是否为调试模式 2 等级可以省略& X/ c- P. d& c2 A  v& B& \
[color=#333333 !important]% X/ z0 \+ v7 Z" Y$ E6 l! p
[color=#333333 !important]客户端使用访问服务器
  M" j/ \! j) |7 ~2 o0 g# H4 h[color=#333333 !important]2 z; [6 f( q: @1 N- ?
流量包分析' {, B( ]8 E- V
/ C4 y7 F3 g8 E+ v/ Y
[color=#333333 !important]建立链接并未产生通信包; D8 M6 G3 _4 {  @1 U# ^+ f
[color=#333333 !important]+ S+ _2 E5 `+ y
[color=#333333 !important]使用ssh访问时,才会产生数据包
6 v: w' p; c" x$ ?' C[color=#333333 !important]
9 R' _" [2 w2 R- ^[color=#333333 !important]数据包分析8 o& u- L1 B9 t# B! K
[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中
9 B9 N- {( I/ N" B1 D# k% [[color=#333333 !important]
7 I. A1 @# d+ R/ K9 k( h# k[color=#333333 !important]
+ B, C6 x. P4 t5 m3 m! f# F! u# s# t* f[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。4 U7 I6 K4 }' F; `4 B
Suricata规则检测(并未测试,仅共参考)& x$ T. w( Q8 K: w+ v/ @

1 y/ ]! E, h2 ?3 ~$ L) I; \[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测0 r4 Q; s- }+ q2 ]( O- H
    : m) N7 A. J1 F+ Q  ~, s
  • * v1 T3 A3 F, v: |
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]结尾
. b4 `  f8 B( J/ r- f$ d[color=#333333 !important]小白水文,求大神放过
( k( h3 v5 |% T5 ~! }' k[color=#333333 !important]pcap包下载地址:
2 Z# h; V4 ~0 J, _  o
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw* Y9 i; v7 r1 G. n. z, q
[color=#333333 !important]提取码:n5ha% i: H4 c6 I- l, l! g! M
[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载
4 l/ E: @2 R! M0 n( c, O% F" t* C" Q; r3 n. M$ U
精彩推荐% O2 K0 f$ T6 r6 `8 `/ J) [
+ u' ?: {3 A9 L2 i
, ?4 Z+ A5 U3 w

  m1 j2 j0 _7 r$ Q! [- U8 ?: h6 q6 m0 s/ G% y5 S% G, l5 Q
3 r  ]0 O: i. T& @

3 E/ C: I4 D" U来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=15 v4 G- F: y; n1 y; O
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /6 下一条

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

GMT+8, 2025-2-24 15:59 , Processed in 0.048098 second(s), 28 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

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