_______ __ __ _______
| ___ || |_| || |
| | | || || ___|
| |___| || || |___ Webshell finder,
| ___|| || ___| kiddies hunter,
| | | ||_|| || | website cleaner.
|___| |_| |_||___|
Detect potentially malicious PHP files.
PHP-malware-finder делает все возможное, чтобы обнаружить запутанный/хитрый код, а также файлы, использующие функции PHP, часто используемые во вредоносных программах/веб-шеллах.
Также обнаружен следующий список кодировщиков/обфускаторов/веб-оболочек:
Конечно, обойти PMF тривиально , но его цель — ловить детишек и идиотов, а не людей с работающим мозгом. Если вы сообщаете о глупом специальном обходе PMF, вы, вероятно, принадлежите к одной (или обеим) категории и вам следует перечитать предыдущее утверждение.
Обнаружение осуществляется путем сканирования файловой системы и проверки файлов на соответствие набору правил YARA. Да, это так просто!
Вместо использования подхода , основанного на хешировании , PMF старается, насколько это возможно, использовать семантические шаблоны, чтобы обнаружить такие вещи, как «переменная $_GET
декодируется два раза, разархивируется, а затем передается какой-то опасной функции, такой как system
».
git clone https://github.com/jvoisin/php-malware-finder.git
cd php-malware-finder && make
или замените последние два шага на go install github.com/jvoisin/php-malware-finder
, который напрямую скомпилирует и установит PMF в вашу папку ${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
Или, если вы предпочитаете использовать yara
:
$ yara -r ./data/php.yar /var/www
Имейте в виду, что вам следует использовать как минимум YARA 3.4, поскольку мы используем хеши для системы белых списков и жадные регулярные выражения. Обратите внимание: если вы планируете собирать Yara из исходных кодов, в вашей системе должна быть установлена библиотека libssl-dev, чтобы иметь поддержку хэшей.
Да, и кстати, вы можете запустить комплексный набор тестов с помощью make tests
.
Если вы не хотите устанавливать Go и libyara, вы также можете использовать наш образ докера и просто смонтировать папку, которую хотите сканировать, в каталог /data
контейнера:
$ docker run --rm -v /folder/to/scan:/data ghcr.io/jvoisin/php-malware-finder
Проверьте файл whitelist.yar. Если вам лень, вы можете создавать белые списки для целых папок с помощью скриптаgenerate_whitelist.py.
Потому что:
PHP-malware-finder распространяется по лицензии GNU Lesser General Public License v3.
Удивительный проект YARA распространяется по лицензии Apache v2.0.
Патчи, белые списки или образцы, конечно, более чем приветствуются.