Reverse Engineering
Ich bin zur Zeit auf der GPN17 und habe, angeregt durch einen Einführungsvortrag, angefangen mich mit Reverse Engineering zu befassen… Der Vortrag “Introduction to Automated Binary Analysis” von Florian Magin beschäftigte sich zwar im Wesentlichen damit die Suche nach Exploit tauglichen sicherheitslücken zu automatisieren. Er ging aber trotzdem auf die Grundlagen des Reverse Engineerings ein.
Eine Aufzeichnung des Vortrages ist hier auf media.ccc.de zu finden.
Natürlich wäre es Quatsch direkt ein Framework, wie sie in dem Vortrag vorgestellt wurden, zu verwenden. Beispielsweise angr bietet zwar großartige Möglichkeiten um einzelne Funktionen zu untersuchen. Dazu muss man aber im Binärcode zunächst einmal eine Funktion finden die man untersuchen möchte.
Also habe ich mich zunächst nach Disassemblern umgeschaut. Am bekanntesten ist wohl Hex-Rays IDA Software. Mit einem Preis von 529€ für die Einsteiger Variante scheidet sie aber für die Nutzung im Hobby Bereich aus. Im Open Source Bereich gibt es radare2, eine Software die IDA gerüchteweise am nächsten kommt.
Die Benutzung von radare (einem reinen Kommandozeilentool) erfordert das erlernen diverser Befehle. Einen guten Einstieg bietet dieses Howto. Welches als Beispiele Programme aus diesem Github Repository verwendet.
Mein erster Eindruck ist das radare erstaunlich gut Funktioniert. Zumindest erfüllt es momentan alle meine Wünsche an einen Disassembler, auch wenn diese aufgrund meiner geringen Erfahrung wohl eher Bescheiden sind. Die Zukunft wird zeigen ob mir Funktionen fehlen.
Achtung: Ich habe inzwischen festgestellt dass radare2 auch in den Debian Repositories vorhanden ist. Dort liegt aber eine stark veraltete Version, welche manche meiner .elf Dateien nicht korrekt anzeigen kann. Ich verwende daher nur noch die aktuellste Version direkt von der radare Webseite bzw. von Github.