dnscat2 使用
0x00 介绍
dnscat2 是一款 C2 工具,与常规 C2 工具不同的是它利用了 DNS 协议来创建加密的 C2 通道。
dnacat2 的客户端由 C 语言编写,服务端由 Ruby 语言编写,在攻击主机上开启服务端后,客户端放到目标主机上执行相关命令,攻击主机就能够收到来自客户端的会话了。
dnscat2 有两种使用模式,一是直连模式,二是中继模式,区别如下:
直连模式:客户端直接向指定 IP 地址的 DNS 服务器发起 DNS 解析请求
中继模式:像平时上网一样,DNS 先经过互联网的解析,最终指向我们的恶意 DNS 服务器,与直连模式相比速度较慢但是更安全。
在安全策略做的比较严格的内网中,如果发现只允许白名单流量出站,而且内网中还有诸多安全设备,同时在传统的 C2 通信无法建立的情况下,RT 就可以尝试使用 DNS 协议建立 C2 通信。
0x01 安装
1、服务端
这里以 Ubuntu 为例
如果运行 sudo gem install bundler
提示 Command 'gem' not found
,则需要先安装 ruby
如果运行 bundle install
提示 Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
,则需要先安装 ruby-dev
2、客户端
dnscat2 客户端在使用前需要进行编译才能使用,在 Windows 中可以使用 VS 进行编译或者直接使用 PowerShell 的版本,Linux 中可以使用 make install
进行编译。
Linux 下可以通过以下方法进行编译
Windows 可以直接下载已经编译好的版本
如果使用 PowerShell 版,可以直接使用下面的命令导入,在实际情况中,也更推荐使用 PowerShell 版的,毕竟隐蔽性要更好些。
或者下载 ps1 文件后,使用以下命令导入
0x02 使用
1、直连模式
启动服务端,这里服务端 IP 为 172.16.214.50
启动客户端,这里以 Windows 下的 exe 版为例
连接成功后,会提示 Session established!
dnscat2 的一些命令
抓下包,看看流量是什么样子的
不难看出,流量中有很多 dnscat 的字样,这样一来,虽然使用了 dns 协议,但是隐蔽性还是差了不少,接下来看看中继模式。
2、中继模式
在中继模式下,需要自己有一个域名,并添加两条域名解析记录。
首先创建一条 A 记录指向自己的公网 VPS 地址,之后创建一条 ns 记录指向 A 记录的子域名,示例如下:
如果想要判断自己的解析记录是否设置成功,可以通过以下方法进行判断。
A 记录:直接通过 nslookup 进行判断,如果解析出了 IP 说明该项配置正确。
ns 记录:在公网 VPS 上开启抓包,再nslookup dc.teamssix.com
,如果在 VPS 上看到对应的流量记录,说明该项配置正确。
开启服务端
如果提示Address already in use - bind(2) for "0.0.0.0" port 53
,可以关闭systemd-resolved
开启客户端,这里以 Windows 下的 PowerShell 版为例
也可以把导入的命令和开启客户端的命令放在一起
再来抓下包,看看流量是什么样的
可以看出,流量中已经没有了 dnscat 的字样,这也是为什么在介绍部分说中继模式比直连模式更安全的原因。
参考文章:
Last updated
Was this helpful?