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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7648|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道
- l4 h& R8 u# ?6 X6 W! c6 z
& W# W3 @8 A/ X* Q) w[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。
1 f8 V5 `. L- ]% |. ?实验环境, a/ `- B" }2 f2 x  q7 U

: g, _& k0 K. c; L/ s% x# I& E6 R
[color=#333333 !important]CentOS Linux 两台
$ d: v; ^! F! }; n: Y9 l2 w2 s' g
创建DNS服务器( h7 s2 Z" ?" g) i4 ?

6 Y: a, v4 z4 y1 V% x* X1.安装bind2 i/ H9 J2 f8 ]: r

5 [$ b& q7 b& y8 G: D, x5 w3 m# M
[color=#333333 !important]yum install bind*
9 ^/ y" W1 W+ ^& q: l1 \- k/ ]; a0 K
2.配置named文件0 \' e5 O* b  H& a$ L

, e1 I$ ]+ s4 F8 V
[color=#333333 !important]修改/etc/named.conf
2 }# E  c+ a4 f. J, @/ v
[color=#333333 !important]将下图中选中的地方改为any9 a: ~' E! V3 Q3 \. P
[color=#333333 !important]% s6 _( q5 ^! @. \/ l
3. 设置NS记录,A记录3 {/ Q3 L: p* g
- D8 ]% ]( `# c3 B0 N
[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件
/ O* [1 Y% H8 B3 @- p9 l* ^# ~
[color=#333333 !important]
$ e5 n; E& V7 Y" h
[color=#333333 !important]增加正向解析记录5 s5 ?" X, A4 Q, ~
[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字5 F' \6 w: E3 V
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel
9 e. u; q4 g! k* j2 c; k* f# [
[color=#333333 !important]修改文件如下
: L, F) V% L# y: z) R& W- V[color=#333333 !important]添加NS记录,A记录9 D! u* a7 o9 K8 q) O
[color=#333333 !important]/ _) C8 R6 L" g9 B1 F/ ]/ i
[color=#333333 !important]添加bind为自启动服务
4 _" u: ?. E: S3 ^+ B
[color=#333333 !important]systemctl enablenamed.service
! Z- e, m" Q7 N/ J. [- w[color=#333333 !important]systemctl restartnamed.service
9 ~2 b( _- V4 v( B' m) W+ M" j
[color=#333333 !important]查看启动状态5 r7 L! E( o( [5 J4 A/ |  Z, k
[color=#333333 !important]systemctl statusnamed.service
4 z: v4 r9 ?/ [0 M7 v7 q: ]
[color=#333333 !important]
3 w( h: A( m  M) A[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)
& \7 D8 \- \/ a8 [Iodine: l* ]- W, U4 C0 M4 v8 T
* ~* u  ^6 y( u0 I
[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。; d4 y1 T5 K: ~' ?! C9 N5 a" M
安装  |% L: ^* D% g  @% ]& I5 D1 n' J

$ B. f4 _: o# \" |* X5 a  W0 b[color=#333333 !important]下载地址:
4 e  u, E3 i1 c3 |) T
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip- o/ }  s' I% E3 Y: p& a# B
[color=#333333 !important]unzip 解压
+ n6 d) O4 I& |) [, V- q[color=#333333 !important]cd iodine-master
6 A6 N1 `& b9 y- W& m  z[color=#333333 !important]make# c% p) Z5 q# [. e
[color=#333333 !important]出现报错, l9 ?/ |' F$ A) T, q8 H
[color=#333333 !important]
) i+ o$ \' M. u  ]; R7 L) {[color=#333333 !important]yum -y install zlib-devel
9 Y! N: B4 e% R- g1 w- X4 @[color=#333333 !important]make;make install& v4 z6 M$ V6 w! I" O
[color=#333333 !important]安装完成4 }  m5 }4 w* }1 `
[color=#333333 !important]进入 bin& w% }) }6 p' T1 q+ g
[color=#333333 !important]iodined 服务器
, s7 v9 J1 ]& Y4 {[color=#333333 !important]iodine 客户端
: G! w: b; i2 M! U, C/ |! n实验测试" C1 d6 r2 n/ F+ k' ^, ^: d

7 X+ @. l6 V) V! e7 n0 U( b9 ^8 x[color=#333333 !important]服务器
+ W' G/ |% U2 L5 N3 U
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com
) T( i' b$ E0 e7 L3 M( ?[color=#333333 !important]-f 前台显示,运行后一直在命令行等待3 R1 B% ~" |# c+ j, c% G6 m8 _
[color=#333333 !important]-c 中继模式|直连模式
/ x/ k; C5 m. C0 a/ F. M[color=#333333 !important]-P 认证密码
* f( J" J* v: H
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。
1 p4 {' ]1 p+ B% E) d( r1 p8 H[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。& u7 f) `2 a( ~% l. o$ k
[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡* b3 _1 q* k# [) q5 }/ z' |% y
[color=#333333 !important]- o3 A+ P8 Q( y5 x) [0 F: H" G
[color=#333333 !important]# ]9 J$ @( a8 `
[color=#333333 !important]客户端
! f* N" D7 \( T: P* z# f8 Q+ i3 \2 t
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com4 F5 ]) b  Z7 C- d
[color=#333333 !important]-f 前台显示
% r4 `* |, V: l& b# u- [4 I[color=#333333 !important]-P 认证密码
# u+ D# Y2 ^! A  B& o* U9 a[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析
; V0 k7 s$ ]9 E, l" f" N
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。
4 Z  L2 R+ O3 X' w[color=#333333 !important]2 ^3 U* n: H' X- C) m
流量包分析: E% T, U  ?7 H  ~+ F% ?

# ~' Q9 h9 T- q2 m# O9 q) b
[color=#333333 !important]抓包' Z& h3 b( p# v9 {
[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap0 k! {% l( N6 z5 |8 U. w; m
建立链接的包分析
& X3 o" X) P) i: @! ?6 q" z: s
[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包$ o% l) Y; {8 T4 W0 {: J& x
[color=#333333 !important]
! t/ S$ |3 G" U6 m- n0 T9 ^[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀
- {! H8 r# `; s% y! j9 }[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据% M  [, K+ U5 Q" m3 |
[color=#333333 !important]
$ M# M! g3 W/ ~3 t' l, A, K: Y- y[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节)+ F, H  y$ O% G0 g. t. q
[color=#333333 !important]
# a" }0 H& K- Y, ?4 ?7 Y  ~[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。
  }, h) L: m2 f通信流量包分析$ Q5 O/ ~; o+ E' `+ F/ ]

. B$ u( b( F  b$ B, J8 g[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析
5 T- P+ a- L( D. z6 ?0 |[color=#333333 !important]
" I, `: E3 x7 Q6 }' n, L[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。7 H2 {' U$ r9 m7 a9 M
[color=#333333 !important]05fanyi05baidu03com
4 A! `' E0 ]* O1 J5 n3 h[color=#333333 !important]
# c  u' T( q& }[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。
! v8 V1 H1 [; f) {5 u3 W8 x7 @+ ?[color=#333333 !important]
3 S! O& m2 ]' H% u1 ?suricata检测规则(并未测试,仅共参考)# z( l  Q* }3 I  K! @+ w" y

+ U; L! a5 {, ~7 u% i
    2 s) G1 t& a& y2 M  A7 u
  • * e; K8 G2 O, z& x* h
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
3 ]  @9 C. a6 _- K' _  p9 i7 P" k$ H& v5 b8 {
安装
' h# Q9 p; u( w8 S# C+ d. x
3 s# K/ Z' f' l3 G# E+ B' e* \: U[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell
. L; o+ \2 [+ f- `[color=#333333 !important]下载链接
' e  w7 r: x/ |, e0 f5 H& a6 x
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag; z$ c/ k( w2 D. \
[color=#333333 !important]提取码:t1rw* Z1 C- W7 `; _( r
[color=#333333 !important]安装编译$ g0 i( @  b- n

    6 ?& ~% j5 t3 U6 s

  • 3 H, t& X, E3 h3 ~- t/ ]/ H* B9 B
./configure    make;make install[color=#333333 !important]服务器端6 r& ]- S: P$ O9 h: V
    $ `2 W: {9 I) \( |" b) {

  • $ z" B3 i6 e. C9 M* L
server/dns2tcpd[color=#333333 !important]客户端
, X  h3 Y1 F' R' h
    , G- ?+ i2 ~7 R8 Z7 r4 q" K* [

  • 4 F" o. {% C& M3 ~
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载/ n8 J8 \- Y" \2 N- Z% d

    9 k9 ~+ I' r  U" H, o0 H
  • ! m% K/ s% g: Z, }9 X  q: t& H
dns2tcpc.exe实验测试
8 K* R+ B' \( n4 B) }4 t7 R3 v7 q& b% J  W9 O; u( Q, i* S
[color=#333333 !important]服务器端
+ S" |+ h, M( M  N/ b! D[color=#333333 !important]1.创建配置文件3 b" u, `+ w* F5 ^9 e3 ]

    / m9 P8 q& ^7 E& m. S

  • 4 y, n3 j) G# v0 Q
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.启动
2 R6 t' O2 ^  ?% g/ A" M0 f

    3 {5 ^9 C  s4 ]3 y( H
  • # B1 A1 e+ e/ J) H
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接9 v* k# Y( k. ?: X5 @7 z; i
[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务
0 l; ?4 \4 V# O8 o# I4 S3 s- _
[color=#333333 !important]

5 r1 ^% i$ O& L; r) }[color=#333333 !important]客户端1 \3 c1 p  ^' r% f. n7 o
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 2
; g3 l5 t. S$ V0 `[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源
$ D: c9 Y" r4 _[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP
3 @. z/ ^$ F6 T& R) l[color=#333333 !important]-l:端口
. w$ ~% n: `: u! i, ?$ A- t[color=#333333 !important]-d:是否为调试模式 2 等级可以省略' A% ~0 J4 x1 }1 u3 g7 G% F6 P: w
[color=#333333 !important]
# j( O$ h0 r3 z3 f, G0 O" K[color=#333333 !important]客户端使用访问服务器
0 k# P" B7 }+ I0 i/ y) T[color=#333333 !important]8 ?; t- S7 \, c. a" i$ E
流量包分析
5 }1 R$ {% z/ `& z" f
: r/ _1 ?1 s  W# k[color=#333333 !important]建立链接并未产生通信包
/ ]) S; G. [" O( A* f[color=#333333 !important]
1 V& L# {0 w& C" }* i% j[color=#333333 !important]使用ssh访问时,才会产生数据包
* \4 V0 m: Z& x1 K/ |8 _[color=#333333 !important]
6 y9 m6 E/ B: Z# w' j$ w[color=#333333 !important]数据包分析
9 F: j5 g) G5 K3 }7 H+ e[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中
3 a6 j% T/ S9 a# [7 J+ k. ~[color=#333333 !important]& H- |# C" r& |2 w  z
[color=#333333 !important]. y. w4 @( c* q8 \
[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。
1 h8 s' P9 L6 W4 ^Suricata规则检测(并未测试,仅共参考)
5 G4 U) ^: N4 C1 N- L
7 T8 |5 B8 y0 F6 y% N[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测
9 I6 q3 ]9 O  C5 p. e  j

    / ~5 g" N/ V6 [! p2 p6 |- {, ~6 H

  • & a3 Z+ F  ^! M; {: K9 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]结尾, l4 `' \* H; A. K) M
[color=#333333 !important]小白水文,求大神放过
% G+ S  a! k' M! T7 W[color=#333333 !important]pcap包下载地址:
  ~6 Y* M; F8 b6 Q7 k  o; U
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw0 q& p: L$ S% J  r  @
[color=#333333 !important]提取码:n5ha% Z: {5 f# o8 h/ {  S
[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载
3 a$ d* c' v, t2 i& Q' i- X
4 @) d3 ?* P. k7 U+ b' D$ ?精彩推荐) h# t" K  n, Y: J$ ~

$ g, f" A9 T/ \8 d" t

+ |) P/ @* I- m  K' c$ |/ v1 c, h$ S
- r8 y2 A! n6 G# @! X3 Y. C' B5 x8 t* I6 k6 R2 U4 g

/ u- C3 B/ J, l, _5 O# [8 |7 ~$ I  V% n% R
来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=1& b* F, D# J$ r3 e6 V% ~
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-20 17:50 , Processed in 0.055891 second(s), 28 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

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