Cisco Japan Blog

Floki ボットの攻撃に対処する Talos と Flashpoint

1 min read



エグゼクティブ サマリー

Floki ボットは、今日さまざまなダークネット市場で販売されている、新しいマルウェアの亜種です。悪名高いトロイの木馬「Zeus」が使用していたものと同じコードベースを基にしています。このソース コードは 2011 年popup_iconに流出しました。Zeus にあった機能を「そのまま」コピーするだけではなく、Floki ボットには新たな機能が追加されているため、犯罪者にとって魅力的なツールになっています。Talos は脅威の状況の変化に常に目を光らせて、進化し続ける脅威からお客様が保護されるよう務めています。そこで私たちは、このマルウェアの亜種を詳しく調べ、Floki ボットの技術的な機能と特性を突き止めました。

Floki ボットを分析することで、流出した Zeus ソース コードにあったドロッパー メカニズムに修正が施され、Floki ボットの検出をより困難にしようとしていたことがわかりました。また、Floki ボットには Tor ネットワークを利用できるようにする新しいコードが実装されていることも判明しました。ただし、この機能は今のところアクティブではないようです。最後に、FIRST フレームワークを使った分析プロセスにより、Zeus と Floki ボットの間で、コード/関数が再利用されていることもすばやく解明できました。このため、サンプル分析の効率がアップし、Floki ボット サンプル内のさまざまな関数の文書化にかかる時間が短縮されました。

Talos は Floki ボットの分析において Flashpointpopup_icon と協力して作業しました。コラボレーションによって Talos と Flashpoint は、Floki ボットを拡散させているアクティブなキャンペーンに関するインテリジェンス データと、マルウェア内にある技術的な機能に関するデータを、即座に共有できました。また、Talos は、マルウェア分析者が Floki ボットの分析プロセスの一部を自動化して Floki ボットの分析を容易に実行できるスクリプトをオープン ソース コミュニティに提供しています。

Floki ボットの詳細

Floki ボットで使用される感染プロセスには、いくつかのステップがあります。おおまかに示すと、このプロセスは次の図のようになります。

image1

1:マルウェア コードの挿入シーケンス

Floki ボットの分析を次のバイナリを使用して開始しました。

5e1967db286d886b87d1ec655559b9af694fc6e002fea3a6c7fd3c6b0b49ea6e(SHA256)

マルウェアが実行されると、悪意のあるコードを、Microsoft Windows のファイル マネージャである「explorer.exe」に埋め込もうとします。「explorer.exe」が開けない場合は、「svchost.exe」に挿入します。最初に挿入されるのは単なるトランポリンです(図 1 のステップ 1)。このトランポリンは 2 つの呼び出しを実行します。最初の呼び出しは 100 ミリ秒の「Sleep()」です。次の呼び出しは、別のペイロード関数に制御を渡します。この関数への引数は、初期サンプルのプロセス ID、今後のバイナリ ペイロードのための復号キー、初期サンプルのアドレス空間におけるペイロード リソースのポインタとサイズです。面白いことに、初期サンプルには「bot32」および「bot64」とラベル付けされたリソースがありますが、分析したサンプルは、挿入されたペイロードに「bot32」リソースのアドレスだけを渡すようにハードコードされています。「bot32」、「bot64」、および「key」リソースをマッピングするための逆引きコードを図 2 に示します。

2:「bot32」、「bot64」、および「key」リソースのマッピング

以下のスクリーンショットを見てわかるように、図 3 は挿入のシェルコードを準備するコードを示しています。この処理は初期バイナリで行われます。図 4 は「explorer.exe」プロセスへの挿入結果を示しています。逆アセンブルは前のシェルコードに基づいており、上記の 2 つの呼び出しを含んでいることが明確にわかります。具体的には、0xA001F での呼び出しによってペイロードが起動し、これが図 1 のステップ 2 になります。

3:シェルコードの準備

4:挿入されたシェルコードの逆アセンブル

次の論理的なステップはもう 1 つの挿入で、これも「explorer.exe」のアドレス範囲内で発生します。この挿入はペイロードで、トランポリンの後に実行されます。CRC ルックアップを使用して必要な API を解決し、初期バイナリから「bot32」リソース セクションをマッピングします。

リソースは RC4 で暗号化され、「key」リソースからの 16 バイトのキー データで復号できます。このキーは引数として、挿入されたコードに渡されます。また、リソースは LZNT1 アルゴリズムで圧縮されており、RtlDecompressBuffer を呼び出して抽出されます。Talos はこれらのボットのペイロードを抽出する「PayloadDump」というスクリプトを作成し、公開しています。このボットは最終的なコンポーネントで、バンキング型トロイの木馬機能を含んでいます。多くの AV エンジニアに従来型の Zeus ボットと認識され、ロードされると「explorer.exe」に挿入されます。このステップは、図 1 の 3 と 4 に該当します。

