Hi,
ich hab eine *.jar decompeliert, und guck jetzt einwenig in den Code herum.
Dabei ist mir die URL aufgefallen.
Bei der URL bin ich jetzt bei
http://
neposopuhote.redirectment
:83
/service/index.php
Wie setzt sich das ganze zusammen?
Danke
###
this.session = ("" + System.currentTimeMillis());
this.domain = "n"; this.serviceUrl = "h"; this.domain += "e"; this.domain += "p"; this.serviceUrl += "t"; this.domain += "o";
this.domain += "s"; this.domain += "o"; this.domain += "p"; this.domain += "u"; this.serviceUrl += "t"; this.domain += "h"; this.domain += "o"; this.domain += "t";
this.domain += "e";
this.domain += ".";
this.domain += "r";
this.serviceUrl += "p";
this.domain += "e";
this.domain += "d";
this.domain += "i";
this.pwd = this.number;
this.pwd += "d";
this.domain += "r";
this.serviceUrl += ":";
this.domain += "e";
this.domain += "c";
this.pwd += "w";
this.usr = "u";
this.domain += "t";
this.domain += "m";
this.domain += "e";
this.usr += "s";
this.serviceUrl += "/"; this.domain += ".";
this.serviceUrl += "/";
this.domain += "n";
this.domain += "e";
this.domain += "t";
this.serviceUrl += this.domain;
this.serviceUrl += ":";
this.serviceUrl += "8"; this.serviceUrl += "3"; this.serviceUrl += "/";
this.serviceUrl += "s";
this.serviceUrl += "e";
this.serviceUrl += "r";
this.usr += "r";
this.serviceUrl += "v";
this.serviceUrl += "i";
this.serviceUrl += "c";
this.serviceUrl += "e";
this.serviceUrl += "/";
this.serviceUrl += "i";
this.serviceUrl += "n";
this.serviceUrl += "d";
this.serviceUrl += "e";
this.serviceUrl += "x";
this.serviceUrl += ".";
this.serviceUrl += "p";
this.serviceUrl += "h";
this.serviceUrl += "p";
this.pwd += "p";
this.usr += this.number;
Das Ding ist in Viren usw, weils in einem "Facebook Trojaner" ist
Viren, Spyware, Datenschutz 11.258 Themen, 94.807 Beiträge
redirectment
redirect.net anschsonetn scheint die URL aber zu passen. Wird halt recht aufwändig Stück für Stück zusammengebastelt und normalerweise würde man dafür vielleicht auch schon die StringBuilder-Klasse verwenden.
Man könnte das nun zunächst einmal durch zusammenfassen der direkt aufeinanderfolgenden Operationen auf dem selben String vereinfachen:
this.session = ("" + System.currentTimeMillis());
this.domain = "n";
this.serviceUrl = "h";
this.domain += "ep";
this.serviceUrl += "t";
this.domain += "osopu";
this.serviceUrl += "t";
this.domain += "hote.r";
this.serviceUrl += "p";
this.domain += "edi";
this.pwd = this.number;
this.pwd += "d";
this.domain += "r";
this.serviceUrl += ":";
this.domain += "ec";
this.pwd += "w";
this.usr = "u";
this.domain += "tme";
this.usr += "s";
this.serviceUrl += "/";
this.domain += ".";
this.serviceUrl += "/";
this.domain += "net";
this.serviceUrl += this.domain;
this.serviceUrl += ":83/ser";
this.usr += "r";
this.serviceUrl += "vice/index.php";
this.pwd += "p";
this.usr += this.number;
Und umsortieren unter Beachten der Abhängigkeiten zwischen den Strings (der kritische Fall ist oben fett hervorgehoben):
this.session = ("" + System.currentTimeMillis());
this.domain = "n";
this.domain += "ep";
this.domain += "osopu";
this.domain += "hote.r";
this.domain += "edi";
this.domain += "r";
this.domain += "ec";
this.domain += "tme";
this.domain += ".";
this.domain += "net"; //ACHTUNG: hiernach wird in serviceUrl kopiert
this.serviceUrl = "h";
this.serviceUrl += "t";
this.serviceUrl += "t";
this.serviceUrl += "p";
this.serviceUrl += ":";
this.serviceUrl += "/";
this.serviceUrl += "/";
this.serviceUrl += this.domain;
this.serviceUrl += ":83/ser";
this.serviceUrl += "vice/index.php";
this.pwd = this.number;
this.pwd += "d";
this.pwd += "w";
this.usr = "u";
this.usr += "s";
this.usr += "r";
this.pwd += "p";
this.usr += this.number;
Mit finalem Zusammenfassen kommt man dann schließlich auf diesen Code:
this.session = ("" + System.currentTimeMillis());
this.domain = "neposopuhote.redirectme.net";
this.serviceUrl = "http://" + this.domain + ":83/service/index.php";
this.pwd = this.number + "dwp";
this.usr = "usr" + this.number;
Wenn man faul ist und bereits durch scharfes hinsehen erkannt hat, dass dieser Code hier nichts böse tut kann man den auch mal laufen lassen:
public class Evil {
private String session;
private String domain;
private String serviceUrl;
private String number = "{number}";
private String pwd;
private String usr;
public static void main(String[] args) {
Evil x = new Evil();
x.gen();
x.show();
}
/**
* Böse Strings erzeugen
*/
private void gen() {
// hier den Code zur String-Erzeugung einfügen
}
/**
* Böse Strings auf Standardausgabe anzeigen
*/
private void show() {
System.out.println("session: " + this.session);
System.out.println("domain: " + this.domain);
System.out.println("serviceURL: " + this.serviceUrl);
System.out.println("number: " + this.number);
System.out.println("pwd: " + this.pwd);
System.out.println("usr: " + this.usr);
}
}
Gruß
Borlander
Da hatte ich wohl n dreher in der URL.
Mittlerweile ist die (Arcor)IP, und auch die NoIP Weiterleitung offline. Schade, hätt da gern eine phpShell hochgeladen. Naja, dann halt nächstemal
Ich hab ja nur den URL User/PW Teil eingefügt., da sind ja mehrere *.class Dateien, auch in dieser hier steht noch einiges mehr drin.
Aufjedenfall danke auch für die Erklärung, und den Ausgabe Code, beim nächsten Trojaner wird der Code wohl auch funktionieren, da this.session, this.domain usw wohl immer drin stehen wird, dann brauch ich nicht mehr stundenland suchen, und zusammensetzen :)
Danke
Schade, hätt da gern eine phpShell hochgeladen.
Dir ist aber schon klar, dass das zum einen bei einem nicht so ohne weiteres möglich ist und zum anderen straftrechtlich problematisch ist? Und wahrscheinlich triffst Du damit vor allem unbeteiligte Opfer…
beim nächsten Trojaner wird der Code wohl auch funktionieren, da this.session, this.domain usw wohl immer drin stehen wird
Warum sollte das immer da drin stehen?
irgendwo hin verbindet sich jeder Trojaner.
Und wahrscheinlich triffst Du damit vor allem unbeteiligte Opfer…Dann wusste der Builder von dem Trojaner, dass das Opfer einen Webserver per NoIP am laufen hatte, über den der Trojaner verteilt wurde.
Unwahrscheinlich, aber möglich.
Nicht jede Schadsoftware ist in Java implementiert und hat die selbe innere Struktur…
dass das Opfer einen Webserver per NoIP am laufen hatte, […] Unwahrscheinlich, aber möglich.
Wieso? Das Opfer weiß womöglich bis heute nichts davon, dass auf seinem System ein Webserver betrieben wurde…
nun ... der downlink zu dieser Datei verbreitete sich über einen lokalen Rechner, auf dem ein Webserver oder ähnliches installiert war/ist. Zudem verbindet sich der Trojaner zu einer noip Adresse, die mit der IP des downloadlinks übereinstimmt.
Unwahrscheinlich aber möglich, dass der Rechner selber Opfer ist
Das Opfer weiß womöglich bis heute nichts davon, dass auf seinem System ein Webserver betrieben wurdeund unbemerkt noip konfiguriert haben?
Unwahrscheinlich, aber möglich.
Nicht jede Schadsoftware ist in Java implementiert und hat die selbe innere Struktur…Das weiß ich auch ...Dennoch muss sich ein Trojaner/Keylogger (egal welche Porgrammiersprache) irgendwo hinverbinden, und diese Verbindung steht nunmal im Sourcecode. Der Weg dies auszulesen, ist lediglich ein anderer ...
der downlink zu dieser Datei verbreitete sich über einen lokalen Rechner
lokaler Rechner?
und unbemerkt noip konfiguriert haben?
Die einzige Herausforderung ist da die Portfreigabe. Die kann aber per UPnP erfolgen sofern der Besitzer sich das nicht im Router abgeschaltet hat…
Dennoch muss sich ein Trojaner/Keylogger (egal welche Porgrammiersprache) irgendwo hinverbinden, und diese Verbindung steht nunmal im Sourcecode
Aber nicht zwingend wie hier fast im Klartext zu lesen. Die hier vorliegende Methode ist absolut anspruchslos was das Reverse-Engineering angeht.
lokaler Rechner?privater Rechner
Aber nicht zwingend wie hier fast im Klartext zu lesen. Die hier vorliegende Methode ist absolut anspruchslos was das Reverse-Engineering angeht.Richtig, dass ist aber eher seltener