Hacken met een Teensy

Update 14 – Inzicht – januari 2012 door Ward Wouts, security consultant Madison Gurkha

Een populaire social engineering aanval is het verspreiden van geprepareerde USB-sticks om vervolgens met onder andere de autorun-functionaliteit malware uit te laten voeren.

Ook Madison Gurkha voert dit soort onderzoeken uit. Hierbij verspreiden wij of de klant een aantal door ons geprepareerde USB-sticks die, zodra ze in een laptop of pc worden gestopt, verbinding maken met een van onze systemen. Zo kunnen we zien of mensen deze USB-sticks in hun computer steken. In de praktijk is dat vaak het geval, want “wat kan het nu voor kwaad?”. (Een recent onderzoek van Sophos, het anti-virus bedrijf, laat zien dat van 50 verloren USB-sticks 66% besmet was met malware.)

In dit artikel behandel ik een andere manier om via USB aanvallen uit te voeren. Voor ons is één van de leuke kanten van USB-aanvallen dat zowel het menselijk handelen als de hardware, factoren zijn waar we rekening mee moeten houden. Waar onze normale aanvallen zich vooral in softwareland afspelen krijgen we hier dan ook te maken met de hardwarekant.

Arduino
In 2005 is door Massimo Banzi en David Cuartielles het “arduino” project gestart. De vruchten van dit project zijn een stuk open hardware, het arduino-bord en een bijbehorende (open source) programmeeromgeving. Het bordje is een klein printplaatje met een chip erop. Het doel was om op een eenvoudige manier de functionaliteit van de chip bereikbaar te maken. Destijds is dit platform bedacht om studenten de mogelijkheid te geven om tegen geringe kosten ervaring op te doen met elektronische aansturingen en de interactie daarmee. teensy arduino teensyduino

De eerste versie van deze hardware werd geprogrammeerd door het bordje met een seriële kabel (RS-232) met een PC te verbinden. Destijds een logische keuze, aangezien de chip op het bordje direct met die seriële verbinding geprogrammeerd kan worden. Al snel werd dit vervangen door op de bordjes een extra chipje op te nemen dat een USB/serieel-vertaalslag kan maken. Vanaf toen konden de bordjes via een USB-poort geprogrammeerd en aangestuurd worden. Iets wat ik heel handig vind, aangezien mijn Apple laptop al jaren geen seriële-poort meer heeft.

In een nog latere versie is het chipje dat de USB/serieel-vertaalslag maakt (oorspronkelijk een specialistische “FTDI”-chip) vervangen door een meer algemeen en programmeerbare chip. Een groot voordeel hiervan is dat het arduino-bordje nu niet alleen serieel via USB kan communiceren, maar zich nu in principe ook kan gedragen als andere USB-apparaten. Bijvoorbeeld als een muis, een toetsenbord of een joystick.

Naast al deze hardwareontwikkelingen heeft de arduino ook een hoop culturele ontwikkelingen in gang gezet. Door zowel de hardware als de software open, eenvoudig en goedkoop te houden zijn veel mensen in aanraking gekomen met het bouwen van besturingen, die daar anders wellicht nooit aan begonnen zouden zijn. Zo wordt de arduino, bijvoorbeeld, regelmatig gebruikt in kunstprojecten.

Aangezien de hardware open is, zijn er ondertussen ook een groot aantal arduino-klonen op de markt. Sommigen willen simpelweg een goedkoper alternatief zijn, zoals bijvoorbeeld de “seeeduino”. Anderen voegen netwerkmogelijkheden toe, zoals de “nanode”. Weer anderen bieden meer aan sluitmogelijkheden of zijn dusdanig flexibel dat ze in kleding gestikt kunnen worden.

Teensy
Een van de arduino-klonen, de teensy, legt de focus op een zo klein mogelijk formaat (30x18mm). Voor het gebruiken van de teensy in de arduino-programmeeromgeving is het nodig om wat extra software te installeren, “teensyduino” genaamd. Deze software voegt het teensy-bordje toe aan de  
arduino-programmeeromgeving, samen met de optie om diverse USB-types in te stellen. De ondersteunde types zijn:
* serieel;
* toetsenbord, muis en joystick;
* disk (internal) en toetsenbord;
* disk (SD card) en toetsenbord;
* MIDI;
* Raw HID.

Wanneer een van de toetsenbord-types gekozen wordt, kan het teensy-bordje zo geprogrammeerd worden dat het, na het aansluiten, toetsenbordaanslagen naar een PC stuurt. Het ziet er op het scherm dan ook uit alsof er iemand commando’s zit in te tikken. Dit kunnen alle commando’s zijn die de programmeur graag uitgevoerd ziet. In ons geval is dat vaak iets als Windows-R (om de run-box te krijgen). Gevolgd door “iexplore” om internet explorer te starten. Daarna een paar tellen wachten om internet explorer de tijd te geven te starten. Dan F6, om naar de locatiebalk te springen, gevolgd door “http://www.madison-gurkha.com”. Dit is niet om de hits op onze website op te schroeven, maar om aan te tonen dat het mogelijk is om op deze manier kwaadaardige software uit te laten voeren.

Nu zullen de meeste mensen niet zomaar een printplaatje aan hun computer hangen. Dat ziet er te vreemd uit. De kunst is dan ook om er een aantrekkelijke behuizing omheen te bouwen. Bijvoorbeeld een mooie muis, zoals gedemonstreerd door Netragard.

SET
Wij zijn niet de enigen die zich met dit soort zaken bezig houden. Veel mogelijke social engineering technieken zijn gebundeld in de Social Engineering Toolkit (SET). Deze toolkit kan kant en klare programmacode voor de teensy genereren, ook voor spannendere zaken dan een URL bezoeken. Deze code kan vervolgens met de arduino-programmeeromgeving in het teensy-bordje worden
geladen. De door SET gegenereerde code maakt gebruik van de Windows ALT-codes, om via het nummerieke toetsenbord de commando’s op te geven. Dat is zo geïmplementeerd omdat het SET-project er tegenaan liep dat niet alle toetsenborden hetzelfde zijn. In Nederland zien we vooral US International toetsenborden, maar bijvoorbeeld Duitse of Vlaamse toetsenborden zijn heel anders. Via de ALT-codes zagen ze een manier om toch steeds dezelfde karakters in te geven. Hier zit wel een nadeel aan: als num-lock uit staat werkt het niet. Zo kent de SET code nog enkele onhebbelijkheden, maar al met al is het een erg leuk startpunt.

USB Rubber ducky
Een alternatief voor het programmeren van een teensy en het zelf bedenken van een aantrekkelijke behuizing is de USB Rubber ducky. De rubber ducky ziet er uit als een normale USB-stick (ook verkrijgbaar als eendje). De ducky maakt gebruik van micro-SD-kaartjes met een simpel tekst bestand met de gewenste toetsaanslagen.

 

@Secura 2018
Webdesign Studio HB / webdevelopment Medusa