Software für das Cracken von Software. Auswahl von Tools für das Reverse Engineering

Jeder Reverse Engineer, Malware-Analyst und einfacher Forscher stellt mit der Zeit ein bewährtes Set von Hilfstools zusammen, die er täglich für das Analysieren, Entpacken und Cracken anderer Software verwendet. In diesem Artikel besprechen wir meine. Sie werden für diejenigen nützlich sein, die über kein eigenes Set verfügen und erst mit dem Studium dieses Themas beginnen. Aber auch ein erfahrener Reverse Engineer sollte sich dafür interessieren, was andere Cracker verwenden.


WARNING

Alle Angaben dieses Artikels werden ausschließlich zu Informationszwecken zur Verfügung gestellt. Weder die Redaktion noch der Autor sind für eventuelle Schäden verantwortlich, die durch Inhalte dieses Artikels verursacht werden können.

Debugger

Das Debuggen einer Anwendung ist ein integraler Bestandteil des Untersuchungssprozesses, ein Werkzeug, das für einen Reverse Engineer immer verfügbar sein muss. Heutzutage muss der Debugger beide Architekturen – x64 und x86 – unterstützen, das ist die erste Voraussetzung.

Wir müssen außerdem in der Lage sein, Codes im Kernelmodus debuggen zu können. Ein Bedarf ist öfter mal vorhanden, besonders wenn Sie Zeroday-Schwachstellen im Kernel von Betriebssystemen suchen oder Malware in Treibern rückentwickeln möchten. Es gibt zwei Hauptkandidaten: x64dbg und WinDbg. Der erste Debugger arbeitet im User-Modus, der zweite kann im Kernelmodus Codes debuggen.

x64dbg

x64dbg.com

Dieser moderne Debugger mit einer sehr ansprechenden Benutzeroberfläche ist ein würdiger Nachfolger von OllyDbg. Er unterstützt beide Architekturen – x64 und x86 – und hat eine Menge nützlicher Plugins.

x64dbg

Built-in decompiler

Ja, natürlich ist er nicht ohne Fehler – er enthält immer noch einige störende und unangenehme Bugs. Er wird jedoch aktiv gepflegt und weiterentwickelt. Da der Debugger im Benutzermodus arbeitet, bleibt er natürlich für viele Anti-Debugging-Techniken anfällig. Dieser Nachteil wird jedoch teilweise durch verschiedene Plugins zum Ausblenden des Debuggers kompensiert.

Der X64dbg verfügt über einen integrierten Decompiler, der die Anzeige des Codes als Diagramm unterstützt. Sie können Haltepunkte zum Lesen, Schreiben, Ausführen und Zugreifen festlegen. Außerdem gibt es ein integriertes Hilfstool zur Importrekonstruktion (x64 und x86). Was soll man sagen – dieser Debugger ermöglichte einigen Hackern, das bekannte Denuvo DRM-System zu umgehen!

Warum nicht OllyDbg

Der OllyDbg-Debugger kam nicht in die engere Auswahl, da er bereits ziemlich überholt ist. Er unterstützt weder moderne Betriebssysteme noch die x64-Architektur. Auf der offiziellen Website der Anwendung gab es eine Ankündigung einer 64-Bit-Version und es wurde sogar über Fortschritte bei deren Entwicklung berichtet, aber die Website selbst wurde zuletzt im Jahr 2014 aktualisiert. Natürlich repräsentiert OllyDbg eine ganze Epoche, aber diese scheint nun vorbei zu sein. Auch die Anzahl der Kernel-Mode-Debugger ist zurückgegangen. Die Entwickler gaben den Syser-Kernel-Debugger auf, welcher zu seiner Zeit der Nachfolger von SoftICE war.

WinDbg

Offizielle Webseite

Wenn Sie den Kernel oder den Treiber debuggen müssen, dann gibt es nicht Besseres als WinDbg. Dieser Debugger wird von Microsoft selbst unterstützt und ist ein Teil von Windows Driver Kit (WDK). Im Moment ist dies das neueste und leistungsfähigste Tool zum Debuggen von Kernel-Codes. Hier gibt es keine so ansprechende Benutzeroberfläche wie bei x64dbg, aber wir haben auch keine große Wahl, denn andere Debugger funktionieren nicht im Kernel-Modus.

