Back to hub

Shell Spawned from PHP Process - WordPress WebShell Detection

Detects shell or command interpreter processes spawned as children of PHP or web server processes, a basic indicator of webshell presence in WordPress or other PHP applications. Relevant given 6,700+ CVEs recorded in WordPress plugins and themes during H1 2025.

Malwarewebshellphpwordpressrceweb-exploitationT1505.003T1059.004T1190
FDR Beginnerby darkreitor 1 min read

Query

#repo="base_sensor" #event_simpleName=ProcessRollup2
| ParentBaseFileName=/(?i)(php\.exe|php-cgi\.exe|php-fpm|httpd\.exe|apache2|nginx)$/
| FileName=/(?i)(cmd\.exe|powershell\.exe|sh|bash|python\.exe|python3|net\.exe|whoami\.exe)$/
| groupBy([ComputerName, FileName], function=[
    count(as=spawn_count),
    collect(CommandLine, separator="|"),
    max(@timestamp, as=last_seen)
  ])
| sort(last_seen, order=desc)

Explanation

PipeDescripción
`ParentBaseFileName=/(?i)(php\.exe\php-cgi\.exe\php-fpm\httpd\.exe\apache2\nginx)$/`Filtra procesos cuyo padre es PHP u otro servidor web, el origen típico de ejecución de webshells
`FileName=/(?i)(cmd\.exe\powershell\.exe\sh\bash\python\.exe\python3\net\.exe\whoami\.exe)$/`Detecta shells de sistema operativo invocados desde PHP: cmd, powershell, bash, sh, python, net, whoami
groupBy([ComputerName, FileName], ...)Agrupa por host y binario hijo para identificar patrones de webshell repetitivos y el alcance de la infección
`collect(CommandLine, separator="\")`Captura los comandos ejecutados para análisis forense y determinación del alcance de la intrusión
sort(last_seen, order=desc)Muestra los eventos más recientes primero para triage inmediato por el analista SOC

Adjustable Variables

ParentBaseFileName: agregar w3wp.exe (IIS) o tomcat para cobertura en otros stacks de servidor web; FileName: agregar perl, ruby u otros intérpretes según el entorno del servidor; no hay umbral de count ya que cualquier spawn de este tipo es sospechoso