關于ADCS的一些利用方式
NO.1 前言
通過ADCS相關利用方式的學習分析,體現相關應用服務的重要性,以便于及時對相關問題點進行整改
公開資料Certified Pre-Owned: Abusing Active Directory Certificate Services出自于black hat2021
https://www.blackhat.com/us-21/briefings/schedule/# certified-pre-owned-abusing-active-directory-certificate-services-23168
https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf
強烈建議看下文前先看下英文素材,可以避免很多坑點
網絡上關于ADCS利用各類的學習文檔資源其實也有好些了,不過更多看都是針對RELAY部分,其他幾個利用方式都沒怎么提及特別多,可能確實實用程度沒有那么高,斷斷續續幾個白天晚上終于給整的差不太多了
NO.2 環境介紹&部分理論知識
更多的理論知識官方文檔、搜索引擎查的更全更詳細
PKI(Public Key Infrastructure公鑰基礎設施)
軟件、加密技術、流程和服務的組合,使得組織能夠保護其數據、通信、業務交易,PKI依賴于經過身份驗證的用戶和受信任資源之間的數字證書交換,可以用證書來保護數據并管理來自組織內外的用戶和計算機身份憑證
ADCS
一個服務器角色,提供PKI功能,支持windows域上身份和其他安全功能如文件加密、郵件加密等,可以為組織內部使用創建、驗證、撤銷公鑰證書
通俗來說ADCS角色是實施PKI解決方案,ADCS允許構建公鑰基礎設置并為組織提供公鑰加密、數字證書、數字簽名的功能
ADCS提供所有與PKI相關的組件作為角色服務,每個角色負責證書基礎架構的特定部分,同時協同完成完整解決方案
認證機構
CA的主要目的是辦法證書、撤銷證書及發布授權信息方式和撤銷信息,部署的第一個CA將成為PKI的根,隨后可以部署位于PKI層次結構中的從屬CA,根CA位于頂部,從屬CA隱式信任根CA,并信任他頒布的cert
證書頒發機構web注冊
使得用戶使用未加入域或運行windows以外的設備下進行證書頒發續訂的操作
Onlie responder
配置管理在線證書狀態協議OCSP驗證和吊銷檢查,在線響應程序解碼特定證書的吊銷狀態請求,評估這些證書的狀態,并返回具有請求的證書狀態信息的簽名響應
網絡設備注冊服務(NDES)
通過該組件,路由器交換器或其他設備可以從adcs獲取證書
證書注冊web服務(CES)
用于運行windows的計算機和ca之間的代理客戶端,ces使用戶、計算機或者應用程序能夠通過使用戶web服務連接到ca
證書注冊策略web服務
使得用戶能夠獲取證書注冊策略信息,結合CES,可以在用戶設備未加入域或無法連接域控的情況下基于策略的證書注冊
補充

NO.3 環境搭建
基本功能
功能安裝處如下選擇:
證書頒發機構
證書頒發機構web注冊
證書注冊web服務


配置服務


如下選擇進行服務的細節配置











配置證書注冊web服務
上一步完成會告訴你是否要配置其他角色服務

依次如下配置即可







搭建完效果如下

輔助域控搭建
這里是把adcs搭成了輔助域控


配置如下

主從復制

至此,環境基本是搭建的差不多了,一步步直接操作沒啥太大難度,按照提示完成相關的操作即可

NO.4 證書頒發機構信息獲取
certutil
域內成員可成功定位到ca


powershell
獲得ca名稱(Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration").Active更多細節信息$CAName = (Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration").Active;Get-Itemproperty -Path “HKLM:\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\$CAName”

測試聯通性
確認NTLM協議(后面中繼要用)
curl http://192.168.3.73/certsrv -I

補充
基本結構情況

