Metasploit – Leer Metasploit 3
Welkom terug in het 3e en laatste deel van deze mini Metasploit serie. Na deze 3 posts moet je een goed inzicht hebben gekregen in de Metasploit opbouw, terminologie en hoe je Metasploit gebruikt. In deze post duiken we dieper in op het gebruik van exploits en lanceer je je eerste “aanval” (oeps, security research commando).
Nu we in de vorige post een payload hebben gemaakt willen we eens kijken of we deze ook geforceerd, zonder social engineering skills o.i.d. op een computer kunnen krijgen. Om dit te doen gaan we een exploit gebruiken. Deze exploit zal een bepaalde vulnerability in het OS of in specifieke software misbruiken om zo de payload op de computer te krijgen.
Om echter een geschikte exploit te vinden is het zaak om vooraf goed research te doen. Welke poorten staan er open? Welk OS en vooral, welke versie van het OS is geïnstalleerd? Zijn er additionele service packs geïnstalleerd? Welke software wordt er nog meer op de pc gedraaid etc. Dit proces noemen we ook wel reconnaissance. Linux Kali biedt ontzettend veel tools om een goede reconnaissance uit te voeren. Voer bijvoorbeeld eens een NMAP scan of een “Netdiscover” uit. Ook NCat is een perfecte tool voor reconnaissance. Onder “Applications” – “Information Gathering” vindt je nog veel meer (command line) tools voor het uitvoeren van reconnaissance.
Echter kun je ook al wat reconnaissance uitvoeren binnen het Metasploit framework zelf. Laten we eens kijken welke poortscanners we voor handen hebben:
search portscan |
De uitkomst laat ons diverse poortscanners zien zoals syn, ack en tcp poortscanners.
Om een module actief uit te voeren gebruiken we het USE commando. Deze poortscanner gaan we gebruiken. Het volledige commando ziet er dan als volgt uit:
use auxiliary/scanner/portscan/syn |
Zoals je ziet wordt ook hier weer het volledige pad opgegeven naar de scanner gezien v.a. de “modules” folder in de Metasploit Framework root folder (zie post 1).
Op het moment dat je een module gebruikt en dus feitelijk “in” de module zit wordt de naam van de module in de msfconsole aangegeven met rood zodat je weet waar je momenteel mee bezig bent.
Wil je terug naar de root van de msfconsole (dus weer uit de actieve module) dan gebruik je simpelweg het “back” commando.
Nu we in een actieve module zitten kunnen we ook hier weer extra informatie over opvragen. Dit doen we met het “info” commando:
Als je alleen geïnteresseerd bent naar de opties gebruik je het commando “show options”:
Nu we weten welke opties we kunnen meegeven kunnen we de poortscan uitvoeren. We gaan eerst de opties opgeven. Deze opties stellen we in met het “set” commando:
set INTERFACE eth0 set PORTS 80-200 set RHOSTS 192.168.1.0/24 set THREATS 20 |
Wil je tussendoor je opties controleren dan gebruik je gewoon weer het “show options” commando.
Om de scan vervolgens uit te voeren gebruik je simpelweg het “run” commando:
Tijdens het draaien van de poortscan zie je alleen een knipperend streepje. Als er resultaten gevonden worden zie je die verschijnen.
Het grote voordeel van deze Metasploit poortscanner is dat gevonden hosts meteen worden toegevoegd aan je database zodat je deze later gemakkelijk weer kunt oproepen en gebruiken. Uiteraard kun je ook een nmap resultaat exporteren en inlezen in je Metasploit database maar zolang het geïntegreerd werkt is dat voor het gemak natuurlijk aan te raden. Wil je de hosts oproepen in je database dan gebruik je het commando:
hosts -R |
Op deze manier kun je de eerste reconnaissance gemakkelijk uitvoeren vanuit je msfconsole. Deze database kan uiteraard aangevuld worden met andere informatie zoals b.v. een OS scan.
Metasploit Exploit
Het draaien van een Metasploit Exploit tegen een target machine is een beetje vergelijkbaar met de stappen die we tijdens bovenstaande reconnaissance hebben uitgevoerd. Dit gaat als volgt in zijn werk.
Om alle exploits te tonen gebruiken we:
show exploits |
De exploit lijst is onderverdeeld in 4 kolommen. De naam, de datum dat de exploit is toegevoegd, de waardering en de omschrijving.
Zoek je een specifieke exploit dan kun je deze weer zoeken:
search vnc |
Weet je welke exploit je wilt gebruiken dan selecteer je deze weer met het “use” commando:
use exploit/multi/vnc/vnc_keyboard_exec |
Nadat de payload geactiveerd is wordt deze in rood aangegeven achter de msf prompt:
Nu kun je de opties opvragen van de exploit zodat je weet wat je in moet stellen:
show options |
Bij een exploit kun je echter meer bekijken dan alleen maar opties. Zo kun je kijken welke systemen met deze exploit “aangevallen” kunnen worden:
show targets |
Uiteraard kun je ook hier de payloads bekijken welke je mee wilt geven aan de exploit. Onderstaande commando geeft je alle mogelijke payloads welke je toe kunt voegen aan je payload:
show payloads |
Geavanceerde instellingen zijn ook mogelijk:
show advanced |
En je kunt zien welke mogelijke evasie technieken er zijn en hoe deze ingesteld staan:
show evasion |
Er zit verschil tussen een actieve exploit en een passieve exploit.
Actieve exploit:
Een actieve exploit zal draaien tot deze voltooid is en daarna zichzelf afsluiten.
Passieve exploit:
Een passieve exploit luistert in de achtergrond tot een host een verbinding maakt (webbrowsers, ftp cliënts etc.) en zal na verbinding de exploit uitvoeren.
De vnc_keyboard_exec is een actieve exploit. Om deze uit te voeren moeten we 1 verplichte setting invullen, de remote host waar we de exploit tegen gaan uitvoeren, ofwel de RHOST. Als deze ingesteld is kunnen we de exploit draaien middels het commando:
exploit |
Reverse Shell
Hierboven hebben we gekeken hoe we een exploit uitvoeren. Deze exploit droeg echter geen payload met zich mee. Het enige resultaat dat je terugkrijgt is dan ook of de exploit wel of niet gelukt is.
Maar nu gaan we een payload meegeven. In de meeste gevallen wil je een “reverse shell” ofwel “connect back” payload meegeven waardoor de target machine een connectie maakt met de “hacker” machine. Dit is zinvol als de target machine zich achter een firewall bevind welke jou connecties blokkeerd (bind payloads) of als de payload zich niet aan de gewenste poort kan koppelen. In de meeste gevallen is een reverse shell het meest ideale scenario om te verkrijgen.
En als we dan een reverse shell mogen kiezen dan verkiezen we bijna altijd Meterpreter omdat deze stabieler is en meer opties geeft tot postexploitatie zoals railgun, berichtmodules, unieke meterpreter opdrachten (zoals webcambediening), enz.
We gaan nu dus het target infecteren met een reverse shell (Meterpreter).
Allereerst gaan we de exploit instellen:
use exploit/multi/vnc/vnc_keyboard_exec |
En dan gaan we zoeken welke payload we willen hebben:
show payloads |
In deze lijst staan veel Meterpreter payloads. Wij zoeken de “windows/meterpreter/bind_tct” payload.
Nu gaan we de payload instellen met het “set” commando:
set payload windows/meterpreter/bind_tct |
De payload is nu ingesteld op de exploit.
Als je nu de opties bekijkt zul je zien dat je opties in kunt stellen voor je exploit en voor je payload:
show options |
Zoals je ziet zijn er een aantal opties die we in moeten stellen:
Exploit:
RHOST (nog ingesteld op 192.168.1.22)
Payload:
RHOST (ingesteld op dezelfde remote host als de exploit)
LPORT
Deze waardes zijn al ingevuld met default values.
De waardes kunnen als ze nog niet ingesteld zijn uiteraard ingesteld worden met het “set” commando.
Als je nu het commando “exploit” geeft zal geprobeerd worden het target systeem te infiltreren met de opgegeven exploit. Als de exploit slaagt zal de payload op het systeem geladen worden.
In principe is dat alles. Als de payload geladen is heb je toegang tot de machine. Door middel van het “exit” commando kom je terug in de Meterpreter shell. Hier kun je met “help” alle mogelijke Meterpreter commando’s opvragen. Het volgende wat je dan zal proberen is om systeem toegang te krijgen. Je bent met bovenstaande exploit verbonden met het VNC proces maar je wilt verbonden worden met een systeemproces zoals “lsass” (Local Security Authentication Server Subsystem) waarmee je toegang krijgt tot het hele systeem. Dit kun je doen met het “migrate” commando.
migrate PID |
Einde van de Leer Metasploit reeks
We zijn helaas alweer aan het einde gekomen van deze 3-delige uitleg over Metasploit waarin je veel geleerd hebt over het framework. Voldoende om er zelf mee aan de slag te gaan. Ik kan me voorstellen dat er nog veel vragen niet beantwoord zijn maar deze worden wellicht later beantwoord in specialistische posts. Zo zullen we later een stuk dieper ingaan op de Meterpreter en ook op Metasploit.
Voor nu heel veel plezier gewenst met dit prachtige framework!
Vond je deze mini post serie leuk? Like dan s.v.p. mijn post(s) en deel ze op social media! Door deze post(s) te liken en te delen maak je mijn dag weer goed en weet ik waarom ik dit allemaal op “papier” zet. Dankjewel!