Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/sensepost/snoopy
OSINT (オープンソースインテリジェンス)偵察Wi-Fi監査ネットワークマッピングフィッシングマルウェア分析ソーシャルエンジニアリングレッドチーミング
GitHubsensepost/snoopy

Snoopy

Snoopy: 分散型トラッキングおよびデータ傍受フレームワーク

リポジトリを見る
613149213年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
Snoopy — Snoopy: 分散型トラッキングおよびデータ傍受フレームワーク | Kitploit

root@kitploit:~
|       ||  |  | ||       ||       ||       ||  | |  |
|  _____||   |_| ||   _   ||   _   ||    _  ||  |_|  |
| |_____ |       ||  | |  ||  | |  ||   |_| ||       |
|_____  ||  _    ||  |_|  ||  |_|  ||    ___||_     _|
 _____| || | |   ||       ||       ||   |      |   |  
|_______||_|  |__||_______||_______||___|      |___|
                                               V0.1  
「エイミー、テクノロジーは本質的に善でも悪でもない。使い方次第だ。死の光線のようにね。」
-ファーンズワース教授

Snoopy へようこそ。これは分散型トラッキング/プロファイリングフレームワークです。Snoopy は開発途中のプロジェクトなので、提案や修正があれば遠慮なく送ってください。このドキュメントでは基本的な使い方を説明します。もう少し背景を理解するには、以下を参照してください:

  • Snoopy: 分散型トラッキング/プロファイリングフレームワーク
  • ZaCon4 - Glenn Wilkinson - テロ、追跡、プライバシー、そして人間の相互作用
  1. 導入と概要 ============================= Snoopy は次の4つのコンポーネントで構成されています:
  • クライアントソフトウェア(別名 Snoopy ドローンソフトウェア)
  • サーバーソフトウェア
  • Web インターフェース
  • Maltego トランスフォーム

a. Snoopy ドローン

クライアント側ソフトウェアは、私たちが「ドローン」と呼ぶデバイス上で動作します。ドローンは、WiFiインターフェース(インジェクションドライバー付き)と外向きのインターネット接続を備えた Linux ベースの任意のデバイスです。Snoopy は Nokia N900 と BackTrack を実行するノートPCでテストされています。ドローンは次の2つの操作を行います:

  1. 近くのワイヤレスデバイスからプローブSSIDを収集
  2. 近くのワイヤレスデバイスが接続できる不正アクセスポイント(Rogue AP)を提供

収集されたプローブリクエスト(例:BTHomeHub-4123 を探しているボブの iPhone)は、定期的に Snoopy サーバーへアップロードされます。Rogue AP に接続したすべてのデバイスのインターネットアクセスは、Snoopy サーバーを経由して提供されます。

b. サーバーソフトウェア

サーバーはすべてのプローブリクエストをデータベースに格納し、Wigle を使って GPS 座標を特定し、Google マップを使って住所(およびストリートビューの写真)を特定します。つまり、あなたが自宅のネットワークをプローブしている場合、私はあなたの家の写真を入手できる可能性があるということです。

各ドローンは OpenVPN 経由でサーバーに接続し、独自のサブネットを持ちます。関連付けられたクライアントはドローンから IP アドレスを受け取り、そのドローンを経由してトラフィックをルーティングします。つまり、サーバー上でクライアントの IP アドレス(したがって MAC アドレス)をインターネット活動と照合できるということです。

サーバー上では、次のことが行われます:

  • インターネットトラフィックは Squid を通じて透過的にプロキシされ、すべてのリクエストが MySQL に記録されます
  • SSLStrip は HTTPS なしの Web ページを書き換えようとします
  • mitmproxy.py は Web ページへの任意のインジェクションを可能にします
  • ソーシャルメディアデータを抽出するためのさまざまなスクリプトが実行されます(例:Facebook プロフィールの取得)

ネットワーク図は次のようになります:

root@kitploit:~
     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

c. Web インターフェース

Walter が Snoopy 用の Web インターフェースを作成しました。http://your-snoopy-server.com:5000/ からアクセスできます。

d. Maltego トランスフォーム