Certificate Templates:存儲所有證書模板的配置。證書模板基本上是證書請求,但是,并非此容器中的所有證書模板都必須可用于注冊
Enrollment Services:存儲可用于證書注冊的CA。Windows 主機使用此容器自動查找可以向其頒發證書的 CA。此容器中的相應 CA 對象具有稱為“證書模板”的成員屬性。此屬性包含可用于在此 CA 上注冊的所有證書模板的列表。這通常只是所有現有模板的一個子集
NtAuthCertificates:存儲允許頒發智能卡登錄證書的 CA。如果嘗試使用不在此列表中的 CA 頒發的智能卡證書登錄,身份驗證將失敗。每個企業CA都會自動添加到此處
NO.5 ESC1-配置錯誤的證書模板
斷斷續續,過程中實際上有很多坑,所以環境已經進行了很長時間。ESC1配置的其他環境測試也是同樣的上部配置方式。
獲取方式
我們可以在證書服務請求中指定主體名稱,則請求者可以請求任何人(域管)的證書
配置問題
進入證書模板配置

如下進行配置(存在客戶端身份驗證就行)

允許注冊

如下配置在請求中提供

如此將允許低權限用戶使用任意SAN請求證書,從而允許低權限用戶通過kerberos或schannel作為域中任何主體進行身份驗證,白話文就是實現偽造身份
若允許這些設置的已發布證書模板,攻擊者可以作為環境中的任何人請求證書,使用該證書為用戶獲取TGT
漏洞檢測
使用公開的工具即可域機器運行后如下,顯示存在ESC1漏洞 CA : yangdc.yangsir.git\yangsir-YANGDC-CAName : 用戶 的副本SchemaVersion : 2OID : 1.3.6.1.4.1.311.21.8.10154165.557338.9848748.4027908.13133259.250.6500742.4833607VulnerableTemplateACL : FalseLowPrivCanEnroll : TrueEnrolleeSuppliesSubject : TrueEnhancedKeyUsage : 客戶端身份驗證 (1.3.6.1.5.5.7.3.2)|安全電子郵件 (1.3.6.1.5.5.7.3.4)|加密文件系統 (1.3.6.1.4.1.311.10.3.4)HasAuthenticationEku : TrueHasDangerousEku : FalseEnrollmentAgentTemplate : FalseCAManagerApproval : FalseIssuanceRequirements : [Issuance Requirements] Authorized signature count: 0 Reenrollment requires: same criteria as for enrollment.ValidityPeriod : 1 yearsRenewalPeriod : 6 weeksOwner : YANGSIR\AdministratorDACL : NT AUTHORITY\Authenticated Users (Allow) - Read, Enroll YANGSIR\Administrator (Allow) - Read, Write YANGSIR\Domain Admins (Allow) - Read, Write, Enroll YANGSIR\Domain Users (Allow) - Enroll YANGSIR\Enterprise Admins (Allow) - Read, Write, EnrollMisconfigurations : ESC1

通過普通域用戶申請證書,注意UPN需要為域管


確認申請成功如下,為administrator權限

確認使用者信息如下

導出證書

此處通過憑證進行PTT出現失敗,這里也卡了好久,因為這個環境換的環境,先前還給工具作者提了issue,后推測可能是時間同步的問題

對機器重啟后,再次PTT即可成功,使用先前導出的憑證

確認憑證信息如下

確認可成功獲取權限

NO.6 ESC2-配置錯誤的證書模板
我們可以使用帶有任何目的的EKU功能證書,進行客戶端、服務端的身份驗證,也可以使用無EKUs的證書來進行任何目的,或簽署新的證書
因此使用從屬CA證書,攻擊者能夠指定新證書中的任意EKUs或字段
配置問題
1、允許低權限用戶注冊,和ESC1相同
2、管理員審批禁用,和ESC1相同
3、不需要授權的前面,和ESC1相同
4、過于寬松的證書模板授權低權限用戶注冊
5、證書模板定義了任何的EKUS或無EKU
基本大體都是和ESC1一樣的,部分區別如下

檢測情況
公開工具能夠檢測確認漏洞存在如下

同ESC1相同方式申請證書即可

確認獲得證書如下,具體如何利用請看ESC1


