吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 16761|回复: 85
收起左侧

[PC样本分析] 魔改CobaltStrike:免杀就像便秘一样

  [复制链接]
mai1zhi2 发表于 2021-3-19 20:46
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子!
病毒分析分区附件样本、网址谨慎下载点击,可能对计算机产生破坏,仅供安全人员在法律允许范围内研究,禁止非法用途!
禁止求非法渗透测试、非法网络攻击、获取隐私等违法内容,即使对方是非法内容,也应向警方求助!
一、概述

最近快开展护网行动,陆续有老哥问是否有免杀的马子。遂本篇文章简要介绍CobaltStrike的免杀方式。若有什么错误之处,请大伙指出,谢谢。下面主要分三部分来展开。

环境配置如下:
受害端:192.168.202.143、192.168.202.1
控制端:192.168.202.1
Teamserver: 192.168.202.1

二、Stager执行返回Beacon时的网络特征及规避网络测绘

当CobaltStrike的stager在受害端运行时,会请求TeamServer端拉取Beacon进行在内存中反射注入运行,有关stager端的详细分析可以看之前我所写的文章,https://www.52pojie.cn/thread-1334525-1-1.html 。先运行stage,打开wireshark抓包:

图片1.png

图片2.png

可见受害端访问teamserver http://192.168.202.1/7v9v,返回206k的数据包,结合之前上文的CS的stager分析文章可以得出响应得数据就是经过异或后的Beacon数据。 先来具体看看stager是如何生成相关URI的:调用MSFURI(),传入参数4:
图片3.png

跟入,可见传入的参数4表示所生成的URI为”/”再假上4个字符串组成的,最后传入checksum8()后并判断结果是否为92:
图片4.png

字符串由var1传入pick()方法来随机生成:
图片5.png

跟入checksum8()方法,该方法就是计算传入的URI字符(不包括/)的asc值的总和,再把和与256进行求余:
图片6.png

所以,URI的规则就是四个字符串的asc码之和,再把和值与256求余,若求余后的值等于92则生成该URI值。 现在来观察TeamServer是如何响应stage并返回Beacon的:现跟入NanoHTTPD对应的线程中先接受请求头的数据:
图片7.png

再将请求头的数据、请求方式和URI传入_serve()方法,在该方法中先对useragent进行判断:
图片8.png

紧接着把URI传入checksum8()函数进行规则判断:
图片9.png

在isStager()中调用checksum8()函数对传入的URI进行判断,checksum8()上述已介绍过:
图片10.png

拼接相应的响应头和响应数据:
图片11.png

最后调用sendResponse()发送数据:
图片12.png

在该方法中每次发送2048个字节数据:
图片13.png

直接使用浏览器访问该URI,能返回相应的Beacon:
图片14.png


所以目前有网络测绘技术对这种特征根据相应的算法拼接URI在公网上进行扫描,所以我们需要对其修改,需要修改的点主要有两个:
1、当控制端Aggressor生成stage时,调用MSFURI()生成请求URI这个函数后,再把生成的URI写入stage;
2、WebServer中的响应请求头的函数,当调用isStager()时会验证传入的URI,所以可以修改isStage()该函数来个改变对URI的校验;
修改的方法有很多是比较灵活的,可以直接写定某个URI,也可以换一种生成的规则,只要能避免网络测绘就可以了。

三、千人千面的Shellcode

CobaltStrike所生成的shellcode其实是一个使用wininet库及其对应函数的加载器,其作用就是用来下载对应的stage,并在内存中反射注入。所以我们完全可以把对应shellcode转为c代码,然后进行一系列混淆等操作来实现免杀,这里混淆或加密就比较多发挥的空间了。我直接把C代码所生成的shellcode写入,都没有任何加任何垃圾代码或者混淆和加密编码等操作就已经免杀了:
图片15.png
图片16.png
图片17.png

执行上线:
图片27.png
图片18.png

代码功能就是一个连接Teamserver端并下载stage,并跳转执行,这里截取部分代码:
图片19.png

另外我再用另一个库winhttp实现了该功能:
图片20.png

图片21.png

均能正常上线的,这两份转shellcode为C的代码然后通过shellcode框架再把c代码转换为shellcode,其间我们能在c代码中能加入垃圾代码等混淆操作,这样生成的shellcode更具迷惑性,可以说是千人千面,这样能一劳永逸的解决shellcode被杀的问题,上传到之前CS源码的地址,混淆可以自行加上去:https://github.com/mai1zhi2/CobaltstrikeSource

