MouseJacking
MouseJacking, een term die je misschien al weleens gehoord hebt? In deze post wil ik je uitleggen en laten zien wat MouseJacking is en waarom de MouseJack attack tot op de dag van vandaag een prachtige attack vector is. MouseJacking focust zich op draadloze toetsenborden en muizen. Hoewel ik zelf zo min mogelijk draadloos probeer te werken worden draadloze devices nog ontzettend veel gebruikt. En omdat ze draadloos zijn worden er signalen verstuurd die opgepikt worden door een ontvanger. Een legitieme ontvanger… of niet?
Ter verduidelijking, MouseJacking is potentieel mogelijk voor alle draadloze devices maar in deze post focussen we ons op de RF (radio) connecties en niet op BlueTooth of andere draadloze verbindingen.
De theorie van MouseJacking is simpel:
- Vang een draadloos signaal op en onderschep de draadloze pakketjes
- Communiceer met dezelfde gegevens alsof je een legitiem apparaat bent
Vang genoeg pakketjes zodat je exact weet hoe de 2 devices met elkaar gekoppeld zijn (zoals b.v. de frequentie)
Feitelijk hebben we het hier over een RF Man-in-the-Middle aanval. Deze aanval is ontdekt of tenminste publiekelijk bekend gemaakt door het bedrijf “Bastille”. De devices die kwetsbaar zijn voor deze aanval staan vermeld op deze pagina: https://www.bastille.net/research/vulnerabilities/mousejack/affected-devices
Dit zijn allemaal devices welke communiceren over een 2.4 GHz frequentie middels RF technologie. De hack is dus van toepassing op alle apparaten met een “nRF24L01+” RF transceiver van “Nordic Semiconductor”. Een heel bekende transceiver is de “Logitech Unifying Receiver” welke door heel veel draadloze Logische apparaten gebruikt wordt.
De zwakheid die deze aanval mogelijk maakt is… “encryptie” of beter nog, de afwezigheid van encryptie (en authenticatie). Draadloze bluetooth apparaten werken met een compleet andere protocol stack en betere encryptie waardoor dat MouseJacking hier veel lastiger op toe te passen is. Bij de RF receivers wordt het signaal van de muis zonder encryptie draadloos verzonden. Dit signaal kan dus onderschept en uitgelezen worden en vervolgens kan de aanvaller zijn eigen pakketten versturen naar de ontvanger met dezelfde eigenschappen waardoor dat de ontvanger “denkt” dat het legitieme pakketten zijn en deze verwerkt.
Toetsenbord signalen worden meestal wel versleuteld naar de RF receiver verstuurd waardoor dat het “afluisteren” van toetsenbord aanslagen een stuk lastiger is. Sommige RF receivers accepteren overigens wel unencrypted data waardoor dat het “afluisteren” van toetsaanslagen niet mogelijk is maar het wel mogelijk is om zelf toetsaanslagen naar de receiver te sturen welke hij vervolgens zal uitvoeren. En zelfs als de RF receiver alleen versleutelde toetsenborden toestaat is het in sommige gevallen mogelijk om toetsenbord aanslagen via het onveilige kanaal van de muist te versturen. Een andere en meer geavanceerde techniek die ook goed werkt om sommige RF receivers is om ze te laten “pairen” met het “toetsenbord” van de hacker waardoor de hacker de encryptiesleutel bemachtigd en keystrokes kan verzenden. In dit geval ondervind de gebruiker hier uiteraard hinder van omdat zijn eigen toetsenbord/muis niet meer functioneert. Als deze zijn apparaten opnieuw “pairt” en weer verbinding heeft, en de RF receiver gebruikt dezelfde encryptiesleutel dan kan de hacker v.a. dat moment ook keystrokes “afluisteren”.
Twee nadelen van MouseJacking zijn:
- Je moet in de buurt zijn (tot op 100 meter afstand) om het te kunnen uitvoeren.
- Als er zich veel draadloze apparaten bevinden in de omgeving is het lastig te onderscheiden van wie je het verkeer onderschept en op wel device je op dat moment MouseJacking aan het toepassen bent.
Sommige beweren dat met de juiste apparatuur de 100 meter beperking opgerekt kan worden tot 500+ meter maar persoonlijk heb ik deze afstand nooit gehaald.
MouseJack Attack Firmware Installatie
Hoe voer je dan de MouseJacking attack uit? Eigenlijk heel simpel. Je hebt hier uiteraard een draadloze toetsenbord / muis voor nodig op basis van de Nordic nRF24LU1+ Semiconductor chipset. Daarnaast kunnen we de volgende devices gebruiken om de MouseJack aanval mee uit te voeren:
- CrazyRadio PA USB dongle
- SparkFun nRF24LU1+ breakout board
- Logitech Unifying dongle model C-U0007 (Nordic nRF24LU1+ Semiconductor chipset)
Bovenstaande 3 devices kunnen voorzien worden van speciale firmware. Daarnaast kunnen deze 3 devices geflashed worden middels USB wat het flashen een stuk gemakkelijker maakt.
Ik gebruik de “CrazyRadio PA USB dongle” van bitcraze.io. De Crazyradio PA is een lange afstand open USB RF dongle gebaseerd op de nRF24LU1+ chipset van Nordic Semiconductor. CrazyRadio PA beschikt over een 20dBm eindversterker, LNA en wordt voorgeprogrammeerd met firmware die compatibel is met Crazyflie open-source drone. Het voordeel aan de CrazyRadio PA t.o.v. de SparkFun of de Logitech dongel is zijn eindversterker. Deze eindversterker vergroot het bereik en geeft ons een aanvalsafstand van 100 meter en meer als het device direct (line-of-sight) te benaderen is.
CrazyRadio PA beschikt over 125 radio kanalen en een 2Mbps, 1Mbps and 250Kps communication datarate welke pakketjes kan verwerken met een payload tot 32 bytes. Daarnaast beschikt hij over een SPI en UART interface. Zonder antenne weegt hij slechts 6 gram. CrazyRadio PA is een open project welke beschikt over een Python API om het aan te sturen en dat maakt hem universeel en ideaal voor de MouseJack attack.
Het eerste wat we met de CrazyRadio PA moeten doen is deze voorzien van nieuwe firmware. De firmware die we erop gaan plaatsen is te vinden op de GitHub pagina van Bastille: https://github.com/BastilleResearch/mousejack.
Allereerst gaan we de required packages installeren waaronder PyUSB en Platformio:
apt-get install sdcc binutils python python-pip pip install -U pip pip install -U -I pyusb pip install -U platformio |
Nu gaan we de firmware downloaden:
git clone https://github.com/BastilleResearch/nrf-research-firmware.git |
Plug nu de CrazyRadio PA in de computer (of redirect de input naar je virtuele machine van het “RFStorm Research Firmware [0001]” device). Nu gaan we de firmware compilen:
cd nrf-research-firmware-%id% make |
Disconnect de CrazyRadio PA en connect hem opnieuw.
En nu gaan we de firmware maken:
make install |
De firmware zoekt nu naar compatible devices en zal over USB de firmware flashen van de CrazyRadio PA. Disconnect de CrazyRadio PA opnieuw en plug hem opnieuw in de computer. De CrazyRadio PA is nu klaar voor gebruik.
MouseJack Attack
Nu de CrazyRadio PA helemaal klaar is kunnen we onze eerste scan gaan uitvoeren. Dit doen we door naar de tools directory te gaan:
cd tools
python nrf24-scanner.py |
We kunnen een krachtigere scan uitvoeren door de “-l” flag toe te voegen:
python nrf24-scanner.py -l |
Het is belangrijk om te weten dat een draadloos apparaat pas communiceert als deze gebruikt wordt. Een draadloze muis moet dus bewegen of er moeten buttons ingedrukt worden alvorens de scanner deze signalen kan oppikken. Als de scanner deze oppikt ziet dit er als volgt uit:
In de tools directory bevindt zich ook een sniffer, een network mapper en een tone test script.
De tool die echter beter geschikt is om een aanval uit te voeren is de “JackIt” tool van “InsecurityOfThings”. Deze repository is hier te vinden: https://github.com/insecurityofthings/jackit.
Laten we eerst deze toolkit eens installeren in “/opt/jackit”:
git clone https://github.com/insecurityofthings/jackit.git /opt/jackit cd /opt/jackit pip install -e . |
JackIt heeft de fantastische feature om Ducky scripts te kunnen uitvoeren op de target. Met andere woorden. JackIt scant naar vulnerable devices (via de CrazyRadio PA) en zal na herkenning het Ducky script uitvoeren. De computer denkt dat de legitieme muis (of toetsenbord) deze (ontzettend snelle) toetsen indrukt en zal deze op het scherm uitvoeren. Nu hebben we dus de mogelijkheid om informatie te ontfutselen of om changes op het netwerk te maken.
jackit --script /root/Desktop/MyDuckyScript.script |
Na bovenstaande commando zal de scanner starten en alle devices opsommen welke vatbaar zijn voor de MouseJack attack. Als je klaar bent met scannen stop je de scanner met CTRL+C en geef je het nummer in van het device waar je de payload uit het Ducky script op wilt uitvoeren. Je kunt ook meerdere target opgeven door ze te scheiden middels een komma of alle targets door de tag “all” in te voeren.
*Zoals je in bovenstaande afbeelding kunt zien is mijn Logitec Unifying Receiver van een nieuw model en niet injecteerbaar. Op een iets ouder model zou dit er als volgt uitzien:
JackIt heeft echter meer opties. Zo kun je de scanner continue laten lopen en zal JackIt met de “-autopwn” flag het Ducky script uitvoeren op elke unieke target hij vindt:
jackit --script /root/Desktop/MyDuckyScript.script --autopwn |
Er is ook een “–debug” flag, een “–keylogging” flag en een flag om de layout van het toetsenbord op te geven “–layout”. Wil je een specifiek device of een specifiek merk aanvallen dan doe je dat als volgt:
jackit --script /root/Desktop/MyDuckyScript.script --address %MAC-of-Device-to-attack% --vendor Microsoft |
jackit --script /root/Desktop/MyDuckyScript.script --vendor Microsoft |
Op basis van de MouseJacking attack zijn ook andere aanvaller in kaart gebracht. Zo heeft Samy Kamkar de “KeySweeper” uitgebracht op basis van een Arduino microcontroller welke eruit ziet als een USB oplaad adapter welke Microsoft keystrokes onderschept, decrypt en opslaat en eventueel deze data kan doorsturen over het internet.
De moraal van dit verhaal is dus, kijk uit met wireless devices. Devices met een zwakke bluetooth encryptie zijn waarschijnlijk de volgende generatie die vatbaar gaat zijn voor MouseJacking activiteiten!
Conclusie
Zoals je gezien hebt is MouseJacking helemaal niet zo ingewikkeld als je over de juiste tools beschikt. Maar . “Goed gereedschap is het halve werk” zei mijn moeder altijd en dat is hier ook het geval. MouseJacking is al mogelijk met een stukje hardware van slechts 15 euro (de CrazyRadio PA is iets duurder, deze kost +/- 35 euro). Daarentegen is het heel makkelijk om jezelf te beschermen tegen dit soort aanvallen. Gebruik een andere draadloze methode of beter nog, gebruik helemaal geen draadloze maar gewoon een bekabelde methode. Uiteraard kan ook “Device Control” in deze ook helpen en is het altijd goed om je computer te locken als je hem even onbeheerd achterlaat.
De MouseJack attack is erg leuk om te doen. Hopelijk vond je deze post ook leuk om te lezen en heb ik je kunnen voorzien van wat extra informatie. Uiteraard zou ik het leuk vinden om als dank een like, of leuk berichtje te krijgen. En deel deze post gerust op je sociale kanalen of op je website. Hoe meer zielen, hoe meer vreugd! Dankjewel!
PS: Weet je nog een leuk onderwerp welke ik nog niet behandeld heb? Stuur me een tip en wie weet is dat de volgende post die ik ga uitwerken!