|
|
DNS隧道1 n9 x2 `% {) B4 `6 B6 _ j
% K- x: J, T. w6 R3 V: o, {. H[color=#333333 !important]DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐藏通信流量。本文通过DNS隧道实验并对流量进行分析,识别DNS隧道流量特征。
( x. x: t' C4 j7 t, h+ Z实验环境, A* e4 D. X {0 c% N) o1 v
* f' K0 f- m# V# }. \5 v
[color=#333333 !important]CentOS Linux 两台$ G& R# x( A2 V& c7 ~0 y* B
创建DNS服务器/ Y1 ^4 {1 k, b( D- N
3 q% N4 ~" L+ p
1.安装bind
/ }- b6 ]* ^ H' R3 [3 {' @2 f- {. A {, W+ v
[color=#333333 !important]yum install bind*
" |" S3 Z3 l2 C; G 2.配置named文件
/ @. P5 {$ @- A: U: q8 s% S$ L+ R3 |5 X* V4 |& `
[color=#333333 !important]修改/etc/named.conf
y% i5 o: a3 z; o6 M [color=#333333 !important]将下图中选中的地方改为any
- l/ w# O% z" z" u; t8 r( R[color=#333333 !important]
# ~; w0 u6 M7 G3. 设置NS记录,A记录
3 r) X, g6 m% A) C, A, T: e3 F
2 Z; ^; D F! S4 m8 j k[color=#333333 !important]增加区域解析文件在/etc/named.rfc1912.zones增加区域解析记录文件
/ C- |& u0 d' D6 j/ A% E- a[color=#333333 !important] 
3 }! m! _- P2 D7 c[color=#333333 !important]增加正向解析记录6 J; p" H: ^1 D( P* k4 U- ]- V
[color=#333333 !important]将/var/named/named.localhost改为上图中修改的名字! X+ T; D& y( P! ]
[color=#333333 !important]cp /var/named/named.localhost/var/named/name.dnstunel
, |; ^8 y a. K& R! S3 {" I [color=#333333 !important]修改文件如下% S, X; M/ Z& |" r i8 q: F7 o, d
[color=#333333 !important]添加NS记录,A记录, t4 K5 i" J$ v/ N
[color=#333333 !important]
+ Q+ |$ u7 o+ w( A2 f[color=#333333 !important]添加bind为自启动服务
% ]- G5 x8 C1 \8 f4 z0 {! a[color=#333333 !important]systemctl enablenamed.service
8 X* b' d1 D4 u. K* n[color=#333333 !important]systemctl restartnamed.service( I7 V: j" M8 k
[color=#333333 !important]查看启动状态
! y7 V7 X" K6 Q/ ?8 Q$ M[color=#333333 !important]systemctl statusnamed.service
% c7 V- a) A) {: e [color=#333333 !important]
' V, V# x( R9 e# J8 E# _[color=#333333 !important]将另一台主机DNS服务器设置为192.168.1.7,ping ns.dnstuneltest.com是否正确解析,(如果不能解析,可能跟防火墙有关系,在DNS服务器上执行iptables -F)% t2 ?* i% [$ T* ~5 Y) P& F
Iodine# ~: d6 y4 ?" ~9 ]
+ N0 l* ~, c1 U# P
[color=#333333 !important]Ionine支持两种模式,中继以及直连模式,服务器与客户端可以直接通信而不需要第三种辅助软件,通信的DNS数据损坏容易容易被发现。
" q9 ]7 o- `3 F; L; X4 i安装. g! }! Q; E( p0 b1 S& B
$ o A# M W: q6 S/ C A
[color=#333333 !important]下载地址:
7 X U, O+ Q j" h0 I[color=#333333 !important]https://github.com/yarrick/iodine/archive/master.zip1 h& P4 |" A! }6 i6 V8 q* d
[color=#333333 !important]unzip 解压0 q8 r+ } P$ f0 R9 P$ t! F5 F
[color=#333333 !important]cd iodine-master* A! Y9 d5 Y0 k; Y3 Z5 `5 {
[color=#333333 !important]make# L2 U* b: E$ R) O7 {- \
[color=#333333 !important]出现报错
% d; K' [$ _1 n" a" V1 v[color=#333333 !important] 0 ^; r$ O. I8 }' h
[color=#333333 !important]yum -y install zlib-devel0 R$ s; m/ r' E' x5 {8 u
[color=#333333 !important]make;make install1 E7 ]3 @5 |6 f C
[color=#333333 !important]安装完成
$ I* y0 b/ i6 Z+ J) R" B[color=#333333 !important]进入 bin
* V- z5 _# D1 D4 [% v) `[color=#333333 !important]iodined 服务器
8 H1 k. }3 o4 G0 P @) I% Y$ G[color=#333333 !important]iodine 客户端
( L' e) e# { z/ k2 t, K6 k# ^2 j* d5 H% |实验测试! m9 Z- u' {/ @; K7 p
8 C/ }0 o8 i( z4 `[color=#333333 !important]服务器
+ O; L! q: E# o8 d2 X[color=#333333 !important]./iodined -f -c -P 123456 10.1.0.1ns.dnstuneltest.com
4 f+ n `& J$ Z' z6 U8 T- \5 h4 [ |[color=#333333 !important]-f 前台显示,运行后一直在命令行等待
# G* r* k8 G3 |0 }# h+ D$ g# g. r[color=#333333 !important]-c 中继模式|直连模式8 x J4 J7 }7 F
[color=#333333 !important]-P 认证密码1 B( w- d8 R4 m, n' O$ U
[color=#333333 !important]Ip 虚拟出网卡的IP,在隧道建立后,客户端同样会多出一块dns0网卡,与该IP在 同一网段,可以任意设置,虚拟IP。
/ \$ I5 f& Z- k[color=#333333 !important]设置的域名,这里要跟区域配置文件一致。( N& k8 ^. |/ m7 U$ _: ]
[color=#333333 !important]输入完成之后,ifconfig查看会多一块网卡+ T( b; a G5 j
[color=#333333 !important]
: j+ U4 p, H, W; \[color=#333333 !important]
" x$ f# ?; x7 s% q8 J[color=#333333 !important]客户端
" P6 J' `' `9 T) T8 T% s, y[color=#333333 !important]./iodine -f -P 123456 192.168.1.7 ns.dnstuneltest.com
1 Y2 C r' ^2 |5 J) C% v[color=#333333 !important]-f 前台显示
' B+ S# o! s) V/ l- X: K) R[color=#333333 !important]-P 认证密码
! }0 Q- y( L% _: | D( c[color=#333333 !important]IP 为配置DNS服务器IP或者为购买的云服务IP,输入此选项之后,直接与指定IP查询,而不经过其他DNS服务器层解析
$ I: L8 h2 \2 e [color=#333333 !important]客户端此时也会新增一个网卡,DNS0,IP为10.1.0.2与服务器DNS0网卡处于同一网段中,此时服务器端与客户端可以使用这两个IP互相通信。3 o* Z; } [( R' ^2 Z" {! j9 }
[color=#333333 !important]
( g+ D& y/ } z, P4 p流量包分析
; X; L, o) l) J' f; d y' E% e/ a8 O- S1 ?+ C3 u+ n
[color=#333333 !important]抓包
0 n2 o1 l0 Y1 o[color=#333333 !important]tcpdump -i enp2s0 port 53 -w /tmp/iodine.pcap
& t4 |/ c% Q% }# w& S8 f 建立链接的包分析7 b. ^% n" B j f1 e4 d
) Q. B- k: o" W0 H9 i[color=#333333 !important]在客户端启动后,会向服务器发送DNS请求包
' Z( ]6 t1 S/ O9 e[color=#333333 !important]
* W- F& f! C# p! W[color=#333333 !important]客户端情报求包,请求包的type类型为10 (未知,可以作为检测的一种特征),数据作为域名前缀& X, L0 Y0 l/ t' {' f3 r8 O
[color=#333333 !important]yrbh1o.ns.dnstuneltest.com, yrbh1o就是请求的数据) ]! J' a5 I( o' T( D
[color=#333333 !important]
6 h" b% x: M' G) ^0 H* k3 Q8 M[color=#333333 !important]服务器响应包,rdata字段携带数据,因为查询包没有指定查询类型,所以rdata字段没有长度限制(限制于UDP最大包长512字节)# }4 n. b# Q8 i
[color=#333333 !important]
1 x& t$ a( V( r& D: Q[color=#333333 !important]采用中继模式,客户端会一直发送心跳包,保持链接(因为DNS服务器不会直接与客户端发起链接,所以客户端会一直想服务器发送数据包)但是DNS协议的字段格式已经损坏。& W5 m* w1 u0 _9 a# N: a
通信流量包分析
: P1 i1 W6 A# W9 U. [) \ y
* j+ _. ~* @0 a# g: @$ {: A- a[color=#333333 !important]通信过程的中的DNS协议格式已经损坏,wireshark已经无法正确分析1 C2 y& B5 @) Y! r* R
[color=#333333 !important] * P4 Y+ W3 v3 v$ w/ \
[color=#333333 !important]正常DNS的数据包中的query字段的形式是所占字节-三级域名-所占字节-二级域名-所占字节-一级域名形式并且正常的query字段时只有再域名结束时才会出现00阶段。. W: d1 J$ F. m0 A- ~+ y6 R! U: J
[color=#333333 !important]05fanyi05baidu03com
8 W; m8 `/ w3 C, A8 V: j$ k; F" B[color=#333333 !important] # y0 B1 ~' |7 ?5 @8 T
[color=#333333 !important]隧道中的流量明显不符合上文的query字段规定。由60 08开头。- v4 ?( u- w, L3 I$ J. E U
[color=#333333 !important] 2 i, j2 G6 x3 ]6 D& C( ~$ Q
suricata检测规则(并未测试,仅共参考)
3 Y; j3 x# N/ a! K e( o; j( _' h1 {$ g9 b6 P( J
, S' S; }* z8 }7 g2 ~
8 U+ ~/ ]' z' A/ i 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
) h% Q$ l3 w9 E0 O! \2 [8 E. u! u' A$ p/ H* L S
安装2 t4 E/ I; ?1 A3 _/ ], D
. G+ P* ]& E1 u [( z1 x' D) T[color=#333333 !important]需要与其他回连工具配合,或者写入反弹shell
. f) ?6 e4 p* c: B[color=#333333 !important]下载链接
7 N$ z; N4 E8 a9 r' A# P4 k[color=#333333 !important]链接:https://pan.baidu.com/s/14SIxdiIWHKZDUz6lgn_Zag: K7 V/ P9 V9 M- e0 ]* g0 T
[color=#333333 !important]提取码:t1rw% u' O) U; G# W) a
[color=#333333 !important]安装编译
0 Y6 i8 ]5 ]# u/ L% J
& R% z3 d1 H5 [
0 I4 P) I& S8 r- [$ B ./configure make;make install[color=#333333 !important]服务器端
, R+ }$ o. ^& Z H5 G: J& v2 b# V; u
/ q3 [+ \8 {6 Q0 R+ d
- @& I$ B7 F$ R server/dns2tcpd[color=#333333 !important]客户端* K! Z b* |2 m2 |
0 r( y9 }/ @4 c) x3 w
- K' C8 q) D9 e Linux: client/dns2tcpc windows:[color=#333333 !important]云盘直接下载windows版本,或者下载# [# ~6 a8 S6 v$ L# X2 P
% Q& d5 g1 o' {: C
( o" q& a* n+ U' j3 w5 s# X dns2tcpc.exe实验测试
0 Z& T* X/ f: g; Q- a
. Z, t. j/ I: b% B' g6 [[color=#333333 !important]服务器端+ ?1 [8 b5 z! W& f
[color=#333333 !important]1.创建配置文件0 z, K' T9 A5 L; ]& I
L6 s* W8 g# h/ k+ J* I$ F6 R
3 W* R9 _3 f' n8 f! T: 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.启动
. _9 U! u8 u: M3 c$ w, f% Q. K3 j& [5 Y3 Y' ]
) x; Y! @9 D, H! t& \' q U. G+ z ./dns2tcpd -f/etc/dns2.conf[color=#333333 !important]启动之后会将DNS的隧道流量根据客户端选择的资源使用对应的服务建立连接
2 x3 r, m6 p9 e3 R; Z7 K[color=#333333 !important]出现如下错误需要关闭服务器自带的dns解析服务9 u2 q! B1 y+ z( z" x. w: Y# K" G
[color=#333333 !important]  : m5 |' i7 E2 @" d
[color=#333333 !important]客户端# l% `2 Q/ L9 H5 }
[color=#333333 !important]dns2tcpc -r ssh-z ns.dnstuneltest.com 192.168.1.6 -l 8888 -d 2
, }7 Q6 ?# B6 s `' ^[color=#333333 !important]r:指定对应的资源,前面服务器需开启指定的资源
- C( F P5 Q- Y8 m5 Q# f4 I8 R[color=#333333 !important]-z:自定解析的dns域名,如果域名已经添加的公网的DNS解析则可以省略后面的IP! Z* Y B8 J2 v9 Z
[color=#333333 !important]-l:端口
8 q6 y3 }( g7 Y' w- {$ V[color=#333333 !important]-d:是否为调试模式 2 等级可以省略
# W+ R$ _& G5 c+ o; T3 j [color=#333333 !important] % L9 S( `( B% [8 D" q
[color=#333333 !important]客户端使用访问服务器
! C/ _2 C, Y+ u$ c0 r+ {[color=#333333 !important] " G1 J, _( F. m E
流量包分析) K! J+ e+ M8 t% J0 b% R9 H$ J) U8 ]& W
# B8 I$ A; v# Y; v
[color=#333333 !important]建立链接并未产生通信包8 G, B9 r" `$ s3 u% S p
[color=#333333 !important]
0 K. k n' s+ z Q" H4 {; ~9 G[color=#333333 !important]使用ssh访问时,才会产生数据包
) |4 D3 z' c% \% W0 Z[color=#333333 !important] 8 C. z- }3 e& s0 O
[color=#333333 !important]数据包分析
# j# f6 \! Z6 s2 l4 Q8 ?[color=#333333 !important]需要时客户端会向服务端发起TXT类型请求,服务器的返回包也会放在回复的TXT记录中, [# I' z H4 S; u( k/ K. o
[color=#333333 !important]
6 L+ \4 Y. a" \4 E. J) S% a, l[color=#333333 !important] % |: Y* @. N1 [5 ]+ O9 @
[color=#333333 !important]客户端通过TXT类型记录的域名前缀来发出数据,通过DNS RR中的TXT记录来附加回应的内容。域名前缀和回应内容均采用base64编码,如果提取单条数据,进行base64解码,即可看到传输的内容。从发包行为上可以发现,如果在进行传输数据这种大量数据交互操作的情况,dns2tcp会将数据切分成若干个小单元,依次发出,时间间隔非常小,而当无数据交互,空闲时,两端仍然通过发包维持通信状态。
# V: @, T- x2 Z% B5 ]2 gSuricata规则检测(并未测试,仅共参考)
], p* j& ~( ~+ L1 e4 \) M* ]" ~; u5 D9 B9 G
[color=#333333 !important]因为Dns2tcp采用的是标准的dns协议格式,所以只能通过发包的频率检测
9 L' S; v2 o2 s' R# b
" K- \2 `) G+ b* U3 Q
* b6 K1 k) ]" [- @, ~4 K$ A 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 G ~' F# n9 Q[color=#333333 !important]小白水文,求大神放过' M1 `/ v4 J* I. O) F1 F5 ]
[color=#333333 !important]pcap包下载地址:
( h) |0 d9 t# T* M$ f8 ^: p[color=#333333 !important]链接:https://pan.baidu.com/s/1R9IhfxI285QMLGwjh_gQVw
( w3 n7 c# Q6 x. x( { [color=#333333 !important]提取码:n5ha
! b4 J' j; y- G! O$ p# S( W* H* A7 I[color=#333333 !important]*本文原创作者:johylodog,本文属于FreeBuf原创奖励计划,未经许可禁止转载9 e/ |$ S w9 U8 [4 X
5 v6 v0 q/ C. s7 U! o* s; q8 P
精彩推荐1 T7 x/ }+ B+ }; _ D0 i! t" `0 d7 o

: q3 U( q' d# {- u8 x" e+ f/ P; m/ z; |3 ]% }( k0 L* N \3 w- W J
, d3 w2 Q) l. }0 K- s" h+ {
% J- S0 {$ {3 {% j R8 s
  , W9 |3 s. i: u0 D1 y
: Y1 ` `) V4 R7 W1 D* c, \6 K来源:http://mp.weixin.qq.com/s?src=11×tamp=1570629604&ver=1902&signature=6WVS2c9BX9g255KV02vDuZUf4Q-DsydX1HzYrGZQpvWzyxn-OJh60MhkKy2F523nI8Du9rFL10xll9GNw5mXJi6NOiQcPXT6mRo921KuE1aysrHEhmY6znpdP*dp-xIK&new=11 M: s7 G4 w t! R: w& k
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|