去除cobaltstrike的Yara签名特征
2024年3月1日
前言
大家都知道cs默认是有很多特征的,但我们可以用profile去除掉很多的特征,基础的修改就不多说,网上很多文章,这里用团队的profile来检测一下生成的raw有多少规则,用的是Elastic的规则。
规则检测
先用cs生成一个无阶段的raw文件(如果有udrl的记得unload)
然后用yara检测一下,发现还是有不少特征的,一条条的来。
Windows_Trojan_CobaltStrike_f0b627fc
先dbg来调试查看,在CPU中,搜索->所有模块->匹配特征
然后把刚刚查出来的十六进制丢进去搜索
出现了两条,先点第一个进去,发现就是这两行,复制一下内存地址,然后ctrl+g 跳转过去
这里就是规则点,看看一下汇编
1 | and eax,FFFFF |
这里汇编就是用eax去比较是否是414141,直接修改一下代码用mov eax,414141让他逻辑正常
改好之后补丁一下,再去扫描一下
发现确实少了一条,另外一条就是上面看到的另外一个,也一起修改一下
bypass之后测试上线正常
直接用python来改
1 | def replace_bytes(input_filename, output_filename): |
Windows_Trojan_CobaltStrike_1787eef5
这个规则很明显是PE头4D5A的特征,直接用profile来修改PE头信息
1 | set magic_mz_x64 "AABB"; |
改好就直接bypass了
Windows_Trojan_CobaltStrike_3dc22d14
这个%02d在c里面是数字宽度2,位置不足左边补0,%.2d和%02d效果一样,直接修改一下
修改之后也是没检测出来了
最后也是能成功上线
为了方便直接在profile里面用strrep替换就行了