Automated Binary Analysis

Modellansatz - A podcast by Gudrun Thäter, Sebastian Ritterbusch

Categories:

Zur GPN17 des Entropia e.V. im ZKM - Zentrum für Kunst und Medien und der Hochschule für Gestaltung (HfG) hat Florian Magin (@0x464d) einen Vortrag zu Automated Binary Analysis gehalten und war bereit uns auch im Podcast zu erzählen, wie er mit mathematischen Verfahren Software auf Schwachstellen analysiert. Florian studiert Informatik an der TU Darmstadt und engagiert sich im CTF-Team Wizards of Dos seiner Universität. Sein Interesse an der Computersicherheit hat ihn auch zur Firma ERNW Research geführt, wo er als Werkstudent in der IT-Sicherheitsforschung tätig ist. Wie wichtig die Suche nach Schwachstellen und deren Absicherung ist, wurde kürzlich bei der weltweiten Verbreitung der WannaCry/WannaCrypt-Schadsoftware bewusst, die die Aufmerksamkeit von einer anderen und lukrativeren Schadsoftware Adylkuzz ablenkte. Unter der Binary Analysis versteht man die quellenlose Analyse eines Programms alleine auf den Daten im Maschinencode auf einem Speichermedium. Ein erster Schritt der Analysis ist die Wandlung der Maschinensprache in Mnemonic durch einen Disassembler. Dieser Programmcode kann sich deutlich von einer ursprünglichen Quelltext des Programms unterscheiden, da der Maschinencode erzeugende Compiler eine Vielzahl von Optimierungsmöglichkeiten umsetzt, die den Ablauf und das Abbild des Programms im Maschinencode deutlich verändern können. Eine Herausforderung stellt sich inzwischen in der Größe der Programme: Während es inzwischen zahlreiche Wettbewerbe gibt, Programme unter extremen Platzbeschränkungen umzusetzen, wächst die Größe klassischer Programme stark an. Ein Maschinensprache-Befehl kann in einem Byte kodiert sein, wie früher etwa hexadezimal C9 auf dem Z80 eine Unterroutine beendet, so können in 4 Bytes Operationen wie eine Addition samt Parameter definiert sein. Die automatisierte Binäranalyse hat besonders durch die Darpa Cyber Grand Challenge im Jahr 2016 großes Interesse geweckt, wo die Teams autonome Software entwickeln sollten, die für sich alleine den CTF-Wettbewerb bestreitet. Eine Anwendung solcher automatisierten Programme ist die schnelle Überprüfung von neuer Software auf bekannte oder typische Schwachstellen oder Implementierungsfehler. Eine sehr allgemeine Methode zur Detektion von Sicherheitslücken ist das Fuzzing: Das Open Source Tool AFL modifiziert beispielsweise korrekte Eingabewerte und prüft bei welcher Modifikation das Programm vom zuvor aufgezeichneten Programmablauf abweicht und damit einen Hinweis auf eine mögliche Schwachstelle gibt. Es kann dabei idealerweise auf dem Sourcecode operieren oder auch das Programm in einem Emulator wie QEMU ausführen und analysieren. (...)

Visit the podcast's native language site