収集したデータをグラフィカルに調査するための Maltego トランスフォームがいくつかあります(詳細は下記参照)。

  1. インストール ================ サーバーのインストールは簡単なはずです。Ubuntu 12.04 LTS 32bit の標準インストールでのみテストされています。複数のサーバーコンポーネントに変更が加えられるため、基本インストール済みの状態でインストールスクリプトを実行し、そのマシンでは他にあまり何も実行しないことを強くお勧めします(実行するとしてもごく僅かに)。不明な点がある場合は、install.sh ファイルを確認して手動で変更してください。そうでなければ、インストーラー(./install.sh)を実行するだけです。

  2. 使用方法 ======== インストールが完了すると、'snoopy' と入力するだけでサーバーメニューが読み込まれるはずです。そうでない場合(または不明な場合)は、インストールフェーズで作成したユーザーのホームディレクトリに移動してください。'snoopy/server/' ディレクトリの中に 'snoopy.sh' ファイルがあり、それを実行できます。以下がメニューです:

    root@kitploit:~
     +---------------------------------------------------------------+
     |                    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. ドローンパックの作成 メニューのオプション[3]を使用すると、ドローンデバイス用のクライアント側'パック'を作成できます。各ドローンは、独自の OpenVPN 鍵と SSH 鍵、DHCP レンジ、ルーティングテーブルを取得します。ドローンデバイスごとにダウンロード URL が提供されます。サーバーとドローンの時刻が正しく設定されていることを確認してください。正しくないと VPN 接続が確立されません。

  4. ドローンへの Snoopy のインストールと実行 ドローンは最大100台まで使用できます(それ以上必要な場合は、ソースを確認するか私にメールしてください。実際の制限はありません)。インストールは、前の手順で作成した設定パックをダウンロードし、該当するセットアップスクリプトを実行することで構成されます。Nokia N900 の場合、デスクトップにアイコンが配置されます。例:

    root@kitploit:~
     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
    

各 Snoopy エンティティには、異なるトランスフォームを適用できます。'Snoopy' エンティティをグラフにドラッグして開始してください。エンティティのプロパティで開始日または終了日を指定しない場合、デフォルトで過去5分間の結果を取得します(この値はサーバー設定メニューで変更できます)。

