SOC Prime Bias: Kritisch

03 Feb. 2026 19:33

EncystPHP: Waffe des FreePBX-Web-Shells für dauerhafte Administratorenkompromittierung

Author Photo
Ruslan Mikhalov Leiter der Bedrohungsforschung bei SOC Prime linkedin icon Folgen
EncystPHP: Waffe des FreePBX-Web-Shells für dauerhafte Administratorenkompromittierung
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

FortiGuard Labs berichtet über eine PHP-Web-Shell namens EncystPHP die auf exponierten FreePBX-Instanzen durch Ausnutzung von CVE-2025-64328eingesetzt wird. Das Implantat ermöglicht die Ausführung von Remote-Kommandos, bietet privilegierte Benutzerkonten und setzt durch Cron-Jobs und nachfolgende Dropper eine mehrschichtige Persistenz. Die Aktivität wird mit der INJ3CTOR3-Crew in Verbindung gebracht und scheint auf Telekommunikationsumgebungen abzuzielen. Veröffentlichte Indikatoren umfassen bösartige IPs, Domains, URLs und mehrere feindliche Dateipfade.

Untersuchung

Ermittler verfolgten den ersten Zugang auf eine nach Authentifizierung auftretende Kommando-Injektionsschwachstelle im FreePBX Endpoint Manager zurück. Nach erfolgreicher Ausnutzung zieht der Betreiber einen Dropper von 45.234.176.202, lockert die Berechtigungen für wichtige PHP-Komponenten, extrahiert Datenbankanmeldedaten, erstellt ein Root-Konto und fügt einen vom Angreifer kontrollierten SSH-Key hinzu. Die Persistenz wird durch Cron-Einträge verstärkt, die wiederholt zusätzliche Dropper abrufen und Artefakte aktualisieren. EncystPHP gibt sich auch als legitime FreePBX-Dateien aus und manipliert Zeitstempel, um die Sichtbarkeit während der routinemäßigen Überprüfung zu reduzieren.

Abmilderung

Patchen Sie den FreePBX Endpoint Manager, um CVE-2025-64328 (und alle damit verbundenen Fixes) so schnell wie möglich zu adressieren. Suchen Sie nach unautorisierten Web-Shell-Dateien, verdächtigen Cron-Planungen und neu erstellten privilegierten lokalen Benutzern. Blockieren Sie ausgehenden HTTP-Verkehr zu bekannten bösartigen Infrastrukturen und erzwingen Sie strenge, minimal notwendige Berechtigungen auf webbasierten Verzeichnissen und PHP-Ressourcen.

Reaktion

Bei Erkennung isolieren Sie den betroffenen PBX-Server, entfernen EncystPHP-Artefakte, löschen unautorisierte Cron-Jobs und setzen lokale Konten und SSH-Schlüssel zurück. Überprüfen Sie Protokolle und Konfigurations-Backups, um Änderungen zu erfassen, und wenden Sie aktuelle Sicherheitsupdates an. Härten Sie die Webschnittstelle. Stellen Sie sicher, dass keine sekundären Dropper oder Persistenzmechanismen verbleiben, bevor Sie den normalen Telefoniebetrieb wiederherstellen.

