FakeNet-NG を拡張: インタラクティブな HTML ベースの出力のご紹介
Mandiant
※この投稿は米国時間 2024 年 4 月 23 日に、Google Cloud blog に投稿されたものの抄訳です。
FakeNet-NG は、マルウェアの調査を目的にネットワーク リクエストをキャプチャし、ネットワーク サービスをシミュレートする、動的ネットワーク分析ツールです。FLARE チームは、このツールの機能とユーザビリティを向上させるべく、保守と更新に取り組んでいます。FakeNet は、プラットフォーム間で互換性があり、幅広いカスタマイズが可能です。しかし Google は、キャプチャされたネットワーク データをより直感的かつユーザー フレンドリーな方法で表示し、関連するネットワークベース インジケーター(NBI)をすばやく特定できるようにする必要性を認識していました。この課題に対処し、ユーザビリティをさらに向上させるために、私たちは FakeNet-NG を拡張し、HTML ベースの出力を生成することで、キャプチャされたネットワーク データを表示、探索、共有できるようにしました。
この機能は、2023 年に Mandiant FLARE チームが指導的な役割を務めた Google Summer of Code(GSoC)プロジェクトの一環として、Beleswar Prasad Padhi 氏によって実装されました。このプログラムとオープンソースへの貢献者について詳しくは、こちらのブログ投稿をご覧ください。
インタラクティブな HTML ベースの出力
FakeNet-NG の新しいインタラクティブな出力は、インライン CSS と JavaScript が組み合わされた HTML ページを基盤としています。図 1 は新しい HTML ベースの出力、図 2 は FakeNet-NG の既存のテキストベースの出力です。
図 1: FakeNet-NG の新しい HTML ベースの出力
図 2: FakeNet-NG のテキストベースの出力
FakeNet-NG は、キャプチャされたネットワーク データを入力する Jinja2 テンプレートを使用して、各レポートを生成します。完成したレポートは、現在の作業ディレクトリに保存され、お使いのブラウザで確認できます。また、このファイルを他のメンバーと共有して、キャプチャされたネットワーク トラフィックを共同で分析することもできます。
HTML インターフェースでは、キャプチャされたネットワーク データの選択、フィルタリング、コピーが行えます。フィルタリング機能を使用すると、検索クエリに一致するエントリを表示できます(図 3 参照)。
Figure 3: Filtered results showing only entries containing search query ‘evil.com'
図 3: 検索クエリ「evil.com」を含むエントリのみを表示するフィルタ後の結果
図 3 に示されている [Actions] 列の下にある [Copy] ボタンをクリックすると、マークダウン形式のネットワーク データをコピーでき、図 4 に示すような結果が得られます。
図 4: マークダウン形式のネットワーク データの表示
また、図 5 と図 6 に示されているように、対応するチェックボックスを選択し、ページ上部にある [Copy Selected NBIs] ボタンをクリックすると、複数のエントリをコピーできます。
図 5: 対応するチェックボックスを選択して複数のエントリをコピー
図 6: 複数のマークダウン形式のエントリを表示
設計と実装
FakeNet-NG の内部
FakeNet-NG は、次の 3 つの主要コンポーネントで構成されるモジュール式アーキテクチャによって動作します。
-
Diverter: この中心コンポーネントは、ターゲット システムから送受信されるすべてのネットワーク トラフィックをインターセプトします。デフォルトでは、これらのパケットはさらなる処理を行うためにプロキシ リスナーに転送されます。
-
プロキシ リスナー: このコンポーネントは、Diverter とプロトコル固有のリスナーの間に位置します。アプリケーション レイヤのデータを分析し、ポート、プロトコル、データ コンテンツなどの要素に基づいて各ネットワーク パケットに適切なリスナーを特定します。
-
プロトコル固有のリスナー: HTTP、FTP、DNS などの特殊なリスナーは、それぞれのプロトコルに固有のリクエストを処理し、適切なレスポンスを生成して正規のサーバーの動作を模倣します。
図 7 に示すこのモジュール式の設計により、柔軟性と拡張性に対応し、必要に応じて新しいプロトコル リスナーを追加できます。
図 7: FakeNet-NG のアーキテクチャ
FakeNet-NG の内部動作に関する詳細なドキュメントは、GitHub をご覧ください。
FakeNet-NG を拡張して NBI 分析に対応
FakeNET-NG で包括的で有益なレポートを生成できるようにするには、ネットワーク データを記録、保存し、送信元プロセスと関連付けるための主要コンポーネントを拡張する必要がありました。これには以下が含まれます。
-
データ ストレージの強化: Diverter が、プロセス名、プロセス ID、元の送信元ポートとプロキシによって開始された送信元ポート間の関係などの追加情報を保存します。
-
NBI マッピングの導入: Diverter が、ネットワーク データを送信元プロセスにマッピングし、ネットワーク アクティビティの属性を明確にします。
-
情報交換の促進: プロキシ リスナーが、関連するパケットの詳細を Diverter にリレーし、データ トラッキングの正確性を確保します。
FakeNet-NG は、各コンポーネントによってキャプチャされたデータを組み合わせて、インタラクティブな HTML ベースの出力を生成します。
今後の可能性
私たちは、FakeNet-NG の HTML ベースの出力をさらに強化することで、アナリストにより大きな価値を提供できると信じています。重要な追加機能の 1 つに、ネットワークの動作を視覚的に表す通信グラフが挙げられます(図 8 参照)。この一般的な手法は、他のネットワーキング ツールでも採用されており、プロセスを関連するネットワーク リクエストにマッピングし、エッジがプロセスノードを IP アドレスやドメイン名などの他のノードにリンクします。FakeNet-NG にこのような可視化を追加することで、プログラムの通信パターンを明確かつ即時に理解できます。
図 8: 通信グラフのプロトタイプ
また、次のような機能強化も検討しています。
-
無関係なネットワーク トラフィックを除外する: 正規の Windows サービスやアプリケーションで発生するノイズをフィルタし、最も関連性の高いネットワーク データに焦点を当てます。GitHub の Issue については、こちらをご覧ください。
-
HTML レポートに ICMP トラフィックを含める: ICMP ベースのネットワーク データを表示することで、ネットワーク アクティビティをより包括的に把握できます。GitHub の Issue については、こちらをご覧ください。
-
フィルタリング オプションとプリセット フィルタを追加する: 便利なフィルタリング オプションを提供するだけでなく、一般的な Microsoft ネットワーク トラフィックを除外するプリセット フィルタも追加します。
-
マークダウン形式を向上させる: エクスポートされたマークダウン データに含める必要がある詳細情報をユーザーが選択できるようにすることで、エクスポートされたネットワーク データのユーザビリティを向上させます。
FakeNet-NG の開発への参加に興味をお持ちの場合は、good first issues(最初の貢献に適した Issue)のリストのほかに、これらの機能強化から始めてみることをおすすめします。
まとめ
FakeNet-NG は、マルウェア調査における動的ネットワーク分析の有用なツールとして進化し続けています。私たちは、インタラクティブな HTML ベースの出力機能を追加することで、非常に広範で複雑なネットワーク データのキャプチャでも、明確で直感的かつ視覚に訴える方法で操作や分析を行えるようにし、ユーザビリティを向上させたいと考えています。
新しい HTML ベースの出力をお試しいただき、フィルタリング、選択、コピーの各機能を活用して、動的ネットワーク データ分析を合理化してみませんか。また、さらなる改善に向けて、皆様からのフィードバックやご提案もお待ちしております。FakeNet-NG の最新バージョンのダウンロード、プロジェクトへの貢献、意見の共有を行うには、こちらの GitHub リポジトリをご参照ください。
Padhi 氏の謝辞
Google Summer of Code プログラム、特に FLARE への参加はすばらしい学習経験になりました。このプロジェクトのおかげで、ネットワーク プログラミングとシステム プログラミングの理解を深めることができました。また、GSoC では、指導者からのフィードバックやコードレビューを積極的に受け入れ、真摯に取り組むことも学びました。コミュニケーション、時間管理、タスクのスケジューリング、進捗状況の追跡といった重要なソフトスキルも身につけることができました。
このような得難い経験をさせてくれた FLARE に感謝します。グループ キックオフ ミーティングでは、他の貢献者と交流し、プロジェクトや進捗状況を理解することができました。指導者の皆様全員が親しみやすく、障害を乗り越えるためにいつも手助けしてくれたことも忘れられません。これからもプロジェクトに貢献し、FLARE コミュニティで積極的に活動していくことを楽しみにしています。