どの段階でも、マルウェアはハッシュを使用して、動的ライブラリの解決に使用されるモジュールと関数の名前を判別しにくくします。興味深いことに、初期サンプルとボット(bot32)の実行可能ファイルは、同じ CRC32 実装を使用し、スタティック キーで結果に XOR を適用します(この例では 0x5E58)。一方で、ペイロードは同じ CRC32 実装を使用しますが、別の XOR キー(0x3086)を使用します。モジュールの名前は計算される前に小文字に変換されます(Windows のファイル名は通常、大文字と小文字は区別されません)。

現在、「bot32」リソースは VirusTotal 上の 30 種類を超える AV エンジンで即座に認識され、多くの場合、Zbot として検出されます。しかし「bot64」リソースを悪意があると検出するのは、10 個の AV エンジンのみです。私たちの分析では、explorer.exe プロセスの物理メモリ ダンプ(「メモリ分析」セクションを参照)と、初期バイナリのリソース セクションの両方からサンプルを抽出しました。一見すると、このサンプルは通常の Zeus ボットのように見えます。主な違いは、Tor ネットワークのサポートです。これは、マルウェア設定で指定された C2 ドメインの末尾が、Tor 関連ドメインの疑似 TLD である「.onion」の場合にアクティブになります。この場合、標準の Tor プロキシ サーバは、以下のスクリーンショットに示すように、localhost:9050 でリッスンするように設定されます。

 

5Floki ボットの Tor 機能

この機能は開発中と思われ、Talos が分析したサンプルではアクティブにできませんでした。

Floki ボットのドロッパー/ローダー

Floki ボットが使用するローダーは暗号化されていません。また、アンチデバッグ手法も一切使用していません。しかしローダーは、悪意のあるペイロードを他のプロセスに挿入するために使用するシステム呼び出しを見つけにくくします。Floki ボット ローダーの挿入テクニックはすでにこちらpopup_iconで詳しく説明されているので、このプロセスの仕組みについて深入りしません。

ネットワーク分析

Floki ボットは HTTPS 接続を経由して C2 と通信します。興味深いことに、マルウェアの作成者は、このボットには、ディープ パケット インスペクション防止機能があると発言しています。防止機能を実現するために、ネットワーク パケット内のバイトを HTTPS で送信される BinStorage 構造にパッケージします。BinStorage 構造の各バイトは前のバイトと XOR 演算され、さらに RC4 で暗号化されます。この機能は、流出した Zeus のソース コードにも存在しており、Floki ボットの新機能ではありません。HTTPS 接続を切断してパケット ペイロードを復号することで、マルウェアがコンピュータ名や画面解像度など、感染したマシンの情報を送り返していることがわかりました。Floki ボットは「Zeus とは違ってディープ パケット インスペクションでは検出できない」と謳っていますが、流出したソース コードへの主な変更は Tor のサポートだけです。しかも、これも実環境で見つかったどのサンプルでも使用されている現状は確認されていません。マルウェアが通信に証明書のピニングを使用しないため、Talos では mitmproxy を使用してパケットを傍受して、Floki ボットのネットワーク パケットを復号化することができました。

メモリ分析

シスコの分析では、VM を Floki ボットに感染させた後、メモリベースのフォレンジック分析も行いました。このように反対方向からアプローチして、末端から分析を開始し、感染プロセスの各ステップを再構築しようと試みました。まず、win32dd で物理メモリ ダンプを取得し、オープン ソースのメモリ フォレンジック フレームワークとして有名な Volatilitypopup_icon で分析しました。最初に Volatility プラグイン「pslist」を使用しました。このプラグインは、すべての _EPROCESS オブジェクトを接続するダブルリンク リストをたどって、すべてのプロセスを一覧表示します。その出力からは、疑わしいものは何も見つかりませんでした。次に、「netscan」プラグインを使用し、「explorer.exe」プロセスからのネットワーク アクティビティを表示しました。ネットワーク トラフィックをファイル マネージャから取得するのは明らかに標準的ではないので、さらなる調査が必要になります。この調査結果に対して、「explorer.exe」プロセスで「malfind」を実行し、興味深いトレースと、プロセスに挿入された PE ファイルを特定しました。これらのアーティファクトをダンプしたところ、逆向きプロセスの部分的な結果と一致しました。トランポリン、ペイロード、および PE ファイルを確認できました。Floki ボットに採用されているパーシステンス メカニズムに関連して、「filescan」を使用して一部のアーティファクトを特定し、バイナリ(名前はランダムに決まる)もスタートアップ フォルダにコピーされたことを確認しました。