Snoopy マシンを使用すると、トランスフォームを自動的に連続実行し、要件に基づいてノードをフィルタリング/削除できます。ソース/コメントを見れば、それらの動作方法は十分に理解できるはずです。

  1. 法的な考慮事項 ======================= Snoopy のコンポーネントのすべてまたは一部は、お住まいの地域では違法である可能性があります。ソフトウェアを使用する前に確認してください。英国では、トラフィックがブロードキャストであるため、プローブ収集コンポーネントは合法です。ただし、不正アクセスポイントコンポーネントは、ほとんどの地域で違法である可能性が高いです。SensePost は、このツールの使用によってあなたがトラブルに巻き込まれても一切責任を負いません。

  2. セキュリティ上の考慮事項 ========================== 各'ドローンパック'には OpenVPN 鍵と SSH 鍵が含まれています。ドローンが(盗難などにより)侵害された場合、サーバーにセキュリティリスクをもたらす可能性があります。Snoopy サーバーは専用で運用することを強くお勧めします。サーバー上に作成されたユーザーには、少しの追加セキュリティのために、次の行が .ssh/authorized_hosts ファイル に自動的に追加されます:

    "no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="/usr/bin/rsync ${SSH_ORIGINAL_COMMAND#* }""

  3. 今後の作業 =============== やるべきこと/追加すべきことはまだたくさんあります。このバージョンはどちらかというと PoC です。

  • ToRサポートの統合
  • 他のトラフィックキャプチャ(例:mDNS)を簡単に追加するフィルターを追加
  • aGPSハッキングを組み込む(被害者のDNSをすでに制御しているため)
  • Evilgrade
  • Bluetooth/GSMトラッキング
  • WiFi deauth / 3Gジャミング
  • 顔認証付きカメラ
  • 盗まれたCookieのFirefoxプラグインローダー
  • データアップロードプロセスを置き換える(現在すべてのドローンが同じユーザーでrsyncしている)
  1. 既知の問題 / バグ ======================
  • 特殊な文字を含むSSIDは問題を引き起こす可能性があります
  • 現在、すべてのプローブリクエストがキャプチャされDBに格納されます。特に混雑したエリアではDBはすぐに大きくなります。データベースを正規化し、すべてのプローブを保持するかどうかの決定を行うべきです。
  • 当初、プローブスニッフィングは Scapy で行われていましたが、tshark のワンライナーに置き換えられました(Scapy が 802.11 の信号強度パラメータを読み取れないため)。N900 で利用可能な古いバージョンの tshark で見つかった注意点は、エポック時刻を出力できず、ローカル時刻のみを出力することです。これはタイムゾーンと大きく衝突します。N900 用に新しい tshark をコンパイルしてくれるなら素晴らしいのですが(PwnieExpress、あなたのことですよ)。つまり、現時点ではサーバーとドローンのすべてを同じタイムゾーンにしてください。
  1. 連絡先 ============== このコードは(Walter の Web インターフェースを除き)Glenn によって書かれました。[email protected] でメールを送るか、bug^H^H^H Twitter で @glennzw をフォローしてください。Glenn は開発者ではありません。彼の貧弱なコードについてお詫びします。彼はハッカーであり、このツールは彼があなたをハッキングするためのものです。

謝辞

助け、アドバイス、意見をくれた人々に感謝します:

  • SensePost のクルー(働くには最高の場所)。
  • N900 のヘルプをくれた DocScrutinizer と、Freenode の #maemo ギャングの皆さん。

付録A1. 攻撃シナリオ(推奨も奨励もされていません)

スパイの捕獲

Q. 外国人スパイが11月11日にヒースロー空港に到着することはわかっているが、それがいつで、どの便かはわからない。情報筋によると、彼は到着後ヒルトンに滞在し、14日にルートン空港から飛行機に乗るという(これも時間も目的地もわからない)。彼は変装の達人だ。どうやって彼を特定すればよいか?

A. ヒースロー空港、ヒルトン、ルートン空港に Snoopy ドローンを配備します。'CommonLocation' Maltego トランスフォームが、これら3か所に存在するすべてのデバイスの共通部分を記録します。うまくいけば結果は1つだけになるはずです。それが私たちの標的です。特定できれば、Google マップとストリートビューの写真で、スパイがどこへ移動したかを調べることができます。彼のデバイスが Snoopy の不正アクセスポイントに接続するよう仕向けられれば(Facebook、Twitter、メールなど)、彼の正体が明らかになるかもしれません。

好ましくない人物の特定

特定の sandy^W 好ましくない国々の WiFi スポットに接続したすべての個人を記録するよう Snoopy に依頼します。

顧客の追跡

10 のデパートに Snoopy を配備します。人の流れ、リピーター客、顧客のタイプを記録します。

マルウェアの配布

クライアントデバイスを乗っ取ってマルウェアをインストールするために、悪意のあるコードを注入します。ルーティングテーブルにより、サーバーから接続中の被害者へ直接エクスプロイトを送り込むことができます。

ロンドン地下鉄

TFL は各ロンドン地下鉄に Snoopy ドローンを配備できます。人の流れを監視し、ピーク時と閑散時の時間帯/曜日を記録して、それに応じてスタッフを配置・削減できます。

大規模な人間追跡

ロンドン全域に500台の Snoopy ドローンを配備します。人々がドローンのそばを通る際の動きを監視します。数週間から数ヶ月にわたって適用すれば、興味深い人の移動パターンが必ず現れます。


付録A2. ハードウェアに関するメモ

Linux ベースのデスクトップ/ノートPCの場合、Alfa AWUS036H カードは平均的な性能です。より信頼性の高いカードは Ubiquity SR-71 です。インジェクションドライバーのサポートに関して、動作した/しなかった情報があればお知らせください。

N900 では、インジェクションドライバーを読み込むとバッテリー寿命が大幅に短縮されることに気づくでしょう。TecNet 6600mAh バッテリーパックは、テストで約6〜8時間持ちました。ただし、N900 をバッテリーパックに接続するには アダプター が必要です。GPS のポーリング頻度を減らす(または無効にする)こともバッテリー寿命に役立ちます。

SSH のために N900 をノートPCに USB 接続する方法のヒントは、こちら にあります。

現在、RaspberryPi、Alfa R36 mini AP、SheevaPlug でテストしています。結果は後日公開します。


付録A3. Snoopy Maltego スクリプティング

収集したデータを調査するための独自の Maltego トランスフォームを作成できます。提供されているものは、ほとんどが何ができるかを示すためのデモンストレーションです。ソースコードを確認し、以下を読んでください:

  • http://www.paterva.com/web6/documentation/developer.php
  • http://www.paterva.com/web6/documentation/developer-tds.php

質問があれば [email protected] まで連絡してください(または素晴らしい Maltego チームに聞いてください)。


付録A4. Snoopy Web インターフェースのスクリプティング

はじめに

Web UI のコードには次の場所からアクセスできます。 ~user/snoopy/server/bin/snoopy/src/snoopy/

要件(インストール済み)

Python パッケージ

  • Beaker
  • cryptacular
  • Flask
  • MySQLdb
  • SQLAlchemy

プラグイン

プラグインは次の2つの部分で構成されます:

  • バックエンド(データ提供)部分。Python で記述
  • フロントエンド(表示)部分。JavaScript で記述(任意)

バックエンド

プラグインは、Snoopy アプリケーションによって動的にロードされる呼び出し可能オブジェクトです。例から始めましょう:

root@kitploit:~
from snoopy import db, pluginregistry

@pluginregistry.add('client-data', 'ssidlist', 'SSID List', js='/static/js/ssidlist.js')
def ssid_list(mac):
    with db.SessionCtx() as session:
        query = session.query(
            distinct(db.Probe.probe_ssid) # SELECT DISTINCT probe_ssid FROM probes
        ).filter_by(
            device_mac=mac                # WHERE device_mac=$mac
        ).order_by(
            db.Probe.probe_ssid           # ORDER BY probe_ssid
        )
        return query.all()

では、詳しく説明していきます...

root@kitploit:~
from snoopy import db, pluginregistry

Snoopy データベースにアクセスするには db が必要で、プラグインを登録するには pluginregistry が必要です。

root@kitploit:~
@pluginregistry.add('client-data', 'ssidlist', 'SSID List', js='/static/js/ssidlist.js')

これがプラグイン(任意の呼び出し可能オブジェクト)を登録する方法です。最初の引数は、このプラグインが属するグループの名前を指定します。このプラグインは MAC アドレスを受け取り、クライアントデータウィンドウに表示するデータを返すため、client-data を指定しました。client-data の他に、近接セッションを操作する session-data グループのプラグインもあります。2番目のパラメータはプラグイン名です。この名前は内部使用のみで、JSON に適した形式である必要があります。3番目のパラメータはプラグインのタイトルです。基本的には名前と同じですが、タイトルは GUI に表示されます。具体的には、クライアントデータウィンドウ内のデータセクションのタイトルです。

タイトル以降のすべてのキーワード引数はオプションとして保存されます。プラグインシステムはオプションを必須としませんが、Snoopy は js オプションをサポートしています。このオプションは、このプラグインの JavaScript コンポーネントの URL(Snoopy/サーバー側ではなく、ブラウザ側から見た URL)を指定します。

root@kitploit:~
def ssid_list(mac):

このプラグインは単純な関数です。client-data プラグインの定義に従い、MAC アドレスの文字列を受け取ります。呼び出し可能オブジェクトの名前は使用されません。このサンプルプラグインの本体は、基本的に SELECT DISTINCT probe_ssid FROM probes WHERE device_mac=$mac を実行するSQLAlchemyクエリを実行し、 結果をリストとして返すだけです。プラグインの戻り値は通常、 JSONレスポンスの一部として追加されます。したがって、結果には、 JSONフレンドリー(Flaskの jsonify() 関数でサポートされる形式)でなければならないという制限があります。

これだけシンプルです!

フロントエンド

クライアントデータ用のフロントエンドプラグインは、クライアントデータハンドラと呼ばれます。 これらは Snoopy.registerPlugin(sectionName, dataHandler) 関数を介して 登録されます。sectionName は、データハンドラが処理したいデータセクションの名前です。 この名前は、データを生成したバックエンドプラグイン名と同じです。 dataHandler は、次のシグネチャを持つ関数でなければなりません: function($section, clientData) {...}。$section は、 データハンドラがデータを表示したり変更を加えたりできるdiv要素のjQuery オブジェクトです。クライアントデータ(バックエンドプラグインによって生成されたもの)は、 clientData パラメータで渡されます。

データハンドラに許可されている出力は、指定されたdiv($section)への変更のみであるため、 戻り値は不要です。

ツールをダウンロード
  • SSIDの場所を調べる www.wigle.net でアカウントを作成し、'Configure server options' から資格情報を設定してください。

  • Web インターフェース http://your-snoopy-server:5000/ から Web インターフェースにアクセスできます。データを参照・表示する独自のプラグインを作成できます。Walter があなたにとって簡単になるようにしてくれています(このドキュメントの付録を参照)。

  • Maltego でデータを調査する Snoopy サーバーメニューで 'Configure Server Options' > 'Maltego' に移動します。ここに、Snoopy エンティティ、マシン、そしてトランスフォーム用 URL のダウンロード URL が表示されます。Maltego トランスフォームを使用するには、次の操作が必要です:

    • Snoopy エンティティを Maltego に追加する
    • http://cetas.paterva.com/TDS/ でアカウントを作成する
    • cetas.paterva.com/TDS/ にログインする
    • cetas.paterva.com/TDS/ でシードを作成する
    • 作成したシードにトランスフォーム URL を追加する
    • Maltego にシードを追加する(Manage > Discover Transforms (Advanced))
    • 名前を 'Snoopy' と入力し、シード URL に自分のシードを指定する
    • Snoopy マシンをマシンセクションに追加する