_______ __ __ _______
| ___ || |_| || |
| | | || || ___|
| |___| || || |___ Webshell finder,
| ___|| || ___| kiddies hunter,
| | | ||_|| || | website cleaner.
|___| |_| |_||___|
Detect potentially malicious PHP files.
PHP-malware-finder は、マルウェアや Web シェルでよく使用される PHP 関数を使用して、難読化された/危険なコードやファイルを検出するために最善を尽くします。
次のエンコーダー/難読化ツール/Webシェルのリストも検出されます。
もちろん、PMF を回避するのは簡単ですが、その目的は、まともな頭脳を持つ人々ではなく、ガキやバカを捕まえることです。 PMF の愚かな調整バイパスを報告する場合は、どちらか (または両方) のカテゴリに属している可能性が高いため、前の声明をもう一度読む必要があります。
検出は、ファイルシステムをクロールし、一連の YARA ルールに対してファイルをテストすることによって実行されます。はい、とても簡単です!
PMF は、ハッシュ ベースのアプローチを使用する代わりに、セマンティック パターンを可能な限り使用して、「 $_GET
変数が 2 回デコードされ、解凍され、 system
などの危険な関数に渡される」などのことを検出しようとします。
git clone https://github.com/jvoisin/php-malware-finder.git
cd 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 ライセンスに基づいてライセンスされています。
もちろん、パッチ、ホワイトリスト、サンプルは大歓迎です。