graph TB %% Class Definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef file fill:#ccffcc classDef process fill:#ffeb99 %% Nodes initial_access[„<b>Action</b> – <b>T1190 Exploit Public-Facing Application</b><br/>Ausnutzung des FreePBX Endpoint-Managers CVE-2025-64328“] class initial_access action tool_wget[„<b>Tool</b> – <b>Name</b>: wget<br/><b>Description</b>: Herunterladen von Dateien über HTTP“] class tool_wget tool process_shell[„<b>Process</b> – <b>T1059.004 Command and Scripting Interpreter: Unix Shell</b><br/>Base64-dekodierte Bash-Skripte c, k.php, test.sh“] class process_shell process file_c[„<b>File</b> – c (Bash-Skript)“] class file_c file file_kphp[„<b>File</b> – k.php (PHP-Dropper)“] class file_kphp file file_testsh[„<b>File</b> – test.sh (Bash-Skript)“] class file_testsh file credential_access[„<b>Action</b> – <b>T1003 OS Credential Dumping</b><br/>Datenbank-Zugangsdaten aus /etc/freepbx.conf gesammelt“] class credential_access action file_freepbxconf[„<b>File</b> – /etc/freepbx.conf“] class file_freepbxconf file priv_esc_exploit[„<b>Action</b> – <b>T1068 Exploitation for Privilege Escalation</b>“] class priv_esc_exploit action account_create[„<b>Action</b> – <b>T1136.001 Create Account: Local Account</b><br/>Root-Benutzer newfpbx mit vordefiniertem Passwort-Hash erstellt“] class account_create action persistence_webshell[„<b>Action</b> – <b>T1505.003 Server Software Component: Web Shell</b><br/>EncystPHP als ajax.php und config.php getarnt bereitgestellt“] class persistence_webshell action file_ajaxphp[„<b>File</b> – ajax.php (Webshell)“] class file_ajaxphp file file_configphp[„<b>File</b> – config.php (Webshell)“] class file_configphp file persistence_cron[„<b>Action</b> – <b>T1053.003 Scheduled Task/Job: Cron</b><br/>Cron-Jobs installiert, um k.php jede Minute herunterzuladen und auszuführen“] class persistence_cron action defense_perm_mod[„<b>Action</b> – <b>T1222.002 File and Directory Permissions Modification: Linux</b><br/>Dateiberechtigungen auf 000 gesetzt und Zeitstempel manipuliert“] class defense_perm_mod action defense_masquerade[„<b>Action</b> – <b>T1036.005 Masquerading</b><br/>Shells in legitim aussehenden Verzeichnissen platziert“] class defense_masquerade action defense_indicator_removal[„<b>Action</b> – <b>T1070.004 File Deletion</b> and <b>T1070.006 Timestomp</b><br/>Logs, Cron-Einträge gelöscht und Zeitstempel angepasst“] class defense_indicator_removal action lateral_movement_ssh[„<b>Action</b> – <b>T1021.004 Remote Services: SSH</b> and <b>T1098.004 SSH Authorized Keys</b><br/>Öffentlicher Angreifer-Schlüssel zu authorized_keys hinzugefügt“] class lateral_movement_ssh action command_and_control[„<b>Action</b> – <b>T1105 Ingress Tool Transfer</b> and <b>T1071.001 Application Layer Protocol: Web Protocols</b><br/>Dropper von 45.234.176.202 mittels wget abgerufen“] class command_and_control action impact_hijack[„<b>Action</b> – <b>T1496 Resource Hijacking</b><br/>PBX für nicht autorisierte ausgehende Anrufe missbraucht“] class impact_hijack action defense_impair[„<b>Action</b> – <b>T1562.001 Impair Defenses</b> and <b>T1548 Abuse Elevation Control Mechanism</b><br/>Fehlerberichterstattung deaktiviert und Administrationskontext für Systemänderungen genutzt“] class defense_impair action %% Edges initial_access –>|uses| tool_wget tool_wget –>|downloads| file_c tool_wget –>|downloads| file_kphp tool_wget –>|downloads| file_testsh initial_access –>|leads to| process_shell process_shell –>|executes| file_c process_shell –>|executes| file_kphp process_shell –>|executes| file_testsh process_shell –>|leads to| credential_access credential_access –>|reads| file_freepbxconf credential_access –>|enables| priv_esc_exploit priv_esc_exploit –>|enables| account_create account_create –>|enables| persistence_webshell persistence_webshell –>|creates| file_ajaxphp persistence_webshell –>|creates| file_configphp persistence_webshell –>|enables| persistence_cron persistence_cron –>|creates| file_kphp persistence_cron –>|uses| tool_wget persistence_cron –>|sets| defense_perm_mod defense_perm_mod –>|supports| defense_masquerade defense_masquerade –>|supports| defense_indicator_removal persistence_webshell –>|supports| lateral_movement_ssh lateral_movement_ssh –>|enables| command_and_control command_and_control –>|provides| impact_hijack command_and_control –>|supports| defense_impair

Angriffsablauf

Erkennungen

Mögliches neues Konto zur Persistenz [Linux] (über cmdline)

SOC Prime Team
02. Feb 2026

Cron-Datei wurde erstellt (über file_event)