NO.7 ESC3-注冊代理模板
證書請求代理EKU允許委托人代表其他用戶申請證書,對于任何注冊此模板的用戶,生成的證書可用于代表任何用戶共同簽署部署請求
配置問題
1、允許低權限用戶注冊,和ESC1相同
2、管理員審批禁用,和ESC1相同
3、不需要授權的前面,和ESC1相同
4、過于寬松的證書模板授權低權限用戶注冊
5、證書模板定義了證書請求代理EKU,證書請求代理允許代表其他主題請求其他證書目標
6、沒有在CA上實現登記代理限制
基本同ESC1相似,不同點在于證書申請代理處
檢測情況
可檢測ESC3存在如下

代理注冊流程的官方文檔:https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-cersod/97f47d4c-2901-41fa-9616-96b94e1b5435 最直接申請administrator證書

NO.8 ESC4-證書模板訪問控制
證書模板是 Active Directory 中的安全對象,這意味著它們具有安全描述符,用于指定哪些 Active Directory 主體對模板具有特定權限。如果允許意外或非特權的委托人編輯安全設置,則模板將被視為訪問控制級別上的配置問題,攻擊者具備寫入、完全控制權限,能夠將錯誤的配置推到模板,比如直接把模板設置為ECS1-3
檢測情況
公開工具能夠檢測并確認漏洞存在如下

概念驗證,詳情可通過該工具實現
https://github.com/cfalta/PoshADCS
仔細拜讀后,感覺基于github的這個demo利用來說感覺價值不高....利用難度有些大....

NO.9 ECS5-PKI訪問控制
證書模板和證書頒發機構本身之外的許多對象可能會對整個ADCS系統產生安全影響,如果控制如下一個將影響整個PKI
包括但不限于:
CA服務器的AD計算機對象(即通過 RBCD 攻陷)
CA服務器的RPC/DCOM服務器
PKI相關的AD對象。容器中的任何后代AD對象或容器CN=Public Key Services,CN=Services,CN=Configuration,DC=,DC= (例如,證書模板容器、證書頒發機構容器、NTAuthCertificates 對象等)
檢測情況
這個配置范圍非常大,琢磨了好久發現檢測工具并不能檢測到,后來查看了下文檔,檢測工具沒有檢測ECS5的能力,基本CA服務器的RPC/DCOM服務器安全性需要手工分析
獲取相關控制編輯權限

domian users能夠對相關模板重新編輯,從而影響發布的證書服務應用

NO.10 ESC6-EDITF_
ATTRIBUTESUBJECTALTNAME2
如果在證書頒發機構的配置中啟用了EDITF_ATTRIBUTESUBJECTALTNAME2標志,則任何證書請求都可以指定任意主題備用名稱 (SAN)。這意味著為域身份驗證配置的任何模板也允許非特權用戶注冊(例如,默認用戶模板)可能會被濫用以獲取允許我們作為域管理員(或任何其他活動用戶/機器)進行身份驗證的證書
檢測情況
公開工具能夠檢測并確認漏洞存在如下


修復的話對應關閉EDITF_ATTRIBUTESUBJECTALTNAME2即可certutil –setreg policy\EditFlags –EDITF_ATTRIBUTESUBJECTALTNAME2 進步利用直接看這個就行了https://www.keyfactor.com/blog/hidden-dangers-certificate-subject-alternative-names-sans/其他參考https://cqureacademy.com/blog/enhanced-key-usagehttps://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/dn786426(v=ws.11)# controlling-user-added-subject-alternative-names
NO.11 ESC7-證書頒發機構訪問控制
除了證書模板外,證書頒發機構本身劇本一組保護各類CA操作的權限,如下兩種權限最為危險
ManageCA:ca admin,允許管理CA操作,包括(遠程)配置ESC6-EDITF_ATTRIBUTESUBJECTALTNAME2,將直接導致ESC6
ManageCertificates:cert admin,允許主體批準懸而未決的證書請求,從而否定manager頒發的保護要求
配置問題
證書頒發機構配置相關權限

檢測情況

