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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7728|回复: 0

DNS隧道流量分析

[复制链接]

13

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-10-9 23:15:32 | 显示全部楼层 |阅读模式 来自 中国
DNS隧道0 z0 _8 w; ]& C7 ?" x, X, }' C

2 L2 _2 g" \* o/ u$ a6 s[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。
! I0 X. s. p% x实验环境6 K4 J; S: k9 T0 }" \

) y9 h3 n- \* P7 [# Y9 b5 }1 G
[color=#333333 !important]CentOS Linux 两台
7 \* {$ N$ n( o* K5 k
创建DNS服务器8 [* `$ W# w1 J8 ~8 b) E8 a" ?
: C2 X3 {( c( F0 c
1.安装bind
% A' U! h4 W) ?8 R" N6 ]8 Z3 K9 [" [
: v) B: H2 j- Q7 [4 }
[color=#333333 !important]yum install bind*/ e! F( d% H; J3 g3 ~0 G+ z: K! q
2.配置named文件
  Z$ B; {( Z6 F- k( }5 }2 X2 l0 Y; w* ^! L& U9 k6 E/ `# {
[color=#333333 !important]修改/etc/named.conf# v; A0 L& w& L- I$ R* |
[color=#333333 !important]将下图中选中的地方改为any# U- C4 A2 ^6 L' |. D5 t) E3 L
[color=#333333 !important]! d4 F' ~4 h( H. x- {
3. 设置NS记录,A记录
3 c' \4 @. E5 Z8 T7 F5 [/ h. {6 p
[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件$ G, ]4 x( }5 w) c& h, n3 G
[color=#333333 !important]

! j' [( a. N$ N7 f' j0 ^( u[color=#333333 !important]增加正向解析记录; \* U! a1 z! M9 v4 J6 ^: c
[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字
& b9 v0 Q2 o( x0 {3 r
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel; [& j! m! A: J! H0 m  ?
[color=#333333 !important]修改文件如下: L5 ~" }+ w$ i
[color=#333333 !important]添加NS记录,A记录4 X4 v0 d$ b* P
[color=#333333 !important]; `4 x" a( v$ I3 m6 i
[color=#333333 !important]添加bind为自启动服务% g) ]' c$ ^5 E# _
[color=#333333 !important]systemctl enablenamed.service& X0 Y0 L7 x$ j) u
[color=#333333 !important]systemctl restartnamed.service
9 P) N% z- h! |6 f; f2 x% @
[color=#333333 !important]查看启动状态
( x4 s& z, e5 K- o# j7 z/ {
[color=#333333 !important]systemctl statusnamed.service/ m/ G/ ~" C% g& v+ e  X  E8 H' C
[color=#333333 !important]
6 e) H9 T* n! H[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)) Z7 X  u8 y& A
Iodine. C' q( t" s! Z" z7 V

6 E0 S' f/ Z% p4 l0 c[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。
7 N8 h/ q/ A( A" g+ U安装7 E3 V" D2 g" g0 k+ q4 d4 i

8 e3 G* J8 ?5 \/ s0 ^4 U3 q[color=#333333 !important]下载地址:2 K9 C0 W5 t! d
[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip
- C! H/ J  r6 g! G0 g2 B5 Q8 ^( \
[color=#333333 !important]unzip 解压
: E2 {5 [' p8 y! s[color=#333333 !important]cd iodine-master
8 a( a% e' R+ N9 l[color=#333333 !important]make3 X, u0 O+ C! N" N
[color=#333333 !important]出现报错! A8 U7 S! T2 }# l
[color=#333333 !important]
( ]+ b0 Q, g) w4 _[color=#333333 !important]yum -y install zlib-devel$ w  v5 ?0 G8 D1 b
[color=#333333 !important]make;make install
1 k; B$ _6 t0 w. F; L! W[color=#333333 !important]安装完成
! O* l/ @; e' |5 V1 u[color=#333333 !important]进入 bin
9 h3 i+ @# G& X$ b4 ?) z[color=#333333 !important]iodined 服务器+ F1 I4 S. |! Y. b) L; f6 X# N. f8 f$ o
[color=#333333 !important]iodine 客户端
8 x, ]: F) ?" y5 j# O/ @9 d+ W- D6 V# Z实验测试, A/ F/ m9 ^! O

7 s4 W) U2 |* n6 d* D3 G[color=#333333 !important]服务器" m' A( }4 b. ~  e$ ~4 f2 M
[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com
8 H& B8 Z  Y6 I* a: |" R[color=#333333 !important]-f 前台显示,运行后一直在命令行等待
9 J0 W6 w7 {0 N[color=#333333 !important]-c 中继模式|直连模式. R6 v8 v0 d4 N+ r  Z% Q
[color=#333333 !important]-P 认证密码
; E* W1 S' V. E2 J6 _* Y9 M  K; Y
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。& F" @5 r/ ~( v* y+ |
[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。( ?2 i) }, o) F! u
[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡! }8 Y9 ~, @  Z
[color=#333333 !important]
! i2 ~6 @; D3 K/ S& q7 Y- d' M5 E[color=#333333 !important]3 h( z5 ?) R: }# O& P9 C
[color=#333333 !important]客户端5 q6 a2 s  l$ h
[color=#333333 !important]./iodine -f -P  123456 192.168.1.7 ns.dnstuneltest.com
( \( p1 l5 t0 }( ^5 J  r0 ^[color=#333333 !important]-f 前台显示; y) U$ I5 X6 O
[color=#333333 !important]-P 认证密码
  d: i1 e, ?5 b0 g. y. _% e) N4 `[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析
, t/ [8 M( Q5 }/ B9 J, {. c, O
[color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。
* V" a8 }6 y6 S6 u' M4 r[color=#333333 !important]
* \( B0 n) B+ I. t7 x流量包分析
7 S4 e( ]. S# e0 Q% D" t
5 {, i' D1 M, d2 z+ H
[color=#333333 !important]抓包
/ W  ]4 `1 r- q8 q) {: @[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap( \/ u2 u0 C) g7 y
建立链接的包分析" H* {7 l4 n5 a6 v

2 H) a8 d# I% V# R& T[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包
, j! w9 @- H& c  @1 Q[color=#333333 !important]! C4 y1 `5 E6 \/ l0 o/ f
[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀
, U8 g, h- x) }[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据
- l# o' h$ T) e5 h7 O- ?[color=#333333 !important]
% @4 K7 W0 u4 x' n/ d[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节). h3 n( J- i% O, G* M
[color=#333333 !important]
: R$ ]. R: |; ^: N; f[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。
0 k# s& ^! Q5 M! h4 a# I0 h. x通信流量包分析- e! R0 g$ x7 X: z

0 M+ W! J" g1 s& f/ a, T# d[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析. }. f. d- h# P2 k, \
[color=#333333 !important]
4 t( v; Z6 ^' X. a9 g; q[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。7 x( X4 u; q+ W2 G7 \/ B
[color=#333333 !important]05fanyi05baidu03com
7 ]8 G! ?8 T$ s5 {" H3 _% O) U[color=#333333 !important]
4 A0 I" F* O& c, Q[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。9 y/ C7 g, a$ X2 v- a4 @& {& D1 ]3 P
[color=#333333 !important]
; A3 M$ F" Z: B7 E5 H; }suricata检测规则(并未测试,仅共参考)
+ e; [% T6 B6 M
" U' V2 p. n# Q+ d5 U4 M+ g! `9 T, `

    0 h: M$ s% J' x% M" D5 P( W% E8 u
  •   M$ g: P- Z5 u/ U2 ?9 S0 d
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
. x3 h. ]% s1 G  d% S8 U6 A6 r) d8 n2 l% X+ U2 {$ P! x* ^' F' @
安装% w3 t; X1 n, O4 @, Q( i1 a
; n4 `9 z6 D' i" y9 B# _
[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell
2 u: ~- X$ l; ?/ l4 Y, h; G+ G[color=#333333 !important]下载链接# ~% _8 u* H3 T, u
[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag
' W/ P$ d6 y1 g
[color=#333333 !important]提取码:t1rw4 M% Q: G" R) W7 S4 Q1 K
[color=#333333 !important]安装编译9 F7 }1 Q: }2 |/ I
    % d( `2 t0 s+ a. q' p

  • , Z% [; n% {( g: ~" V
./configure    make;make install[color=#333333 !important]服务器端; E* R. U& N% n( F, l

    5 o; D4 S, w" a6 X* b
  • , }+ o* V9 h7 n
server/dns2tcpd[color=#333333 !important]客户端4 N% C" z3 e! {# c2 X
    ) y" g0 ?4 ]$ X! @
  • - p4 J: ^7 W! J6 y) u8 `
Linux:    client/dns2tcpc     windows:[color=#333333 !important]云盘直接下载windows版本,或者下载
, ~* \+ Y% I+ B: N( {7 h" I
    ; i/ |7 Z0 ~1 ]  R
  •   z9 ?6 f7 J4 U; Y3 ?
dns2tcpc.exe实验测试
/ O/ m0 |- a' D7 A; e3 A. m
8 e  Y/ V( S6 R5 X[color=#333333 !important]服务器端
0 j% W# q8 ~- _! B[color=#333333 !important]1.创建配置文件
8 U# h3 ~' G9 V. j& i% D
    2 q7 H0 z# l, [6 y

  • ( f1 o3 F- H6 ]9 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.启动! ^8 v+ q# l3 H! s4 Q- F0 y

    ! [# R' @! Z/ F' @8 r1 o
  • 4 W/ w% M0 X" ?
./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接- {) v; m- O' ?) B
[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务: a8 g( T) Y, c1 Y, i3 y: \; }  s
[color=#333333 !important]

% J6 N+ D% @) X9 ^" ^, _# o6 t8 u[color=#333333 !important]客户端
& z& e7 }; \9 N2 [" B  N3 s, `
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 22 e6 U+ ~! ^. r! a) s3 r
[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源$ z  Z0 p. E- O- p9 Y
[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP
4 T, }* w$ |: B" ]1 d  V2 `# S[color=#333333 !important]-l:端口
1 R( Y% T& H4 r. N; g1 a[color=#333333 !important]-d:是否为调试模式 2 等级可以省略
5 f1 U6 d% i9 S% h8 r6 q
[color=#333333 !important]
1 H! l: G2 J; N2 q+ e; R[color=#333333 !important]客户端使用访问服务器' ^" T: R8 U6 S4 b/ c
[color=#333333 !important]
5 n2 U' }) _1 b( M# t流量包分析
& n9 J+ o& l/ ?3 D7 J$ E5 E6 q
) }8 D' C; l: }- m[color=#333333 !important]建立链接并未产生通信包+ ?$ G; H( E4 W4 ~
[color=#333333 !important]2 a; ^6 z) Z) r# J
[color=#333333 !important]使用ssh访问时,才会产生数据包, f; L) w; a2 V1 i; f- U7 g
[color=#333333 !important]  S; ~2 _9 l$ v/ i( [
[color=#333333 !important]数据包分析$ T) Q9 c5 R/ i/ ?+ y
[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中
5 \. ~1 d- s. x9 }[color=#333333 !important]
7 F$ p6 {9 K. i, f/ p; ^7 t1 Y[color=#333333 !important]
, |5 L1 P8 c8 [; k* d  I/ ?[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。
" g( g; v1 J, L2 N1 `& F' jSuricata规则检测(并未测试,仅共参考). S, D7 f/ k+ c* f1 l9 e

. [- _; k( a' z[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测
2 W! v9 H4 q9 V
    0 y5 l) p: t. S8 u0 [6 N
  • - W& p# A# J+ `" e! n, w- W  P# N8 E3 V
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]结尾& a2 Y; T; @% z1 m5 ^$ Z
[color=#333333 !important]小白水文,求大神放过! i+ d* P' N! E+ G' e
[color=#333333 !important]pcap包下载地址:
+ Y4 P- ]- F% v, X% @$ B$ Q& `! k
[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw
7 z, C1 n' o$ {
[color=#333333 !important]提取码:n5ha
. J5 m1 m$ c8 t3 j+ `9 m. c: ?[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载
! o2 |& y: M* W$ G  R* X
3 X/ G  {6 i, G2 W精彩推荐
" z/ A$ \2 H6 X$ b7 s' W' V
2 r0 B6 w: N4 y! \( ]
  U- h5 j# M0 Q

. L# f  z' A# t$ F9 p  d+ `  o4 `0 d
- G. O7 e; J3 N/ A4 c% {
- a6 N: }7 d% N7 l: F6 A% u; j9 v4 o
来源:http://mp.weixin.qq.com/s?src=11&timestamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=1, k  H# M: k' q: P0 l5 a' U0 H
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-29 17:04 , Processed in 0.075347 second(s), 27 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2026 Discuz! Team.

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