Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Snoopy — Snoopy: распределённый фреймворк для отслеживания и перехвата данных | Kitploit
Инструменты/GitHubGitHub/sensepost/snoopy
OSINT (Разведка открытых источников)РазведкаАудит Wi-FiКартирование сетиФишингАнализ вредоносных программСоциальная инженерияRed Teaming
GitHubsensepost/snoopy

Snoopy

Snoopy: распределённый фреймворк для отслеживания и перехвата данных

Репозиторий
613149913 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

root@kitploit:~
|       ||  |  | ||       ||       ||       ||  | |  |
|  _____||   |_| ||   _   ||   _   ||    _  ||  |_|  |
| |_____ |       ||  | |  ||  | |  ||   |_| ||       |
|_____  ||  _    ||  |_|  ||  |_|  ||    ___||_     _|
 _____| || | |   ||       ||       ||   |      |   |  
|_______||_|  |__||_______||_______||___|      |___|
                                               V0.1  
"Amy, технологии не являются по своей сути хорошими или плохими. Всё зависит от того, как их использовать. Как с Лучом смерти."
-Профессор Фарнсворт

Добро пожаловать в Snoopy; распределённый фреймворк для отслеживания и профилирования. Snoopy находится в разработке, так что не стесняйтесь присылать предложения и/или исправления. В этом документе описывается базовое использование. Чтобы лучше понять предысторию, взгляните на следующее:

  • Snoopy: A distributed tracking and profiling framework
  • ZaCon4 - Glenn Wilkinson - Terrorism, tracking, privacy and human interactions
  1. ВВЕДЕНИЕ И ОБЗОР ============================= Snoopy состоит из четырёх компонентов:
  • Клиентское ПО (также называемое ПО Snoopy Drone)
  • Серверное ПО
  • Веб-интерфейс
  • Трансформы Maltego

a. Snoopy Drones (Дроны)

Клиентское ПО работает на устройствах, которые мы называем «Дроны». Дроном может быть любое устройство на базе Linux, имеющее Wi-Fi-интерфейс (с драйверами для инжекции) и исходящее подключение к интернету. Snoopy тестировался на Nokia N900 и ноутбуке с BackTrack. Дроны выполняют следующие две операции:

  1. Сбор SSID зондирующих запросов (Probe SSIDs) от ближайших беспроводных устройств
  2. Предоставление Rogue Access Point (мошеннической точки доступа) для подключения ближайших беспроводных устройств

Собранные зондирующие запросы (например, iPhone Боба, ищущий BTHomeHub-4123) загружаются на сервер Snoopy через регулярные промежутки времени. Все устройства, которые подключаются к Rogue AP, получают доступ в интернет через сервер Snoopy.

b. Серверное ПО

Сервер помещает все зондирующие запросы в базу данных, использует Wigle для определения координат GPS, а Google Maps — для определения почтовых адресов (и фотографий с улиц). Это означает, что если вы отправляете зондирующие запросы для своей домашней сети, я могу получить фотографию вашего дома.

Каждый Дрон подключается к серверу через OpenVPN и имеет свою подсеть. Подключившиеся клиенты получают IP-адрес от Дрона и маршрутизируют трафик через него. Это значит, что на сервере мы можем сопоставить IP-адреса клиентов (и, следовательно, MAC-адреса) с их интернет-активностью.

