Hallo zusammen, mein name ist TheMeinerLP aka Phillipp. Ich besschäftige mich nun seit 8 Jahre Aktiv mit Minecraft und bin seit mehren Jahren auch tätig als Normaler Entwickler.
Hier bitte intro Musik einfügen
Seit etwa September 2022 geht ein Virus in Form von Plugins in der Minecraft Szene umher. PaperMC hat aktiv schon darauf aufmerksam gemacht. Dazu hat ein anderer Blogger schon probiert, diesen Virus zu analysieren. Gerne würde ich hier in dieser Toilet paper einmal meine Erfahrung teilen und wie ich den Virus bis zu einem bestimmten Teil zurückverfolgt habe. Dabei geht ein großer Dank an @GiantTreeLP, der mir bei der Analyse von ByteCode geholfen hat.
Aber nun erstmal von vorne.
Als @GiantTreeLP und ich an diesem Abend gemütlich LoL gespielt haben, haben wir im CloudNet Support Nutzer gesehen, die dringend Hilfe benötigen.
Dabei hat man gesehen, dass der Nutzer einen Log hochlädt, mit folgendem Inhalt:
Wie man hier schon sieht ist hier eine obfuscated Klasse namens Updater.a unterwegs und damit begann mein Interesse.
Ein weiteres CloudNet Teammitglied hat darauf dem Nutzer ein Link zukommen lassen mit dem Malware Announcement von PaperMC
Darauf hin habe ich gefragt, ob der Nutzer mir diese Jar Datei zukommen lassen kann... Leider war das nicht möglich.
Durch einen Kommentar unter dem Post von Paper ist mir wie oben erwähnt der Blog von Jemanden aufgefallen.
Er hatte die gleiche Idee wie ich: Schauen, was der Virus macht.
Über diesen Blog war es mir an diesem Abend gelungen, eine infizierte Variante zu bekommen.
Da ich in den folgenden Tagen Prüfungen hatte, ließ ich diese Jar Datei erstmal ruhen.
Gemütlich an dem Abend haben wir LoL gespielt, Richtung 22-23 Uhr habe ich durch Zufall ein Weg gefunden mit dem ByteCodeViewer von Knoloch die Hälfte des Codes wieder leserlich zu machen.
Dazu habe ich im Decompiler einfach den Decompiler auf JADX gesetzt.
Und Zack konnten wir 60-90% sinnvoll wieder lesen.
So nun zum Eingemachten. Ich schaute im Schnellverfahren, wo die Main Klasse von dem Updater Virus ist und fand das hier:
Dazu wurde im Klassen Kopf folgende Variablen definiert
Sehr auffällig sind die Pfade sowie die zwei Addressen.
Spoiler Warning
Beide Adressen sind bereits seit dem 11.05.2023 nicht mehr erreichbar. Durch eine WHOIS abfrage konnten wir die DNS Server ausfindig machen und die IP Adressen trotzdem ausfindig machen.Als Nächstes haben GiantTreeLP und ich uns die Methoden lang gehangelt und sind dann in einer Klasse a gelandet. Klasse a lädt beim ersten Aufruf in einem Static Block erstmal ein key.crt datei in einem SSL Context für Netty.
Danach wird die Methode a aufgerufen und die erstellte InetSocketAddress wird übergeben. Jetzt kommt es zu dem interessanten Teil!
Methode a erstellt 2 Referenzen in einer Liste, die später zu Consumer gewandelt werden. Beide Methoden machen was "relativ" Besonderes.
Das eine ist eine Simple Write Methode, die antwortet für ein Ping Packet. Und eine weitere Methode, die etwas viel mehr kann. Die zweite Methode hat den Sinn, verschieden Angriffe zu starten.
Bevor das alles passiert wird aber viel anderen Code noch ausgeführt:
Dabei sollte man den unteren Teil mit
b()
beachten.
Dieser Teil lädt eine Jar Datei herunter und führt diese aus.
Dazu aber später mehr.
Neben angriffen, installiert sich der Virus in das System um auch wirklich bei jeden neustart auch wieder am start zu sein.
Beim installieren im System ist auch intressant, es kann mehr als nur Linux.
Der Virus setzt sich im Windows Edge Updater für den Start fest.
Dazu hört er gerne darauf was für sachen du im Clipboard hast. Und wenn es eine Cryptowährung ist, dann wirst du sie jetzt los. Folgender Code
Entschlüsselt eine Plain IP und verbindet sich auf einem Service der immer eine Wallet Addresse zurück gibt. Anscheinend soll damit die Aktuelle Empfänger Addresse mit dem des Angreiffers ausgetauscht werden.
Die qqqq jar datei beinhaltet verschiedene code stellen wo auch wieder sachen gemacht werden. Leider reicht mein Know How nicht dazu aus den code wiederherszutellen. So viel kann ich aber sagen, der Obfusicator der verwendet wir ist der Skidfuscator. Ein möglicher ansatz das wieder rückwärtszumachen, total übertrieben von mir, im einsatz von einer KI die ByteCode in Generische Methoden Namen übersetzen kann.
Hier ein kleiner ausschnitt wie der Source Code unleserlich ist:
Wie man an Screenshot 2 sehen kann. Werden UTF-8 zeichen verwendet für Klassen wie Package namen. Wenn ich nun den Procyon decompiler verwende bekommt man sourcecode. Aber sehr sehr unleserlich:
Gerne kann man mich über Twitter(TheMeinerLP) Kontaktieren. Dazu sind alle files hier angehängt in einer Zip Datei mit einem Passwort(Siehe unten). In der ZIP ist auch eine Readme mit allen IPs wie Domains die ich bis jetzt gefunden haben.
Ich habe alle JAR Files wie IPs aufgeschrieben und Festgehalten.
Ich habe diesen Virus anhand der Angriffs möglichkeiten und Humor "HelloFromTheOtherSide" genannt.
Dazu ist das hier ein Draft und WIP.
Zip/Datei File Passwort: AdQA043BBXN6JrC683bt8hiB8VHh1e2QEs7itAkXGRcH6kMeRe
Thanks to @noom1337 he send me a deobfusicated jar from qqqqq...jar
I will soon upload it for you guys