Unicorn ist ein leichtgewichtiges framework mit dem CPUs emuliert werden können. Damit ist es möglich zum Beispiel Shellcode in einer gesicherten Umgebung auszuführen und ihn näher zu analysieren.
Die erste Version wurde im August 2015 veröffentlicht und zur Black Hat Konferenz im gleichen Jahr vorgestellt. Anfang 2017 erschien nach weiteren Tests Version 1.0 und etwas später Version 1.0.1 mit Fehlerbehebungen.
Das Unicorn Framework selbst basiert auf den Quellen von QEMU und unterstützt dadurch bereits eine Vielzahl von Architekturen und Plattformen. So werden zum Beispiel X86(32 und 64Bit), Arm, Arm64, Mips und PowerPC unterstützt. Die Entwickler haben eine Art Fork von QEMU erstellt und dabei nicht benötigte Teile wie zum Beispiel die Emulation von BIOS und Netzwerkkarten entfernt und weitere Funktionen zur Analyse des ausgeführten Codes hinzugefügt. Dabei wurde laut den Entwicklern jedoch darauf geachtet, dass der Quellcode sich später relativ einfach mit dem von QEMU synchronisieren und somit aktualisieren lässt.
Mittlerweile kann der Emulator nicht nur per C API und Python Binding, sondern auch mit vielen weiteren Programmiersprachen wie Ruby, Rust, Haslkell, etc. verwendet werden.
Veröffentlicht wurde der Quellcode unter der GPLv2 und steht somit als freie Software zur Verfügung.
Fazit
Nach einigen Tests mit den verfügbaren Beispielen und verschiedenen Shellcode Schnipseln bleibt ein positiver Eindruck. Leider wird dieser durch eine relativ knapp gehaltene Dokumentation etwas getrübt. Wer mit dem Unicorn Framework arbeiten will, der sollte sich gleichzeitig mit der Funktionsweise der jeweiligen CPU und eventuell auch mit den Grundlagen des jeweiligen Betriebssystem beschäftigen. Es gibt jedoch bereits Software, die auf Unicorn aufbaut und den Anwender bei der Analyse unterstützt.
Links
- Webseite: Unicorn Framework (englisch)
- Webseite: QEMU (englisch)