# Cobalt Strike DNS Beacon 的使用和原理
1. DNS木马
DNS木马因为隐蔽性好,在受害者不会开放任何端口,可以规避防火墙协议,走的是53端口 (服务器),防火墙不会拦截,缺点是响应慢。
2. DNS Beacon 的工作过程
当受害者请求域名对应的ip地址时(通过 shell 或者 钓鱼),会从根域名DNS服务器,一级域名DNS服务器,二级域名DNS服务器...依次向下寻找,直到我们的团队服务器,同时充当DNS服务器,将Beacon返回给团队服务器。DNS响应告诉Beacon休眠或者连接到团队服务器来下载任务。DNS响应同时也告诉Beacon如何从团队服务器下载任务。
3. DNS Beacon 类型
- windows/beacon_dns/reserve_http(传输数据小)
有效载荷通过HTTP连接分阶段。当您创建此侦听器时,请注意您正在配置主机和端口。Cobalt Strike 将使用通过 HTTP 分阶段执行此有效负载。当您选择设置此有效负载时,Cobalt Strike 在端口53上建立起 DNS 服务器。
- beacon_dns/reserve_http(支持命令切换到该模式:mode dns)
将使用http为通信方式,并且使用 DNS A 记录数据通道。
- beacon_dns/reserve_dns_txt(支持命令切换到该模式:mode dns-txt)
改为使用 DNS TXT 记录数据通道。DNS TXT 记录是默认的数据通道。
- windows/beacon_dns/reverse_dns_txt(传输数据大)
有效负载使用 DNS TXT 记录下载和分级混合 HTTP 和 DNS Beacon。当您创建此侦听器时,请注意,您正在配置该有效负载将用于HTTP通信的端口。再次,Cobalt Strike在53端口建立起一个DNS服务器。
以上都是非持续性的工作。
4. DNS 域名解析中的一些记录
-
A 记录
将域名指向一个 IPv4 地址。
-
CNAME 记录:
将一个域名指向另外一个域名。实现与被指向域名相同的访问效果。
-
MX 记录:
建立电子邮箱服务,指向邮箱服务器地址。一般会根据邮箱服务商提供的 MX 记录填写。
-
NS 记录:
域名解析服务器记录,将一个子域名指定某个域名服务器解析(就是把子域名交给自己解析)
-
TXT 记录:
任意填写,可为空。一般做一些验证记录时会使用。
-
SOA 记录:
SOA 为起始授权机构记录。指明 NS 记录中哪一台是主服务器。
5. 过程
-
先在自己的 vps 上添加 A 记录和 NS 记录:
-
开启 Cobalt Strike 服务器,注意端口要在防火墙中开放。
-
将攻击机(这里是 Kali)连接到 Cobalt Strike 服务器中。
-
添加监听器:
设置的端口依旧要在防火墙中开放。
-
添加完成后,测试子域名解析是否正常,注意要在防火墙中开放 53 端口,并且协议一定要选择 UDP(DNS 服务器走的是 UDP)
c1 下的子域名(包括 c1 本身)都交给了 test 处理
-
生成 Web 脚本传递:
-
在受害者机器上执行(这里是 win7)