SOC Prime Team
02. Feb 2026

Downloads in verdächtige Ordner (über cmdline)

SOC Prime Team
02. Feb 2026

Möglicher SSH Known Hosts Erkennungsversuch [MacOS] (über cmdline)

SOC Prime Team
02. Feb 2026

Mögliche Base64-codierte Zeichenmanipulation (über cmdline)

SOC Prime Team
02. Feb 2026

IOCs (DestinationIP) zur Erkennung: Enthüllung der weaponisierten Web-Shell EncystPHP – Eine persistente FreePBX-Web-Shell, die langfristige administrative Kompromittierung ermöglicht

SOC Prime AI-Regeln
02. Feb 2026

IOCs (HashSha256) zur Erkennung: Enthüllung der weaponisierten Web-Shell EncystPHP – Eine persistente FreePBX-Web-Shell, die langfristige administrative Kompromittierung ermöglicht

SOC Prime AI-Regeln
02. Feb 2026

IOCs (SourceIP) zur Erkennung: Enthüllung der weaponisierten Web-Shell EncystPHP – Eine persistente FreePBX-Web-Shell, die langfristige administrative Kompromittierung ermöglicht

SOC Prime AI-Regeln
02. Feb 2026

Erkennen von Crontab-Einträgen für den persistenten Download von k.php und c Dropper [Linux Prozess-Erstellung]

SOC Prime AI-Regeln
02. Feb 2026

EncystPHP Web-Shell-Bereitstellung und Persistenz über CVE-2025-64328 [Linux Prozess-Erstellung]

SOC Prime AI-Regeln
02. Feb 2026

Erkennung der EncystPHP-Web-Shell-Aktivität in FreePBX [Linux Dateievents]

SOC Prime AI-Regeln
02. Feb 2026

Simulationsausführung

Voraussetzung: Der Telemetrie- & Base-Lining-Pre-Flight-Check muss bestanden werden.

Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der gegnerischen Technik (TTP), die zur Auslösung der Erkennungsregel entwickelt wurde. Die Befehle und Erzählungen MÜSSEN direkt die identifizierten TTPs widerspiegeln und darauf abzielen, die von der Erkennungslogik erwartete Telemetrie genau zu erzeugen.

  • Angriffs-Erzählung & Befehle:

    1. Laden Sie die EncystPHP-Web-Shell hoch – Der Angreifer erstellt einen Base64-codierten PHP-Payload und liefert ihn über einen HTTP-POST an das FreePBX-Web-UI, wodurch die Datei ajax.php im Verzeichnis /var/www/html/admin/views/ajax.php.
    2. geschrieben wird. Setzen Sie restriktive Berechtigungen – Unmittelbar nach der Bereitstellung führt der Angreifer – Unmittelbar nach der Bereitstellung führt der Angreifer
    3. aus, um die Shell vor normalen Benutzern zu verbergen und die Ausführung unter dem privilegierten Konto des Web-Servers zu erzwingen (T1222.002). Löschen Sie kritische Konfigurationen – Um die Erkennung zu beeinträchtigen und das System zum erneuten Laden mit der bösartigen Shell zu zwingen, entfernt der Angreifer die – Um die Erkennung zu beeinträchtigen und das System zum erneuten Laden mit der bösartigen Shell zu zwingen, entfernt der Angreifer die
    4. – Um die Erkennung zu beeinträchtigen und das System zum erneuten Laden mit der bösartigen Shell zu zwingen, entfernt der Angreifer die Die Shell auslösen ajax.php – Ein einfacher HTTP-GET zur neu erstellten
  • führt den Payload aus und etabliert eine Rückwärtsschale (T1105, T1059.004). Regressionstest-Skript:Das Skript reproduziert die Schritte 1‑3 in einem kontrollierten Testverzeichnis (Das Skript reproduziert die Schritte 1‑3 in einem kontrollierten Testverzeichnis (

    ) um ein Produktionssystem nicht zu beeinträchtigen.
  • Aufräum-Befehle:

    # cleanup_encystphp_simulation.sh
    set -euo pipefail
    TEST_ROOT="/tmp/freepbx_test"
    sudo rm -rf "${TEST_ROOT}"
    echo "Testumgebung bereinigt."