_______ __ __ _______
| ___ || |_| || |
| | | || || ___|
| |___| || || |___ Webshell finder,
| ___|| || ___| kiddies hunter,
| | | ||_|| || | website cleaner.
|___| |_| |_||___|
Detect potentially malicious PHP files.
PHP-malware-finder hace todo lo posible para detectar código ofuscado/dudoso, así como archivos que utilizan funciones PHP utilizadas a menudo en malwares/webshells.
También se detecta la siguiente lista de codificadores/ofuscadores/webshells:
Por supuesto, es trivial evitar el PMF, pero su objetivo es atrapar a niños e idiotas, no a personas con un cerebro funcional. Si informa sobre una estúpida derivación personalizada para PMF, probablemente pertenezca a una (o ambas) categorías y debería volver a leer la declaración anterior.
La detección se realiza rastreando el sistema de archivos y probando los archivos con un conjunto de reglas YARA. ¡Sí, es así de simple!
En lugar de utilizar un enfoque basado en hash , PMF intenta en la medida de lo posible utilizar 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.git
cd php-malware-finder && make
o reemplace los últimos 2 pasos con go install github.com/jvoisin/php-malware-finder
, que compilará e instalará PMF directamente en su 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
Tenga en cuenta que debe usar al menos YARA 3.4 porque estamos usando hashes para el sistema de lista blanca y expresiones regulares codiciosas. Tenga en cuenta que si planea compilar yara a partir de fuentes, debe instalar libssl-dev en su sistema para tener soporte para hashes.
Ah, y por cierto, puedes ejecutar el conjunto de pruebas completo con make tests
.
Si desea evitar tener que instalar Go y libyara, también puede usar nuestra imagen de la ventana acoplable y simplemente montar la carpeta que desea escanear en el directorio /data
del contenedor:
$ docker run --rm -v /folder/to/scan:/data ghcr.io/jvoisin/php-malware-finder
Verifique el archivo whitelist.yar. Si eres vago, puedes generar listas blancas para carpetas enteras con el script generate_whitelist.py.
Porque:
PHP-malware-finder tiene la licencia pública general reducida GNU v3.
El increíble proyecto YARA tiene la licencia Apache v2.0.
Por supuesto, los parches, listas blancas o muestras son más que bienvenidos.