四、Beacon的内存查杀特征

虽然上述的stager已能免杀绝大部分的杀软,但是卡巴对内存反射注入加载的beacon查杀比较厉害,DOS头的花指令对卡巴作用不大:这里DOS头的前面是一串不定长的花指令,这串花指令应该是用来干扰360/火绒内存查杀的,我们也可以nop掉,:
图片22.png

花指令的后面就是异或解密dll的操作了,具体异或解密算法可以看我之前发的CS分析的帖子:
图片23.png

这里有妹纸分享无阶段生成的beacon.exe特征的帖子,https://xz.aliyun.com/t/9224?page=1,里面总结了beacon端被查杀的几个特征:
1、读取了默认的default. profile内容,可以看看之前我发的帖子后门生成beacon部分里有提及,所以不要使用默认的default. profile,需要加载自己profile。
2、导出反射注入的函数名字,默认生成是ReflectiveLoader,这个也是需要在profile替换的。
3、就是查杀IAT表,可以在profile配置 set obfuscate "true" 但有点比较遗憾的是,我复现该方法时,卡巴和火绒的静态和实时监控都过不了,可能是我操作步骤问题抑或是加了其他壳,同样我在CS4.1解密出的dll也是报毒的:
图片24.png

图片25.png

但360是能过掉的:
图片26.png

五、总结
如果能从规避网络测绘->shellcode混淆->beacon去特征(成功的话)这几步做下来,应该是能规避市面上一些杀软,其实在没有源码的情况下能做的动作还是比较有限和麻烦的,去特征码、加资源、伪造签名、搞IAT表、搞入口点等,小弟功力尚浅,希望老哥能发表高见,请老哥指导,谢谢大家观看。

免费评分

参与人数 25威望 +1 吾爱币 +40 热心值 +22 收起 理由
levelhan + 1 + 1 鼓励转贴优秀软件安全工具和文档!
xiaoxuetu + 1 谢谢@Thanks!
NlIMit + 1 谢谢@Thanks!
shavchen + 1 + 1 我很赞同!
mamapia + 1 + 1 我很赞同!
turinggu + 1 + 1 我很赞同!
yuenluan + 1 + 1 我很赞同!
对影三人 + 1 + 1 用心讨论,共获提升!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
漆黑的骨头 + 1 + 1 热心回复!
Thefirst1 + 1 + 1 用心讨论,共获提升!
wanfon + 1 + 1 谢谢@Thanks!
不爱everyone + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
tdde134 + 1 + 1 谢谢@Thanks!
gzshlp + 1 我很赞同!
nmy124 + 1 + 1 我很赞同!
sunhuwei9131 + 1 + 1 热心回复!
波澜VAN + 1 我很赞同!
维他宁萌茶 + 1 + 1 我很赞同!
24K叶生 + 1 用心讨论,共获提升!
Jedis + 1 + 1 热心回复!
woshicp + 1 + 1 热心回复!
1027102633 + 1 + 1 用心讨论,共获提升!
www.52pojie.cn + 1 + 1 牛啊兄弟
yunji + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

xianningning 发表于 2021-3-19 21:45
看着就喜欢 就是不会
爱吃西柚的狼 发表于 2021-3-19 21:20
我有个想法大佬
改rip不会经过任何回调
唯一的是打开线程会触发obg
可能openthread会触发msr hook

免费评分

参与人数 1热心值 +1 收起 理由
mai1zhi2 + 1 用心讨论,共获提升!

查看全部评分

Yennfer_ 发表于 2021-3-19 21:02
windaair 发表于 2021-3-19 21:07
厉害了,来看一下
huluwa123 发表于 2021-3-19 21:08
66666膜拜
CHN丶imp 发表于 2021-3-19 21:22
!!!不知道说点什么了,劈个叉把
 楼主| mai1zhi2 发表于 2021-3-19 21:25
爱吃西柚的狼 发表于 2021-3-19 21:20
我有个想法大佬
改rip不会经过任何回调
唯一的是打开线程会触发obg

向老哥学习
kudaila 发表于 2021-3-19 21:26
厉害了,膜拜!
gamal 发表于 2021-3-19 22:02
啊这膜拜大佬
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-28 05:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表