LLMNR Responder – Poinsoner
In deze post gaan we kijken naar een poisoner die wat minder bekend maar zeker niet minder effectief is, de LLMNR Poisoner, Responder. De LLMNR Responder is een poisoner voor het LLMNR, NBT-NS en MDNS protocol en doet dit op zeer effectieve wijze. Deze poisoner is gebouwd op het Python framework en dus ook alleen uitvoerbaar mits Python geinstalleerd is. Deze poisoner maakt het mogelijk om binnen enkele minuten credentials te verzamelen op een netwerk waar deze protocollen gebruikt worden. Er zijn vele voorbeelden bekend waarbij binnen een minuut admin credentials achterhaald zijn. Kortom, een effectieve poisoner. Hier zoomen we wat dieper op in.
De LLMNR Poisoner (simpelweg genaamd “Responder”) is gemaakt door Spiderlabs (Laurent Gaffie) en wordt nu door ontwikkeld door “lgandx”. Spiderlabs is bekend van meerdere tools zoals CVE-Server, ModSecurity en HostHunter. Lgandx heeft ook een Responder tool voor Windows. Responder wordt door Spiderlabs als volgt omschreven:
“
Responder is a LLMNR, NBT-NS and MDNS poisoner, with built-in HTTP/SMB/MSSQL/FTP/LDAP rogue authentication server supporting NTLMv1/NTLMv2/LMv2, Extended Security NTLMSSP and Basic HTTP authentication.
“
Responder luistert via een IPv4 en een IPv6 Links-Scope Multicast adres, namelijk:
IPv4 – 224.0.0.252, MAC-adres 01-00-5E-00-00-FC
IPv6 – FF02: 0: 0: 0: 0: 0: 1: 3, MAC-adres 33-33-00-01-00-03
Responder luistert (afhankelijk van de ingestelde listeners) op een aantal specifieke poorten, namelijk UDP 137, 138, 53, 389 en TCP 389, 1433, 80, 139, 445, 21, 3141, 25, 110, 587 en tenslotte Multicast UDP 5553. Uit deze poorten kun je misschien wel ophalen welke services bediend worden door Responder. Responder luisterd en antwoord op specifieke NBT-NS requests (NetBIOS Name Service) en doet dit standaard voor File Service Requests (SMB) maar kan ook gebruikt worden voor Workstation Service Requests. De listener kan echter ook ingesteld worden om te reageren op andere requests zoals LDAP, MSSQL, HTTP, HTTPS, FTP en vele anderen, De nieuwe versies hebben ook een build-in DNS server welke op host A requests antwoord. Dit kan weer van pas komen tijdens een ARP Spoofing aanval. LLMNR Responder is geen basis 1-task dedicated tool. LLMNR Responder is een “Network Takeover Tool” en een must have voor security professionals en penetration testers.
Het idee achter Responder is dat hij antwoord geeft op deze “File Service Requests” en vervolgens vraagt aan de cliënt / aanvrager zich te authentiseren waarna de hash verkregen wordt. Poisoning right?!
Zo werkt de basis functionaliteit van de LLMNR Responder.
Voor het omzetten/resolven van een hostnaam zal Windows eerst zijn local hosts file gebruiken en vervolgens zijn lokale DNS cache. Als dat faalt zal een globale DNS request op het netwerk gedaan worden. Als een de client dan nog de hostnaam niet kan omzetten gebruikt deze het Link-Local Multicast Name Resolution (LLMNR) -protocol om computers in het netwerk te vragen of deze de hostnaam kennen en om kunnen zetten. LLMNR bestaat sinds Windows Vista en resolved zowel over IPv4- als IPv6 adressen.
Als de cliënt faalt om een omzetting te doen via LLMNR dan wordt NetBios Name Service (NBT-NS) gebruikt. NBT-NS is een soortgelijk protocol als LLMNR maar werkt alleen voor IPv4 adressen.
Een LLMNR of NBT-NS verzoek kan aan elke host in het netwerk worden gevraagd en elke host kan antwoorden. Zelfs als een host op een van deze verzoeken met onjuiste informatie reageert, wordt deze nog steeds als legitiem beschouwd. En dat is waar Responder zijn werk doet. De Responder reageert namelijk op elk verzoek (uiteraard afhankelijk van de configuratie).
LLMNR Responder Downloaden en Installeren
Omdat Responder op het Python framework draait is de installatie kinderspel. Download de GIT repository:
git clone https://github.com/lgandx/Responder.git |
En je bent klaar 🙂
De responder kan gestart worden door “Responder.py” te starten met toevoeging van je listening interface (de interface die luistert en reageert op netwerkverzoeken. Voor MacOS moet je je lokale IP ook toevoegen zoals in onderstaande voorbeeld. Let op dat je Responder start als sudo/root:
sudo python Responder.py -i 192.168.1.1 -I eth0 |
De default Responder settings zien er als volgt uit:
LLMNR Responder Configureren
Nu je de LLMNR Responder kunt starten is het zaak om ermee te werken. Gelukkig beschikt de tool over een duidelijke help:
python Responder.py --help |
De volgende flags zijn interessant:
- -A = Analyze optie. Op deze manier zie je de requests voorbij komen zonder dat de Responder reageert / antwoord.
- -r = Antwoord ook op NetBIOS Wredir queries.
- -d = Antwoord op NetBIOS Domain Suffix Queries. (NBTNS). Let op, deze functie kan zaken op het netwerk defect maken.
- -f = Fingerprint. Deze optie maakt het mogelijk om een host beter te identificeren n.a.v. LLMNR responses.
- -w = WPAD. Start de WPAD rogue service
- -v = Verbose functie / meer logging/output
Naast deze snelle configuratie flags kent de LLMNR Responder een uitgebreide config file:
nano Responder.conf |
In deze Responder.conf kun je alle facetten van de Responder configureren om op die manier Responder (default) in de juiste mode te starten. Denk aan de te starten servers. Wil je b.v. de Responder niet meer op FTP en HTTP requests laten reageren om zo stealthy te werk te gaan…dat kan. Wil je alleen of juist niet op specifieke hosts reageren, dat kun je hier ook instellen. Er is ook een instelling die ervoor zorgt dat de LLMNR Responder niet meer reageert op verzoeken van een host nadat de hash van die host verkregen is.Ook certificaten voor de HTTPS server en de naamconventies van logs zijn in dit bestand aan te passen. Dus alvorens je met Responder aan de slag gaat is het raadzaam om dit bestand na te kijken en de config naar wens in te vullen.
Nadat je data gecaptured hebt worden de logs en daarmee ook de hashes opgeslagen in de logs folder. Sommige wachtwoorden zullen in plain-text gecaptured worden (FTP, POP3, SMTP, IMAP) maar de meeste cliënt responses zullen een NLTLMv2 hash delen. Deze hash moet later met een password cracking tool zoals Hashcat nog gekraakt worden zodat er een plain-text / leesbaar wachtwoord verkregen wordt welke weer verder gebruikt kan worden.
Alle hashes worden via een dump naar stdout gedumpt in een uniek bestand dat voldoet aan de John Jumbo standaard. Deze hashes hebben het volgende formaat:
(MODULE_NAME) – (HASH_TYPE) – (CLIENT_IP) .txt
Alle overige logbestanden vindt je in de “logs /” folder. Hashes worden slechts eenmaal per gebruiker per hashtype geregistreerd en opgeslagen behalve als verbose-modus (-v) logging gebruikt wordt. Resonder zal ook alle captured hashes opslaan in zijn SQLite database en kent daarnaast ook de volgende logs:
- Alle activiteiten > Responder-Session.log
- Analysemodus logs > Analyse-Session.log
- Poisoning logs > Poisoners-Session.log
De hoofdapplicatie uit de LLMNR Responder suite is de LLMNR poisoner “Responder.py”. Maar de suite kent nog een aantal tools.
Report.py genereerd een totaalrapportage van de laatste poisoning sessie:
python Report.py |
In de tools directory vindt je diverse andere tools zoals een BrowserListener (luisterd alleen naar browser requests), FindSQLSrv (voor het opsporen van SQL servers) en FindSMB2UPTime om servers te vinden die vatbaar zijn voor de Kerberos flaw beschreven in MS14-068. De toolkit biedt echter ook nog een hele andere interessante tool, namelijk “RunFinger.py”. De RunFinger tool wordt gebruikt voor het identificeren van machines op het netwerk waarbij SMB signing niet enabled is en dus vulnerability MS17-010 tot de mogelijkheden behoord zoals het uitvoeren van NULL sessions. Deze tool start je als volgt (simpel dus):
sudo python RunFinger.py -i 192.168.1.0/24 -a |
In bovenstaande voorbeeld scannen we alle host op een subnet. Uiteraard kun je ook een enkele host scannen.
Een andere zeer interessante tool is de “MultiRelay” tool. MultiRelay is een krachtig pentest-hulpprogramma waarmee gerichte NTLMv1- en NTLMv2-relays uitgevoerd kunnen worden tegen een specifieke target. MultiRelay kan HTTP-, WebDav, Proxy- en SMB-verificaties doorsturen naar een willekeurige SMB server naar keuze. Het interessante is dat MultiRelay kan worden gebruikt om specifieke gebruikers te targetten. Dit maakt het mogelijk om alleen domain administrators, local administrators en andere privileged accounts te targeten. Nadat een succesvolle poisoning heeft plaatsgevonden geeft MultiRelay een interactieve shell retour waarmee remote bepaalde taken kunnen worden uitgevoerd zoals het dumpen van de SAM database, registry keys of het uitvoeren van commando’s.
MultiRelay wordt gestart door de parameters van de targetserver op te geven alsmede de elevated user waar MultiRelay op moet reageren:
sudo python MultiRelay.py -t 192.168.1.1 -u Administrator Beheerder Admin PowerUser |
Conclusie
LLMNR Responder is een absolute must-have tool bij een pentest. Deze tool maakt het bijna kinderspel (zeker in een druk Windows netwerk) om bruikbare hashes en soms zelfs clear-text wachtwoorden te bemachtigen. Do try this at home… and also remote (if permitted)!
Als je tot deze zin gelezen hebt dan denk ik dat je deze post interessant vond 🙂 Dankjewel! Wil je een vervolg op deze post of heb je een goede tip/tool die ik de volgende keer moet behandelen? Laat het me weten! Deel en like dit bericht uiteraard ook… dat is de support die me helpt en motiveert om te blijven schrijven. Tot de volgende!