環境拓撲
我們的目的是獲取redhook.DA域的一個可用的賬戶,當前攻擊者已在公司網絡內,但並未在同一個子網。
Compromising Client 1
假設我們已經獲取到了Client1的登陸憑據,如果網絡足夠大,你可以發現存儲在某處網絡共享上面的其他憑據(通過批量的腳本:vbs,ps1,.net等等)。關於怎麼訪問網絡,你可以使用Cobalt Strike框架。
我們可以這樣做:
我們可以通過批量的腳本快速的獲得NETBIOS的信息。
在win上,可以用命令nbtstat -A IP獲得相同的信息,可以看到機器名是WIN7-ENT-CLI1,屬於REDHOOK域。
PsExec:
使用msf的psexec可以很容易的獲取到一個shell。BOB是一個本地用戶,不用指定SMBDomain參數。
我們也可以使用Impacket’s PsExec,但psexec的好處是可以傳遞hash。
不要忘了微軟自己的PSEXEC有額外的好處,添加一個-s參數會給你一個system的shell。
WMI
一些WMI的選項也可以讓你遠程系統上執行命令。最值得注意的是WMIC,不僅可以在遠程系統上執行命令,還可以通過內置的命令獲取系統的敏感信息和配置操作系統。
最好使用cmd.exe /c或powershell -exec bypass -command。
我們使用Impacket WmiExec可以獲取到一個半交互式的shell,執行命令並獲取輸出。
最後使用PowerSploit的Invoke-WmiCommand命令。
Pass-The-Hash, WCE & Mimikatz:
有時候你只能獲取到NTLM的hash值,可以使用msf的psexec或WCE或Mimikatz。
缺點是WCE可能會被發現,而mimikatz是直接加載內存。
Smash-And-Grab
Metasploit (Mimikatz & hashdump):
Secretsdump & Invoke-Mimikatz:
也可以使用Impacket’s SecretsDump和Powersploit’s Invoke-Mimikatz來獲取。mimikatz的腳本託管在攻擊者的服務器上。
可能還有其他技術,但是以上是最經典的。
Impersonation:
現在我們有了redhook域裏的一臺機器並且能連接到不同的子網中,現在開始做一個信息收集。
要查詢域的信息,需要有一個域用戶,當前的bob用戶並不是域用戶或system權限,但是我們可以通過
NtQuerySystemInformation來發現其他用戶的token,進而模擬他們登陸。
meterpreter有這個插件,使這個過程非常簡單。
也可以使用incognito(下載地址:https://labs.mwrinfosecurity.com/blog/2012/07/18/incognito-v2-0-released/)
Reconnaissance
域偵察:
現在我們有了一個域用戶,我們需要儘快擴大戰果。
以上命令分別是:
- 獲取當前用戶
- 獲取當前機器名
- 獲取IP信息
- 獲取域內共享資源列表
- 返回驗證當前登錄會話的域控制器的名稱
- 獲取域控地址
- 查看本機所有用戶
- 查看域用戶
- 查看所有本地管理員組的用戶
- 列出域內活躍的機器和會話
- 獲取從域控上的連接源
- 獲取本地管理員的信息
- 獲取域管理員的信息
通過簡單的信息收集,我們能瞭解到讓我們自己成爲域管理員的途徑。
- TemplateAdmin 是client1和client2的管理員
- 雖然我們沒有明文,但是我們有TemplateAdmi的hash來訪問client2
- REDHOOK\ Administrator認證在client2,如果搞定client2,即可獲得域控
Socks Proxy:
最後一個事就是添加路由,讓我們通過代理能訪問系統,如果使用msf或cobalt strike那麼就非常簡單。
使用session1 通過socks4a來進行進一步的掃描。
使用proxychains。
Compromising Client 2
Metasploit (PortProxy & PsExec):
共享的本地管理員賬戶,客戶端1和客戶端2的TemplateAdmin是通用的賬號,密碼也一樣。
我們可以使用portproxy從client1進行端口轉發。
client1監聽10.1.1.2:9988向10.0.0.128:9988發送流量。再配置psexec。
Impacket (PsExec) & netsh:
在client1上使用netsh手動設置轉發規則。
現在有個規則是把流量從10.0.0.129:5678轉發到10.1.1.3:445,Impacket’s PsExec需要一個自定義端口,編輯源碼來實現。
當完成轉發之後,記得清理規則。
如果我們獲取不到明文密碼,我們仍然可以冒充域管理員的令牌。
Smash-And-Grab ²
Metasploit Easy-Mode (Mimikatz & hashdump & incognito):
Impacket (PsExec) & incognito:
我們使用incognito來執行遠程命令。
文件傳輸
接下來我們就很容易來拖拽文件了。
Compromising Redrum-DC
Socks Proxy & Impacket (WmiExec):
我們要麼獲取域管理員的密碼,要麼我們自己新建一個域管理員。
還記得之前用戶socks代理麼,我們可以使用它來訪問域內幾乎所有東西。
Sysinternals (PsExec) & Invoke-Mimikatz:
win2k12增強了hash的保護性,所以我們這樣來獲取hash值。
提取NTDS
很多時候提取了NTDS 說明滲透要結束了,下面我介紹一下訪問本地shell或通過wmi來執行命令的方法。
Volume Shadow Copy (Classic-Mode):
把文件拖到攻擊者的機器裏面有很多方法,我介紹一種,可以簡單的使用Impacket’s SecretsDump本地解壓傳輸內容。
注意下NTDS可能會包含很多用戶,甚至上千,是非常大的,導出的時候要小心。
Socks Proxy & Impacket (SecretsDump) (Easy-Mode):
如果我們有socks代理,則很容易的使用明文密碼來執行SecretsDump 。
資源
- Active Directory Security (@PyroTek3) – here
- harmj0y (@harmj0y) – here
- Exploit-Monday (@mattifestation) – here
- PowerView – here
- PowerSploit – here
- Impacket – here
- Impacket compiled by maaaaz – here
- Mimikatz – here
- Incognito – here
- Windows Credentials Editor – here
- Sysinternals Suite – here
*原文:fuzzysecurity Mottoin翻譯發佈