RouterSploit – Router Exploitation Framework
RouterSploit klinkt wel een beetje als Metasploit… toch? Klopt. RouterSploit is een exploitation framework voor randapparatuur en met name voor routers. Veel mensen beschermen hun computers en zelfs hun telefoons maar laten andere netwerkonderdelen en IoT devices vaak onbeveiligd achter. RouterSploit is gemaakt zodat jij als beheerder deze apparaten kunt ontdekken en patchen, upgraden of vervangen indien nodig. Zoals altijd kan (en zal) de software ook malicious gebruikt worden. Dus nu eerst, een disclaimer:
RouterSploit klinkt niet voor niets een beetje als “Metasploit”. Het toont ontzettend veel overeenkomsten zoals het feit dat de code open-source is, command-line navigatie en de opbouw van de commando’s. Als je een beetje thuis bent in Metasploit van is RouterSploit geen enkel probleem voor je.
RouterSploit is een Python based applicatie waarvoor iedereen gemakkelijk eigen modules kan ontwikkelen. Op die manier kun je dus mee ontwikkelen aan de RouterSploit software. Het word aangeraden zeer regelmatig RouterSploit te updaten omdat er bijna op dagelijkse basis nieuwe modules aan toegevoegd worden.
Routers (en andere devices zoals IoT en webcams) zijn een gemakkelijk doelwit voor hackers maar ook voor veiligheidsdiensten. Zoals bekend hebben de CIA en de NSA complete netwerken van geïnfecteerde routers zodat gemakkelijk alle apparaten afgeluisterd kunnen worden. Vaak wordt je router na de hack voorzien van speciale firmware waardoor het voor de gebruiker niet meer mogelijk is om een firmware update te doen. Dit noemen we “rootkitting”. CherryBlossom is een van deze rootkits die door de CIA gebruikt is, en uitgelekt is in de WikiLeaks documenten.
Als de CIA en de NSA dit kunnen wie zegt dan dat hackers het niet doen. Voorkom dat je router participeert in een crimineel netwerk en gebruikt wordt om malafide data te verzenden (proxieen). Scan dus ook periodiek je eigen netwerk. RouterSploit is hier uitermate geschikt voor. Uiteraard zijn er andere tools (met GUI) zoals RouterScan van “Stas’M” maar vandaar focussen we ons op RouterSploit.
RouterSploit Modules
RouterSploit is net als Metasploit opgebouwd uit verschillende modules zoals exploits, payloads, scanners en creds. Ook zijn er nog zogenaamde “generic” modules.
Exploits
Exploits worden gebruikt om vulnerabilities in de router te misbruiken om op die manier toegang te verkrijgen.
Payloads
De werkelijke payload / data. Dus de code die gebruikt wordt om een exploited router te infecteren / herschrijven.
Scanners
Deze module scant het netwerk en/of een apparaat om te kijken of deze potentieel vatbaar is voor een exploit (en dus of er een vulnerability aanwezig is).
Creds
De “Creds” ofwel “credentials” module wordt gebruikt om credentials te testen op de verschillende apparaten. Met de creds module kun je dictionary attack uitvoeren op verschillende netwerkprotocollen zoals:
- FTP
- SSH
- Telnet
- HTTP Basic
- HTTP Form
Generic
Modules die generieke acties uitvoeren zoals diverse code improvements.
RouterSploit Installatie
De installatie van RouterSploit is simpel. RouterSploit kan geïnstalleerd worden op Kali, Ubintu, OSX en Docker. Uiteraard gebruik ik mijn geliefde Kali voor deze demo.
Omdat RouterSploit een Python module is moeten ook Python3 en Python PIP (voor het installeren van Python modules) aanwezig zijn op de computer. Als deze nog niet aanwezig zijn installeren we deze als volgt:
apt-get install python3-pip requests paramiko beautifulsoup4 pysnmp |
Naast bovenstaande applicaties moeten nog een aantal pakketten gedownload worden. Dit kunnen we automatisch doen vanuit een meegeleverde “requirements” file. Om RouterSploit dus volledig te installeren gebruiken we:
git clone https://github.com/threat9/RouterSploit cd RouterSploit python3 -m pip install -r requirements.txt |
Om ook Bluetooth low-energy support in te schakelen moeten we libglib2 en bluepy installeren:
apt-get install libglib2.0-dev python3 -m pip install bluepy |
Om vervolgens RouterSploit te starten navigeren we naar de RouterSploit directory en starten we de applicatie als volgt (RSF staat uiteraard voor RouterSploit Framework):
python3 ./rsf.py |
Zoals je ziet heeft het uiterlijk veel weg van Metasploit. De banner, versie, module counters en de prompt:
Om RouterSploit te updaten kun je simpelweg (vanuit de RouterSploit directory) de nieuwste versie downloaden vanaf GitHub:
git pull |
RouterSploit Scanners
Laten we eerst eens kijken wat voor soort scanners we aan boord hebben:
search scanner |
We hebben een router scanner, camera scanner, misc scanner en de autopwn scanner. Aangezien ik in dit voorbeeld exact weet wat voor router ik wil scannen kies ik voor de router scanner.
use scanners/routers/router_scan |
Alvorens we de scan kunnen draaien moeten we een paar opties instellen:
show options |
Zoals je ziet wordt veranderd na het kiezen van een module in de naam van de module in rood net zoals in …. Je raad het al…. In Metasploit. Zoals je ziet moeten we nog een target invullen. De overige opties zoals de poorten zijn in orde.
set target 192.168.1.1 |
Nu de target is ingesteld lanceren we de scan met het “run” commando.
run |
De scanner zal de target nu testen op alle vulnerabilities:
Zoals je in bovenstaande afbeelding ziet heeft RouterSploit geen vulnerabilities gevonden en is het ook niet gelukt om in te loggen met default credentials.
Om de module af te sluiten en terug te gaan naar de RouterSploit homepage gebruik je het “back” commando.
back |
AutoPawn (autopwn) Module
Als stealth geen vereiste is dan kun je de “autopwn” module gebruiken. Deze module test niet alleen op vulnerabilities maar zal deze ook automatisch proberen te exploiteren. Dit werkt op dezelfde manier.
use scanners/autopwn |
Ook hier moeten we de target invullen en draaien we de scanner:
set target 192.168.1.1
run |
En uiteraard is de uitkomt met onze testrouter hetzelfde.
Brute Force
We kunnen nu nog proberen om met de “creds” module een brute force aanval te doen. We starten de “creds” module als volgt:
use creds/routers/Fortinet/ftp_default_creds |
Het “show options” commando geeft ons de volgende opties:
Zoals je ziet zijn hier 2 belangrijke velden welke we moeten nakijken. Allereerst stellen we de target weer in:
set target 192.168.1.1 |
En vervolgens moeten we de gebruikersnaam + wachtwoord combinaties invullen welke RouterSploit moet proberen. We kunnen dit doen door deze handmatig in te voeren in de vorm username:password of door een password file te specificeren.
Laten we een password file specificeren:
set defaults file:///usr/share/wordlists/rockyou.txt |
En om de brute force te draaien gebruiken we uiteraard het “Run” commando.
Eureka. Deze aanval (uiteraard in scene gezet) heeft meer effect en er zijn credentials gevonden waarmee we kunnen inloggen middels FTP.
RouterSploit Exploit
Wat als de scanner nu had uitgewezen dat de router wel vulnerabilities had. Dan hadden we deze kunnen exploiten. Het exploit proces werkt ongeveer hetzelfde als het scan proces. Allereerst kiezen we een exploit:
use exploits/routers/fortinet/fortigate_os_backdoor |
Vervolgens bekijken we de opties. In dit geval is wederom alleen de target nodig.
set target 192.168.1.1 |
Vervolgens kunnen we een dubbelcheck doen om te kijken of de target vatbaar is voor de gekozen exploit:
check |
En als de target vatbaar is voeren we de exploit uit:
run |
Als de exploit succesvol is dan is het afhankelijk van de gekozen exploit wat er vervolgens gebeurt. Soms kun je de configuratie aanpassen of code injecteren of het routerwachtwoord bekijken. Wat er ook gebeurt, het zijn allemaal zwakheden in het netwerk welke opgelost moeten worden.
Conclusie
RouterSploit is een prachtige tool om te integreren in je Kali OS. security specialisten (en hackers) zijn over het algemeen bekend met Metasploit en dus zal RouterSploit geen enkel probleem zijn qua werking en navigatie. RouterSploit wordt actief ontwikkeld en ondersteund door de community en het is vrij gemakkelijk om hier zelf aan bij te dragen. Absoluut een mooie tool maar zoals altijd geen wondermiddel voor elke omgeving of elke situatie.