web-dev-qa-db-ja.com

ハッキングされたサイト-暗号化されたコード

数日前、サーバー上のほとんどすべてのphpファイルが暗号化されたコードに感染しており、ほとんどすべてのファイルが異なることに気付きました。以下は、ファイルの1つからの例です。

http://Pastebin.com/JtkNya5m

誰かがこのコードが何をするか、またはそれをどのようにデコードするかを教えてもらえますか?

3
user3115285

私はまだ完成しておらず、私が今までやるかどうか分からない。

しかし、私の現在の結果:コード自体は(私の観点から)かなり高度です。コード自体はシェルコード http://en.wikipedia.org/wiki/Shellcode で、リモートサーバーからペイロードをロードしようとします。

コードには少なくとも1レベルの間接参照があります。最初は、これらがペイロードを提供するサーバーであるように見えます: "33db9538"、 "9507c4e8"、 "e5b57288"、 "54dfa1cb"これらのサーバーは、.comを追加すると、すべて偽のサイトになり、すべて偽のサイトが作成されます。ただし、さらに深く掘り下げると、これらのサーバーは気を散らすものとしてのみ機能するように見えます。これは、後でシェルコードで別のサーバーのセットに置き換えられるためです。

$arr = array (
        0 => '54dfa1cb',
        1 => '33db9538',
        2 => 'e5b57288',
        3 => '9507c4e8',
      );

これらのサーバーは再びキエフの所有者の管理下にあります。私はそれらがペイロードをホストしているサーバーであるかもしれないと思います。

(注:名前はすべてmd5ハッシュの一部であり、コードで生成されます)

今コードは醜いです。私はすでにコードを2回解剖していますが、間違っている可能性があります。しかし、上の配列からは、最初または2番目のみがランダムに選択され、他の2つはランダムに選択されていないように見えます。

その後、スクリプトは、いくつかの任意の数といくつかの大規模なハッシュにクライアントプロパティの多くをマージします。http:// 54dfa1cb.com /366666?Fa2q8rOQ86kIwU7ZiX2Hcz0C53nhh8xfGo%252F11suKdoVhXxb98vt%252B95qlKnJaCZYUOzf1RgGHfWjAq%252B5wlthnTuM%253D.MLak6%252BXTvfVJjh2SzlyLbz8B%252F33vqvcSAw%253D%253D.bPf% 252Br%252BzSo7QOwUzK.MLak6%252BXTvfVSghudzkePdDdD82Ws.d6q%252F9rrT9PNehFGAzl%252FAbTEd

しかし、私は何かを監督した可能性があるため、これは404になります。リクエストクエリを偽造しましたが、サーバーがリクエストを拒否する場合があります。私が見つけたサーバーはまだおとりであるか、完全なリクエスト環境を正しく複製していません。すべてのmd5ハッシュデータがサーバーに送信されるので、USER_AGENTやリファラーなどのパーツを再作成することによって、それが検証されることを期待します。

これをコードで実行したときに目に見える結果として、本文の最後または何かを行うhtml(通常は本文)に余分なコードが追加されます。リファラーまたはパスの一部のキーワード(admin、googleなど)が使用されている場合、コードは実行されないため、シェルコードは検索エンジンによってインデックスに登録されません。

ブラインド推測:シェルコードは、バイナリの実行可能コードをユーザーのマシンにロードして実行しようとします。

私がFirefoxユーザーエージェントを偽装している間、サーバーが正確に何を期待しているのかを正しく知る方法はありません。 Internet Explorerに反応して、既知のセキュリティホールを使用し、他のすべてのケースで404を報告したり、Windowsオペレーティングシステムを必要とする場合があります。

何が起こるかを確認するためにコードを実行しないでください!

このシェルコードは上記のサーバー用に設計されたものであり、これはまったくの作業ではありません。このコードの難読化にはかなりの努力が必要です。それはリバースエンジニアリングに抵抗するためにe-modifierでevalとpreg_replaceのいくつかの層を持っています。

シェルコードはそれが実行されているマシンにアクセスできる可能性があるため、このコードをダミー環境で実行するとセキュリティリスクになります。

編集:この部分では、どのようにしてそれが可能であったかなどの質問に対処します:

(免責事項:私は暗号化、セキュリティ、ハッキングなどについてほとんどまたはまったく知識がありません。私はPHPプログラミングについてある程度の知識を持っているだけで、常に実際のシェルコードを手に入れて何を理解し、偶然にも、自宅のマシンがかなり長い間感染していて、ログインが盗まれるなどしており、それらのログインに対する攻撃ベクトルが何であったかを推測しようとしていますが、これはほとんど不可能です。)