Flashpoint とのコラボレーション

Floki ボット マルウェアの調査では、Flashpoint と協業しました。シスコと Flashpoint は連携してインテリジェンス情報を収集し、マルウェア サンプルに関する技術的な詳細情報、現在 Floki ボットを使用しているキャンペーン、Floki ボットが売買されているダークネット市場の情報を共有しました。Flashpoint はこれまでに複数の Floki ボットの攻撃者やキャンペーンを追跡しており、現在グローバルに実施されている Floki ボット キャンペーンに関する重要なインテリジェンス情報についてのブログ記事を公開しています。Flashpoint の記事はこちらpopup_iconからお読みください。

FIRST を使用した Floki ボットの分析

Talos は、分析プロセスで FIRST(Function Identification and Recovery Signature Tool)および IDA Python プラグインを使用して、Floki ボット サンプル内に存在する機能を収集し、文書化しました。FIRST は最近 Talos が公開したオープン ソース フレームワークです。これにより、マルウェア アナリストや調査担当者がコラボレーションを行い、マルウェア サンプル内に存在する悪意のある機能に関する分析データを共有することができます。

FIRST を使用すると、すでに分析と文書化が済んでいる悪意のあるコードの分析時間を最小限に抑えられるので、マルウェアを迅速かつ効率的に分析できます。FIRST には現在、Zlib および OpenSSL などの共通ライブラリ、流出したマルウェアのソース コード、コミュニティで分析された Windows および Linux の悪意のあるファイルを含めた、170,000 を超える機能の情報が含まれています。数千ものライブラリ関数と静的にリンクされた実行可能ファイルを分析する場合に特に有用です。Bindiff などのツールは非常に便利ですが、ほんの少数のファイルしか比較できず、しかも比較するにはこれらのファイルを事前に見つけて取得しておく必要があります。FIRST プラグインは、コミュニティから提出された数千ものファイルのそれぞれから、関数の類似性を自動的に見つけ出します。

IDA Pro は FLIRT シグネチャを使用して一般的に使用されるライブラリ関数を特定しようとしますが、この Floki ボットのサンプルではどの関数も特定できませんでした。IDA Pro はデフォルトで、未確認の関数に対して、開始アドレスを使って関数に名前を付けます。この例では、「sub_402F34」のような名称を持つ 516 の関数が得られます。

6FIRST 実行前の IDA Pro の関数リスト

FIRST にクエリを実行すると、数秒足らずでわかりやすい名前、プロトタイプ、コメント付きで 128 個の関数が得られました。これらの関数が何を実行し、どのような引数(カスタム構造の引数も含め)を受け取るかを即座に把握できます。

7FIRST 実行後の IDA Pro の関数リスト

多くの関数は、先に子関数を分析しないと分類するのは困難です。アナリストは、深さ優先のアプローチに従って動作が明らかな関数にラベルを付けて、入れ子になっている関数の理解が深まったら、親にバックトラックすることがよくあります。

8FIRST を使用しないで、IDA Pro で表示された不明な関数への呼び出し

FIRST はこの例にあるすべての関数を特定し、引数名と型でラベル付けしました。これらの関数は流出した Zeus ソース コードから派生しているというコメントが関数に付けられました。これによって、未確認の関数の詳細を得るにはどこを確認すべきか、よくわかるようになります。FIRST で特定されない関数の中には、Zeus ソースの関数に似ているものがありますが、ソース コードまたはコンパイラ オプションが変更されています。

9FIRST でラベル付けされた、同一関数

この Floki ボットの実行可能ファイルを Zeus と比較すると、BASECONFIG 構造体のサイズが一致せず、グローバル変数のオフセットも変更されていることがわかるでしょう。FIRST エンジンの 1 つは、これらのパラメータが変更されているにもかかわらず、これらの関数を特定しました。FIRST のおかげで、この関数の元である流出したソース コードをすばやく検出できます。

10:流出した関数のソース コード

Floki ボットのサンプル分析中に Talos が作成した分析データと関数のドキュメントはすべて、Talos FIRST の公開サーバ(ベータ版)で公開されています。FIRST フレームワークの詳細と使用方法については、こちらpopup_iconをご覧ください。

ツールの公開

分析プロセス中、Talos は Floki ボットの分析の一部の自動化に役立つスクリプトも作成しました。このスクリプトはオープン ソース コミュニティに公開されています。これらのスクリプトによって、アナリストは Floki ボットのサンプルが使用する設定パラメータや、Floki ボット ペイロード自体をダンプできます。

