作者簡介:肖文迪,OWASP中國廣東分公司負責人,網路安全Plus社群特聘專家,目前是一家外資公司的安全架構師,負責應用安全設計、管理和審查。眾所周知,Windows AD 是攻擊者最喜歡的目標,我一直對這個話題很感興趣,但我還沒有機會深入研究**。 最近,我對Windows AD做了一些研究和探索,並在射擊場環境中進行了測試,所以我想和大家分享一下我自己的實踐。
Microsoft 的 Windows AD 在企業環境中非常重要,尤其是在 Windows 的企業環境中。 Windows AD 簡化了企業環境中的裝置和使用者管理。 比如現在企業有上百臺電腦,分布在十個辦公室,然後有1000個使用者使用這些裝置,那麼我們就不能手動登入到每台裝置進行人工管理,這時候我們需要把這些裝置和人員新增到Windows域中,在這個Windows域中,有乙個伺服器叫做域控制器DC, 然後所有的配置資訊都儲存在乙個名為 AD (Active Directory) 的檔案中,也就是 Windows AD,如下圖所示:
使用 Windows AD 時,所有憑據都儲存在 DC 中,如果使用者需要使用域憑據對服務進行身份驗證,則該服務將呼叫 DC 以驗證其是否有效。 Windows AD主要使用兩種協議進行身份認證:一種是Kerberos,這是預設協議,比較安全; 另乙個是 NetNTLM,這是一種出於相容性目的而保留的舊標識協議,並且該協議不是很安全。 但這兩種協議都可以被利用。
以上就是對Windows AD的簡單介紹,接下來我們再來看看Windows AD的紅隊做法。 在這裡,我們設定了乙個射擊場環境。
參考殺傷鏈模型
與其他紅隊做法一樣,初步偵察和利用漏洞,此處不作詳細描述。 這種做法主要集中在建立立足點、提公升許可權、內網偵察、橫向移動和建立牢固連線的過程。 其中,權力公升級、內網偵察、橫向移動、建立穩固連線是乙個迴圈過程,代表著攻擊的不斷深化,也意味著攻擊是有層次的。
建立立足點
利用漏洞和建立立足點就是使用各種方法來突破 AD 的防禦並訪問第乙個可用的 AD 使用者,包括使用開源情報 (OSINT) 和網路釣魚。 我不會在這裡重點介紹它。
在這裡,我們介紹另外兩種方法:LDAP 回程攻擊和 NetNTLM 攔截。
(1) LDAP回程攻擊
下圖顯示了LDAP協議身份驗證的過程:
所謂的LDAP回程攻擊實際上是偽造的LDAP伺服器,用於攔截傳送到普通LDAP伺服器的訊息。
在範圍環境中,我們使用 OpenLDAP(一種偽造 LDAP 的工具。 LDAP 需要專門配置,使用最低安全配置,並使用明文密碼登入。
我們可以使用 tcpdump 或 wirsharp 等工具在安裝了 OpenLDAP 的攻擊機器上監聽埠 389,並且可以捕獲明文密碼。
(2) NetNTLM協議攔截
在 Windows 網路中,有大量服務相互通訊,SMB 負責管理相關服務,例如網路檔案共享。 如果在網路中使用NetNTLM協議進行認證,那麼我們可以使用responser(https:)攔截NetNTLM資料包,獲取認證中NTLMV2-SSP的雜湊值,然後使用hashcat工具進行字典(cracking.
HashCat 支援多種雜湊格式,哪種雜湊格式使用什麼模式,詳見 HashCat。
下圖是 netntlm 協議攔截的示意圖:
Intranet 偵察
建立立足點後,下一步就是基於立足點進行內網偵察,即進行AD列舉。 做AD列舉的方法有很多種,比如使用Windows自帶的管理控制台、cmd的net命令、PowerShell指令碼等。 這是乙個叫做獵犬的工具(
Bloodhound 是乙個離線分析工具,它需要和 SharpHound 配合使用(,我們需要先使用 SharpHound 匯出所有域資訊,這裡需要注意的是 SharpHound 有乙個引數——excludedCS,用於過濾掉 DC 資訊,降低報警風險。 匯出的資訊是乙個 zip 存檔,可以匯入到 Bloodhound 中進行分析。
Bloodhound 以圖形格式顯示整個 AD 環境,如下圖所示:
使用 Bloodhound,很容易發現一些隱藏的漏洞。 例如,使用者 t0 tinusGreen 是 Tier 0 Admins 組的成員,而 Tier 0 Admins 組又是 Domain Admins 組的成員,即使用者 T0 TinusGreen擁有域管理員許可權,這並不奇怪,非常出乎意料。
很多人會問,攻擊者是如何從跳轉伺服器發起攻擊並橫向移動的? 這是 Bloodhound 的示意圖:
通過分析發現,T1 Henry,Tier 1 的管理員Miller 訪問了跳轉伺服器,並在其中留下了會話資訊,即在獲取到會話資訊後,獲得了 Tier 1 的管理員許可權,實現了許可權的公升級。
從上面的分析可以看出,Bloodhound 給了我們乙個大局,可以從 AD 網路分析可能的橫向移動路徑和攻擊路徑,這簡直是攻擊者的神器。
橫向移動和公升級
在 Bloodhound 的指導下,我們可以橫向移動並提出權利。 讓我們付諸實踐。
我們可以橫向移動提公升許可權,最終獲得 DC 許可權,因為 AD 配置存在漏洞,例如不遵守最小許可權原則和錯誤地委派許可權。
錯誤許可權委派的型別有很多種,典型的如下:
ForceChangePassword:我們可以在不知情的情況下設定使用者的當前密碼。
AddMembers:我們可以將使用者(包括我們自己的帳戶)、組或計算機新增到目標組。
GenericAll:我們可以完全控制物件,包括更改使用者密碼、註冊 SPN 或將 AD 物件新增到目標組的能力。
genericwrite:我們可以將任何未受保護的引數更新到目標物件。 例如,這允許我們更新 scriptpath 引數,這將導致指令碼在使用者下次登入時執行。
writeowner:我們可以更新目標物件的所有者。 我們可以讓自己成為所有者,從而獲得對物件的額外許可權。
WriteDACL:我們能夠將乙個新的 ace 寫入目標物件的 DACL。 例如,我們可以編寫乙個 ace 來授予我們的帳戶對目標物件的完全控制權。
AllExtendedRights:我們可以對目標物件執行與擴充套件 AD 許可權相關的任何操作。 例如,這包括強制更改使用者密碼的能力。
下面是 ForceChangePassword 的簡短示例,請參閱 Bloodhound 的分析:
域使用者組的使用者可以有加入IT支援使用者組的許可權,然後IT支援使用者組的使用者可以強行修改T2管理員組中使用者的密碼,也就是說,我可以通過在跳轉機中將普通使用者新增到IT支援使用者組來修改T2管理員使用者的密碼, 以便獲得 T2 管理員使用者帳戶。此過程稱為公升級。
使用此 T2 管理員使用者帳戶,可以訪問 IIS 伺服器,然後進行進一步的移動。 如果具有更高階許可權的使用者在這些伺服器上具有會話記錄,則可以使用 minikatz 工具破解更高階使用者的會話記錄並偽造該使用者以供進一步訪問。 這是乙個迭代和逐步深入推進的過程,最終獲得DC的許可。 由於 DC 有權控制整個 AD,因此攻擊者可以為所欲為。
建立穩固的連線
在橫向移動並提公升重物後,我們需要建立乙個穩固的連線,這個過程稱為持久連線。 以下是常見的方法:
憑證或憑證:使用 mimikatz,我們可以生成憑證或憑證。 Mimikatz 建立了乙個預設密碼,該密碼適用於域中的任何帳戶。 此預設密碼可用於模擬域中的任何帳戶。
目錄服務還原模式 (DSRM) :d C 有乙個稱為 DSRM 帳戶的內部管理員帳戶。 此密碼是在伺服器公升級到 DC 時設定的,很少更改。 此密碼用於在緊急情況下恢復 DC。 攻擊者可以使用 Mimikatz 提取此密碼,並使用此密碼獲取對環境中 DC 的持久管理訪問許可權。
惡意安全支援提供程式 (SSP):SSP 介面允許您新增新的 SSP。 我們可以將 mimilib by mimikatz 新增為 ssp,它將所有身份驗證嘗試的憑據記錄到檔案中。 我們可以指定乙個用於日誌記錄的網路位置,這將允許 mimilib 在使用者向受感染的主機進行身份驗證時向我們傳送憑據,從而提供永續性。
為特定帳戶授予更多許可權:我們還可以授予特定計算機帳戶對其他計算機的管理訪問許可權。 這通常是AD的正常行為,因此可能會逃避檢測。
整個Windows AD攻擊過程廣泛而深刻,涉及多種工具,值得進一步思考。 我們正在研究 Windows AD 的紅隊做法,希望藍隊可以做得更好,這裡有一些建議:
1.使用者意識培訓很重要,使用者是最薄弱的環節,不信任使用者信任可疑郵件來減少這種攻擊面。
2.限制AD服務和應用對外網的暴露,不是所有的東西都要通過內網,通過VPN或零信任保護,暴露面可以很好的減少。
3.藍隊遵循最小許可權原則,警惕委託許可權操作,還可以使用尋血獵犬對自己的AD進行定期檢查,看看是否有任何意外發現。
4.密碼,尤其是弱密碼,很容易被字典攻擊,所以多因素認證非常重要,重要的操作應該使用多因素認證,不要依賴密碼。