FakeNet-NG: 次世代の動的ネットワーク分析ツール

Running FakeNet-NG news

FLARE (FireEye Labs Advanced Reverse Engineering) チームのリバース エンジニアとして、マルウェア サンプルの基本的な動的分析を定期的に行っています。目標は、安全な環境でバイナリを実行することにより、ランタイムの特性をすばやく観察することです。動的分析中の重要なタスクの 1 つは、ネットワーク環境をエミュレートし、マルウェアをだましてインターネットに接続していると思わせることです。正しく行われると、マルウェアは、コマンド アンド コントロール (C2) ドメイン名、ユーザー エージェント文字列、クエリされた URL などのネットワーク シグネチャを明らかにします。

最適なツールの 1 つは FakeNet です。このブログでは、FakeNet の大幅なオーバーホールと、それが基本的なマルウェア動的分析の実行にどのように役立つかについて説明します。新機能には、Windows Vista 以降のオペレーティング システムの完全サポート、プロセス ロギング、高度なプロセスおよびホスト トラフィック フィルタリング エンジン、サードパーティ ツール (デバッガー、HTTP プロキシなど) のサポート、およびその他多数が含まれます。

このブログでは、FakeNet-NG を実行するための基本的なインストールと最も一般的なシナリオについて説明します。ここで入手可能な完全なドキュメントを確認することをお勧めします。

FakeNet-NG の入手とインストール

このツールは、FLARE の公式 Github リポジトリ (こちら) にあります。

リリース ページから、コンパイル済みの最新のアーカイブをダウンロードします。次に、リリース アーカイブを Malware Analysis VM にコピーし、簡単にアクセスできる場所に展開します。

FakeNet-NG の実行

FakeNet-NG を実行する最も簡単な方法は、図 1 に示すように、Windows の 64 ビット バージョンまたは 32 ビット バージョンのそれぞれの fakenet64.exe または fakenet32.exe をダブルクリックすることです。

Running FakeNet-NG
図 1: FakeNet-NG の実行

このツールには管理者アクセスが必要なため、昇格された権限を要求する UAC プロンプトを確認する必要があります。起動すると、図 2 のようなコンソール ウィンドウが表示されます。

FakeNet-NG スタートアップ
図 2: FakeNet-NG の起動

デフォルトでは、FakeNet-NG は、最も一般的に使用されるいくつかのサービスを開始するように構成されています。

  • UDP ポート 53 の DNS リスナー
  • TCP ポート 80 の HTTP リスナー
  • TCP ポート 443 の HTTPS リスナー
  • TCP ポート 25 の SMTP リスナー
  • TCP と UDP の両方のポート 1337 での Raw Binary Listener。このサービスは、すべての通信を処理するデフォルトのリスナーとしても使用されます。デフォルトのリスナーについては、以下で説明します。

この時点で、マルウェア サンプルを実行してその動作を観察する準備が整いました。図 3 は、C2 サーバーへのマルウェア通信の例を示しています。

マルウェア通信の例
図 3: マルウェア通信の例

上記のログ出力にはかなりのことが起こっているので、小さなコンポーネントに分解してみましょう。

起動されると、マルウェアは、構成された DNS サーバー 4.2.2.2 にクエリを実行して、C2 ドメイン Evil.mandiant.com を解決しようとします。図 4 は、FakeNet-NG がトラフィックを 4.2.2.2 からローカル マシンの IP アドレス 172.16.163.131 に転送する方法を示しています。

DNS トラフィックの迂回
図 4: DNS トラフィックの迂回

マルウェアと同じホストで FakeNet-NG を実行する主な利点は、実行中の実行可能ファイルの追加分析を実行できることです。たとえば、FakeNet-NG は、トラフィックを生成している実行可能ファイル名を正確に検出できます。この場合、level1_payload.exe が上記の DNS トラフィックを生成していることがわかります。

分析を続けると、図 5 は、偽の C2 IP アドレス 192.0.2.123 を指すマルウェアを指すクエリに対して偽の応答を提供する FakeNet-NG の DNS リスナーを示しています。

偽の DNS 応答
図 5: 偽の DNS 応答

ドメインの解決に成功した後、マルウェアは C2 ドメイン名との通信を開始します (図 6 参照)。

C2通信の偽装
図 6: C2 通信の偽装

FakeNet-NG は、一般的なネットワーク リスナーをいくつか実装しています。この場合、マルウェアはポート 80 で HTTP プロトコルを使用して通信しています。上記の出力から、要求された正確な URL や通信で使用された User-Agent など、いくつかの適切なネットワーク インジケーターが得られます。侵害されたホストのマシン名。これらの指標はすべて、このマルウェア サンプルを検出するための適切なネットワーク シグネチャを作成するために使用できます。

