PHP バックドア型トロイの木馬が一般的に使用する機能は、次の 4 つのタイプに大別できます。
1. システム コマンドを実行します: system、passthru、shell_exec、exec、popen、 proc_open
2. コードの実行と暗号化: eval、assert、call_user_func、base64_decode、gzinflate、gzuncompress、gzdecode、str_rot13
3. ファイルのインクルードと生成: require、require_once、include、include_once、file_get_contents、file_put_contents、fputs、 fwrite
4. .htaccess: SetHandler、auto_prepend_file、auto_append_file
二
したいキーワードfind はどのファイルに「hello word」が存在しますか? grep コマンド
grep –color -i -r -n “hello word” /data/www/
この方法で、キーワードを含むファイルを検索できます
–color は赤でマークされたキーワードです
-i は case- insensitive
-r はサブディレクトリを含む検索です
-d Skipサブディレクトリを無視します
上記のコマンドを使用して、フックのあるファイルを検索できますWeb サイト プロジェクト Ma のファイル
Three
バックドアをチェックするための 2 つの実用的な Linux コマンド:
。 find /data/web/website/ -iname *.php -mtime -35 /data/web/website/ ディレクトリで 35 分前に作成された php を見つけます
find /data/web/website/ -name “*. php" | >たとえば、
grep –color -i -r -n “eval” /data/www/ を見つけて、以前の通常のコードと比較して、そうであるかどうかを確認します。普通。次に、stat を使用してトロイの木馬ファイルの変更時刻を確認し、最後に WEB ログを探してトロイの木馬がどこから侵入したかを見つけます。
5:
PHP トロイの木馬を検索するコマンド:
# find ./ -name "*.php" |xargs egrep "phpspy| c99sh|milw0rm|eval(gunerpress|eval(base64_decoolcode|spider_bc"> /tmp/php.txt # grep -r --include=*.php '[^a-z]eval($_POST' . > /tmp/eval .txt # grep -r --include=*.php 'file_put_contents(.*$_POST[.*]);' /tmp/file_put_contents.txt # find ./ -name .php" -type f -print0 | >
1 2 3 4 |
|
1 | # find -mtime -1 -type f -name *.php |
# find -mtime -1 -type f -name *.php
# find -mtime -1 -type f -name *.php 1 2 # find -type f -name *.php -exec chmod 444 {} ; # find ./ -type d -exec chmod 555{} ;
1
12 # find -type f -name *.php -exec chmod 444 {} ;# find ./ -type d -exec chmod 555{} ;
1 2 3 |
#find /var/www/ -name “*.php” |xargs grep “eval” |more #find /var/www/ -name “*.php” |xargs grep “shell_exec” |more #find /var/www/ -name “*.php” |xargs grep “passthru” |more |
もちろん、Web サイト上に多数の php ファイルがないことが前提です。
PHP トロイの木馬を見つけてください。文
# find ./ -name “*.php” |xargs egrep “phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decode|spider_bc”) > /tmp/ php.txt # grep -r –include=*.php '[^a-z]eval($_POST' . > /tmp/eval.txt # grep -r –include=*.php 'file_put_contents( .*$_POST[ .*]);' > /tmp/file_put_contents.txt # find ./ -name "*.php" -type f -print0 egrep "(phpspy|c99sh|milw0rm|eval) (gzuncompress(base64_decode| eval(base64_decode|spider_bc|gzinflate)" | awk -F: '{print $1}' | sort | uniq
|
# find ./ -name “*. php” |xargs egrep "phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decode|spider_bc"> /tmp/php.txt # grep -r –include=*.php '[^a-z ]eval($_POST ' . > /tmp/eval.txt # grep -r –include=*.php 'file_put_contents(.*$_POST[.*]);' . > /tmp /file_put_contents.txt # find ./ -name "*.php" -type f -print0 | '{print $1}' ソート | tr> |
前日に変更された項目を検索します PHP ファイル
# find -mtime -1 -type f -name *.php
Six
以下の操作は実際には冗長ですが、まだ見るべき点がいくつかあります。
コードを確認してください。
これは決してファイルごとのチェックではありません。Linxu には、現在のディレクトリ内のすべてのファイルで eval を持つファイルを完全に検索するための強力なコマンド
grep 'eval' * -R があります。 (サブディレクトリを含む) 、これにより、マウントされているファイルをすばやく見つけることができます。
eval については、php コードの文章をググってください。
2. ログを確認します。
今まで、丸太がどれほど価値があるのか分かりません。
grep コマンドは依然として主要なコマンドです。
アイデア: 担当サイトは Linux で、ポート 22 と 80 の 2 つだけが開かれています。外部実行コマンドはポート 80 から来ます。Selinux は httpd が /boot ファイルにアクセスすることを報告し、それが /boot ファイルにアクセスしていることを確認します。吊るされた。また、すべてのコマンド実行では、実行に送信されたファイルを POST する必要があります。したがって、ログ内のすべての POST レコードを探します。