На сервере происходит следующее:

  • Интернет-трафик прозрачно проксируется через Squid, который логирует все запросы в MySQL
  • SSLStrip пытается переписывать веб-страницы без HTTPS
  • mitmproxy.py позволяет произвольную инъекцию в веб-страницы
  • Различные скрипты запускаются для извлечения данных из социальных сетей (например, скачивание профилей 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. Веб-интерфейс

Уолтер написал веб-интерфейс для Snoopy. К нему можно получить доступ по адресу 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-соединение не установится.

К каждой сущности 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-деаутентификация / глушение 3G
  • Камера с распознаванием лиц
  • Загрузчик плагинов Firefox для кражи cookie
  • Замена процесса загрузки данных (в настоящее время все дроны используют rsync с одним и тем же пользователем).
  1. ИЗВЕСТНЫЕ ПРОБЛЕМЫ / БАГИ ======================
  • SSID с необычными символами могут вызвать проблемы
  • В настоящее время все зондирующие запросы захватываются и помещаются в БД. База данных растет довольно быстро, особенно в оживленных местах. Базу данных следует нормализовать и принять решение, сохранять ли все зондирующие запросы или нет.
  • Изначально захват зондирующих запросов выполнялся с помощью Scapy, но был заменен однострочником tshark (из-за неспособности Scapy считывать параметр мощности сигнала 802.11). Обнаруженный недостаток старой версии tshark, доступной на N900, заключается в том, что она не поддерживает вывод времени в эпохе, а только местное время. Это сильно нарушает работу с часовыми поясами. Если бы вы могли скомпилировать новый tshark для N900, это было бы здорово (тут мы рассчитываем на PwnieExpress). Суть в том, что пока убедитесь, что ваш сервер/дроны находятся в одном часовом поясе.
  1. КОНТАКТЫ ============== Код написан Гленном (за исключением веб-интерфейса Уолтера). Вы можете написать ему по адресу [email protected] или забаг^H^H^H подписаться на него в Twitter: @glennzw. Гленн не разработчик и извиняется за свой плохой код. Он хакер, и этот инструмент позволил ему взломать вас.

Благодарности

Спасибо за помощь/советы/вклад от:

  • Команды SensePost (отличное место для работы).
  • DocScrutinizer и остальных участников #maemo на Freenode за помощь с N900.

ПРИЛОЖЕНИЕ A1. СЦЕНАРИИ АТАК (не одобряются и не поощряются)

Поимка шпиона

В. Мы знаем, что иностранный шпион прибывает в Хитроу 11 ноября, но не знаем, когда и каким рейсом. Наши разведданные предполагают, что после прибытия он остановится в отеле Hilton, а 14-го вылетит из аэропорта Лутон (опять же, мы не знаем время и направление). Он мастер маскировки. Как мы можем его опознать?

О. Разверните дроны Snoopy в Хитроу, Hilton и Лутоне. Трансформ Maltego «CommonLocation» отметит пересечение всех устройств, присутствующих в этих трех местах. Надеемся, что будет только один результат — наша цель-человек. После обнаружения мы можем изучить карты Google и фотографии улиц мест, которые посетил наш шпион. Его личность может быть раскрыта, если его устройство(а) будут обманом подключены к мошеннической точке доступа Snoopy (например, его Facebook, Twitter или электронная почта).

Выявление нежелательных лиц

Попросите Snoopy отметить всех лиц, которые подключались к Wi-Fi-точке в определенных песчаных^W нежелательных странах.

Отслеживание клиентов

Разверните Snoopy в ваших 10 универмагах. Отмечайте потоки людей, повторных клиентов, типы клиентов.

Распространение вредоносного ПО

Внедряйте вредоносный код для захвата устройств клиентов и установки вредоносного ПО. Эксплойты могут быть запущены напрямую с сервера на подключенных жертв благодаря таблицам маршрутизации.

Лондонское метро

TFL (Transport for London) могла бы развернуть дрон Snoopy в каждой линии лондонского метро. Они могли бы отслеживать потоки людей, отмечать пиковые и спадающие часы/дни и соответствующим образом назначать/сокращать персонал.

Крупномасштабное отслеживание людей

Разверните 500 дронов Snoopy по всему Лондону. Отслеживайте перемещения людей, когда они проходят мимо дрона. Интересные закономерности движения людей обязательно проявятся, если это будет применяться в течение недель/месяцев.


ПРИЛОЖЕНИЕ A2. ЗАМЕТКИ ПО ОБОРУДОВАНИЮ

Для настольного ПК/ноутбука на Linux карта Alfa AWUS036H показывает средние результаты. Более надежной картой является Ubiquity SR-71. Буду признателен за любые отзывы о том, что у вас работает/не работает в плане поддержки драйверов инжекции.

Для N900 вы заметите, что загрузка драйверов инжекции значительно сокращает время работы от батареи. Аккумуляторный блок TecNet 6600mAh в тестах давал около 6-8 часов. Однако вам понадобится адаптер, чтобы подключить N900 к любому аккумуляторному блоку. Уменьшение (или отключение) частоты опроса GPS также продлит время работы от батареи.

Советы по подключению N900 к ноутбуку через USB (для SSH) можно найти здесь

В настоящее время я тестирую 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

Введение

Код веб-интерфейса доступен по адресу ~user/snoopy/server/bin/snoopy/src/snoopy/

Требования (уже установлены)

Пакеты Python

  • Beaker
  • cryptacular
  • Flask
  • MySQLdb
  • SQLAlchemy

Плагины

Плагины состоят из двух частей:

  • Back-end (предоставляющая данные) часть, написанная на Python
  • Front-end (отображающая) часть, написанная на JavaScript (опционально)

Back-end

Плагин — это вызываемый объект, который динамически загружается приложением 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

Нам нужен db для доступа к базе данных Snoopy и pluginregistry для регистрации нашего плагина.

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

Таким образом мы регистрируем наш плагин (которым может быть любой вызываемый объект). Первый аргумент указывает имя группы, в которую входит этот плагин. Мы указали client-data, поскольку этот плагин принимает MAC-адрес и возвращает данные для отображения в окне данных клиента. Кроме client-data, существует также группа плагинов session-data, которые работают с сеансами близости. Второй параметр — имя плагина. Это имя используется только внутри и должно быть JSON-совместимым. Третий параметр — заголовок плагина. По сути, он совпадает с именем, но заголовок отображается в графическом интерфейсе. Точнее, это заголовок раздела данных в окне данных клиента.

Все аргументы ключевых слов после заголовка сохраняются как опции. Хотя система плагинов не требует каких-либо опций, Snoopy поддерживает опцию js. Эта опция указывает URL (со стороны браузера, а не со стороны Snoopy/сервера) JavaScript-компонента этого плагина.

root@kitploit:~
def ssid_list(mac):

Этот плагин — простая функция. Он принимает строку MAC-адреса, как и определено для плагинов client-data. Имя вызываемого объекта не используется.Тело этого примера плагина просто выполняет запрос SQLAlchemy, который по сути делает SELECT DISTINCT probe_ssid FROM probes WHERE device_mac=$mac и возвращает результаты в виде списка. Возвращаемые значения плагинов обычно добавляются как часть JSON-ответа. Поэтому результаты должны быть JSON-совместимыми (как поддерживается функцией Flask jsonify()).

Вот так всё просто!

Фронтенд

Фронтенд-плагины для данных клиента называются обработчиками данных клиента. Они регистрируются с помощью функции Snoopy.registerPlugin(sectionName, dataHandler). sectionName — это имя раздела данных, который обработчик хочет обрабатывать. Это имя совпадает с именем бэкенд-плагина, который сгенерировал данные. dataHandler должна быть функцией со следующей сигнатурой: function($section, clientData) {...}. $section — это jQuery-объект элемента div, в котором обработчик может отображать данные или вносить изменения. Данные клиента (сгенерированные бэкенд-плагином) передаются в параметре clientData.

Поскольку единственным разрешенным выводом обработчика данных являются изменения в переданном div ($section), возвращать значение не требуется.

Скачать инструмент
  • Установка и запуск 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
    
  • Поиск местоположений SSID Создайте учетную запись на www.wigle.net и укажите свои учетные данные через «Configure server options»

  • Веб-интерфейс Вы можете получить доступ к веб-интерфейсу по адресу http://your-snoopy-server:5000/. Вы можете написать свои собственные плагины для просмотра и отображения данных. Уолтер сделал это для вас простым (см. приложение к этому документу).

  • Исследование данных с помощью Maltego В меню сервера Snoopy перейдите в «Configure Server Options» > «Maltego». Здесь вы увидите URL-адреса для загрузки сущностей Snoopy, машин и URL-адреса для трансформов. Для использования трансформов Maltego вам потребуется:

    • Добавить сущности Snoopy в Maltego
    • Создать учетную запись на http://cetas.paterva.com/TDS/
    • Войти на cetas.paterva.com/TDS/
    • Создать «зерно» (seed) на cetas.paterva.com/TDS/
    • Добавить URL-адреса трансформов в созданное зерно
    • Добавить зерно в Maltego (Manage > Discover Transforms (Advanced))
    • Ввести имя 'Snoopy' и URL зерна
    • Добавить машины Snoopy в раздел машин