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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7615|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道
" _& x# n5 t1 `9 R# i2 [4 H) N5 A
8 L  W0 ]7 U0 _% A* ?! J' M0 e[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。7 r: P, _; v, |2 _
实验环境* K4 Y3 z6 J1 V% H9 _5 q  G- }

1 B' H0 ]1 U& O3 E& g9 q
[color=#333333 !important]CentOS Linux 两台9 @# M+ ~1 K5 p
创建DNS服务器/ c, V! }6 B( I/ U  e

# |- t5 v$ x( X- e( [1.安装bind& f7 z& `2 j% X$ Q# p: E
8 l, E  p# _) {9 H1 n
[color=#333333 !important]yum install bind*% F: `$ I- a% H
2.配置named文件& g, O/ J$ I9 x" c5 ]" d

7 l+ y( E' k* ]' A! Q8 h
[color=#333333 !important]修改/etc/named.conf- z5 o1 Q- P3 s7 k1 J4 p* b. v" K
[color=#333333 !important]将下图中选中的地方改为any
+ R' h: }& |( f& H, u- z) G[color=#333333 !important]2 f" u% M5 d! Y8 x2 J1 [- g; m, [6 J
3. 设置NS记录,A记录6 x. g+ D$ S% X

5 r7 L4 b9 I8 p1 d5 T2 `/ B[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件
5 S) i* e' j# S
[color=#333333 !important]

$ ^# I4 g0 ]* D5 ]! w[color=#333333 !important]增加正向解析记录, _. @% W! i: ?2 m% X& X  q' @
[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字; B# l) v, m2 w* W
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel
, _% q1 F6 p8 Y# N. h: R; J
[color=#333333 !important]修改文件如下
# B6 x$ r( |7 q2 y[color=#333333 !important]添加NS记录,A记录
0 k6 m1 @8 k0 m/ @[color=#333333 !important]0 d! p& y( ?1 Z7 n+ M
[color=#333333 !important]添加bind为自启动服务
* y# @/ h$ [6 S8 V1 f% J
[color=#333333 !important]systemctl enablenamed.service
, h* m- W6 A) v9 f, q[color=#333333 !important]systemctl restartnamed.service
  w* H9 p. d4 \% K7 x2 ]( v' V# g
[color=#333333 !important]查看启动状态5 P$ \' y9 ~. O) V/ B( C" z
[color=#333333 !important]systemctl statusnamed.service: v" Z$ I6 Q7 {  K
[color=#333333 !important], J  j: y5 U0 T2 r
[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)
' e; A2 n  L, g. T' v* r# oIodine( `3 p' @' I/ g- b7 N/ p
" l4 T. e# [( i
[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。* ]$ Z- {1 ~3 W
安装
3 z( }; \# t: E' q( h6 F4 e% H5 N, H# E! C: [- @7 L
[color=#333333 !important]下载地址:
* a4 t( x# P& L
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip
" t. g; U. T& \- W' M" q
[color=#333333 !important]unzip 解压
+ g3 z. Y' j/ Y- N- g[color=#333333 !important]cd iodine-master
. A! |. G7 d7 B( v  N# Z0 |[color=#333333 !important]make
9 E0 v0 ]/ q3 h8 S: z0 |$ \[color=#333333 !important]出现报错
  C( v3 B( [* ~[color=#333333 !important]
+ o! C' `" q& K% X* `; h: u0 ]) x[color=#333333 !important]yum -y install zlib-devel' \+ ~5 P1 n+ |8 t# w' z
[color=#333333 !important]make;make install5 k! _7 Q- k* I) A5 V
[color=#333333 !important]安装完成! ~! e! q( S/ p& B
[color=#333333 !important]进入 bin4 W; U  T2 U: y
[color=#333333 !important]iodined 服务器
5 B! ^& q. y: M& T& W( p+ W[color=#333333 !important]iodine 客户端* f) N$ [. l' n
实验测试' o0 \" P! I' H% j; z1 b/ ?

! X5 H9 ]( M$ w/ z& o[color=#333333 !important]服务器& m; b# M: M: @+ ]; k4 }
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com
- L4 s# p/ G0 I  Q7 z[color=#333333 !important]-f 前台显示,运行后一直在命令行等待
- {/ E5 L. c' H6 f' `& o0 D) j/ f9 G3 h[color=#333333 !important]-c 中继模式|直连模式& U- P0 ]) [* i+ G% u2 Q- O
[color=#333333 !important]-P 认证密码# D& f/ R5 g( t" X# S( e
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。4 c$ F  A$ V4 X! ?7 f6 c9 q
[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。
2 @+ E! k0 h# o- T  L+ v9 ][color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡
# X$ b+ @- d- S7 {. N( y" f[color=#333333 !important]
0 H4 t  `! c/ C' J- E+ H9 ][color=#333333 !important]3 H$ O+ j2 V/ J- ~
[color=#333333 !important]客户端
/ ~9 }3 @4 V* e# G
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com
$ J; U0 \" x, w[color=#333333 !important]-f 前台显示& m- N1 G+ K, X6 m& [. \
[color=#333333 !important]-P 认证密码$ G6 g' O  ~. `5 E4 g# U
[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析' |) }- Z! N- m/ w0 C8 U, o& L. j- ^
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。2 q  O2 b( {+ f3 Z
[color=#333333 !important]
7 Q" c# Z% L& J, T流量包分析1 N: ~' B1 I# @3 w6 ?" Q
5 e3 e4 Y* x1 A$ B5 G; |
[color=#333333 !important]抓包
, M" V5 `+ k. B0 I8 W, v. c) i[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap
& W& O" P7 j) y& a' T& ^
建立链接的包分析
5 S" d+ f& b) `( g" g9 E" A$ P# L. [. G  u( j2 i& k7 L  k
[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包
3 F' v) }$ x5 p5 O[color=#333333 !important]- {9 d, L. P5 x
[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀
, T$ Q2 _7 ]! Z9 B  z2 F2 ^7 |& r[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据+ K: {0 |6 t: D# K) ^. _- c
[color=#333333 !important]
7 E6 [5 t8 ~1 j) |[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节)  S: W; K. X" \4 w; s; N3 l
[color=#333333 !important]. Z: e, r9 N% W5 M+ n& \
[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。& J& B. ~& B0 h! u7 `% B
通信流量包分析
$ w4 C' s) i& Z4 ~8 h, k% k1 h. l" y5 `( V" d5 S
[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析
) ^& A- f4 O! d2 p2 }  N[color=#333333 !important]% @' m4 f# \, p
[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。0 K6 d' I) [! Q4 o4 ]
[color=#333333 !important]05fanyi05baidu03com
( u0 H$ ?1 Q* {2 B2 T& j[color=#333333 !important]
% C/ k3 `  }9 d: z4 c2 t: g: q) B[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。
5 ~/ G& N( o) C- \2 o/ J4 C[color=#333333 !important]
0 k5 m: S$ i7 Y: `/ d# Esuricata检测规则(并未测试,仅共参考)
7 K( ^& N$ u  K  e2 u$ f" X0 \! X9 Y" X% A, q

    ( T2 T  ^( Q9 t2 {# B# U

  • + h, _. a% |8 }4 t7 F1 w
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
' u0 W  o. s; R; _6 y& N1 h0 C" H& i4 q' x
安装  I/ L8 r5 d6 y  W, j- O- Y
, F. ~# E* l* m7 S  q* U; W0 H( I8 `, Y
[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell
7 O- L3 S" X5 w" |- z! D[color=#333333 !important]下载链接% j& ^/ Q8 f9 M' c3 R0 _
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag
' C$ |5 ]5 e& Y1 T. m
[color=#333333 !important]提取码:t1rw: {1 U/ c" ?, X5 M8 S
[color=#333333 !important]安装编译. c% v$ x& F, Z3 ?

    1 l7 e! \; J/ j% L' t. V
  • & v, r' c2 |- ~1 K( E1 X' d3 a
./configure    make;make install[color=#333333 !important]服务器端
" p* V! Q; y! D) d/ A* Q& ?9 }

    + {  F2 e: W5 @! u8 T9 {; _

  • ) J' e% Q: l) S+ N$ N
server/dns2tcpd[color=#333333 !important]客户端/ R% R, b0 h6 u
      w- [1 {9 j6 w5 |! x) o1 j0 ?/ J0 m
  • 4 G0 N3 ~9 o* y7 \; z0 n- j, m
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载8 @2 f  S( |- q% ]
    8 J: E3 E8 M2 C" \) Z9 D
  • 3 l: R2 C1 t  M4 g0 C# H( O! S% b, R
dns2tcpc.exe实验测试
6 o, S- }/ a0 E# u. t$ _4 _5 l9 i" ~: i) s% J7 o7 W0 W" j  ]3 e
[color=#333333 !important]服务器端& c3 z# ~  Y4 ]/ M! }# U/ x' o
[color=#333333 !important]1.创建配置文件5 ^. a* _) d7 H# c

    7 m) m# f1 f! g) q

  • , O6 q1 [8 }% Z
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.启动
0 R) \+ o7 I' ~( O" `

    7 N# m8 G6 l0 @5 H+ k/ E
  • 7 z) |( z  z6 d1 B% s1 d
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接; i/ Y- j+ _7 j$ F; o4 Y8 c
[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务2 i% ^& t/ F5 p. W& W' Z
[color=#333333 !important]
) [! I( m# X8 r0 W6 f" T7 V
[color=#333333 !important]客户端5 d- W; }9 r5 F: y  Z& g% w
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 27 h2 m7 U  I1 C# D/ L" y, D
[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源
; w6 G$ p6 q- _3 B5 j[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP3 J: O( _  Z$ r& b; R. K
[color=#333333 !important]-l:端口! l; N  ?% g3 l9 l& K
[color=#333333 !important]-d:是否为调试模式 2 等级可以省略, Z3 y( U8 g& @& b+ [
[color=#333333 !important]
3 o* e# j2 `5 h  `  D" P- ?' x[color=#333333 !important]客户端使用访问服务器
1 q2 j4 q5 f9 K. d1 Y[color=#333333 !important]; k' V) K  }, p2 e- V
流量包分析" }) N6 V6 r' S7 o
( P3 c/ e) V! M. e
[color=#333333 !important]建立链接并未产生通信包
. u  E' I% S' Y% P9 ^" o+ h% U[color=#333333 !important]8 f0 k, m$ K! {  q+ m3 I
[color=#333333 !important]使用ssh访问时,才会产生数据包$ r5 c! X( u1 l7 ~6 O* l3 I
[color=#333333 !important]
( o# v6 ^0 G% ~( q7 G; T) ?$ i[color=#333333 !important]数据包分析
+ _  ~" a; s0 G; T( \9 L+ s+ [5 ^- t) ?[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中' o, q  e, r; A
[color=#333333 !important]6 \) `- i3 |) x
[color=#333333 !important]
/ ^* w( ^# }& |  I$ z[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。( \" Z  j6 v4 v3 s6 j
Suricata规则检测(并未测试,仅共参考)
; l2 C3 D3 y  ?0 S2 Y- J0 H% T# o% A+ c/ E3 H) [) e4 T+ e+ V
[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测0 [9 _! C' h1 y; O) T# n& l

    : @3 F7 x$ W/ Y+ Z6 P1 \- Y# {
  • / f3 }/ a" Q) }% E) x
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]结尾
+ [2 }# c0 T8 v" t- m. c: Z) C) k[color=#333333 !important]小白水文,求大神放过- \1 s5 Y8 v0 U* m2 o
[color=#333333 !important]pcap包下载地址:2 `4 H% Y) B" ]+ a5 Z: `
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw; e# _) L' {9 O- w: u( l- k. f* h# T
[color=#333333 !important]提取码:n5ha: a2 K; b  x- }# a. w
[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载  {& u* U* Y$ L( E7 @$ m" `

' V9 m$ C. c3 h  @3 C( N精彩推荐
! |" C3 O4 `3 Y7 ~: y6 Q9 w; p( S' m- k$ V6 v; s9 _- K

  n- H# M) Q, K% b- O* G+ q/ Y0 h
- {4 _- a1 P" P, N! U* J1 C& S
+ Z" `' c0 V) z0 i: k5 i- ]2 v- d1 W+ K

& v2 Q' r+ o+ B/ \来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=1
) @& g7 i9 G8 p  _0 B免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-16 06:13 , Processed in 0.053667 second(s), 27 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

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