
Snoopy: 分散型トラッキングおよびデータ傍受フレームワーク
| || | | || || || || | | |
| _____|| |_| || _ || _ || _ || |_| |
| |_____ | || | | || | | || |_| || |
|_____ || _ || |_| || |_| || ___||_ _|
_____| || | | || || || | | |
|_______||_| |__||_______||_______||___| |___|
V0.1
「エイミー、テクノロジーは本質的に善でも悪でもない。使い方次第だ。死の光線のようにね。」
-ファーンズワース教授
Snoopy へようこそ。これは分散型トラッキング/プロファイリングフレームワークです。Snoopy は開発途中のプロジェクトなので、提案や修正があれば遠慮なく送ってください。このドキュメントでは基本的な使い方を説明します。もう少し背景を理解するには、以下を参照してください:
クライアント側ソフトウェアは、私たちが「ドローン」と呼ぶデバイス上で動作します。ドローンは、WiFiインターフェース(インジェクションドライバー付き)と外向きのインターネット接続を備えた Linux ベースの任意のデバイスです。Snoopy は Nokia N900 と BackTrack を実行するノートPCでテストされています。ドローンは次の2つの操作を行います:
収集されたプローブリクエスト(例:BTHomeHub-4123 を探しているボブの iPhone)は、定期的に Snoopy サーバーへアップロードされます。Rogue AP に接続したすべてのデバイスのインターネットアクセスは、Snoopy サーバーを経由して提供されます。
サーバーはすべてのプローブリクエストをデータベースに格納し、Wigle を使って GPS 座標を特定し、Google マップを使って住所(およびストリートビューの写真)を特定します。つまり、あなたが自宅のネットワークをプローブしている場合、私はあなたの家の写真を入手できる可能性があるということです。
各ドローンは OpenVPN 経由でサーバーに接続し、独自のサブネットを持ちます。関連付けられたクライアントはドローンから IP アドレスを受け取り、そのドローンを経由してトラフィックをルーティングします。つまり、サーバー上でクライアントの IP アドレス(したがって MAC アドレス)をインターネット活動と照合できるということです。
サーバー上では、次のことが行われます:
ネットワーク図は次のようになります:
Client1 Drone1 Snoopy Server
+----------+ +-----------------------+ +-----------------------+
| wlan0-|<---WiFi--->|-at0 | | eth0|<-squid-sslstrip-mitmproxy->Internet
| | | | 10.2.0.1 | | 11.22.33.44| |
| dhclient | | | | | | Traffic inspection
| | | | tap0-|<-openvpn----->|-tap0 | Social media analysis
+----------+ | | 192.168.42.2 | +--/| 192.168.42.1 |
10.2.0.2 | +-----------------------+ | +-----------------------+
| |
| | route 10.2.0.0 via 192.168.42.2
| | route 10.3.0.0 via 192.168.42.3
Client2 | |
+----------+ | |
| wlan0-|<---+ |
| | |
| dhclient | |
| | |
+----------+ |
10.2.0.3 |
|
|
|
Client3 Drone2 |
+----------+ +-----------------------+ |
| wlan0-|<---WiFi--->|-at0 | |
| | | | 10.3.0.1 | |
| dhclient | | | | |
| | | | tap0-|<-openvpn--+
+----------+ | | 192.168.42.3 |
10.3.0.2 | +-----------------------+
|
|
|
Client4 |
+----------+ |
| wlan0-|<---+
| |
| dhclient |
| |
+----------+
10.3.0.3
Walter が Snoopy 用の Web インターフェースを作成しました。http://your-snoopy-server.com:5000/ からアクセスできます。
収集したデータをグラフィカルに調査するための Maltego トランスフォームがいくつかあります(詳細は下記参照)。
インストール ================ サーバーのインストールは簡単なはずです。Ubuntu 12.04 LTS 32bit の標準インストールでのみテストされています。複数のサーバーコンポーネントに変更が加えられるため、基本インストール済みの状態でインストールスクリプトを実行し、そのマシンでは他にあまり何も実行しないことを強くお勧めします(実行するとしてもごく僅かに)。不明な点がある場合は、install.sh ファイルを確認して手動で変更してください。そうでなければ、インストーラー(./install.sh)を実行するだけです。
使用方法 ======== インストールが完了すると、'snoopy' と入力するだけでサーバーメニューが読み込まれるはずです。そうでない場合(または不明な場合)は、インストールフェーズで作成したユーザーのホームディレクトリに移動してください。'snoopy/server/' ディレクトリの中に 'snoopy.sh' ファイルがあり、それを実行できます。以下がメニューです:
+---------------------------------------------------------------+
| Welcome to Snoopy V0.1 |
| SERVER SIDE |
| |
| SensePost Information Security |
| [email protected] / www.sensepost.com |
+---------------------------------------------------------------+
Date: Thu Nov 1 16:37:08 CET 2012
Snoopy Server Status: Stopped
Connected Drones: 0
Wigle User: setYourWigleAccount
Would you like to:
[1] (Re)Start Snoopy server components
[2] Stop Snoopy server components
[3] Manage drone configuration packs
[4] Configure server options
[5] Set web traffic injection string
[6] Observe logs
[X] Exit
[?] Help
ドローンパックの作成 メニューのオプション[3]を使用すると、ドローンデバイス用のクライアント側'パック'を作成できます。各ドローンは、独自の OpenVPN 鍵と SSH 鍵、DHCP レンジ、ルーティングテーブルを取得します。ドローンデバイスごとにダウンロード URL が提供されます。サーバーとドローンの時刻が正しく設定されていることを確認してください。正しくないと VPN 接続が確立されません。
ドローンへの Snoopy のインストールと実行 ドローンは最大100台まで使用できます(それ以上必要な場合は、ソースを確認するか私にメールしてください。実際の制限はありません)。インストールは、前の手順で作成した設定パックをダウンロードし、該当するセットアップスクリプトを実行することで構成されます。Nokia N900 の場合、デスクトップにアイコンが配置されます。例:
haxor@drone001# wget http://snoopy-server.com/secretdir/drone001.tar.gz
haxor@drone001# tar xzvf drone001.tar.gz
haxor@drone001# cd snoopy && ./setup_n900.sh
SSIDの場所を調べる www.wigle.net でアカウントを作成し、'Configure server options' から資格情報を設定してください。
Web インターフェース http://your-snoopy-server:5000/ から Web インターフェースにアクセスできます。データを参照・表示する独自のプラグインを作成できます。Walter があなたにとって簡単になるようにしてくれています(このドキュメントの付録を参照)。