SkypeACLKeyGen.exe-Analyse für Hacking-Team
Also...
Was analysieren wir heute? Nun, heute analysieren wir ein Stück Software von Hacking Team. Es geht um Skype? Warum tun wir das? Keine Ahnung, ich finde es interessant.
Wie auch immer, wir beginnen mit der Untersuchung des Laufzeitverhaltens. Wie man sieht, werden ein Benutzername und ein Plugin-Pfad benötigt, und es wird eine ACL ausgegeben? Alsoooo, wasss soll dasss dennnn sein? Nun, ein Blick auf https://airbus-seclab.github.io/skype/vskype-part2.pdf verrät uns: „Skype implementiert ein ACL-ähnliches System, um Plugins zu erlauben oder zu verbieten, sich an eine laufende Instanz anzuhängen. Eine Plugin-‚Signatur‘ wird basierend auf der Antwort des Benutzers auf einen Warndialog zur Konfigurationsdatei hinzugefügt.“ Also gut, was befindet sich im Ordner dieser Software?
Also, ähm, ok ... das verrät uns immer noch nichts. Richtig, wir sehen also einen Stage-1-Shellcode mit „office“ in diesem Ordner, was auf einen Office-Exploit hindeuten könnte (noch nicht bestätigt), „fakeport“, eine C#-App, „tracer.exe“ und andere Sachen. Cool. Meine Vermutung ist, dass das tatsächlich registrierte Plugin tracer.exe sein wird. Warum das? Nun, aus demselben PDF: „Die Skype-Sprach-Engine kann verschlüsselte Trace-Dateien erzeugen, wenn Logging und Logging2 gesetzt sind. Die Verschlüsselung ist viel einfacher: ein einfaches XOR mit einem 31-Byte-Schlüssel.“ Analysieren wir also den eigentlichen Erzeuger der ACL, und als Nächstes sehen wir uns tracer an und vielleicht in einem anderen Beitrag den Shellcode ;)
Wir beginnen mit Folgendem
Dann geht es weiter zu Folgendem

Und schließlich gelangen wir zu diesen
Von dort aus gelangen wir zu Folgendem




Cool, ein weiteres dynamisches Easter-Egg-Verhalten ist Folgendes: Wenn du Benutzer und das auszuführende Plugin eingibst, erhältst du .png)
Wie auch immer, wir gehen weiter und analysieren



Aus einer Top-Down-Perspektive berechnet es also den SHA2 des Dateiinhalts und bildet den Inhalt auch im Speicher ab. Unglücklicherweise schlug es bei mir dynamisch fehl, und so tat es nichts :/ Was können wir tun? Wir gehen weiter. Wir gehen in probably_do_hash_based_function_function_recovery.


Leider ist es derselbe Fall wie zuvor: Wir können es nicht in den Speicher abbilden und verlassen die Funktion. Nichtsdestotrotz berechnen wir nur MD5 und rufen wahrscheinlich eine Funktion anhand des MD5-Vergleichs ab.
Wir machen dann ein paar malloc- und memset-Aufrufe
.png)
Danach wandeln wir den Dateinamen in Großbuchstaben um

Dasselbe für den Benutzernamen

Cool, und als Nächstes machen wir Folgendes:
Im Grunde erstellen wir unsere eigene ACL, um unser Plugin ausführen zu können. In diesem Fall nehme ich jetzt an, dass es Tracer.exe sein wird, das theoretisch die von der Skype-Sprach-Engine erzeugten Trace-Dateien protokolliert.



Ausgabeergebnis der Funktion der oben erwähnten Bilder

Ausgabeergebnis der Funktion der oben erwähnten Bilder
Das war es fürs Erste. Später heute komme ich zurück und aktualisiere das hier. Für jetzt bleibt nur, diese halbe Funktion zu analysieren
Außerdem werden wir, wenn ich zurück bin, zum Spaß in die some_decode-Funktion eintauchen und von dort aus in die tracer.exe-Binärdatei einsteigen. Happy Hacking und bis bald.