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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7566|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道
8 D; I7 M+ w3 w9 q1 Y8 F0 U" Q, y& Z. M" r  k! R
[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。
% e: @5 \3 @8 b0 y, v实验环境
% S8 R) l/ K' B5 J  n/ ?7 {; M& d+ I
$ Q/ l; K% ^2 O* k
[color=#333333 !important]CentOS Linux 两台3 J. v' z" ?. v$ I( M: g
创建DNS服务器
0 d  h( b8 a, G+ g5 Z  H0 u
2 x" y& R( C- @  w; J1.安装bind
! `- E. @. X( C( b( z- E
" |$ B) [& }# t1 h. k3 m+ X
[color=#333333 !important]yum install bind*
; u8 |& r# `% ~/ H
2.配置named文件
8 W# P  R& q3 R! M4 w* c: O9 |. @8 y* a* R* c3 d9 C+ |. L  k# w7 {
[color=#333333 !important]修改/etc/named.conf
) r$ J1 G4 M, N, u! u7 n
[color=#333333 !important]将下图中选中的地方改为any
' R3 Y! i1 {8 W: j& {[color=#333333 !important]+ ^6 Y5 ?6 q+ \
3. 设置NS记录,A记录& S& ~9 j( F0 K3 z3 i
( `6 Y0 F8 O8 v& `9 r% k, o
[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件. s* f7 |( \: H2 d  X* h) L
[color=#333333 !important]

2 B' L; R9 t" X6 L; c* a, j: _[color=#333333 !important]增加正向解析记录  R4 k, j) Y1 G9 G4 e
[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字
* \  @- r5 E% l0 }
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel
1 D7 n9 F% M# F0 L8 C) V3 {. @
[color=#333333 !important]修改文件如下
; h3 c0 L1 ~& E( {6 N[color=#333333 !important]添加NS记录,A记录/ Q9 }5 @2 V- M% x2 B" F* t: D7 F8 P
[color=#333333 !important]
) G* T7 G$ P" w0 M* ]0 g[color=#333333 !important]添加bind为自启动服务3 r: E' b  e! V: h# J
[color=#333333 !important]systemctl enablenamed.service
1 _: {  H9 W8 m* r& b0 @[color=#333333 !important]systemctl restartnamed.service8 W: F; }# ~) K% M
[color=#333333 !important]查看启动状态
; ^: e$ @" a& ~& K& Y: S
[color=#333333 !important]systemctl statusnamed.service/ E4 C- M# d9 F5 d
[color=#333333 !important]
7 C0 u; g& [. L5 l1 q[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)
8 [/ o  @! E- n" }Iodine
5 `1 o$ ^4 l) O) @, _9 e* c. p- B% A; l) z  o# ]
[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。
4 C6 b6 a. |: L  w$ z安装! O1 k1 i. }+ V/ R1 t, E, ^

& ?# n% R4 H+ V# U6 t8 t6 X3 n[color=#333333 !important]下载地址:/ W4 ]' {0 W6 C) M4 d5 T, @- d
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip
; D' f; [, s# M7 C/ O: ~% B
[color=#333333 !important]unzip 解压
1 X1 i# W% B$ N+ O& P& T) }6 m[color=#333333 !important]cd iodine-master3 ^! z% N3 R: Z
[color=#333333 !important]make
+ i, Z2 K8 Y8 h# {% h& D$ H[color=#333333 !important]出现报错
) q/ K9 n+ Q+ d7 `# {$ P$ x/ l0 B[color=#333333 !important]
& W  k) h9 o$ }0 Z, O/ W) p! b[color=#333333 !important]yum -y install zlib-devel3 \$ M2 E' n& O
[color=#333333 !important]make;make install5 N; R  e7 e& [4 \# t
[color=#333333 !important]安装完成2 d, i2 q5 o1 O' ~& U6 \5 K' o
[color=#333333 !important]进入 bin
" E1 N- \- y7 C6 [* |3 e# b% j) ?[color=#333333 !important]iodined 服务器
0 m$ |$ b2 t$ K- v1 N1 J7 r# _[color=#333333 !important]iodine 客户端
2 T  A. o' D! N- B# }' T7 ]实验测试6 h: u0 N' W5 |: p5 K$ e
# W7 f0 K: x1 E
[color=#333333 !important]服务器
6 P5 u+ Q) [+ Z% l8 K5 d0 x
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com
/ b5 W3 I/ u  T! `7 [[color=#333333 !important]-f 前台显示,运行后一直在命令行等待- M8 r8 P4 `  U8 n
[color=#333333 !important]-c 中继模式|直连模式
- q8 W) Y3 y7 t) H$ \[color=#333333 !important]-P 认证密码
; G( v5 `, f2 Q/ N& b6 M# v
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。4 C3 s9 a: s9 C% W. D9 H
[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。
  J8 g: `& S% w+ ]2 x[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡) b0 t; e7 q9 u! F1 C2 a
[color=#333333 !important]
: s3 I  y, O. \. H9 N7 ?[color=#333333 !important]" ?& ~# H  x& D6 E$ j$ m. r
[color=#333333 !important]客户端/ D/ I1 L9 ]* y5 ]9 k
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com
  {5 v. _0 O" x6 W# K[color=#333333 !important]-f 前台显示. x% Q- \' e, J- L! C
[color=#333333 !important]-P 认证密码
0 u* z( H- ]# I( y[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析& d' v# f) H2 L3 {5 ~9 I
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。
8 a+ R4 i( S2 b[color=#333333 !important]
3 b( ]- n6 d- M: h流量包分析; w( K5 J5 ^: T. M7 t; H

1 j2 V3 R: D/ u
[color=#333333 !important]抓包
9 f  c, y6 k8 m8 d[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap/ q, ]9 }1 f/ C( ?! b5 e8 Q( D
建立链接的包分析; b! L2 S, E  n# P. g& l6 h- r( \

4 x$ ?" Q8 ]# ^' ][color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包. x2 `, _6 ]3 h- q6 J
[color=#333333 !important]: c9 Q' d; i, v6 d. }
[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀) g: a! k/ N/ n2 Q. z; }
[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据
* `+ R9 z) x# Z' u[color=#333333 !important]
9 a. s% Y: P8 t' n9 \[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节)
( Y# Q  }' h# q" Y7 P8 c( I[color=#333333 !important]5 \3 r5 B/ p# S5 p9 z# @8 k4 A( w2 S
[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。
! F0 J+ K" ]4 U; F8 ]1 Y8 K) Y* b" o通信流量包分析" N! l3 o3 _" A( f5 ~7 E7 a+ o! B
& S% V& F  q- b% w* I
[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析6 U. P9 V$ @2 D( e* i
[color=#333333 !important]
8 p+ F  n; W; n( i# l* B7 X9 e0 i[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。
6 i2 |6 d6 M; p3 s* L$ S# V3 ?8 Q[color=#333333 !important]05fanyi05baidu03com
) k) l. Y& h( l& e3 @+ {[color=#333333 !important]/ A0 M) f$ m0 }  w2 }! ~
[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。; O  y8 S# }* p3 s# D$ C8 L2 j
[color=#333333 !important]6 ?7 q, a1 W, I* x
suricata检测规则(并未测试,仅共参考)1 T; `. [# H" E* j

' ?+ B3 Y) B0 B2 R
    & Q$ H" I; C. Y4 Y+ p: f

  • 6 v3 e. O6 c1 e; C* A
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, r  c* o2 i+ L  \
4 @3 o* \0 [8 L  Q
安装
6 `' @* N' N  n( z+ d/ x8 F, ^! m0 l: a. e7 F7 u5 h
[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell7 Z# y7 w; e; b* ~8 ]% U: ^& i
[color=#333333 !important]下载链接& G; v, P  m- [, ^& [
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag, x) a2 j6 j3 z7 S+ g: e, q
[color=#333333 !important]提取码:t1rw( I% R" [+ @9 Z! Q( F% J) T/ E
[color=#333333 !important]安装编译: ]7 S6 y( M3 C5 |
    ; I$ p. N5 q" O6 }  ?1 I

  • $ v8 q( k4 L/ M3 P1 H( k4 G; A
./configure    make;make install[color=#333333 !important]服务器端" h( u/ E( t2 _

    $ L$ [: C/ _5 b# N% @& T' A
  •   l# Q/ ?7 h2 P3 g" r! Q* M
server/dns2tcpd[color=#333333 !important]客户端3 R0 N( ]8 `& f. N+ M9 u
    : f& g& {) c- G/ F5 H8 N  ?
  • # Y- F6 U: S" {+ C
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载+ S5 ~: _  g2 S5 Q( X" r

    # k( X  C3 Y+ Z. d9 D& G

  • $ D& s) I8 X4 A$ P- P
dns2tcpc.exe实验测试* k, O* U% Y' ?. d
/ I# m" ?" z9 I* I9 S0 n# e
[color=#333333 !important]服务器端
/ v0 ~( p- L. Q6 F[color=#333333 !important]1.创建配置文件; z3 m, F% ?8 q

    - j9 R" ]! N* l
  • % Z. F' A3 u9 j# g. T
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.启动- [' [# R( S, {8 S3 L
    # d' l, u; A! D& V5 g- |8 L

  • 7 f- g7 T/ _$ [* }5 U; I. _
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接' D4 H+ G6 ]& W8 e* G  a
[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务, [3 D( [; Y2 L* v  j8 h* y5 {
[color=#333333 !important]
/ W5 f% p% q) `# N# G
[color=#333333 !important]客户端* o- j$ a  N4 G: W* |& W/ g
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 21 Q3 {# d: e2 r% d* }1 ~" c
[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源
# v5 L) l& d# _& D[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP. z  Z" Q2 I: e% c/ V% b
[color=#333333 !important]-l:端口
' u; p# K' D8 L4 u[color=#333333 !important]-d:是否为调试模式 2 等级可以省略
: m. P& \* b9 j& A) o
[color=#333333 !important], \+ j, [4 h% j9 e4 U9 ~
[color=#333333 !important]客户端使用访问服务器
# N0 X, j. T2 N! v[color=#333333 !important]
, B1 S6 s* }8 o流量包分析
& J, o$ k# ?# i, @5 m; X! R* g% x; L; D, P) b0 J  e
[color=#333333 !important]建立链接并未产生通信包
, {3 k/ n8 X/ {: Q0 j5 M[color=#333333 !important]3 h- ]) y* V1 u0 A
[color=#333333 !important]使用ssh访问时,才会产生数据包$ t! x) n' V0 I1 }
[color=#333333 !important]
0 z! K, J" \7 x2 c2 W; }; G[color=#333333 !important]数据包分析
% ?8 P4 Y, B  b% W( J[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中/ ?1 L- `& K4 A' N
[color=#333333 !important]* E* ]' }9 W0 G" w* H: ?1 z9 |  B
[color=#333333 !important]
+ j$ ]: S5 J( G$ n: }% A. N% _[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。; H9 R+ x6 \" U4 z" y+ k
Suricata规则检测(并未测试,仅共参考)4 g! z) w8 C  k' D
+ Q& v; _6 o4 H( b9 f' W2 d
[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测+ T# y. g7 ]% _

    ( l" }% e& b/ w! t1 M# F2 O

  • 8 z& [$ `7 h: ~5 G" [# l0 r
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 _# m; E( g! t1 ~
[color=#333333 !important]小白水文,求大神放过
% l1 w  F% v( d4 W1 Z5 ?[color=#333333 !important]pcap包下载地址:" S) \$ Y9 X# q4 t, X% R  c& H
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw
, p- \$ u/ R+ P
[color=#333333 !important]提取码:n5ha! U2 {" \1 _' m: h. n
[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载4 W; x& p& h7 k' B' k

& t- F, V% D6 W' J# p7 K精彩推荐- I: x( C& O. z5 X: y' m
; F) j/ K" x# x6 M  t

! |5 n$ o; B, A, D0 u: T
* ^3 G& A( E3 p' {$ U
5 h4 b7 q) }. d5 W1 x3 f' W3 O
2 ]# W' ?2 d: t7 |+ N: b/ c1 I% x) W0 }, e9 k* z$ m# B; i' }
来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=1
3 A0 R9 C6 H$ I. N9 V" P免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-7-7 11:56 , Processed in 0.049379 second(s), 28 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

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