Montag, 12. Oktober 2009

klaute's HackStick

Eigentlich wollte ich erst darüber schreiben sobald er fertig ist, allerdings hat sich das ganze als ein recht anspruchsvolles und vor allem zeit intensives Projekt entpuppt.
Es geht um meinen USB HackStick an dem ich nun schon seit Anfang April mehr oder weniger regelmäßig arbeite. Die Idee so ein Tool zu entwickeln kam während einem Gespräch auf einem treffen der LUUG-HN. Es ging im Laufe dieses Gesprächs zunächst um die Sicherheit bzw. Angreifbarkeit von Modulen im Linux-Kernel.
Die Idee war zunächst, sich dabei die Module im Linux-Kernel heraus zu picken, welche seit mehr als 12 Monaten nicht mehr "gefixt" wurden, um sie gründlich auf etwaige sicherheitskritische Probleme zu untersuchen. Besonders auffällig wurden uns, nach kurzer Suche, die Module für den Parallel- und USB.-Port Da jedoch die Parallelports am aussterben waren bzw. bereits ausgestorben sind wanderte der Fokus schnell auf die USB Schnittstelle. Es kam also die Frage auf ob der USB-Stack von außen, also per USB-Device , angreifbar ist. Um dies herauszufinden könnte man nun den Code des USB-Stack durchgehen und daraufhin dann ein Device für den daraus resultierenden Exploit ggf. herzustellen. Oder man dreht das ganze um, baut erst die Hardware und lässt diese gezielt den USB-Stack auf Lücken untersuchen (Fuzzing).

Der HackStick ist also ein Device welches dazu verwendet werden, kann händisch oder automatisch, per TTY direkt den USB-Stack zu penetrieren.

Was die Hardware für den HackStick angeht, sie ist recht simpel gehalten. Im groben besteht diese aus einem Atmel AVR-Mikrocontroller mit 16 MHz Taktung, ein paar Widerständen, LED's zur Statusanzeige und verschiedenen Schnittstellen. Die Software/Firmware auf dem Stick beinhaltet einmal einen USB Stack für HID Devices (V USB) und ein TTY welches auf das per RS232 zugegriffen werden kann. Die Firmware ist größtenteils in C geschrieben. Je nachdem welche Funktionen in der Firmware aktiviert wurden kann der Stick direkt per USB (USBASP kompatibel) oder per ISP programmiert werden. Da in der aktuellen Version noch kein TreiberIC für RS232 enthalten ist muss noch eine Treiberplatine an den Stick angeschlossen werden um auf das TTY zugreifen zu können. Der Stick ist momentan in den letzten Schritten, um mit dem Fuzzing effektiv starten zu können.

Um eine grobe Vorstellung zu bekommen wie das ganze Live aussieht hier noch ein paar Videos...
Das erste der beiden folgenden Videos zeigt einen Teil der Grundfunktionen des TTY sowie der entsprechenden Syslog ausgaben. Das zweite wie mit dem HackStick ein USB GamePad nachgebildet wird.








Keine Kommentare:

Kommentar veröffentlichen

UpConverter fixed

Vor einiger Zeit berichtete ich darüber das mein Versuch einen UpConverter für mein rad1o zu bauen leider fehlgeschlagen ist. Es lag an der...