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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7656|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道
/ y, x: L' `& \, P! g8 N8 s- v, H; K- h' ~
[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。
% S# M8 u2 r& z" c1 {" E实验环境
. ^9 S9 d7 @% T1 e5 _. `/ o
3 C0 t  ^9 C+ z" n9 N
[color=#333333 !important]CentOS Linux 两台% E- J5 ~) }. G! u! k+ X( ?
创建DNS服务器- O& P% q% p2 R' f9 i& D( p

0 t( p. O* K; x* P% D# u1.安装bind. Q2 i% o8 q' J( L, {

8 m) i. H2 w( J5 }
[color=#333333 !important]yum install bind*
3 D* J, U" O+ {
2.配置named文件$ C& n' D" u- j' v0 Y% O8 u
$ h- w, f$ v$ D8 T& M) H0 V. Y; U
[color=#333333 !important]修改/etc/named.conf4 ^# C! o1 v' Z) K% T+ z
[color=#333333 !important]将下图中选中的地方改为any5 d, w" u. U/ I+ i; k  W7 Y
[color=#333333 !important]2 {9 Y4 x7 g& V  Y) v
3. 设置NS记录,A记录0 u. V' \: Y. B: a+ s8 A

7 z5 x$ D; p/ H# }5 n: V[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件& p+ n% L5 L8 m0 L+ }# @
[color=#333333 !important]
9 ]0 n8 T% f) O. l0 G
[color=#333333 !important]增加正向解析记录& q+ N' }- p6 N2 I5 E; O& [
[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字
2 @, j, ~! _: n
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel
" h! H2 y. y" `( @
[color=#333333 !important]修改文件如下
( r: p! K2 Y0 t8 H, a[color=#333333 !important]添加NS记录,A记录
; O8 X; J) o- D[color=#333333 !important]# p0 P0 g; ^  i2 |' v
[color=#333333 !important]添加bind为自启动服务
. r2 j! g, l* S+ M3 |! c& g& e
[color=#333333 !important]systemctl enablenamed.service
( X8 f/ M& J0 i% y  X[color=#333333 !important]systemctl restartnamed.service- V6 W% L: K  G7 _
[color=#333333 !important]查看启动状态7 H' B8 _& {1 M/ x, y
[color=#333333 !important]systemctl statusnamed.service' V' {9 x+ W7 S9 V! k
[color=#333333 !important]
+ ~/ z* I* D9 p' W9 {+ ^. a[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F), N" t. B) Z7 N3 _2 p- j5 y
Iodine
# P' K5 Q1 Q  ^
; J$ x; \9 [0 `# F6 ^0 b+ E4 y[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。
& H% f3 F; [  }( L1 [$ O2 i安装
" t; r" C* w2 l! X  g
$ a8 K! l! J1 a# D3 U[color=#333333 !important]下载地址:* ^( {. o! L8 @, Y$ O) `$ n
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip, E* }2 O) L* L( [! _: S
[color=#333333 !important]unzip 解压
0 t# p( j3 Y, H5 s2 z( z0 j$ `[color=#333333 !important]cd iodine-master# W' p3 |0 |5 {- S/ L$ q* A
[color=#333333 !important]make" R2 u7 G4 w- y, {: ]1 a5 \9 E
[color=#333333 !important]出现报错, x7 y0 Q2 B/ Z: v2 g
[color=#333333 !important]
( Q# j( P% b; {% z$ F[color=#333333 !important]yum -y install zlib-devel
1 ?8 q% @# Z1 H, |5 q  N( l[color=#333333 !important]make;make install, m8 u$ x' F. A  m  ]9 K
[color=#333333 !important]安装完成! B8 G% ~+ y4 |6 w* j" c
[color=#333333 !important]进入 bin  Y; q% z) [) F. X* H( T( h# e
[color=#333333 !important]iodined 服务器
+ ~' X$ G6 |' \; i# Z  j[color=#333333 !important]iodine 客户端
. ?2 r# ?4 d; f实验测试5 r. p: P4 }/ r, P0 S4 q
1 C2 }/ G6 C+ J0 W( x6 Y8 X" D
[color=#333333 !important]服务器( m6 q; M' B2 t
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com
2 S1 i" I$ M8 ]3 U1 B9 Y8 u[color=#333333 !important]-f 前台显示,运行后一直在命令行等待
. ~4 Q. _$ N- H% I9 Q[color=#333333 !important]-c 中继模式|直连模式) l: f+ T; Q1 u* k# K3 l
[color=#333333 !important]-P 认证密码
, W1 n) c' c8 X( B, b5 `  B
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。
/ W5 B& h1 @' Q6 H[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。% h7 X. i- Z: L+ j
[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡/ \+ x; ?' x0 K; o( H. Z
[color=#333333 !important]
, {) k# B" H- e, ~! |+ e[color=#333333 !important]
. W/ h" x4 l/ D* w% M% u. F4 L2 g- k[color=#333333 !important]客户端
9 E6 E; J# c' R- G5 @% \7 `
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com- j$ L/ D9 ~) n% S7 J
[color=#333333 !important]-f 前台显示2 Q/ U# N& a* N: v8 n) d3 k
[color=#333333 !important]-P 认证密码
  u5 m$ l4 F! d' J[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析
5 H) v' Z  u% g; t/ a6 v
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。
$ ?2 b/ h) _) T9 w, u- J[color=#333333 !important]* I" n1 m% ], \! t
流量包分析. `0 u# f+ ^1 N( u) A

2 t9 o% t; N$ |
[color=#333333 !important]抓包
" U6 v7 k  W/ ^[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap
7 s- Y1 f2 z1 J7 b- y+ g
建立链接的包分析' b  u6 {" T+ T2 b- i
5 d. ?7 e; e/ E/ D. F
[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包* T! T! o: _! ]+ _% j4 x; p7 t4 V
[color=#333333 !important]/ C( `" [1 [# f
[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀
' Q( R8 o- M. r; ~# l[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据6 ^7 L. b; V1 p9 s  j  Q# y, ^( A+ l
[color=#333333 !important]
; L) d& r$ z% L# e$ O  {- s[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节), p( o; Y; X2 t( l' K0 r% d0 w
[color=#333333 !important]
6 e% t* }9 H0 f0 z[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。& c1 H6 Y9 u3 J& E8 g; Y: H3 Z
通信流量包分析. I9 a; Y6 F% K: y
* G9 d# A. C- u! h0 k
[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析( D. X) b! w3 J7 K( j
[color=#333333 !important]# H. X1 s' O& P8 @
[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。
' ?7 Y4 X" h# E: a2 \. a% i/ F[color=#333333 !important]05fanyi05baidu03com* M: @5 r  X5 q, g
[color=#333333 !important]
5 q$ q" u& c' X[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。- C, ?; k9 K% Z/ E2 A
[color=#333333 !important]) z$ a$ b5 ?' f0 y2 x% G
suricata检测规则(并未测试,仅共参考)
1 V4 ~; P$ f' `. k' K
# z6 s, C6 {0 w, Y0 n# Q% h
    ! H1 p1 t* o3 H4 b1 G7 o
  • * q4 t" R% f4 L: r
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
% C0 P1 E  x* B; Z. \" ?& D* d, }$ Z" S+ E, f* F/ {7 g: j
安装
0 O$ f! U1 ^7 C0 ]" v) l
9 M0 }8 B) ~9 V% b$ K[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell# _  C6 {7 g6 h8 u
[color=#333333 !important]下载链接
& X& O+ C3 ~3 R, }) p. @% {
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag
( A! l% G/ {- j
[color=#333333 !important]提取码:t1rw# \0 q; w1 y2 Z0 I  x
[color=#333333 !important]安装编译* i) g  L" [% ~6 Z* q* P! z( L, v

    8 |5 ~; q* j, s" q, C
  • + G/ V3 q" k8 f& T4 |
./configure    make;make install[color=#333333 !important]服务器端
& X, @, i6 P# ~% i4 N- w$ k" m
    # j) {, T. s/ n! [2 T2 W' V
  • 8 _2 r1 [! O9 d. B; d5 C% Y8 f' d
server/dns2tcpd[color=#333333 !important]客户端
& q0 q7 Y. N# T
    ) O) C6 l: Q' Z% ~$ j+ L
  • . `8 C4 N" x; y
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载- L$ I9 w& u. E* |  j

    8 I$ s- [) U# g' E1 D

  • / r  Y; O! B) q0 [/ }) g% t0 M' G
dns2tcpc.exe实验测试4 ?) ^! c4 m$ X9 L  U

* j5 u  w8 J- [* o/ j" F[color=#333333 !important]服务器端
6 R% p  m9 i6 n- o[color=#333333 !important]1.创建配置文件
- v7 g- o- `  H& T( |

    7 a8 \- v5 B: t' C& B

  • 6 ^( ]7 I# G2 X6 V# C
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.启动
# z* F, v" s8 [

      C& w( _$ n  C9 u4 S
  • 3 B3 c! f$ ?4 }
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接: O' U0 @* |/ K
[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务
; j* M% M" o" {" ?" c
[color=#333333 !important]

( B* b# ?6 d( a[color=#333333 !important]客户端
: Y/ E# K% ^) z) E' [5 w5 e, N
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 2+ M3 V( y2 X( a7 P5 k/ D1 b9 L1 @9 c
[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源
% y9 E+ e" w* j/ W0 s% a[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP
  Y! j9 J9 n; x$ [[color=#333333 !important]-l:端口; w7 t2 X/ F5 O5 ^
[color=#333333 !important]-d:是否为调试模式 2 等级可以省略( ^/ C& ]& I( ?  C4 K
[color=#333333 !important]
$ p2 q0 {/ A7 `8 `! v[color=#333333 !important]客户端使用访问服务器
: o, E( Y. J9 f$ o& x! Y  u[color=#333333 !important]2 e$ Z5 Y# t  l( H# H" U
流量包分析! P5 q, R; X# G* s: L  D6 @
, n) o4 {5 U& q. Q, ]  @* j6 j
[color=#333333 !important]建立链接并未产生通信包( Y* M) `- }4 S! l1 U' S# r4 e3 l
[color=#333333 !important]
& E1 q  C. m9 R1 f9 T; C; E. T+ f( w[color=#333333 !important]使用ssh访问时,才会产生数据包
, O  k- K9 S1 L: ][color=#333333 !important]! Z% S% T: W. s0 q% X7 u- Y( ]- |! Z
[color=#333333 !important]数据包分析
8 B/ t: b) X, B  ^[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中
- h& M) u# Q0 \[color=#333333 !important]
6 N6 {/ @8 h& @# C, c! b; g[color=#333333 !important]
( Z5 l, Z! i! k1 K5 K8 z# X1 L[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。! ^% R: t) o# d* z) W
Suricata规则检测(并未测试,仅共参考)  v2 s! y" ^3 l- A0 x3 v% ~$ p" a

, `, Z5 Y3 L5 w5 j# k/ G) V. n[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测
% u) k& V$ y9 T( i2 g6 \$ j; B' b
    # ^7 c9 q4 x$ Y1 X* ]& \! o
  • 5 w* _0 b1 \- R% I+ G
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 F0 V8 A: c* p+ K[color=#333333 !important]小白水文,求大神放过3 {. |% H4 K& Y9 X  h* |
[color=#333333 !important]pcap包下载地址:
" B* V7 J) ]6 D. W: J0 f
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw' y2 Q; m: @9 p, J& L, \
[color=#333333 !important]提取码:n5ha! z; x7 Z6 X: z* R+ l* [' v( t( b
[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载
# J3 p8 i( I5 `; W
" n1 b6 D! l5 L精彩推荐8 a$ S) L0 ?& g) R* j

& L, v1 \! s) u2 O
: O0 P9 ~& B: o) t1 W1 x

+ r/ _; U6 n6 N' r6 C- k
# Q" W7 L! O9 g; A4 }% \" g1 P0 c* f4 x# U: o
& Q, r/ ]! ~4 f' R% m
来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=10 N6 a1 z0 M2 Z  `/ ?
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-15 23:03 , Processed in 0.042024 second(s), 26 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

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