C-, C ++ - und DotNet-Dekompilierung sind die Grundlagen der Umkehrung. Lösen von Problemen beim Umkehren mit r0ot-mi. Teil 1

Bild

In diesem Artikel, den ersten 5 Aufgaben, lernen wir die Grundlagen der Demontage, lösen die Probleme der anfänglichen umgekehrten Ebene und dekompilieren auch die dotNet-Anwendung.

Organisationsinformationen
Speziell für diejenigen, die etwas Neues lernen und sich in einem der Bereiche Informations- und Computersicherheit entwickeln möchten, werde ich über die folgenden Kategorien schreiben und sprechen:

  • PWN;
  • Kryptographie (Krypto);
  • Netzwerktechnologien (Netzwerk);
  • Reverse (Reverse Engineering);
  • Steganographie (Stegano);
  • Suche und Ausnutzung von WEB-Schwachstellen.

Darüber hinaus werde ich meine Erfahrungen in den Bereichen Computerforensik, Analyse von Malware und Firmware, Angriffe auf drahtlose Netzwerke und lokale Netzwerke, Durchführung von Pentests und Schreiben von Exploits teilen.

Damit Sie sich über neue Artikel, Software und andere Informationen informieren können, habe ich in Telegram einen Kanal und eine Gruppe eingerichtet, um alle Probleme im Bereich ICD zu diskutieren . Außerdem werde ich Ihre persönlichen Anfragen, Fragen, Vorschläge und Empfehlungen persönlich prüfen und alle beantworten .

Alle Informationen werden nur zu Bildungszwecken bereitgestellt. Der Autor dieses Dokuments übernimmt keine Verantwortung für Schäden, die jemandem durch die Verwendung von Kenntnissen und Methoden entstehen, die durch das Studium dieses Dokuments erworben wurden.

C, GCC32


Betrachten Sie den einfachsten Fall. Dies ist die erste umgekehrte Quest.

Bild

Wenn das Kennwort in Aufgaben dieses Typs als Zeichenfolge gespeichert wird, kann es ohne Verwendung eines speziellen Tools gefunden werden. Lassen Sie uns das Programm ausführen und sehen, was es anzeigt.

Bild

Großartig. Wir haben eine Einladung und eine Nachricht über das falsche Passwort. Wir sehen uns die Zeilen in der Programmdatei an und finden unter ihnen eine Einladung und eine Nachricht über das falsche Passwort. In der Nähe sollte sich ein Passwort befinden.

Bild

Aus den Zeilen nebeneinander ergibt sich also eine, die wie ein Passwort aussieht. Lass es uns versuchen.

Bild

Die Aufgabe ist abgeschlossen. Wir geben das Passwort, wir bekommen 5 Punkte.

Bild

ELFx86, Basic


Wir werden gebeten, ein Passwort zu finden.

Bild

Wir laden das Programm in den IDA Pro-Debugger (ich verwende Version 7.0) und drücken F5, um das Programm zu dekompilieren.

Bild

Somit wird der eingegebene Name mit dem String John verglichen und das Passwort mit dem Ripper verglichen.

Bild

Somit haben wir die Aufgabe richtig gelöst und unser Passwort erhalten. Wir vermieten es und verdienen 5 weitere Punkte.

Bild

PEx86, 0 ​​Schutz


Diesmal bekommen wir einen Exe-Shnik.

Bild

Laden Sie es in IDA Pro herunter.

Bild

Das Programm speichert keine Debugging-Informationen, daher werden die üblichen Funktionsnamen wie main nicht angezeigt. Schauen wir uns die Zeilen im Programm an. Drücken Sie dazu + F12.

Bild

Wir sehen Meldungen zur Eingabe der richtigen und falschen Passwörter. Jetzt können wir den Block mit dieser Zeile im Code finden und sehen, welche Bedingung davor steht. Doppelklicken Sie auf die Zeile.

Bild

