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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7690|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道
! h7 _. S& c2 |! z2 }: x9 k! s9 ~  b+ U
[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。
. L1 D; n: o0 x2 D实验环境
) d. W: k% K! H4 k1 {# B% \9 K9 l& ?' v3 ]' X% K
[color=#333333 !important]CentOS Linux 两台
/ N% ^) d* m4 _% _+ m
创建DNS服务器
: Y0 ?% y, j& O4 v& O+ Q" I( m7 F0 J& r7 T5 k  p2 M+ f
1.安装bind
, @5 U# @0 s; p0 j& F6 E! Q2 A5 @3 ?+ M& V' H
[color=#333333 !important]yum install bind*
) n" j8 y  B7 q, C1 K( K0 j" `
2.配置named文件
7 I3 b: o: r# i" u( g2 y/ d, I$ d  {1 ^2 [; B
[color=#333333 !important]修改/etc/named.conf
3 E$ S5 y# U7 E: g5 Y
[color=#333333 !important]将下图中选中的地方改为any8 C% Q: E0 [4 X1 J5 E
[color=#333333 !important]
% b: z: T$ J. G4 C+ }5 Z3. 设置NS记录,A记录
2 i1 U6 K+ w5 a1 `0 i; ^4 X9 t  ]
[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件
, f, g& S7 ?  q; h( `4 R! w
[color=#333333 !important]
4 W# p  N( ]' H
[color=#333333 !important]增加正向解析记录: y8 Y* q* J3 v+ C* o* n" A; g
[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字
1 {5 I+ N! M& D. t" e  F4 R: P4 T
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel
% i7 W% r+ ~! K) Q" t' ?
[color=#333333 !important]修改文件如下' D" y+ _8 M; y0 F- D0 j( N5 l- R
[color=#333333 !important]添加NS记录,A记录+ H( A$ L. Y$ g
[color=#333333 !important]% g6 {0 K- i" Q
[color=#333333 !important]添加bind为自启动服务
3 A+ e' ~& X$ J
[color=#333333 !important]systemctl enablenamed.service
6 h( F, B1 Z8 \[color=#333333 !important]systemctl restartnamed.service  e/ v$ T$ w7 L
[color=#333333 !important]查看启动状态
( {1 d" l5 d/ m
[color=#333333 !important]systemctl statusnamed.service5 _1 U, x' T) l! x4 c8 v
[color=#333333 !important]
- f# d5 j$ y7 P  h[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)
3 x' f) l+ E  |) B% zIodine
1 B' I/ W: _/ D
( G  A  g/ v1 |# u2 q[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。
$ U2 Z9 ~$ F1 U+ a7 f$ `7 h安装
$ @- W7 H! \" D7 F7 [# ?* K) j6 s$ D
[color=#333333 !important]下载地址:
9 s* b* o  M+ v8 e8 O3 n
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip
# o1 b& @0 s: j8 V" E- P
[color=#333333 !important]unzip 解压
! U* i2 c* j" w  O. d3 r5 |[color=#333333 !important]cd iodine-master
6 _6 z5 ]# |( h1 o- d[color=#333333 !important]make
, O$ m# X' n: d5 t8 C5 I[color=#333333 !important]出现报错
' W, K5 |1 F. M, ^8 q/ j% ~[color=#333333 !important]" L. N) P8 b; n6 J# _4 r, K
[color=#333333 !important]yum -y install zlib-devel
* A) L" k% k$ g: y6 g[color=#333333 !important]make;make install
6 {4 x. f" c0 T7 p; Q[color=#333333 !important]安装完成
- Q: |% }* g7 ^  F- E+ w[color=#333333 !important]进入 bin
+ e3 x# D, O( Q9 K) M" g[color=#333333 !important]iodined 服务器
+ {0 i! Z7 r6 \$ ]7 H" F[color=#333333 !important]iodine 客户端
: R* y# }# d- T- P实验测试
! O! t' B4 c$ k& y- N6 J# Y0 }& A9 P2 d& t; C- h
[color=#333333 !important]服务器8 j$ C$ }- N: A0 q
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com4 ]) X, g1 n' _! y( |
[color=#333333 !important]-f 前台显示,运行后一直在命令行等待
1 t( P3 B  Y( p$ u3 z. F[color=#333333 !important]-c 中继模式|直连模式
; ]5 w# k: _6 e& T# m1 U[color=#333333 !important]-P 认证密码
9 M8 l! j* ^8 o9 z" K( I
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。, T" w1 T8 V( N2 H
[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。( N! ^+ F5 i  d" A/ Y
[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡) {, `7 S& x7 H% B, B6 W) p. b
[color=#333333 !important]
! q# }9 Y6 z) p5 o" o& u" F[color=#333333 !important]
, M9 _4 [8 f. _3 f[color=#333333 !important]客户端
1 P8 F( ?" Q: R" d
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com
; h8 s  g6 N8 S" C& f+ _[color=#333333 !important]-f 前台显示
# e+ Q# W) u( ~8 r/ _$ ?2 I[color=#333333 !important]-P 认证密码8 h9 ], W) X2 h/ J6 X
[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析6 @( t8 X- b* C9 ^: \
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。
. f0 q5 n' T& X6 m$ O- |[color=#333333 !important]
& M) c, Y& T6 }流量包分析
/ l2 e4 ]5 A$ d4 V7 s& [& T  F. g5 b. ~2 }+ Z3 ?
[color=#333333 !important]抓包
4 h! d" J: p; q" [6 _[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap
) u; D# n( Y) O$ Q* e
建立链接的包分析
. e! x' R# ^  w$ c1 c" e1 H5 u
0 T+ S  H; V( }) h' |( `[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包
: S. L! d) W5 h5 d9 `3 M3 o% R8 d[color=#333333 !important]6 ^) p$ |! i6 W" P: C
[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀1 S9 j* A  Q& }6 r  {- G, h: ^
[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据
6 H5 e/ ]( G# g' x[color=#333333 !important]" g2 c- e+ Q- {4 Z, M4 d( t
[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节)
$ [6 }8 M5 Q7 r# R, Z, D[color=#333333 !important]* E5 S# m" J; Z9 a; U* E
[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。! t. m! H- s5 ^4 m9 }
通信流量包分析9 Z# N5 C! y0 o( S

, u  T$ r  c6 v* v$ @[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析2 F; e7 t- C0 j/ e. @
[color=#333333 !important]9 q- L; _1 q: m! a' q9 Y6 S
[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。
/ F* K1 H" _, {. k, a% [% Y2 f' S[color=#333333 !important]05fanyi05baidu03com/ O+ N7 ]9 l/ W& ^
[color=#333333 !important]$ ^# C2 n4 L* F" }" o& H7 o
[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。
2 q; E, C% J! x" U[color=#333333 !important], I# ^% o8 I- Z0 X/ v* G
suricata检测规则(并未测试,仅共参考)
, c0 k  ~$ V- W  s* `% |' b$ X( W* O9 C6 O) e$ d- c$ x

    : m7 x; }* h1 `8 n6 G+ u

  • 9 r5 P$ [( X5 u0 i; A7 f' R' @3 J
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( t$ w( K  J, i" p% _7 ~

" b. ^! T1 q& `- A8 {4 G/ p安装  V1 p8 A: c/ s0 Y( \4 q* u6 M

& t# a" c% u% g& c[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell
+ m7 c. d0 h% \4 R! j, n( }$ p$ d[color=#333333 !important]下载链接
) u0 I9 G0 p( }' H# r
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag
; \" V% q9 {( w6 E
[color=#333333 !important]提取码:t1rw* }9 z- L' l# P' K  y: j
[color=#333333 !important]安装编译
7 `8 J* Z( N) @% R0 k2 ?: O9 T

    ) H6 n# f' _7 M0 \% A

  • % Z" ]  o! M7 A  ]
./configure    make;make install[color=#333333 !important]服务器端7 d. Z2 J) j% O5 j8 Q4 q, G. f/ O

    ( V. Y$ n2 z- \& m1 m: O

  • 7 X! D7 [. U7 K3 d$ @2 r) T
server/dns2tcpd[color=#333333 !important]客户端
2 A- T& t3 t) z$ z9 W
    8 Z- g4 r3 p) O

  • 0 T+ z9 I6 j4 Y3 D1 d
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载" }5 d( p7 U. w1 D- P8 b
    6 r  T4 j  d$ `& ^1 R& e3 c
  •   o  }- B) T6 F, H, B6 T
dns2tcpc.exe实验测试! x: a" m+ R5 \' G6 g

8 D' N" `1 `. V2 _. o[color=#333333 !important]服务器端
" v) E% @2 r- _[color=#333333 !important]1.创建配置文件7 N' S) u+ r4 m  _7 G, ?) c
    ) J6 L4 }0 F' v& [

  • 1 c/ h" S0 f2 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.启动: d8 M: F1 N! e" @6 o% S% t
    " P3 V0 {+ P% X4 i

  • ; l2 k4 x0 O! g$ a4 S
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接" D) k3 Y9 w3 _' h# a4 r, Q
[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务
  T, v) x0 \- k3 O! G
[color=#333333 !important]
6 g6 T, b9 C2 i+ U- S( K+ F
[color=#333333 !important]客户端8 \5 |, o2 h; p3 @5 q7 @
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 2
, @' I! i. i8 P* ~- D, {. _" {# T3 h[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源
: I: t# j# f% \" q6 G% Z[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP
  V4 t/ s, n  F[color=#333333 !important]-l:端口
" Q! Z& a2 X1 H9 Q0 c( B' M[color=#333333 !important]-d:是否为调试模式 2 等级可以省略
% E4 b# ?' u4 p# d! f
[color=#333333 !important]
; A) Z( ^/ n1 `% l[color=#333333 !important]客户端使用访问服务器
+ C0 h3 c1 g6 i5 z; p8 o8 v0 J6 i[color=#333333 !important]
  D' u8 g# ?' l/ d( k5 i; {( ~$ p6 W流量包分析' N! A( [2 i- J0 O3 X+ |5 C; `5 p2 Q
. h5 K. Y& z6 J. S
[color=#333333 !important]建立链接并未产生通信包
4 L- a5 p0 q) U" u, j0 B[color=#333333 !important]: {! _( W: k# Q/ S* R
[color=#333333 !important]使用ssh访问时,才会产生数据包
% ~- f3 S+ g& o" ^[color=#333333 !important]
- W# x, ?' X: `' b/ B0 L[color=#333333 !important]数据包分析
% U+ x+ z3 o; j- w) w[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中9 o) I$ l, e2 J& ]# ^/ f# c
[color=#333333 !important]
3 v! H" c$ Z8 r[color=#333333 !important]7 K0 z  x* x3 u, C$ {
[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。5 ~2 q; D3 n% z: c2 o3 A' v5 z' v& w
Suricata规则检测(并未测试,仅共参考)
/ f2 w6 m# j9 ~
4 F, J/ ~% }; n- m8 J6 f3 h( U, e[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测
2 I; ?. F* k# g3 h

    : m% Q3 m% c8 w3 j8 R; D$ K3 `& H5 Z
  • 3 i1 O4 R- N. ~; V. D8 ~& `
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]结尾
* r) v! Q1 x9 }: |5 i2 U  w$ j[color=#333333 !important]小白水文,求大神放过
- d/ @2 a- p2 B3 f4 a! f, \[color=#333333 !important]pcap包下载地址:
/ G$ ^% x& o3 A4 `0 p
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw
+ g, V6 V. {: K8 v" D0 L
[color=#333333 !important]提取码:n5ha
) C: M9 I7 Q8 l' V1 e" S. e, h[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载
  v: p- x- a4 b7 j  `( M+ R7 Y8 W+ [& v/ h+ t) k
精彩推荐
4 A1 Y. M8 V; Q2 C8 A( R5 E0 P: U" B/ T8 J% F) e
. e& T+ f4 e# S0 L& D  ?6 p
" u. s( t8 R) Q# a

( a2 ?) q& G3 L6 b0 t' z+ Q7 Q$ w: [5 `2 m
4 r: ]7 p+ U$ ?  P2 Q5 z( }3 \% k4 Y& c
来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=1
3 y  |- \; h- Y2 x/ E/ g: U免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-15 13:26 , Processed in 0.055991 second(s), 28 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2026 Discuz! Team.

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