
Обнаружение потенциально вредоносных PHP-файлов
_______ __ __ _______
| ___ || |_| || |
| | | || || ___|
| |___| || || |___ Webshell finder,
| ___|| || ___| kiddies hunter,
| | || ||_|| || | website cleaner.
|___| |_| |_||___|
Обнаружение потенциально вредоносных PHP-файлов.
PHP-malware-finder делает всё возможное, чтобы обнаружить обфусцированный/подозрительный код, а также файлы, использующие PHP-функции, часто применяемые в вредоносном ПО/веб-шеллах.
Также обнаруживаются следующие кодировщики/обфускаторы/веб-шеллы:
Конечно, тривиально обойти PMF, но его цель — ловить детишек и идиотов, а не людей с работающим мозгом. Если вы сообщите о глупом специальном обходе PMF, вы, скорее всего, относитесь к одной (или обеим) категориям и должны перечитать предыдущее утверждение.
Обнаружение выполняется путём обхода файловой системы и проверки файлов на соответствие набору правил YARA. Да, это так просто!
Вместо использования подхода на основе хэшей,
PMF старается максимально использовать семантические шаблоны для обнаружения таких вещей, как
«переменная $_GET декодируется дважды, разархивируется,
а затем передаётся в какую-нибудь опасную функцию, например system».
git clone https://github.com/jvoisin/php-malware-finder.gitcd php-malware-finder && makeили замените последние 2 шага на 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, вы также можете использовать наш
docker-образ и просто смонтировать папку, которую хотите сканировать, в каталог /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.
Патчи, белые списки или образцы, конечно, более чем приветствуются.