Web Shell PHP Controllati da Cookie: Tecniche di Furtività su Host Linux
Detection stack
- AIDR
- Alert
- ETL
- Query
Riepilogo
Gli attori delle minacce stanno abusando dei cookie HTTP come “chiave di attivazione” nascosta per le web shell PHP su server di hosting Linux. Gli impianti rimangono inattivi fino a quando non viene fornito un valore specifico del cookie, quindi decodificano ed eseguono i payload forniti dall’attaccante. Questo approccio aiuta a ridurre gli indicatori evidenti nei log di routine, consentendo al contempo l’esecuzione persistente di codice remoto. Le pratiche commerciali di supporto comuni includono offuscamento a strati, autorigenerazione basata su cron e l’uso di utilità server standard.
Indagine
I ricercatori hanno esaminato diversi account di hosting compromessi e hanno trovato loader PHP che ricostruiscono le capacità solo da blob codificati in Base64 quando il cookie di attivazione è presente. La persistenza è stata mantenuta attraverso i job cron creati tramite pannelli di controllo dell’hosting (come cPanel) che ripristinano periodicamente la web shell se viene rimossa. L’esecuzione scorreva comunemente attraverso php-fpm e altri motori web, che generavano interpreti di shell e recuperavano payload secondari per estendere l’accesso.
Mitigazione
Richiedere MFA per i pannelli di controllo dell’hosting e i percorsi di accesso amministrativi. Limitare i processi del server web in modo che non possano avviare shell o invocare utilità di staging comuni come base64, curl o wget. Monitorare attentamente la creazione e le modifiche cron e segnalare scritture di file inaspettate o modifiche nelle directory web. Un ulteriore irrobustimento comprende limitare l’accesso alla jail shell e abilitare protezioni in tempo reale sugli endpoint sui server Linux.
Risposta
Se identificato, isolare l’host, disabilitare e rimuovere le voci cron dannose, eliminare gli artefatti PHP sospetti e ruotare le credenziali per gli account di hosting interessati. Preservare e esaminare le prove, inclusi i valori dei cookie di attivazione e le linee di comando associate, quindi applicare controlli di irrobustimento per prevenire nuove installazioni e compromissioni ripetute.
"graph TB %% Class Definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef process fill:#ffeb99 classDef builtin fill:#cccccc %% Action Nodes step1_initial_access["<b>Technique</b> – T1190 Exploit Public Facing Application<br/><b>Description</b>: Vulnerabilità in un’applicazione esposta al web sfruttata per caricare un file PHP dannoso e ottenere una presenza iniziale."] class step1_initial_access action step2_persistence_webshell["<b>Technique</b> – T1505.003 Componente Software Server: Web Shell<br/><b>Description</b>: Il file PHP caricato agisce come una web shell fornendo accesso remoto persistente."] class step2_persistence_webshell action step3_def_evasion_obfuscation["<b>Technique</b> – T1027.008 File o Informazioni Offuscati: Payload Stripped<br/><b>Description</b>: Il codice del loader è impacchettato e ridotto per nascondere la sua vera funzionalità."] class step3_def_evasion_obfuscation action step3b_def_evasion_api["<b>Technique</b> – T1027.007 Risoluzione API Dinamica<br/><b>Description</b>: I nomi delle funzioni vengono ricostruiti a runtime per evitare il rilevamento statico."] class step3b_def_evasion_api action step4_decode["<b>Technique</b> – T1140 Deoffuscamento/Decodifica File o Informazioni<br/><b>Description</b>: I blob Base64 vengono decodificati sul server per ricreare il payload dannoso."] class step4_decode action step5_unix_shell["<b>Technique</b> – T1059.004 Interprete di Comandi e Script: Unix Shell<br/><b>Description</b>: La web shell genera /bin/sh o bash per eseguire i comandi forniti dall’attaccante."] class step5_unix_shell action step6_cookie_cred["<b>Technique</b> – Accesso alle Credenziali via Cookie<br/><b>Description</b>: L’esecuzione è controllata da valori $_COOKIE specifici, consentendo all’attaccante di stabilire quando far eseguire il codice."] class step6_cookie_cred action step7_permission_mod["<b>Technique</b> – T1222.002 Modifica delle Permessioni di File e Directory su Linux e Mac<br/><b>Description</b>: I file PHP creati sono dotati di modalità permissive per rimanere eseguibili e resistenti alla rimozione."] class step7_permission_mod action step8_ingress_transfer["<b>Technique</b> – T1105 Trasferimento di Strumenti in Ingresso<br/><b>Description</b>: curl o wget scaricano strumenti aggiuntivi o payload di secondo livello nella radice web."] class step8_ingress_transfer action step9_persistence_cron["<b>Technique</b> – T1053.003 Attività/Job Pianificato: Cron<br/><b>Description</b>: Un job cron a livello utente ricrea periodicamente il loader offuscato, garantendo un accesso autoregolante."] class step9_persistence_cron action step10_def_evasion_cont["<b>Technique</b> – Offuscamento Continuato e Visibilità Limitata<br/><b>Description</b>: L’attività dannosa è nascosta dietro il normale traffico web e si attiva solo sul cookie corretto, riducendo le prove nei log."] class step10_def_evasion_cont action %% Tool / Process Nodes tool_php["<b>Tool</b> – Interprete PHP"] class tool_php tool tool_curl_wget["<b>Tool</b> – curl / wget"] class tool_curl_wget tool tool_cron["<b>Tool</b> – Scheduler Cron"] class tool_cron tool process_apache["<b>Process</b> – apache2 / php-fpm"] class process_apache process %% Connections step1_initial_access –>|porta a| step2_persistence_webshell step2_persistence_webshell –>|abilita| step3_def_evasion_obfuscation step3_def_evasion_obfuscation –>|utilizza| step3b_def_evasion_api step3b_def_evasion_api –>|prepara| step4_decode step4_decode –>|esegue| step5_unix_shell step5_unix_shell –>|verifica| step6_cookie_cred step6_cookie_cred –>|imposta| step7_permission_mod step7_permission_mod –>|scarica tramite| tool_curl_wget tool_curl_wget –>|memorizza il payload per| step8_ingress_transfer step8_ingress_transfer –>|attiva| step9_persistence_cron step9_persistence_cron –>|rinforza| step10_def_evasion_cont step10_def_evasion_cont –>|opera all’interno di| process_apache process_apache –>|esegue| tool_php "
Flusso di Attacco
Rilevamenti
Shell sospetta tramite server web [Linux] (tramite process_creation)
Visualizza
È stato creato un file Cron (tramite file_event)
Visualizza
Possibile Manipolazione di Stringhe Codificate in Base64 (tramite cmdline)
Visualizza
Rilevamento di Attività di PHP Webshell Controllate da Cookie [Server Web]
Visualizza
Rilevamento di Esecuzione di PHP Webshell Controllate da Cookie su Server Linux [Evento File Linux]
Visualizza
Rilevamento di Esecuzione di PHP Webshell Controllate da Cookie [Creazione Processo Linux]
Visualizza
Esecuzione di Simulazione
Prerequisito: Il check preliminare di Telemetria e Baseline deve essere positivo.
Motivazione: Questa sezione descrive l’esecuzione precisa della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente le TTP identificate ed essere creati per generare la telemetria esatta prevista dalla logica di rilevamento. Esempi astratti o non correlati porteranno a una diagnosi errata.
-
Narrativa e Comandi di Attacco:
Un attaccante che ha già compromesso il server web ottiene una webshell PHP dannosa (malicious.php). Per attivarla, l’attaccante emette una richiesta HTTP che inietta un cookie appositamente creato. Il gestore PHP del server web interpreta il cookie e genera un processo Bash che esegue il file della webshell. Per i test, simuleremo lo stesso effetto localmente invocando manualmente Bash con una linea di comando che include “.php”. Ciò produce la telemetria esatta che la regola Sigma monitora (interprete della shell + “.php” nella linea di comando).- Crea una webshell PHP fittizia (nessun codice dannoso, solo un innocuo
phpinfo()per visibilità). - Eseguire la webshell tramite Bash, includendo il
.phpnome del file nella linea di comando. - Verificare che l’evento di creazione del processo appaia nei log di audit con i campi previsti.
- Crea una webshell PHP fittizia (nessun codice dannoso, solo un innocuo
-
Script per Test di Regressione:
#!/usr/bin/env bash set -euo pipefail # 1. Distribuire un file PHP innocuo (webshell simulata) WEBROOT="/tmp/webshell_test" mkdir -p "$WEBROOT" cat > "$WEBROOT/malicious.php" <<'EOF' <?php // Webshell simulata – payload sicuro echo "Webshell eseguita a " . date('c') . "n"; ?> EOF # 2. Attivare l'esecuzione tramite un interprete Bash (la linea di comando contiene ".php") echo "[*] Esecuzione della webshell tramite Bash per generare la telemetria di rilevamento..." /bin/bash -c "php $WEBROOT/malicious.php" # 3. Pausa breve per permettere ad auditd di svuotare i log sleep 2 echo "[*] Simulazione completa. Controllare il SIEM per corrispondenza su:" echo " process.name in (bash, sh, dash, jailshell) E process.command_line contiene '.php'" -
Comandi di Pulizia:
#!/usr/bin/env bash set -euo pipefail WEBROOT="/tmp/webshell_test" echo "[*] Rimuovere la directory della webshell di test..." rm -rf "$WEBROOT" echo "[*] Pulizia completata."