_______ __ __ _______
| ___ || |_| || |
| | | || || ___|
| |___| || || |___ Webshell finder,
| ___|| || ___| kiddies hunter,
| | | ||_|| || | website cleaner.
|___| |_| |_||___|
Detect potentially malicious PHP files.
PHP-malware-finder fait de son mieux pour détecter le code obscurci/douteux ainsi que les fichiers utilisant les fonctions PHP souvent utilisées dans les malwares/webshells.
La liste suivante d'encodeurs/obfuscateurs/webshells est également détectée :
Bien sûr, il est trivial de contourner PMF, mais son objectif est d'attraper les enfants et les idiots, pas les personnes dont le cerveau fonctionne. Si vous signalez un contournement stupide et personnalisé pour PMF, vous appartenez probablement à l'une (ou aux deux) catégories et devriez relire la déclaration précédente.
La détection est effectuée en explorant le système de fichiers et en testant les fichiers par rapport à un ensemble de règles YARA. Oui, c'est aussi simple que ça !
Au lieu d'utiliser une approche basée sur le hachage , PMF essaie autant que possible d'utiliser des modèles sémantiques, pour détecter des choses comme "une variable $_GET
est décodée deux fois, décompressée, puis transmise à une fonction dangereuse comme system
".
git clone https://github.com/jvoisin/php-malware-finder.git
cd php-malware-finder && make
ou remplacez les 2 dernières étapes par go install github.com/jvoisin/php-malware-finder
, qui compilera et installera directement PMF dans votre dossier ${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
Ou si vous préférez utiliser yara
:
$ yara -r ./data/php.yar /var/www
Veuillez garder à l'esprit que vous devez utiliser au moins YARA 3.4 car nous utilisons des hachages pour le système de liste blanche et des expressions rationnelles gourmandes. Veuillez noter que si vous envisagez de construire Yara à partir de sources, libssl-dev doit être installé sur votre système afin de prendre en charge les hachages.
Oh, et au fait, vous pouvez exécuter la suite de tests complète avec make tests
.
Si vous souhaitez éviter d'avoir à installer Go et libyara, vous pouvez également utiliser notre image docker et monter simplement le dossier que vous souhaitez analyser dans le répertoire /data
du conteneur :
$ docker run --rm -v /folder/to/scan:/data ghcr.io/jvoisin/php-malware-finder
Vérifiez le fichier whitelist.yar. Si vous êtes paresseux, vous pouvez générer des listes blanches pour des dossiers entiers avec le script generate_whitelist.py.
Parce que:
PHP-malware-finder est sous licence GNU Lesser General Public License v3.
L' étonnant projet YARA est sous licence Apache v2.0.
Les correctifs, listes blanches ou échantillons sont bien sûr les bienvenus.