NO.12 ESC8
獲取方式
這部分應該互聯網資源最多了
在ADCS下通過管理員可選擇安裝的附加服務器角色支持多種基于HTTP的注冊方法,如證書注冊服務通過安裝證書注冊web服務,通過安裝證書注冊策略web服務角色&證書注冊策略web協同工作,然而此類http證書的注冊接口都非常容易遭受NTLM中繼
使用NTLM中繼,可以實現冒用目標用戶,從而訪問這些web頁面,并根據用戶和機器證書模板請求客戶端身份驗證碼證書
默認情況下,證書注冊服務、證書注冊策略web服務、網絡設備注冊服務通過授權http頭支持協商身份驗證,支持kerberos及NTLM。所以攻擊者可以在中繼攻擊時獲得NTLM身份驗證虛擬性
默認情況下,不會啟用https,但是https本身不能抵抗NTLM中繼!!!只有當https&通道綁定相結合的時候,才能保護HTTPS服務免遭NTLM中繼,ADCS沒有為IIS上的身份驗證啟用擴展保護,并不能啟用通道綁定!!!

漏洞利用
ntlmrelayx.py進行監聽(后面會拿到憑證證書)

PetitPotam強制用戶進行身份驗證

獲得憑證證書信息如下

傳遞獲取到的證書即可,效果如下

憑證已經獲取,可以直接拉能夠直接獲得域內用戶hash

使用憑證可證明權限如下:

