web-dev-qa-db-ja.com

サーバーに不明なPHPコードが見つかりました。コードを難読化するにはどうすればよいですか?

ハッキングされたPHP=ファイルについてはここで多くのノイズが寄せられています。これらの質問に答えるのに長い時間がかかります。多くの場合、それらはトピックから外れています。 a ディスカッション 情報セキュリティメタについてこれについて、そして多くの人々はこれらの投稿をとどまらせたいと思っています。

ただし、難読化されたPHP=についてのほぼすべての投稿はほぼ同じ方法で回答できます。ハッキングされたファイルを難読化して1つの質問と回答のスレッドにまとめる方法の大部分を要約できます。 。

これは、多くの人が尋ねている質問につながります:悪意のあるものを難読化解除するにはどうすればよいですかPHP私が私のサーバーで見つけたコード、それはどうやって起こったのか、そして私は何をしますか?!

154
Mark Buffalo

マークの優れた答えは、難読化が比較的簡単な場合を扱っています。これは99%のケースに対処しますが、たまに、もう少し悪質なものに遭遇することがあります。ソースコードの暗号化も使用します。コード(または少なくともその一部)の実行は、ソースを手動でリバースエンジニアリングするよりも、コードが何をしているかを見つけるのにはるかに迅速な方法ですが、非常に危険な場合があります!ダメージを抑える/制限するためにできることはいくつかあります。

常にvmを使用するこの質問 も参照してください。

Disable functionsPHP.iniには disable_functions オプションがあり、機能の特定のビットへのアクセスを選択的にブロックできます。 Markはすでにevalとpreg_replace()について言及しています(後者はPHP 7)で削除されています)が、プロセス実行関数は有用なてこ比を提供します:

  disable_functions=eval,preg_replace,exec,passthru,Shell_exec\
    ,system,proc_open,popen,imap_open,pcntl_exec,pcntl_fork

Runkit拡張機能を使用しますこれにより、PHPの組み込み関数を含む関数を再定義できます。 runkit sandbox は多くの分離を提供することを意図していないことに注意してください。これにより、プログラムでPHP別のスレッド/環境で実行されているコードと対話することができます。

25
symcbean