
Detecta archivos PHP potencialmente maliciosos
_______ __ __ _______
| ___ || |_| || |
| | | || || ___|
| |___| || || |___ Webshell finder,
| ___|| || ___| kiddies hunter,
| | | ||_|| || | website cleaner.
|___| |_| |_||___|
Detecta archivos PHP potencialmente maliciosos.
PHP-malware-finder hace todo lo posible para detectar código ofuscado/sospechoso, así como archivos que utilizan funciones de PHP a menudo empleadas en malware/webshells.
También se detecta la siguiente lista de codificadores/ofuscadores/webshells:
Por supuesto, es trivial eludir PMF, pero su objetivo es atrapar a novatos e idiotas, no a personas con cerebro funcional. Si reportas un bypass tonto y hecho a medida para PMF, probablemente pertenezcas a una (o ambas) categorías, y deberías releer la declaración anterior.
La detección se realiza recorriendo el sistema de archivos y probando los archivos contra un conjunto de reglas YARA. ¡Sí, es así de simple!
En lugar de usar un enfoque basado en hash,
PMF intenta en la medida de lo posible usar patrones semánticos, para detectar cosas como
"una variable $_GET se decodifica dos veces, se descomprime,
y luego se pasa a alguna función peligrosa como system".
git clone https://github.com/jvoisin/php-malware-finder.gitcd php-malware-finder && makeo reemplaza los últimos 2 pasos con go install github.com/jvoisin/php-malware-finder,
lo que compilará e instalará PMF directamente en tu carpeta ${GOROOT}/bin.
$ ./php-malware-finder -h
Usage:
php-malware-finder [OPTIONS] [Target]
Application Options:
-r, --rules-dir= Alternative rules location (default: embedded rules)
-a, --show-all Display all matched rules
-f, --fast Enable YARA's fast mode
-R, --rate-limit= Max. filesystem ops per second, 0 for no limit (default: 0)
-v, --verbose Verbose mode
-w, --workers= Number of workers to spawn for scanning (default: 32)
-L, --long-lines Check long lines
-c, --exclude-common Do not scan files with common extensions
-i, --exclude-imgs Do not scan image files
-x, --exclude-ext= Additional file extensions to exclude
-u, --update Update rules
-V, --version Show version number and exit
Help Options:
-h, --help Show this help message
O si prefieres usar yara:
$ yara -r ./data/php.yar /var/www
Ten en cuenta que deberías usar al menos YARA 3.4 porque estamos usando hashes para el sistema de listas blancas, y expresiones regulares codiciosas. Ten en cuenta que si planeas compilar yara desde las fuentes, libssl-dev debe estar instalado en tu sistema para tener soporte para hashes.
Ah, y por cierto, puedes ejecutar el completo conjunto de pruebas con make tests.
Si quieres evitar tener que instalar Go y libyara, también puedes usar nuestra
imagen docker y simplemente montar la carpeta que deseas escanear en el directorio
/data del contenedor:
$ docker run --rm -v /folder/to/scan:/data ghcr.io/jvoisin/php-malware-finder
Consulta el archivo whitelist.yar. Si eres vago, puedes generar listas blancas para carpetas enteras con el script generate_whitelist.py.
Porque:
PHP-malware-finder está licenciado bajo la Licencia Pública General Reducida de GNU v3.
El increíble proyecto YARA está licenciado bajo la licencia Apache v2.0.
Parches, listas blancas o muestras son, por supuesto, más que bienvenidos.