Nach der technischen Analyse, die Sophos in dieser Woche veröffentlicht hat, wurde die Nutzlast von einer separaten Installations- beziehungsweise Verbreitungskomponente abgelegt. Diese hatte die auf BIG-IP-APM-Systemen genutzte Apache-Binärdatei /usr/sbin/httpd infiziert. Der Installer veränderte laut den Forschern zudem die SELinux-Konfiguration und richtete eine Persistenz ein, die auch BIG-IP-Upgrade-Images überdauert.

Die zweite Stufe verschleiert wichtige Betriebs-Zeichenketten mit RC4 und verschafft sich Ausführung, bevor die main()-Funktion der Host-Anwendung aufgerufen wird, indem sie __libc_start_main abfängt. Anschließend nimmt sie das PHP-Modul von Apache ins Visier, indem sie den Modul-Lader der Apache Portable Runtime (apr_dso_load) umbiegt und die Web-Shell in den Speicher injiziert.

Das Rootkit startet gemeinsam mit Apache und manipuliert PHP-Dateioperationen im Speicher, um die Web-Shell in legitimen Skripten zu verstecken – genannt werden apm_css.php3, full_wt.php3 und webtop_popup_css.php3. Sophos vermutet, dass diese Skripte gewählt wurden, weil sie in BIG-IP-APM-Webtop-Umgebungen vorhanden sind und seltener Sicherheitsalarme auslösen. Die PHP-Dateien auf der Festplatte bleiben unverändert, was die Angriffsfläche für eine Erkennung deutlich verkleinert.

Anzeige

Angesprochen wird die eingeschleuste Web-Shell über besonders formatierte „magische“ Anfragen. Sie entschlüsselt deren Inhalt, führt ihn über die PHP-Funktion eval() aus und liefert eine HTTP-201-Antwort zurück, die als CSS-Inhalt getarnt ist.

Auffällig ist ein eingebauter Schutzmechanismus, der das Anlegen der lokalen Hintertür beim Apache-Start verzögert. „Sobald der Apache-Prozess beginnt, routinemäßige Zeitabfragen zu machen, startet der Implant den Arbeits-Thread für den lokalen UNIX-Socket als Hintertür und löst ihn ab“, erklärt Sophos. „Dieses Timing verringert das Risiko, den Dienst zu destabilisieren, und hilft dem Implant, sich in das normale Laufzeitverhalten einzufügen.“

Der passwortgeschützte lokale Kommunikations-Socket kann eine interaktive Bash-Shell starten, ohne dafür einen lauschenden TCP-Port zu öffnen. Da der Socket nicht direkt aus dem Internet erreichbar ist, benötigen Angreifer einen weiteren Zugang auf dem Gerät; welche Komponente die Kommunikation mit dem Socket übernimmt, konnte Sophos nicht identifizieren.

Als Anhaltspunkte für eine Kompromittierung nennt das Sicherheitsunternehmen unter anderem Apache-Worker, die /proc/self/maps lesen, Speicherschutz-Einstellungen von libphp ändern, /run/bigtlog.pipe anlegen oder /bin/bash starten. Verteidiger sollten außerdem ungewöhnliche POST-Anfragen an die betroffenen .php3-Endpunkte prüfen sowie PHP-Antworten, die HTTP 201 mit dem Inhaltstyp text/css kombinieren.