NO.13 后話
總得來說,感覺想打adcs的周邊還是得大環境,大域里邊容易碰到,小域小環境可能都不會有cs,更不用說相關利用方式實戰了,其次主流使用還是8、1更多,這里琢磨學習的2-7更多還是為知識技能的補充
RECRUITMENT
招聘啟事
安恒雷神眾測SRC運營(實習生)
————————
【職責描述】
1. 負責SRC的微博、微信公眾號等線上新媒體的運營工作,保持用戶活躍度,提高站點訪問量;
2. 負責白帽子提交漏洞的漏洞審核、Rank評級、漏洞修復處理等相關溝通工作,促進審核人員與白帽子之間友好協作溝通;
3. 參與策劃、組織和落實針對白帽子的線下活動,如沙龍、發布會、技術交流論壇等;
4. 積極參與雷神眾測的品牌推廣工作,協助技術人員輸出優質的技術文章;
5. 積極參與公司媒體、行業內相關媒體及其他市場資源的工作溝通工作。
【任職要求】
1. 責任心強,性格活潑,具備良好的人際交往能力;
2. 對網絡安全感興趣,對行業有基本了解;
3. 良好的文案寫作能力和活動組織協調能力。
簡歷投遞至
bountyteam@dbappsecurity.com.cn
設計師(實習生)
————————
【職位描述】
負責設計公司日常宣傳圖片、軟文等與設計相關工作,負責產品品牌設計。
【職位要求】
1、從事平面設計相關工作1年以上,熟悉印刷工藝;具有敏銳的觀察力及審美能力,及優異的創意設計能力;有 VI 設計、廣告設計、畫冊設計等專長;
2、有良好的美術功底,審美能力和創意,色彩感強;
3、精通photoshop/illustrator/coreldrew/等設計制作軟件;
4、有品牌傳播、產品設計或新媒體視覺工作經歷;
【關于崗位的其他信息】
企業名稱:杭州安恒信息技術股份有限公司
辦公地點:杭州市濱江區安恒大廈19樓
學歷要求:本科及以上
工作年限:1年及以上,條件優秀者可放寬
簡歷投遞至
bountyteam@dbappsecurity.com.cn
安全招聘
————————
公司:安恒信息
崗位:Web安全 安全研究員
部門:戰略支援部
薪資:13-30K
工作年限:1年+
工作地點:杭州(總部)、廣州、成都、上海、北京
工作環境:一座大廈,健身場所,醫師,帥哥,美女,高級食堂…
【崗位職責】
1.定期面向部門、全公司技術分享;
2.前沿攻防技術研究、跟蹤國內外安全領域的安全動態、漏洞披露并落地沉淀;
3.負責完成部門滲透測試、紅藍對抗業務;
4.負責自動化平臺建設
5.負責針對常見WAF產品規則進行測試并落地bypass方案
【崗位要求】
1.至少1年安全領域工作經驗;
2.熟悉HTTP協議相關技術
3.擁有大型產品、CMS、廠商漏洞挖掘案例;
4.熟練掌握php、java、asp.net代碼審計基礎(一種或多種)
5.精通Web Fuzz模糊測試漏洞挖掘技術
6.精通OWASP TOP 10安全漏洞原理并熟悉漏洞利用方法
7.有過獨立分析漏洞的經驗,熟悉各種Web調試技巧
8.熟悉常見編程語言中的至少一種(Asp.net、Python、php、java)
【加分項】
1.具備良好的英語文檔閱讀能力;
2.曾參加過技術沙龍擔任嘉賓進行技術分享;
3.具有CISSP、CISA、CSSLP、ISO27001、ITIL、PMP、COBIT、Security+、CISP、OSCP等安全相關資質者;
4.具有大型SRC漏洞提交經驗、獲得年度表彰、大型CTF奪得名次者;
5.開發過安全相關的開源項目;
6.具備良好的人際溝通、協調能力、分析和解決問題的能力者優先;
7.個人技術博客;
8.在優質社區投稿過文章;
崗位:安全紅隊武器自動化工程師
薪資:13-30K
工作年限:2年+
工作地點:杭州(總部)
【崗位職責】
1.負責紅藍對抗中的武器化落地與研究;
2.平臺化建設;
3.安全研究落地。
【崗位要求】
1.熟練使用Python、java、c/c++等至少一門語言作為主要開發語言;
2.熟練使用Django、flask 等常用web開發框架、以及熟練使用mysql、mongoDB、redis等數據存儲方案;
3:熟悉域安全以及內網橫向滲透、常見web等漏洞原理;
4.對安全技術有濃厚的興趣及熱情,有主觀研究和學習的動力;
5.具備正向價值觀、良好的團隊協作能力和較強的問題解決能力,善于溝通、樂于分享。
【加分項】
1.有高并發tcp服務、分布式等相關經驗者優先;
2.在github上有開源安全產品優先;
3:有過安全開發經驗、獨自分析過相關開源安全工具、以及參與開發過相關后滲透框架等優先;
4.在freebuf、安全客、先知等安全平臺分享過相關技術文章優先;
5.具備良好的英語文檔閱讀能力。
簡歷投遞至
bountyteam@dbappsecurity.com.cn
崗位:紅隊武器化Golang開發工程師
薪資:13-30K
工作年限:2年+
工作地點:杭州(總部)
【崗位職責】
1.負責紅藍對抗中的武器化落地與研究;
2.平臺化建設;
3.安全研究落地。
【崗位要求】
1.掌握C/C++/Java/Go/Python/JavaScript等至少一門語言作為主要開發語言;
2.熟練使用Gin、Beego、Echo等常用web開發框架、熟悉MySQL、Redis、MongoDB等主流數據庫結構的設計,有獨立部署調優經驗;
3.了解docker,能進行簡單的項目部署;
3.熟悉常見web漏洞原理,并能寫出對應的利用工具;
4.熟悉TCP/IP協議的基本運作原理;
5.對安全技術與開發技術有濃厚的興趣及熱情,有主觀研究和學習的動力,具備正向價值觀、良好的團隊協作能力和較強的問題解決能力,善于溝通、樂于分享。
【加分項】
1.有高并發tcp服務、分布式、消息隊列等相關經驗者優先;
2.在github上有開源安全產品優先;
3:有過安全開發經驗、獨自分析過相關開源安全工具、以及參與開發過相關后滲透框架等優先;
4.在freebuf、安全客、先知等安全平臺分享過相關技術文章優先;
5.具備良好的英語文檔閱讀能力。
簡歷投遞至
bountyteam@dbappsecurity.com.cn
END