Cobaltstrike 学习笔记(五)DNS 隐蔽隧道


0x01 DNS 隧道攻击

DNS协议是一种请求应答协议,也是一种可用于应用层的隧道技术。虽然DNS流量的异常变化可能会被发现,但是在基于传统socket隧道已经濒临淘汰,TCP、UDP通信大量被安全设备拦截的大背景下,DNS、ICMP、HTTP/HTTPS等难以禁用的协议已经成为攻击者使用隧道的主流选择。DNS隐蔽隧道基于互联网不可或缺的DNS基础协议,天然具备穿透性强的优势,是恶意团伙穿透安全防护的一把利器。

0x02 DNS Beacon

Cobalt Strike 提供了现成利用模块,DNS Beacon payload 使用 DNS 请求来将 Beacon 返回给攻击者。这些 DNS 请求用于解析由攻击者的Cobalt Strike团队服务器作为权威 DNS 服务器的域名。DNS 响应告诉 Beacon 休眠或是连接到团队服务器来下载任务。DNS 响应也告诉 Beacon 如何从你的团队服务器下载任务。在 Cobalt Strike 4.0 及之后的版本中,DNS Beacon 是一个仅 DNS 的 payload。在这个 payload 中,没有 HTTP 通信模式。

0x03 演示环境

  • 团队服务器:Centos 7 (公网主机)
  • 受害机:Windows 7(虚拟主机)
  • 域名:luckyzmj.cn

0x04 使用教程

Cobalt Strike开启团队服务器模式需要Java环境,推荐安装jdk8。上传Cobalt Strike程序包到服务器上,在程序目录下执行命令如下:

./teamserver 服务器公网IP 自定义认证密码

在本机上打开Cobalt Strike,输入服务器公网IP、端口、密码,用户名任意设置。

注意:公网服务器对应的CS端口号(例如:4488)需要在设置对外开放;如果服务器上安装了宝塔面板,需要在宝塔面板中再次设置放行CS端口号(例如:4488)

提前准备好一个域名,添加一条A记录指向CS服务器的公网IP,再添加几条NS记录指向A记录域名即可。

添加一个监听器,DNS Hosts填写NS记录,DNS Host随便填写一个其中的NS记录名称。

要测试你的 DNS 配置,打开一个终端并输入 nslookup beacon domain (domain 自行替换为 stager 域名)。如果你得到了一个 0.0.0.0 的 A 记录回复,这说明你的 DNS 配置是对的。如果你没有得到回复,那说明你的 DNS 配置不对、DNS Beacon 不会与你通信。

当启动一个 DNS Beacon 的时候,就相当于 Cobalt Strike 把团队服务器作为了一个 DNS 的解析服务器。当受害主机进行 DNS 请求的时候,就需要给53端口发包。如果团队服务器在内网中,就需要把公网IP的53端口和内网IP做一个端口映射,相当于把外网的53端口映射到内网的团队服务器上去。dns域名对应绑定的团队服务器公网ip的53端口需要放行,还有就是注意下53端口放行的是UDP而不是TCP。

配置好监听器后,生成一个后门文件。

生成好后门文件后,在受害机器上运行成功后,耐心等待一会儿,Cobalt Strike 就会出现一个电脑图标黑框图标,表示受害主机shell上线成功。

右键选中,点击进行beacon执行一条命令后,即可恢复成正常状态。

上线成功以后,可以查看受害主机的网络连接情况,并不会暴露攻击者真实团队服务器的相关信息。

参考文章


文章作者: LuckySec
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 LuckySec !
评论
  目录