WinDbg unterstützt Remote-Debugging und kann Debugsymbole direkt von Microsoft-Servern herunterladen. Um es schneller für das Debuggen des Betriebssystemkernels virtueller Maschinen zu konfigurieren, gibt es ein VirtualKD Add-on. Das Starten des Reverse Engineer-Weges mit WinDbg ist natürlich streng kontraindiziert. Wenn Sie jedoch Erfahrungen gesammelt haben und verschiedene interessante Dinge ausprobieren, wird dies zu einer Notwendigkeit.

In WinDbg können Sie leicht sehen, wie diese oder andere Systemstrukturen aussehen, und NTAPI-Funktionen leicht disassemblieren. Natürlich können Sie auch „normale” Anwendungen debuggen, aber ich persönlich ziehe es vor, solch ein mächtiges Werkzeug nur dann auszupacken, wenn es absolut notwendig ist!

Disassembler

Ohne Werkzeuge für statische Code-Analysen ist ein Reverse Engineering nur schwer vorstellbar. Heute ist die Situation mit Disassemblern nicht viel besser als mit Debuggern. Trotzdem gibt es einige Favoriten in diesem Bereich. Anerkannter Standard in Antivirenlabors ist der IDA Pro-Disassembler. Auf dem zweiten Platz finden wir das Framework für Reverse Engineering, Radare2 (obwohl viele der Meinung sind, dass Radare2 nicht schlechter als IDA ist)

IDA Disassembler

hex-rays.com/products/ida

Es gibt zwei Versionen von IDA – kostenpflichtige (Pro) und kostenlose (Starter). Die kostenlose Version wird nach Anzahl der unterstützten Architekturen eingeschränkt – sie versteht nur x86 und unterstützt keine Plugins. Die kostenpflichtige Version hat keine derartigen Einschränkungen: Sie unterstützt eine beeindruckende Anzahl von Prozessorarchitekturen und Plugins.

IDA verfügt über einen integrierten Debugger, der hinsichtlich der Funktionen recht einfach ist. Seine Benutzeroberfläche ist jedoch etwas gewöhnungsbedürftig. IDA kann auch mit dem Add-On Hex-Rays-Decompiler ergänzt werden, ein Decompiler für den Quellcode der Anwendung in C-Code. Dies ist die nützlichste Ergänzung, die die Programmanalyse erheblich beschleunigt.

Insgesamt ist IDA ein leistungsfähiges und perfekt funktionierendes Werkzeug, das über viele Jahre hinweg entwickelt wurde. Schade nur, dass die professionelle Version ca. 500-1000 Dollar kostet (abhängig von der Lizenzart), die leider auch nicht an jedermann verkauft wird. Daher müssen wir uns wohl anderweitig helfen.

Radare2

rada.re

Radare2 wurde ursprünglich als einfacher Hex-Editor konzipiert, ist heute jedoch bereits ein ganzes Framework, das unterschiedlichste Codetypen, einschließlich Firmware, Viren und Cracks debuggen und disassemblieren kann.

Cutter + Radare2

Radare2 ist ein Set von Konsolentools, die einen Debugger, einen Disassembler, einen Decompiler, einen Hex-Editor, einen eigenen Compiler, ein Tool für das Vergleichen von Binärdateien und vieles mehr enthalten. Es gibt außerdem ein separates GUI-Add-on namens Cutter. Es verbessert das Aussehen des Frameworks und die Nutzerfreundlichkeit von Radare erheblich.

Das Framework unterstützt eine große Anzahl von Prozessoren und Plattformen, sodass es sogar mit Produkten wie IDA Pro konkurrieren kann. Ein großer Vorteil liegt darin, dass es sich um Open Source handelt, das Produkt völlig kostenlos ist und von der Community unterstützt wird.

Weitere Hilfstools

Wir haben die grundlegenden Tools untersucht, aber ein Reverse Engineer ohne Packer-Identifikatoren, Netzwerkmonitoren, Hex-Editoren und vielen Hilfstools ist schwer vorstellbar. Schauen wir uns die wichtigsten davon etwas genauer an.