PayloadDump:初期 Floki ボット サンプルから最終的なペイロードを PE32 形式で抽出します。

ConfigDump:サンプルで使用される Floki ボットの設定パラメータを抽出します。

これらのスクリプトは Github(こちらpopup_icon)からダウンロードできます。

まとめ

Floki ボットは、成功率の高いマルウェア キットのソース コードがオンラインに流出すると何が起きるかを示す例です。Zeus ソース コードが入手可能になってから何度も見てきたように、このコードベースに基づく新しいマルウェアの亜種は次々に登場しています。Floki ボットが他と異なるのは、このマルウェアの作成者が Zeus に存在していた機能の拡張に励み、新しい機能を実装して Floki ボットを犯罪者にとって非常に魅力的なものに仕立てた点です。

Floki ボットは現在、複数のダークネット市場で活発に売買されており、収益を上げる目的でシステムの攻撃に活用しようとするサイバー犯罪者によって、世の中で流通していくでしょう。Zeus ソース コードの流出による脅威の状況への波及効果は消えることなく続きます。そのため、新しい脅威が出現したり、既存の脅威が変化していったりしても、お客様が常に保護されるよう、Talos は今後も世間でよく使用されているあらゆる脅威への監視を続けていきます。

カバレッジ

お客様がこの脅威を検出してブロックできる別の方法を以下に記載します。

Advanced Malware Protection(AMP)は、これらの攻撃者によるマルウェアの実行の阻止に最適です。

CWSWSA の Web スキャンは、悪意のある Web サイトへのアクセスを阻止し、それらの攻撃に使用されるマルウェアを検出します。

IPS のネットワーク セキュリティ保護や NGFW には、攻撃者による不正なネットワーク アクティビティを検出できる最新のシグネチャが備わっています。

 

INDICATORS OF COMPROMISE(IOC)

マルウェアのバイナリ:

08e132f3889ee73357b6bb38e752a749f40dd7e9fb168c6f66be3575dbbbc63d(SHA256)
5028124ce748b23e709f1540a7c58310f8481e179aff7986d5cfd693c9af94da(SHA256)
0aa1f07a2ebcdd42896d3d8fdb5e9a9fef0f4f894d2501b9cbbe4cbad673ec03(SHA256)
5e1967db286d886b87d1ec655559b9af694fc6e002fea3a6c7fd3c6b0b49ea6e(SHA256)
d1d851326a00c1c14fc8ae77480a2150c398e4ef058c316ea32b191fd0e603c0(SHA256)
e0b599f73d0c46a5130396f81daf5ba9f31639589035b49686bf3ef5f164f009(SHA256)
e43ee2ab62f9dbeb6c3c43c91778308b450f5192c0abb0242bfddb8a65ab883a(SHA256)
2b832ef36978f7852be42e6585e761c3e288cfbb53aef595c7289a3aef0d3c95(SHA256)
4bdd8bbdab3021d1d8cc23c388db83f1673bdab44288fccae932660eb11aec2a(SHA256)
3c2c753dbb62920cc00e37a7cab64fe0e16952ff731d39db26573819eb715b67(SHA256)
7bd22e3147122eb4438f02356e8927f36866efa0cc07cc604f1bff03d76222a6(SHA256)
9d9c0ada6891309c2e43f6bad7ffe55c724bb79a0983ea6a51bc1d5dc7dccf83(SHA256)
e205a0f5688810599b1af8f65e8fd111e0e8fa2dc61fe979df76a0e4401c2784(SHA256)
ac5ae89af8d2ffdda465a4038f0f24fcbcb650140741c2b48adadc252a140e54(SHA256)

コマンド & コントロール URL

https[:]//193.201.225[.]30/sweetdream/gxve8xj4a7t8t8sug8s57.php
https[:]//shhtunnel[.]at/class/gate.php
https[:]//extensivee[.]bid/000L7bo11Nq36ou9cfjfb0rDZ17E7ULo_4agents/gate.php
https[:]//5.154.190[.]248/gate.php
https[:]//vtraffic[.]su/gate.php
https[:]//springlovee[.]at/adm/config.bin
https[:]//feed.networksupdates[.]com/feed/webfeed.xml
https[:]//wowsupplier[.]ga/cpflkabwbebeu/gtlejbsbu.php
https[:]//adultgirlmail[.]com/mail/gate.php
https[:]//uspal[.]cf/3faf5c96-9c2b-11e6-95d4-00163c75bf83/gate.php

 

 

本稿は 2016年12月7日に Talos Grouppopup_icon のブログに投稿された「Floki Bot Strikes, Talos and Flashpoint Respondpopup_icon」の抄訳です。

 

コメントを書く