Vor zwei Tagen wurde auf Rebirth anscheinend die “LEAKED BINARY” von “n0ise Reverse-Socks Bin + Panel” gepostet. Der TS schrieb weiterhin, dass diese Binary infected wäre, aber nicht von Ihm oder K!llu. Zudem wäre diese Binary nur unpacked, dass man sie sich selbst decompilen kann.
Also hab ich mir die Binary geladen und durch den Reflector gedumpt. Als ich mir dann den Source in Visual Studio anschaute, fiel mir auf, dass überhauptnichts bezüglich “Reverse Socks” gemacht wird. Es gibt in dieser Binary folgende Klassen:
- c000002.cs -> Die Main-Klasse mit StubInformationen
- c000003.cs -> Ein RunPE Modul (nicht sehr sauber, aber ok ^^)
- c000004.cs -> Eine Klasse zum Auslesen der Stub (bzw einer Ressource, die leider verloren ist)
- c000005.cs -> Ein (versuchter Ansatz) eines Verschlüsselungsalgos
Also hab ich weiter die c000002.cs bearbeitet, analysiert und kommentiert. Und irgendwann ergab sich ein Bild, welches eigentlich eine ganz coole Idee ist:
Quelle : http://easysurfer.back2hack.cc
[spoiler]
Das Programm lädt (neben ein paar anderen Sachen wie FakeMessageBox / Disable Taskmanager etc) eine PNG Datei aus einer Ressource. Nun wird Pixel für Pixel durchgegangen und der G Wert (RGB ) jeweils nach einem Char-Konvertiert. Dieser so entstandene String wird Base64 decodiert und durch den RijndaelAlgo entschlüsselt (der Key war statisch in der Binary dabei). Dieses wird nochmal durch GZip entpackt und wir erhalten eine Binary, welche eigentlich im folgenden durch RunPE ausgeführt wird. Und diese Binary ist NICHT managed! Hier ist dann villeicht die eigentliche Stub des Sock5 Reverse Proxys drin, aber diese dabei ist mit dem .NET Reactor gepackt. Ich zitiere Rastajan:
Um die Datei zu entpacken sollte man sich mit Jit Hooks und NecroBit beschäftigen. Ich hab im Ganzen Internet noch keinen gefunden, der .NET Reactor 4.x vernünftig entpackt hat.
Für mich hört also die Malewareanalyse an diesem Punkt auf, ich wollte nur das Prinzip dieser ersten “Stub” aufzeigen.
Abschließend kann man also sagen, dass einfach ein simpler Binder verwendet wurde, um eine Datei zu laden, entschlüsseln und anschließend im Speicher auszuführen. Doch ob das nun die wirkliche Stub des Reverse Socks5 Proxys ist, bleibt offen…
Hier noch der Source mit dem ich die “Entschlüsselung” gemacht habe. Dabei entsteht eine neue Binary, welche ich nicht ausführen würde!
Bitmap Temp = (Bitmap)Bitmap.FromFile(@"F:\Users\****L\Downloads\_Temp Mockups\ressource.png");
byte[] Encrypted = FromBase64(GetStringFromGreenPixels(Temp));
byte[] Decrypted = DecryptRijndael(Encrypted, "HqLX9OzpBRZ77J1B9FmtwNWnZ");
byte[] Decompressed = DecompressZip(Decrypted);
File.WriteAllBytes(@"F:\Users\***Downloads\_Temp Mockups\analysis.exe", Decompressed);
Den Source des soweit kommentierten Sources gibt es natürlich zum Download. Hier gilt auch: Vorsicht!
Greez
[/spoiler]