Detect it Easy (DiE)

ntinfo.biz

Dies ist ein hervorragender Packer-Identifikator, der über eine Vielzahl nützlicher Funktionen verfügt. So ermöglicht er beispielsweise, die Entropie der Dateiabschnitte anzuzeigen, was hilft, das Vorhandensein von Verschlüsselungen visuell zu bestimmen.

DiE

Es verfügt auch über eine Ressourcenanzeige mit einer Dump-to-Disk-Funktion. Sie können Import-Tabellen leicht durchsuchen und es gibt Unterstützung für Plugins und Skripte. Es gibt auch Einstellungen zum Scannen von Methoden für das Scannen von Signaturmethoden, Datei-Header-Viewer und volle Unterstützung für die Formate PE- und PE+.

Es gibt nur einen Nachteil: das Programm wird selten aktualisiert. Aber wir können nicht sagen, dass es aufgegeben wurde, denn eine neue Version wurde vor Kurzem veröffentlicht!

INFO

Beispiele für die Arbeit mit DiE finden Sie in meinen früheren Artikeln: “Manuelles Entpacken. Cracking eines benutzerdefinierten Packers auf Basis der Ransomware GlobeImposter 2.0” und “Die Kunst des Entpackens. Schlachten wir die Sperre des schlauen Bankers GootKit aus”.

ExeInfoPE

exeinfo-pe.en.uptodown.com

Dies ist noch ein Packer- und Protektor-Detektor. Er hat eine ziemlich spezielle Benutzeroberfläche, die nicht jedermanns Geschmack ist. Dieses Programm wird jedoch häufig aktualisiert, es enthält viele interessante Funktionen und nützliche Tipps zum Entpacken.

ExeInfoPE

Im Allgemeinen würde ich ExeInfoPE für Anfänger empfehlen. Es verfügt über eine Datenbank mit automatischem Entpackern und das Programm zeigt Ihnen an, mit welchem Werkzeug die vorgehängte Sperre zu entfernen ist.

Und natürlich gibt es hier eine ganze Reihe von Funktionen: Der Datei-Header-, Abschnitts- und Hex-Betrachter und sogar eine Reihe von kleinen integrierten Tools wie TerminateProcess und andere. Außerdem gibt es eine Plugin-Unterstützung.

HxD

Häufig ist es erforderlich, auf die Festplatte, den Speicher oder die Anwendung im Binärmodus zuzugreifen. Hier helfen Hex-Editoren, deren prominenter Vertreter das HXD-Programm ist. Es ist kostenlos, wird laufend aktualisiert, unterstützt die gängigen Formate, hat eine gute Suchtfunktion und verfügt über eine ansprechendes Benutzeroberfläche. Es gibt noch weitere gute Funktionen, beispielsweise um Dateien sicher zu löschen (d. h., mit Nullen zu überschreiben). Zudem gibt es von HxD eine portable Version, welche man auf einem USB-Stick ablegen kann.

HxD

HIEW

hiew.ru

Ein Hex-Editor mit einer langen Geschichte, der jedoch bis heute von Entwicklern unterstützt wird. Es gibt eine kostenpflichtige und kostenlose Version (20 US-Dollar ohne Upgrademöglichkeit, 200 USD mit lebenslangen Updates). Die Benutzeroberfläche im Stil von Norton Commander mag junge Leute ein wenig erschrecken, aber man gewöhnt sich schnell daran. Unabhängig davon erfreut die Option, nur mit der Tastatur zu arbeiten und alle Funktionen über Hotkeys aufzurufen.

HIEW

Pestudio

winitor.com

Ein nützliches Programm für die Analyse von Malware. Es scannt automatisch heruntergeladene Beispieldateien mit VirusTotal, zeigt eine interessante Ansicht der analysierten Funktionen und die Headerinformationen der Virenmarker, genutzten Bibliotheken und PE-Datei der Anwendung an. Man kann damit auch auf Ressourcen zugreifen. Mit anderen Worten, es handelt sich um ein multifunktionales Antivirusprogramm für eine erste Beispielanalyse.

Pestudio

PE-bear

Die PE-bear-Seite ist im Entwicklerblog

Ein weiterer interessanter Betrachter und Editor für dateien im Format PE- und PE+. Enthält einen Identifikator für Packer und Protector und zeigt Informationen zu Dateiheader, Ressourcen und Abschnitten an. Falls gewünscht, können Sie sich die Hex-Darstellung dieser Abschnitte ansehen und diese in normale Assembler-Mnemonik disassemblieren.

PE-bear

PE-bear hat eine benutzerfreundliche Benutzeroberfläche und ein ansprechendes Tool zum Dateivergleich. Der einzige Nachteil ist, dass das Programm selten aktualisiert wird, obwohl als Open Source geführt. Wenn Sie also ein Bug finden, können Sie diesen immer auch selbst beheben.

Fakenet-NG

Repository auf GitHub

Dieses Programm ist notwendig, um die Arbeit mit dem Netzwerk zu emulieren. Bei der Untersuchung von Malvari-Samples müssen Sie oft alle Netzwerkanfragen durchgehen: DNS- und HTTP-Anfragen überwachen, den Datenverkehr erfassen und die IP-Adressen der Verwaltungsserver festlegen (wenn dies beispielsweise ein Ransomware-Bot ist). Die virtuelle Maschine muss aus naheliegenden Gründen vom Netzwerk getrennt werden, denn wenn das Virus es merkt, wird es nicht alles das tun, was es normalerweise tut.

Fakenet-NG wird laufend aktualisiert und unterstützt, so dass dieses Tool in modernsten Betriebssystemen verwendet werden kann.

Fakenet-NG

ProcessExplorer

Offizielle Webseite

Ohne Sysinternals-Programme, die den Zugriff auf Dateisystem und Prozesse überwachen, wäre ein Reverse Engineering eine komplizierte Angelegenheit. ProcessExplorer zeigt alle Prozesse im System in Form einer hierarchischen Struktur an, sodass Sie leicht sehen können, in welcher Reihenfolge diese erstellt wurden. Darüber hinaus können Sie herausfinden, welche dynamischen Bibliotheken in Prozesse, Prioritäten, digitale Signaturen, Prozessorauslastung usw. geladen werden.

ProcessExplorer

RegShot

Repository auf SourceForge

Ein praktisches Programm zur Überwachung von Änderungen in der Registrierung. RegShot erstellt Schnappschüsse vor und nach System- und Softwareänderungen und zeigt dann an, wo Änderungen stattgefunden haben.

TCPView

Offizielle Webseite

Ein kleines Programm zur Überwachung der Netzwerkaktivität von Anwendungen. Sie können sehen, welche auf Ports die Anwendung (lokale und Remote) zugreift sowie Protokolle, Prozess-IDs und Paketübermittlungszähler öffnen. Es ist also eines der nützlichsten Werkzeuge in jedem Hacker-Set!

TCPView

Resource Hacker

angusj.com/resourcehacker

Beliebtes Programm zum Bearbeiten von Ressourcen. Ermöglicht die Bearbeitung der Manifeste, Symbole, Textdialoge, Cursor-Informationen und vieles mehr. Die Bearbeitung von Anwendungsressourcen kommt nicht oft vor, aber wenn der Bedarf dafür besteht, ist es von Vorteil, ein geeignetes Werkzeug zur Hand zu haben.

Resource Hacker

Zusammenfassung

Wir haben die wichtigsten Tools unter die Lupe genommen, die dafür verwendet werden, um die gängigsten Fragestellungen im Zusammenhang mit Reverse Engineering zu lösen. Ich denke, dass diese Anwendungen für den Anfänger ausreichend sind. Und mit zunehmender Erfahrung wird auch Ihre persönliche Liste wachsen.

Viele Reverse Engineers beginnen nach und nach, ihre eigenen speziell zugeschnittenen Programme, Plugins und Skripte zu erstellen. Es gibt aber bei weitem nicht für alle Aufgaben fertige Hilfsmittel, um das Leben zu erleichtern. Wenn Sie über ähnliche Entwicklungen verfügen oder Links zu anderen nützlichen Programmen teilen möchten, schreiben Sie bitte einen Kommentar!


Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">