文章目录
1.CobaltStrike的介绍和DNS Beacon通信过程
2.域名申请和域名解析的部署
3.CobaltStrike开启DNS Beacon监听
4.生成DNS木马
5.上线目标系统及远程控制
6.进阶-结合HTTP隧道加快传输速度
7.进阶-结合TCP Beacon
1.1CobaltStrike的介绍
恶意利用DNS隧道现象已存在多年,将数据封装在DNS协议中传输,大部分防火墙和入侵检测设备很少会过滤DNS流量,僵尸网络和入侵攻击可几乎无限制地加以利用,实现诸如远控、文件传输等操作,例如前段时间危害巨大的Xshell木马、PANW刚刚披露的伊朗黑客组织OilRig等。同时,内部恶意员工也逐渐学会了使用类似工具盗取关键数据资产。
DNS隐蔽隧道建立通讯并盗取数据,可轻易绕过传统安全产品,使用特征技术难以检测。广为人知的渗透商业软件Cobalt Strike和开源软件iodine、DNScat2等亦提供了现成模块,可被快速轻易地利用。对进行渗透测试的红军来说,熟练掌握隐蔽通畅的DNS隧道至关重要;而对于甲方安全和风控团队来说,在DNS隐蔽隧道盗取数据的工具和方法得到普及的今天,此类数据泄露渠道须得到应有的重视。
1.2 DNS Beacon通信过程
(1)DNS Beacon作为Payload,使用DNS查询与CS团队服务器在Internet上通信,DNS Beacon是常见的标识符,伪装为host,这是一个域或子域。
(2)当我们的目标系统进行对域名(如上图)1234.profiles.losenolove.com解析时,首先查询本地的host文件,如果有那么返回,如果没有向本地DNS服务器继续查询
(3)本地DNS服务器首先查自己的本地缓存,如果有返回查询结果,如果没有,进行迭代查询
(4)本地DNS服务器会向根域名服务器发起询问,你知道1234.profiles.losenolove.com的响应值吗,根域名服务器说我不知道,但是我知道.com服务器知道,你去问它吧,然后去询问.com服务器,你知道1234.profiles.losenolove.com的响应值吗,它说我也不知道,你去问losenolove.com服务器吧
(5)如上迭代查询后,最终在我们的权威服务器的子域名服务器上查询到了我们的1234.profiles.losenolove.com的响应值,权威服务器的子域名服务器返回给本地DNS服务器,本地DNS服务器再返回给目标系统,这就是DNS Beacon的通信过程
2.1域名申请和域名解析的部署
(1)在百度上搜索腾讯云域名注册,点击进入完成注册,注:网上有很多可以进行域名注册的网站,不想花圈的话可以自己找免费的注册
(2)本人在网上注册了一个zhaoxuesong.ink的域名
然后我们进入域名解析列表
第一条A类解析是在告诉域名系统,dns.zhaoxuesong.ink 的IP地址是 192.168.135.129(Kali的地址)。
第二条NS解析是在告诉域名系统,如果想知道域名tom.zhaoxuesong.com 的IP地址,就去问dns.zhaoxuesong.ink,它会告诉你tom.zhaoxuesong.com的IP地址是多少
注:为什么要设置NS类型的记录呢?因为NS类型的记录不是用于设置某个域名的DNS服务器的,而是用于设置某个子域名的DNS服务器的。
2.2验证域名解析设置是否成功
随便一台电脑上ping域名dns.zhaoxuesong.ink ,若能ping通,且显示的IP地址是我们配置的VPS的地址,说明第一条A类解析设置成功并已生效。
在任意一台机器上执行 nslookup tom.zhaoxuesong.com 命令,如果在我们的VPS监听的端口有查询信息,说明第二条记录设置成功
最终我们发现查询超时,是什么原因导致的呢?
我们发现我们只有只是注册了一个域名,完成了域名的解析功能,并没有租用公网上的服务器,那么怎么解决呢
我们可以在目标系统直接设置DNS服务器的地址(我用的WIN7)指向我的192.168.135.129
我们修改完再次测试
如果返回结果为0.0.0.0则配置正确,默认返回就是0.0.0.0,那么NS类解析也正确,否则请查询相关DNS配置基本知识进行修正。某些域名解析供应商可能在功能实现上有限制,如果验证始终不成功,读者可以用dig命令尝试发现问题,甚至切换服务商。
3.CobaltStrike开启DNS Beacon监听
上面填入NS类的记录,下面填A类的记录
4.生成DNS木马
点击菜单栏的Attacks中的Web-Drive-by中的Scripted Web Delivery(S)下面的x64勾不勾选x64取决于目标主机的架构,然后生成一个后门,把Payload代码复制到目标系统的cmd上,我用的是Win7
5.上线目标系统及远程控制
只要木马在目标主机执行成功,我们的CobaltStrike就能接收到反弹的shell。但是默认情况下,主机信息是黑色的。
我们还可以利用mode命令随时改变数据传输通道,例如mode dns使用A记录传输,Cobalt Strike的图形化界面菜单也很完善,常见的远控操作任务都可以点几下鼠标完成。
在Cobalt Strike中它的心跳默认是60s(即sleep时间为60s,每一分钟目标主机与teamserver通信一次), 这会让我们执行命令或进行其他操作响应很慢,sleep 5,设置通信间隔为5秒
6.进阶-结合HTTP隧道加快传输速度
由于DNS的Payload主要就是生成一个后门,用于监控,DNS隧道不利于传输过大的数据,那么,我们试试不走DNS隧道呢?我们可以把监听时长设置成几个小时一次,隐蔽DNS的后门,我们再添加个监听,走http通道,这样做的好处是加快数据传输的速率,即使发现了http的进程,目标系统给结束了,我们还可以继续建立
7.进阶-结合TCP Beacon
我们建立一个TCP Beacon,把生成Payload
在WIin上运行,我们攻击者可以通过Win7去和Win10去通信,相当于代理中转控制