TurboConf-Sicherheitsstudie

Hallo allerseits! Ich beschloss, der Community Informationen über eine kleine Analyse eines kleinen Dienstprogramms (mit einem verschleierten Code) mitzuteilen, das in engen Kreisen mit 1s Spitznamen bekannt ist. Dies ist mein erster Artikel über Habr, ich bitte Sie, nicht viel zu treten, aber es wert zu kritisieren.

Haftungsausschluss

Alles, was Sie hier sehen, kann sich auf Ihre geistigen Fähigkeiten auswirken. Verwenden Sie die im Artikel beschriebenen Informationen nicht für sich, da dies Ihnen schaden kann. Der Autor übernimmt keinerlei Gewähr für die Richtigkeit, Vollständigkeit und Qualität der bereitgestellten Informationen.

Was ist das?

TurboConf ist ein "Shareware" -Programm, das die Funktionen des 1s-Konfigurators erweitert, kein Wort mehr über 1s , für das keine Installation erforderlich ist. Sie können es auf der gleichnamigen Website von Runet herunterladen. Alle Studien wurden mit der Version 5.9.7209.21363 vom 27. September 2019 durchgeführt.

Erstanalyse

Nach dem Download erhalten wir ein Zip-Archiv. Auspacken. Wir sehen mehrere exe-Dateien. Betrachten wir die Hauptanwendung mit einem Unternehmenssymbol. Wenn Sie es in einem einfachen HEX-Editor öffnen, z. B. HxD, können Sie leicht verstehen, dass es sich um eine Assembly unter dem .NET Framework handelt, da die Klassennamen der Standard-.NET-Bibliothek sichtbar sind:

TurboConf in HxD
Bild

Als Nächstes nehmen wir den DotPeek-Dekompiler und betrachten diese Assembly darin. Der Bytecode ist nicht verschleiert, so dass der Decompiler fast originale Quellen erzeugt:

Wiederhergestellter Methodencode
Bild

Es ist hier leicht zu verstehen, dass die Arbeit des Dienstprogramms weiter in die Anwendung „TurboConf.Application.exe“ verlagert wird. Öffnen Sie es in DotPeek. Dies ist auch eine Assembly mit IL-Code. Im Gegensatz zur vorherigen Assembly sind einige der hier beschriebenen Methoden jedoch verschleiert, wobei Confuser höchstwahrscheinlich verwendet wird. Beim Studium des Codes wird deutlich, dass sich die Hauptarbeitslogik in "TurboConf.Service.dll" befindet - und dies ist auch eine Assembly für .Net, und auch einige der Methoden sind verschleiert. Toll, das ist noch interessanter!

Verteidigungsforschung

Beim Anzeigen der Assembly-Struktur finden wir im Namespace "TurboConf.Service.Utils" die Klasse "Crypto" und darin eine Methode mit dem sprechenden Namen "DecryptStringAES":

DecryptStringAES-Methode
Bild

Obwohl es verschleiert ist, ist es nicht schwierig, in Zukunft die Logik der Arbeit daraus wiederherzustellen. Finden Sie die Verwendung dieser Methode (Umschalt + F12):

Suchergebnisse
Bild

Und sofort Erfolg! Diese Methode wird im Konstruktor der Klasse, die für die Lizenzierung verantwortlich ist, zweimal aufgerufen!

Quellwiederherstellung

Der Obfuscator verschlüsselte alle Zeilen und platzierte sie in einer Ressourcendatei. Sie können diese Datei mit dem Microsoft ildasm.exe-Dekompiler abrufen, der im Windows SDK enthalten ist (und nicht nur):

Ressourcendatei abrufen
Bild

Und anstelle der ursprünglichen Zeilen ersetzt der Obfuscator die folgende Konstruktion im Code: "<Modul> .c (zufällige_arithmische_Operation)", wobei das Ergebnis der arithmetischen Operation eine bestimmte Zahl ist, auf deren Grundlage der Versatz für die Ressourcendatei berechnet wird, aus der die verschlüsselten Daten extrahiert und die ursprüngliche Zeichenfolge wiederhergestellt werden. Um das Entschlüsseln von Zeichenfolgen zu vereinfachen, erstellen wir ein neues Projekt in Visual Studio und übertragen mit ein wenig Verfeinerung die Klasse "<Modul>" und die Ressourcendatei "resource". Wir können also verstehen, dass im DotPeek-Fenster der folgende Code angezeigt wird

<Module>.c(sizeof (float) - 47, sizeof (int) + 6429, (int) ((uint) k >> 16) >= 0 ? sizeof (int) + 200 : System.Type.EmptyTypes.Length - 1805516213) 

Dies ist die Zeile "Benutzer:"

Stellen Sie langsam die gesamte Logik der Lizenzierungsklasse wieder her. Wir könnten damit aufhören, das heißt, in der untersuchten Datei "TurboConf.Service.dll" einen einfachen Hack durchführen und die Gleichheitsprüfung für eine Lizenz durch eine Ungleichheit ersetzen, aber das ist nicht interessant. Weiter gehen ...

Schutzprinzip

Um eine Lizenz zu erhalten, benötigen Sie eine eindeutige Kennung für das Gerät, auf dem das Programm ausgeführt wird. Diese HardwareID wird basierend auf der Prozessorkennung und der Seriennummer des Laufwerkvolumes „Ts“ generiert. Um eine Testlizenz zu erhalten, sendet das Programm eine GET-Anfrage mit einer Gerätekennung für die Domain "netlenka1c.ru". Als Antwort kommt ein Schlüssel, der das Enddatum der Testphase angibt und ... digital signiert ist. Das Programm basiert auf dem asymmetrischen RSA-Algorithmus mit einem 1024-Bit-Schlüssel. Zu diesem Zeitpunkt wurde mir klar, dass es unmöglich ist, die ursprüngliche Datei zu ändern, da es fast unmöglich ist, den privaten Schlüssel abzurufen (er befindet sich nicht in den Dienstprogrammdateien).

Mini-Lizenzierungscenter

Nachdem ich verstanden hatte, wie der Schutz funktioniert, beschloss ich, mich zu einem kleinen Gott für dieses Programm zu machen, damit ich selbst Schlüssel generieren kann. Zu diesem Zweck wurde ein Patcher entwickelt, der zunächst den öffentlichen Schlüssel der digitalen Signatur in der Assembly durch den generierten öffentlichen Schlüssel selbst ersetzt:

Patcher
Bild

Und dann fügt das entwickelte Dienstprogramm zum Generieren von Schlüsseln (sowohl temporär für den angegebenen Gültigkeitszeitraum als auch unbefristet) dem Schlüssel eine digitale Signatur hinzu, die auf dem generierten privaten Schlüssel selbst basiert:

Keygen
Bild

Als Ergebnis haben wir ein funktionsfähiges registriertes Programm mit vollem Funktionsumfang:

Über das Programm
Bild

Moral

Verschleierung ist eine ziemlich gute Methode, um das Gegenteil zu verwirren, aber es ist nur eine Frage der Zeit.

PS

Der Artikel weist insbesondere Lücken in der Erzählung auf, um den Autor des Programms nicht zu ersetzen. Es sind keine Quellcodes und Arbeitsprogramme beigefügt und werden es auch nicht sein. Respektiere die Arbeit anderer, besonders der Kollegen im "Laden"!

Vielen Dank an alle, die den Beitrag gelesen haben!

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


All Articles