手元の問題(攻撃ベクトル)には非常に多くの可能性があり、私はいくつかを忘れていたに違いありません。経験不足のため、最も可能性の高い問題を特定することはできません。

  • ホスティング事業者がデータをログに保存する方法によっては、攻撃者がログイン、ハッシュされたパスワードを使用してデータベース、シャドウファイル、ユーザーアカウントファイルなどを取得し、平文のパスワード(辞書)を取得するために何らかの攻撃を行うことができた可能性があります、ブルートフォース攻撃など)。パスワードがプレーンテキストで保存されている可能性さえあります。ありそうもないが、それはすでに起こっていた、アファイク。

  • マシンが侵害された可能性があります。感染、電子メールの添付ファイル、クラックされたソフトウェアまたはその他のエントリポイントによる適切なAVおよびファイアウォールドライブを使用しても、サーバー、電子メールなどのログインデータを取得するトロイの木馬が発生した可能性があります。多くの人がパスワードマネージャーにパスワードを保存しています。 firefoxやchromeなど、マルウェアが制御を取得すると簡単にアクセスできる可能性があります( http://www.digitaltrends.com/computing/lay-off-chrome-firefox- has-the-same-password-security-flaw /

  • おそらく最もありそうにない方法は、攻撃者がWi-Fiにアクセスすることでネットワークデータを盗聴することです(つまり、NSAはすでにそれを行っています):)。この方法では、ネットワークパケットを監視してフィルタリングする必要があります。それがどれほど可能性が高いかわかりません。

上記の方法はかなりの労力を必要とし、その後もサーバーにアクセスしてphpファイルに感染する必要があります。

あなたの問題のより一般的な方法は次のとおりです。

  • PHPファイルはコードインジェクション( http://en.wikipedia.org/wiki/Code_injection )に対して脆弱です。)攻撃者が任意のコードを実行することができましたこれは、「eval」、「create_function」、またはe-modifierを使用したpreg_replaceの不注意な使用によって行われる可能性があります(ただし、これらに限定されません)。適切なエスケープなしのSQLへの引数、結果( http://en.wikipedia.org/wiki/SQL_injection

  • はるかに悪いですが、プロのホスティングサイトでは考えられません。通常、アカウントは物理マシンまたは仮想マシンを他のユーザーと共有します。マシン上のファイルへのパスは/ var/www/1234のようなもので、他のアカウントは/ var/www/1235と/ var/www/1233です(パスがもっともらしくない場合はLinuxの人に申し訳ありません:))。ハッカーが/ var/www/1233などのスクリプトファイルへのアクセス権を取得した場合、ファイルシステムへのアクセスが可能であり、サーバーが適切に構成されていない場合、攻撃者はファイルシステムを使用して他のすべてのファイルの場所(/ varなど)にアクセスできます。/www/1234(あなたのもの)と/ var/www/1235(他の貧乏人)。ここには影響力のあるポイントがないため、このようなシナリオはユーザーによって制御または影響されません。

  • 非常に一般的なケースは、最新ではないCMS、Wikiなどを使用することです。このようなシステムは、システム上で任意のコードを実行する方法を公開する傾向があります。通常、開発者が問題を検出し、パッチを当てます。ただし、更新を毎日または定期的にチェックしないと、セキュリティの問題が検出されない場合があります。攻撃者はおそらく、Google検索を実行して、バージョン1.5で修正された一部のCMSの穴があるとしましょう。 Webで「CMS 1.4」を検索すると、穴が修正される前にCMSを使用しているすべてのサイトが見つかります。検索エンジンを使用して、インジェクションに適したセキュリティホールのあるサイトや、重要なファイル(パスワードなどを含む(悪い方法!))が公開されているcmsまたはその他の種類のソフトウェアを見つけることが非常に簡単であることを記事で読んだ。

私がやろうとしていること(そして、私が同様の問題を抱えているため、現在行っています):*バックドアコードを最初に削除します。 *レスキューCDを入手(私はavira、avg、kasperskyを入手しました)1つまたはすべてでマシンを起動し、スキャンを実行します。感染したものをすべて消去します。 Windowsを再インストールすることをお勧めします。 * Windowsを再インストールしない場合は、数日後にレスキューCDパーツを繰り返す必要があります。新しいスレッドが検出されたかどうかを確認します。trueの場合、マルウェアがシステムの再感染を引き起こしている可能性があります。とにかくwindowsを再インストールします。 * AVソフトウェアを最新の状態に保ちます(毎日の更新)*少なくとも週に1回はフルスキャンを実行します*システムにマルウェアがない場合。すべてのアカウントのすべてのパスワードを変更します。 * phpファイルが再度感染していないか確認してください。悪意のあるコードを削除することを優先事項1にする必要がありますが、侵害された可能性のあるマシンでそれを行った可能性があるため、そこで感染する可能性があります。サイトにアクセスした場合、バックドアに感染する可能性さえあります。

実際のところ、感染の結果を観察することは、感染したときよりも簡単です。それは現実のようなものです。いつインフルエンザに感染したかはわかりますが、いつどこに感染したかはわかりません。

繰り返しになりますが、免責事項:セキュリティの背景はありません。私が実行することと、Webの閲覧中に観察したことだけです。私の説明に明らかな欠陥が見られる場合は、修正してください。

19
Samuel