デフォルトでは、FakeNet-NG は傍受されたすべてのトラフィックを PCAP ファイルにキャプチャするため、追加の分析を実行できます。たとえば、図 7 は、DNS 解決を実行する元のパケットと迂回されたパケットの両方と、C2 サーバーへの HTTP POST 要求を示しています。

Wireshark PCAP
図 7: Wireshark PCAP

キャプチャされた PCAP ファイルは、FakeNet-NG の実行可能ファイルと同じディレクトリに保存されます。追加のログ機能として、FakeNet-NG は完全な HTTP POST ペイロードを別のテキスト ファイルに保存し、これも実行可能ファイルの作業パスに保存します。

FakeNet-NG の設定

デフォルトでは、FakeNet-NG はマルウェア分析シナリオの大部分をカバーするように構成されています。ただし、より複雑なサンプルに遭遇した場合は、configs ディレクトリにある数少ない構成ファイルの 1 つを編集することで、ツールを簡単に適応させることができます。デフォルトでは、FakeNet-NG はロード時に default.ini 構成ファイルをロードします。そのファイルを変更するか、新しいファイルを作成して、FakeNet-NG に –c コマンドライン パラメータでロードするように指定できます。ポート 4444 でバイナリ プロトコルを使用して通信するマルウェアがあるサンプル シナリオを考えてみましょう。図 8 は、このサービスを偽装するサンプル リスナー構成を示しています。

カスタム リスナーの構成
図 8: カスタム リスナーの構成

上記の構成の重要な要素は、 PortProtocol 、およびListenerです。 PortおよびProtocol属性は、リスナー サービスの設定とトラフィックを迂回させるルールの定義の両方に使用されるポートとプロトコルを定義します。 Listener属性は、特定のリスナー クラスを定義するために使用されます。この場合、任意のバイナリ プロトコルを処理するためにRawListenerが使用されます。または、HTTP または HTTPS トラフィックを処理するようにリスナーをセットアップする場合は、代わりにHTTPListenerを使用します。サポートされているリスナーと利用可能なオプションの完全なリストについては、ドキュメントを参照してください。

上記の構成をアクティブな構成ファイルに追加すると、FakeNet-NG を起動して、TCP ポート 4444 宛てのトラフィックを傍受できるようになります (図 9 参照)。

カスタムリスナーへの流用
図 9: カスタム リスナーへの転換

上記のシナリオは、マルウェアが通信に使用する単一の既知のポートに関するものでした。多くの場合、基本的な静的または動的分析から使用される正確なポートを予測することは困難です。代わりに、別の強力な機能を使用して、デフォルトのリスナーによって任意のポートへのトラフィックを基本的に処理できるようにします。デフォルトのリスナーを構成するには、構成ファイルの [Diverter] セクションを図 10 のように編集します。

デフォルトのリスナー構成
図 10: デフォルトのリスナー構成

現在、同じマルウェア サンプルが別のポート (5555 など) で通信することを決定した場合でも、以前に定義された CustomListener4444 によって傍受され、処理されます。

デフォルトリスナーへの転用
図 11: デフォルト リスナーへの迂回

図 11 は、未知のポート 5555 に向かうトラフィックが、ポート 4444 で以前に定義されたカスタム リスナーに転送されることを示しています。明示的に定義されたリスナーは、デフォルトのリスナーよりも優先されることに注意してください。そのため、UDP ポート 53 と TCP ポート 80 でそれぞれ定義された DNS または HTTP リスナーがある場合、それらはデフォルト リスナーの代わりに迂回されたトラフィックを期待どおりに処理します。

新しいコード ベース

新しい FakeNet-NG は完全に Python で開発されているため、新しいサービスや機能を簡単に実装できます。元の FakeNet に実装されていた非推奨の LSP (WinSock Layered Service Provider) ドライバーを使用しなくなりました。代わりに、FakeNet-NG は優れた PyDivertWinDivert ライブラリに依存しています。このライブラリには、すべてのトラフィック リダイレクトを実行する WFP (Windows Filtering Platform) ドライバーが付属しています。

結論

このブログでは、基本的な動的マルウェア分析を迅速に実行し、適切なネットワークベースの指標を抽出するために使用できるいくつかの手法を共有しています。 FakeNet-NG は、プロセスやトラフィックのフィルタリング、マルウェアの自動解凍、シック クライアント アプリケーションのセキュリティ評価など、より高度なタスクの実行に使用できる強力で高度に構成可能なツールです。このツールの全機能を紹介する今後のブログ投稿にご期待ください。

次にマルウェア分析、セキュリティ評価を実行する必要がある場合、または単にネットワーク トラフィックを迂回させてネットワーク応答を偽造する必要がある場合は、FakeNet-NG を試してください。 FLARE チームと同じように、このツールを気に入っていただけることを願っています。

参考: https ://www.mandiant.com/resources/blog/fakenet-ng-next-gen

Comments

タイトルとURLをコピーしました