
FakeNet-NG - 次世代動的ネットワーク解析ツール
| ____/\ | |/ / ____| \ | | ____|__ __| | \ | |/ ____|
| |__ / \ | ' /| |__ | \| | |__ | |______| \| | | __
| __/ /\ \ | < | __| | . ` | __| | |______| . ` | | |_ |
| | / ____ \| . \| |____| |\ | |____ | | | |\ | |__| |
|_|/_/ \_\_|\_\______|_| \_|______| |_| |_| \_|\_____|
D O C U M E N T A T I O N
FakeNet-NG 3.5 は、マルウェアアナリストやペネトレーションテスター向けの次世代動的ネットワーク解析ツールです。オープンソースであり、最新バージョンのWindows(および一部の動作モードではLinux)向けに設計されています。FakeNet-NG は、Andrew Honig と Michael Sikorski によって開発された優れた Fakenet ツールをベースにしています。
このツールを使用すると、正当なネットワークサービスをシミュレートしながら、すべてまたは特定のネットワークトラフィックをインターセプトおよびリダイレクトできます。FakeNet-NG を使用することで、マルウェアアナリストはマルウェアの機能を迅速に特定し、ネットワークシグネチャをキャプチャできます。ペネトレーションテスターやバグハンターは、アプリケーションの特定の機能をテストしたり、PoC をプロトタイピングする際に、FakeNet-NG の設定可能なインターセプションエンジンとモジュラーフレームワークが非常に有用であると感じるでしょう。
FakeNet-NG はいくつかの方法でインストールできます。以下のインストール手順では、FakeNet-NG が使用するサードパーティのオープンソースライブラリがシステムに取得されることに注意してください。これらのライブラリは実行時に動的にロードされ、一部のライブラリは LGPL ライセンスである場合があります。
最も簡単な方法は、リリースページからコンパイル済みバージョンをダウンロードすることです:
https://github.com/mandiant/flare-fakenet-ng/releases
'fakenet.exe' を実行して FakeNet-NG を起動します。
これは Windows で FakeNet-NG を使用するための推奨方法であり、追加のモジュールをインストールする必要がなく、マルウェア解析マシンに最適です。
注記: FakeNet-NG は、アンチウイルス (AV) やエンドポイント検出および応答 (EDR) ソリューション (例: Windows Defender、Chrome のセーフブラウジング) によって悪意のあるものとしてフラグが立てられる可能性があります。これは、ネットワークトラフィックを変更し、ネットワークサービスをシミュレートする能力に加えて、リリース実行可能ファイルのビルドに PyInstaller を使用していることが原因である可能性があります。公式のリリースバイナリは安全であり、これらの検出は誤検知と見なされるべきです。注意点として、FakeNet-NG は仮想マシン (VM) などの制御された隔離環境での使用を想定して設計されており、システムのネットワーク設定を安全に変更できます。
Python 3.10.11 と最新の pip を Windows/Linux OS にインストールします。
Windows では、Visual C++ ビルドツール をダウンロードしてインストールします。
Linux でのインストールには以下の依存関係が必要です:
以下のコマンドを使用してこれらの依存関係をインストールします:
sudo apt-get install build-essential python3.10-dev libnetfilter-queue-dev
pip を使用して FakeNet-NG を Python モジュールとしてインストールします:
python -m pip install https://github.com/mandiant/flare-fakenet-ng/zipball/master
または、最新のソースコードを取得して手動でインストールします:
git clone https://github.com/mandiant/flare-fakenet-ng/
管理者権限で以下のコマンドを実行して Python の依存関係をインストールします:
Linux (Ubuntu 24.04.2 LTS でテスト済み) では、setup.py を実行する前に以下のコマンドを実行します:
python -m pip install --upgrade setuptools
# build wheel for python 3.10
python -m pip install --force-reinstall netifaces
# Observed "ModuleNotFoundError: No module named '_cffi_backend'" error while testing
# This will get the required version of cffi packages for cryptography
python -m pip install --upgrade cryptography
手動でインストールする場合は、ダウンロードした flare-fakenet-ng ディレクトリに移動し、管理者権限で以下を実行します:
python setup.py install
Linux では、DNS リスナー用にポート 53 を解放します:
sudo systemctl stop systemd-resolved
特権シェルで任意のディレクトリから 'fakenet' を実行して FakeNet-NG を起動します。
最後に、FakeNet-NG をインストールせずにそのまま実行したい場合 (例: 開発目的) は、ソースコードを取得して以下のように依存関係をインストールする必要があります:
64ビットまたは32ビットの Windows/Linux それぞれに対応する Python 3.10.11 をインストールします。
Windows では、管理者権限で以下のコマンドを実行して Python の依存関係をインストールします:
python -m pip install pydivert dnslib dpkt pyopenssl pyftpdlib netifaces jinja2
注記: pydivert は WinDivert ライブラリとドライバを %PYTHONHOME%\DLLs ディレクトリにダウンロードしてインストールします。FakeNet-NG にはこれらのファイルがバンドルされているため、通常の使用には必要ありません。
Linux では、管理者権限で以下のコマンドを実行して Python の依存関係をインストールします:
python -m pip install --upgrade setuptools
# build wheel for python 3.10
python -m pip install --force-reinstall netifaces
# Observed "ModuleNotFoundError: No module named '_cffi_backend'" error while testing
# This will get the required version of cffi packages for cryptography
python -m pip install --upgrade cryptography
python -m pip install netfilterqueue dnslib dpkt pyopenssl pyftpdlib netifaces jinja2
オプションで、テストに使用する次のモジュールをインストールできます:
python -m pip install requests
FakeNet-NG のソースコードをダウンロードします:
git clone https://github.com/mandiant/flare-fakenet-ng
Linux では、DNS リスナー用にポート 53 を解放します:
sudo systemctl stop systemd-resolved
特権シェルで Python インタプリタを使用して FakeNet-NG を実行します:
python -m fakenet.fakenet
FakeNet-NG を実行する最も簡単な方法は、提供された実行可能ファイルを管理者として実行することです。--help コマンドラインパラメータを指定すると、簡単なヘルプを表示できます:
C:\tools\fakenet-ng>fakenet.exe --help
______ _ ________ _ _ ______ _______ _ _ _____
| ____/\ | |/ / ____| \ | | ____|__ __| | \ | |/ ____|
| |__ / \ | ' /| |__ | \| | |__ | |______| \| | | __
| __/ /\ \ | < | __| | . ` | __| | |______| . ` | | |_ |
| | / ____ \| . \| |____| |\ | |____ | | | |\ | |__| |
|_|/_/ \_\_|\_\______|_| \_|______| |_| |_| \_|\_____|
Version 3.5
_____________________________________________________________
Developed by FLARE Team
Copyright (C) 2016-2026 Mandiant, Inc. All rights reserved.
_____________________________________________________________
Usage: python -m fakenet.fakenet [options]:
Options:
-h, --help show this help message and exit
-c FILE, --config-file=FILE
configuration filename
-v, --verbose print more verbose messages (default: False)
-l LOG_FILE, --log-file=LOG_FILE
-s, --log-syslog Log to syslog via /dev/log (default: False)
-f STOP_FLAG, --stop-flag=STOP_FLAG
terminate if stop flag file is created
-p, --no-pause disable pause for confirmation before closing the console
(default: pause)
-n, --no-console-output
Suppress console output (for testing on Linux)
上記の簡単なヘルプからわかるように、FakeNet-NG の起動に使用する設定ファイルを構成できます。デフォルトではツールは configs\default.ini を使用しますが、-c パラメータで変更できます。configs ディレクトリにはいくつかのサンプル設定ファイルがあります。設定項目が多いため、FakeNet-NG は設定ファイルを使用して機能を制御します。
注: FakeNet-NG は、指定された設定ファイルを最初に指定された絶対パスまたは相対パスで探します (すべての設定を保存したい場合)。指定された設定ファイルが見つからない場合は、configs ディレクトリ内を探します。
残りのコマンドラインオプションを使用すると、表示されるログ出力の量を制御したり、画面に表示する代わりにファイルにリダイレクトしたりできます。
実際に FakeNet-NG を実行する前に、いくつかの基本概念を確認しましょう。このツールは、連携して動作する複数のモジュールで構成されています。そのような重要なモジュールの1つが Diverter で、トラフィックを一連のリスナーにリダイレクトする役割を担います。Diverter はアプリケーションに実際のサーバーではなく FakeNet-NG と対話させるように強制します。リスナーは個別のサービスで、着信接続を処理し、アプリケーションのトラフィック (例: マルウェアシグネチャ) を調査できるようにします。
以下のコマンドを実行して、デフォルト設定で FakeNet-NG を起動しましょう:
C:\tools\fakenet-ng>fakenet.exe
各ログ行には、現在実行中の FakeNet-NG モジュールの名前が表示されています。たとえば、トラフィックをリダイレクトしている場合、ログの先頭には Diverter ラベルが付きます:
07/06/16 10:21:03 PM [ Diverter] Modifying outbound external UDP request packet:
07/06/16 10:21:03 PM [ Diverter] from: 192.168.250.140:49383 -> 4.2.2.1:53
07/06/16 10:21:03 PM [ Diverter] to: 192.168.250.140:49383 -> 192.168.250.140:53
07/06/16 10:21:03 PM [ Diverter] pid: 456 name: malware.exe
同時に、個々のリスナーがリダイレクトされたトラフィックを処理するとき、ログには設定ファイルで指定された名前がラベルとして表示されます:
07/06/16 10:21:03 PM [ DNS Server] Received A request for domain 'evil.com'.
FakeNet-NG を停止し、生成された PCAP ファイルと HTML レポートをディスクに保存するには、CTRL-C を押します: