
MESH v0.2.0-beta
暗号化されたピアツーピアのメッシュVPNで、リモートモバイルフォレンジックを実現。ワイヤレスADBおよびlibimobiledeviceの取得、ネットワーク監視、侵入検知をNATやファイアウォールを越えて可能にします。
MESHは、モバイルデバイス上でのリモート論理フォレンジック取得をサポートするネットワーキングツールです
MESHは、アナリストにモバイルデバイスへの直接的な暗号化パスを提供し、ワイヤレスデバッグ、ネットワーク監視、フォレンジック取得を可能にします。デバイスがNAT、ファイアウォール、または制限の厳しいモバイルネットワークの背後にある場合でも機能します。プライベートオーバーレイを構築するため、リモートデバイスはあたかも同じローカルサブネット上にあるかのように動作します。中央VPNサーバーやポートフォワーディング、維持・防御するための恒久的なインフラストラクチャは必要ありません。これにより、MVTやAndroidQFなどを使用した、インターネット経由でのシームレスで簡単なリモートネットワーク監視と取得が可能になります。
機能
- ADBワイヤレスデバッグとlibimobiledeviceを介したリモートモバイルフォレンジック:WARD、MVT、AndroidQF、その他のADB/iOSツールを、あたかもデバイスがローカルにあるかのように実行。
- リモートネットワーク監視:同じ暗号化メッシュ上でのPCAPキャプチャとSuricata侵入検知。
含まれないもの
セキュリティ強化の仕組み
- パスが存在する場合は、直接ピアツーピアのWireGuardトランスポートを優先。
- オプションでAmneziaWGを使用し、DPIや国家規模のファイアウォールに対してWireGuardを難読化。
- UDPがブロックされている場合、自動的に暗号化されたHTTPSリレーにフォールバック。
メッシュは一時的であり、アナリストが制御します。デバイスをオンラインにし、データを収集し、その後ネットワークを切断します。何も実行状態のまま残らないため、アクティビティのフィンガープリンティングを回避できます。
[!IMPORTANT] 公開アルファ版:現在公開アルファ版であり、活発に開発中です。完全なサードパーティによるペネトレーションテストが完了し、主要な脆弱性はすべて修正済みです。変更が発生する可能性があり、破壊的な変更が予想されます。現在、ある程度の技術的専門知識が必要です。バグやセキュリティ上の懸念は、GitHub Issuesを介して報告してください。
クイックスタート
完全なドキュメントはこちら:
https://docs.meshforensics.org/
前提条件
- Git
- Docker Engine(Compose V2プラグイン付き。
docker composeを使用し、レガシーなdocker-composeは使用しない)。インストール手順 - Task(go-task):ビルドオーケストレーションとインタラクティブなセットアップ用。インストール手順。簡単に:
- Linux:
sudo snap install task --classic - macOS:
brew install go-task
- Linux:
[!NOTE] ほとんどのランタイム操作はプレーンな
docker composeで動作しますが、インタラクティブなセットアップタスク(.env管理、設定テンプレート、認証キーのローテーション)にはgo-taskが必要です。
1. リポジトリをクローン
git clone https://github.com/BARGHEST-ngo/mesh.git
cd MESH
2. コントロールプレーンを起動
task build
task controlPlane
task controlPlaneは、セットアップをインタラクティブにガイドし、必要なすべてのサービスを起動します。ほとんどのユーザーには、Ephemeral(一時的)とAutomatic(自動)ドメインの組み合わせが推奨されます。サーバーやDNSの設定は必要ありません。
デプロイメントタイプを選択。 一時的コントロールプレーンはワークステーション上で実行され、セキュアトンネルを介してインターネット経由でアクセス可能です。永続的コントロールプレーンは、管理下の専用インターネット接続サーバー上で実行されます。
ドメインを選択。 Automaticを選択すると、MESHが公開HTTPSアドレスをプロビジョニングします。Manualを選択すると、独自のドメインを使用できます。
APIキーを入力。 Automaticドメインを選択した場合、APIキーの入力を求められます。これはBarghestチームから提供されます。アクセスをリクエストするにはお問い合わせください。
設定を確認。 MESHが起動する前に生成された設定を確認します。
これらの設定が正しくない場合、またはセットアップが中断された場合は、.envを削除し、task controlPlaneを再実行して最初からやり直してください。
CONTROL_PLANE_TYPE=Ephemeral
PROXY_DOMAIN_TYPE=Automatic
MESH_SUBDOMAIN=<ランダム10文字のスラッグ>
FRP_AUTH_TOKEN=<シークレットトークン>
CONTROL_PLANE_URL=https://<スラッグ>.tunnels.meshforensics.app
LOGIN_URL=https://<スラッグ>.tunnels.meshforensics.app
コンテナが起動し、APIキーが生成されます。 すべてのサービスが正常になると、MESHはWeb UIにログインするためのワンタイムAPIキーを表示します。
Control plane API key (enter this in the web UI to log in):
<シークレットAPIキー>
3. Web UIにアクセス
コントロールプレーンのURLにアクセスし、プロンプトが表示されたらAPIキーを入力してログインします。
https://<スラッグ>.tunnels.meshforensics.app
Web UIはHTTPS経由で提供され、Let's Encryptによって自動的に発行された証明書が使用されます。
[!IMPORTANT] デフォルトのACLでは、各ネットワーク内のノードが相互に通信できます。 本番環境では制限的なポリシーを使用してください。ACLタブで変更できます。
MESHネットワークの準備が整い、ノードを受け入れる準備ができました。
ノードの登録とフォレンジックワークフローについては、ドキュメントを参照してください。
4. 破棄
task downはMESHネットワークを破棄し、すべてのユーザーを切断します。EphemeralデプロイメントとAutomaticドメインを選択した場合、これらとすべての痕跡は削除され、アクセスできなくなります。
アーキテクチャ概要
MESHはTailscaleプロトコルを大幅に改変したフォークですが、Tailscaleインフラストラクチャは必要ありません。
ピアツーピアのエンドツーエンド暗号化チャネルを確立するために、UDPホールパンチングが使用されます。UDPが利用できないかブロックされている場合は、E2EE HTTPsリレー(DERPリレー)にフォールバックします。DERP(Designated Encrypted Relay for Packets)DERPプロトコルサーバーは、直接ピアツーピア接続が確立できない場合にノード間のトラフィックを中継します。
MESHも同じモデルに従います。デフォルトでは、オペレーターが独自のDERPインフラストラクチャを設定していない場合(MESHのコントロールプレーンを使用して設定可能)、MESHはTailscaleの公開DERPサーバーを使用して、特に制限の厳しいネットワーク環境でも信頼性の高い接続性を確保します。ただし、MESHはTailscaleインフラストラクチャを必要としません。オペレーターはコントロールプレーン(組み込みのDERP実装を含む)を介して独自のDERPサーバーをデプロイおよび使用できます。これにより、必要に応じてMESHを完全にセルフホストできます。
DERPサーバーは純粋にトランスポートリレーとして機能します。デバイス間の接続性を促進しますが、交換されるデータ(エンドツーエンドで暗号化されたまま)を可視化することはできません。
機能強化には以下が含まれます(ただしこれらに限定されません):
- フォレンジック操作に特化したUIを備えたセルフホスト可能な調整サーバー
- 自動WireGuard鍵配布
- オプションのAmneziaWGベースのトランスポート難読化
- 暗号化されたHTTPSリレーフォールバック
コントロールプレーンは、ピア発見と鍵交換のみを担当します。 フォレンジックトラフィックは、可能な限りエンドポイント間で直接流れます。
主な機能
- ピアツーピア暗号化フォレンジックサブネット
- 自動WireGuard / AmneziaWG鍵管理
- ACL実施機能付きセルフホスト可能なコントロールプレーン
- CGNAT割り当て仮想TUNインターフェース
- ADB-over-WiFiおよびlibimobiledevice互換性
- AndroidQF + MVT統合
- フォレンジック成果物の安全な転送
- オプションのキルスイッチ封じ込め
- 迅速なメッシュ作成と破棄
なぜVPNではないのか?
従来のVPNやハブアンドスポークアーキテクチャには次のような問題があります:
- 永続的なインフラストラクチャのリスク
- 集中型トラフィック分析ポイント
- 単一障害点
- 運用上の露出の増加
MESHは調整とデータ転送を分離します:
- コントロールプレーンはフォレンジックトラフィックを運ばない
- ピア接続は可能な限り直接的
- リレーはトランスポートのフォールバックであり、アーキテクチャのハブではない
- メッシュは使い捨て可能で、タスク範囲に限定される
MESHは、恒久的なエンタープライズネットワーキングではなく、一時的でリスクの高い環境向けに最適化されています。
リポジトリ構造
android-client— AndroidエンドポイントAPKcontrol-plane— 調整サーバーanalyst— アナリストCLIクライアント
開発者向けメモ
ワークフロー:
- 開発はブランチで行われ、PRを介してマージされます。
- リリースはバージョンタグとしてカットされます。
- GitHub Actionsは、タグ付きリリースを
mesh-analyst-clientにミラーリングします。 - 外部のGoプロジェクトは、
mainではなく明示的なバージョンタグに依存する必要があります。
ライセンス
MESHはGNU Affero General Public License v3.0以降(AGPL-3.0-or-later)の下でライセンスされています。
本ソフトウェアの一部はTailscaleの派生作品であり、TailscaleはBSD 3-Clause Licenseの下でライセンスされています。元のTailscaleの著作権表示およびライセンスは、BSD-3-Clauseの要件に従って保持されます。AmneziaWG/WireguardコードはMITライセンスの下でライセンスされています。詳細は.licenses/を参照してください。
BARGHESTによるすべての修正および追加は、Copyright(c)BARGHESTであり、AGPL-3.0-or-laterの下でライセンスされています。
法的表示
WireGuardはJason A. Donenfeldの登録商標です。