Wir befinden uns im Bereich rdata. Lassen Sie uns alle Links im Code für diese Adresse finden. Drücken Sie dazu X.

Bild

Somit gibt es im Programmcode nur einen Aufruf unserer Leitung. Wir doppelklicken und gehen zum Code.

Bild

Wir sind im Hauptprogrammcode. Wir dekompilieren.

Bild

Hier findet eine Überprüfung einer Nummer a2 und einer Zeile a1 statt. Lassen Sie uns eine Zahl in ein Zeichen übersetzen.

Bild

Drücken Sie dazu R. auf die Nummer. Und unser Code hat sich geändert.

Bild

Wir kennen jetzt die Linie, es bleibt herauszufinden, wie die Zahl a2 ist. Sehen wir uns alle Links zu dieser Funktion an.

Bild

Es wird nur einmal aufgerufen.

Bild

Wie Sie sehen können, wird die Länge der Zeichenfolge als zweiter Parameter übergeben. Überprüfen Sie das gefundene Passwort.

Bild

Wir geben nach und bekommen 5 Punkte.

Bild

ELF-C ++, 0 Schutz


Es wird uns angeboten, ein Programm in C ++ zu lösen.

Bild

Wir öffnen in IDA Pro und gehen mit dem richtigen Passwort an den Ort, an dem die Nachricht angerufen wird. Lassen Sie es uns grün färben.

Bild

Lassen Sie uns das Diagramm verkleinern.

Bild

Wir müssen also zwei Bedingungen durchlaufen. Lassen Sie uns sie analysieren. In der ersten Bedingung wird die Anzahl der Argumente mit 1 verglichen. Das heißt, das Programm muss mehr als ein Argument haben (das erste ist der Name des Programms).

Bild

Wir analysieren die zweite Bedingung.

Bild

Die eingegebene Zeichenfolge wird mit der Zeichenfolge verglichen, die als Parameter an die Funktion plouf übergeben wird. Wir dekompilieren es.

Bild

Analysieren Sie den Code. Eigentlich ist a2 - eine Zeichenfolge. Somit läuft der Zyklus von i = 0, bis das i-te Element der Linie a2 0 ist (dh bis es das Ende der Linie erreicht).

V3 = a2 [i]
V5 = Länge (a3)
V6 = a3 [i% v5]

Das heißt, die Leitung an der Adresse a1 ist gleich den beiden Proxy-Leitungen a2 und a3. Kehren wir zur Hauptfunktion zurück und suchen diese Zeilen.

Bild

Wir müssen also die Parameter var_C und var_10 definieren. Wir werden sie etwas höher finden. Dies sind die Zeichenfolgen unk_8048BC4 bzw. unk_8048DCC.

Bild

Finden Sie den Wert der Zeichenfolgen.

Bild

Nun, wir werden einen Code schreiben, um sie zu vertreten.

Bild

Wir bekommen das Passwort.

Bild

PE-DotNet, 0 Schutz


In dieser Aufgabe wird uns angeboten, die .NET-Anwendung umzukehren.

Bild

Sie können es mit dem Dateidienstprogramm ermitteln.

Bild

C # ist eine dekompilierte Sprache, sodass wir das ursprüngliche Projekt erhalten können. Dies kann mit dnSpy erfolgen .

Bild

Öffnen wir das CrackMe-Projekt und suchen nach Funktionen und Methoden.

Bild

Die Button1_Click-Methode überprüft das Kennwort auf Knopfdruck.

Bild

Im Quellcode finden wir das Passwort. Schau es dir an.

Bild

Wir übergeben es.

Bild

Das ist alles für jetzt. Fortsetzung folgt ... Sie können sich uns per Telegramm anschließen . Dort können Sie Ihre eigenen Themen vorschlagen und über die Themenauswahl für die folgenden Artikel abstimmen.

Source: https://habr.com/ru/post/de467085/


All Articles