Hack-IT: Reverse Engineering – Aktivierungscode (.NET)
Auf der leider nicht mehr verfügbaren Plattform “CanYouHack.it” gab es die Challenge “I’m sure you’ve just lost the key”. Dabei handelte es sich um eine EXE-Datei (Crack1.exe), welche nach dem Starten einen Aktivierungscode verlangte.
1. Analyse der Datei
Mit dem Befehl “strings” habe ich die EXE-Datei etwas näher untersucht. Dadurch sind folgende interessante Zeichenketten zum Vorschein gekommen.
WindowsFormsApplication1.exe WindowsFormsApplication1.Properties System.Windows.Forms .NETFramework,Version=v4.5
D.h., die EXE-Datei wurde mit großer Wahrscheinlichkeit mit .NET erstellt.
2. Quellcode dekompilieren
Da es sich bei .NET um eine Common Intermediate Language handelt, ist eine Rückumwandlung des Quellcodes relativ leicht umsetzbar. Es existieren dafür verschiedene Tools. In dem Beispiel wurde ILSpy verwendet.
3. Quellcode untersuchen
Aus dem Code geht hervor, dass auf eine Seite zugegriffen und der eingegebene Aktivierungscode als Parameter übergeben wird. Daraufhin erhält man den Antworttext “Valid” zurück und das gesuchte Passwort wird erstellt und ausgegeben.
Der erste Teil kann ignoriert werden, da dieser nur Mittel zum Zweck ist. Der Wert “Valid” kann einfach vorausgesetzt werden. Interessant ist hingegen folgender Abschnitt:
Es ist ein Array gegeben, welches die Buchstaben “a” bis “z” beinhaltet. Über die Inhalte des Arrays wird iteriert und jeder Index wird durch 7 geteilt (Modulo). Ergibt der Rest 0, dann wird der entsprechende Buchstabe in der Variable “text2” gespeichert. Dadurch entsteht das begehrte Passwort.
4. Script erstellen
Die Lösung kann in dem Fall auch per Hand ermittelt werden, jedoch wo bleibt da der Spaß. ;) Hier das erstellte Python Script:
#!/usr/bin/python3 for i in range(97,123,1): if ((i-97) % 7 == 0): print(str(chr(i)))
Zeile | Beschreibung |
---|---|
1 | Shebang |
3 | Eine Schleife über die ASCII Werte a bis z. |
4 | If Abfrage ob die Division (Modulo) den Rest 0 ergibt. Der Kniff “i-97” erspart die Deklaration eines Arrays mit den Buchstaben “a” bis “z”. |
5 | Ausgabe des Buchstabens |
Das Passwort lautet “ahov”.