Для заметок, источников и отчётов откройте OSINT Studio.app в папке набора.

Практикум и проверка инструментов

Установить все программы

Дерево инструментов по задачам →

Инструкции к программам и источникам

Исследовательские маршруты и проверка актуальности от 12 ноября

OSINT • продвинутый рабочий набор

Сборка от 12 ноября 2026. Сетевое сканирование и анализ трафика: главы 15–16. Для macOS / Apple Silicon. Авторские руководства на русском, официальная документация, локальные инструменты и шаблоны расследований.

Быстрый вход

Откройте START.html: это единая офлайн-книга с оглавлением и поиском по тексту через Cmd+F. Терминал открывается двойным щелчком по TERMINAL.command. В нём доступны nmap, arp-scan, mtr, iperf3, sherlock, exiftool, jq, rg и osint-case. START.command открывает рабочее место расследования.

Установлено: Nmap, arp-scan, mtr, iperf3 и Sherlock 0.16.2 в отдельном окружении набора; ExifTool, jq, ripgrep через Homebrew. curl, dig, whois, shasum входят в macOS. Фактические версии и проверка запуска записаны в reports/verification.txt. Дополнительные программы перечислены отдельно: они НЕ установлены автоматически.

С чего начать продвинутому пользователю

Прочитайте 01_METHOD → 02_SEARCH → нужное тематическое руководство → 11_GRAPHS → 12_AUTOMATION → 13_CASES. Затем создайте учебное дело:

osint-case new training-domain
osint-case --help
sherlock --help

В обычном терминале сначала перейдите в папку набора и подключите команды:

cd "$HOME/Desktop/OSINT-Pack-2026-11-12"
export PATH="$PWD/bin:$PWD/.venv/bin:/opt/homebrew/bin:/opt/homebrew/sbin:$PATH"

Команды в книге выполняются по одной. Домен example.com — учебный пример, YOUR_OWN_HANDLE — ваш ник. Файлы photo.jpg, video.mp4 и report.pdf нужно заменить своими файлами. Примеры с дополнительными программами помечены «доустановка».

Как устроен пакет

manuals — главы Markdown; START.html — те же главы в браузере; sources/catalog.csv — каталог инструментов с источниками и ограничениями; sources/link-check.csv — проверка доступности ссылок; templates — таблицы и шаблон отчёта; bin — команды помощника; practice — синтетические учебные данные; reports — версии и результаты проверок.

Глубокое исследование требует первоисточников и проверки гипотез. Каталог широк, но не является обещанием исчерпать все инструменты или гарантировать работу каждого внешнего сервиса. Бесплатность, квоты и доступ меняются. Сведения о ценах не фиксировались; где нужен аккаунт или лицензия, это отмечено.

Рабочая область: открытые сведения, собственные материалы и разрешённые исследования. Доступ к закрытым аккаунтам, обход ограничений, базы украденных данных и эксплуатация уязвимостей не входят в этот набор.

01 • Метод расследования и доказательность

Постановка задачи

Начните с проверяемого вопроса: «Какое юридическое лицо управляло сайтом на дату X?» полезнее, чем «Найти всё». Зафиксируйте период, географию, исходные идентификаторы, допустимые источники и критерий остановки. Разделяйте человека, аккаунт, компанию, домен и IP: это разные сущности.

Создайте минимум три конкурирующие гипотезы. Для сайта это могут быть собственное управление, подрядчик и копирование чужих реквизитов. Рядом с каждой запишите ожидаемые признаки, опровергающие наблюдения и следующий запрос, который различит гипотезы.

Цикл

План → поиск → фиксация → проверка → сопоставление → вывод → внешняя перепроверка. После каждого перехода к новой сущности записывайте основание: источник, точный фрагмент, дату действия связи и степень уверенности. Не расширяйте граф только потому, что сервис показал «related».

Оценивайте отдельно надёжность источника и силу конкретного вывода. Официальный реестр может содержать устаревшую поданную запись, а точный первичный видеокадр — происходить из анонимной публикации. Число ссылок не равно числу независимых подтверждений: десять перепечаток одного сообщения дают одну цепочку происхождения.

Рабочая шкала

Подтверждено — есть прямой первичный документ и согласованный контекст. Вероятно — несколько независимых косвенных признаков. Не установлено — данных недостаточно. Опровергнуто — обнаружено несовместимое первичное свидетельство. Эта шкала — практическая схема пакета, не формальный стандарт Berkeley Protocol.

Отдельно фиксируйте факты, интерпретации и пробелы. «Два домена имели общий IP 10 мая» — факт наблюдения. «Один владелец» — гипотеза; общий CDN или хостинг могут объяснить совпадение.

Время и целостность

Для каждого материала храните URL, время получения в UTC, исходный часовой пояс, время публикации и заявленное время события. Они могут различаться. Сохраните оригинал, рабочую копию и SHA-256. Хеш показывает совпадение байтов с зафиксированной копией, но сам по себе не доказывает дату публикации, подлинность или авторство.

Минимальный пакет результата: вопрос, рамки, метод, ключевые наблюдения, таблица доказательств, альтернативные объяснения, ограничения, вывод и список источников. Перед передачей проверяйте каждое утверждение обратным проходом от вывода к оригиналу.

Чтение

Berkeley Protocol: https://digitallibrary.un.org/record/3973652?v=pdf — базовая методика сбора, анализа, сохранения и отчётности; доступны разные языки, включая русский. В книге пакета приведены собственные рабочие схемы; полный протокол не воспроизводится.

Bellingcat Toolkit: https://bellingcat.gitbook.io/toolkit — тематический подбор и обзоры инструментов.

03 • Домены, IP, сертификаты и историческая инфраструктура

Порядок исследования

1. Нормализуйте домен: исходное написание, ASCII/Punycode, корневой домен, поддомен. Не считайте последний набор двух меток корневым доменом автоматически: зоны вроде co.uk требуют Public Suffix List.

2. Проверьте регистрационные данные через RDAP/ICANN. Дата создания домена не равна дате основания бизнеса. Скрытый registrant не даёт основания приписывать владельца.

3. Изучите историю сайта и сертификаты. Сертификат содержит имена, но не доказывает общего владельца всех указанных ресурсов.

4. Сопоставьте DNS, ASN, исторические наблюдения urlscan/Shodan/Censys и независимые реквизиты.

5. Для каждой связи запишите период наблюдения и альтернативное объяснение.

Запросы в терминале

dig example.com A +noall +answer
dig example.com MX +noall +answer
dig example.com NS +noall +answer
dig example.com TXT +noall +answer
curl --fail --location --max-time 30 'https://rdap.org/domain/example.com' -o rdap.json
jq '{ldhName,status,events,nameservers}' rdap.json
curl --fail --max-time 30 'https://crt.sh/?q=%25.example.com&output=json' -o ct.json
jq -r '.[].name_value' ct.json | sort -u > names.txt

DNS-запросы идут резолверу и могут привести к обращению к авторитетным DNS-серверам. rdap.org — посредник переадресации к регистрационным данным. crt.sh иногда отвечает медленно или возвращает ошибку вместо JSON; сначала проверьте код ответа и размер файла.

Пассивные источники и прямые обращения

Чтение уже существующей записи Shodan/Censys/urlscan — запрос к провайдеру. Новый scan в urlscan заставляет сервис посетить сайт; публичный результат может раскрыть переданный URL. Не отправляйте туда ссылки с токенами, личные кабинеты и закрытые документы. curl к исследуемому сайту — прямое обращение и может быть записан в его журнал.

Subfinder (доустановка) подходит для сбора имён из пассивных источников:

subfinder -h
subfinder -d example.com -silent -o subdomains.txt

Источники с API требуют ключей и квот. Не добавляйте автоматически цепочку к инструментам HTTP-проверки: это меняет характер исследования.

Сила корреляций

Слабые признаки: общий IP, CDN, nameserver, WordPress-тема. Средние: редкий аналитический идентификатор в согласованный период, похожая структура документов. Более сильные: опубликованные юридические реквизиты и подтверждённая реестром связь. Даже редкий идентификатор может быть скопирован шаблоном или установлен подрядчиком.

Источники: https://www.icann.org/rdap ; https://docs.projectdiscovery.io/opensource/subfinder/running ; https://developer.shodan.io/api ; https://docs.censys.com/ ; https://docs.urlscan.io/

04 • SOCMINT, ники и разрешение идентичностей

Поиск кандидатов

Начинайте с точного ника и его публичной истории. Отмечайте переименования, platform ID, ссылки из профиля и период активности. Platform ID, когда доступен, часто устойчивее отображаемого имени, но не переносится автоматически между платформами.

Sherlock установлен. Для собственного ника сначала ограничьте проверку одним сайтом:

sherlock --help
sherlock YOUR_OWN_HANDLE --site GitHub --timeout 15 --print-found

Это сетевые запросы к платформе. Полный запуск по всем сайтам делает существенно больше обращений. Результат — список кандидатов для ручной проверки; ответы 200, редиректы, заглушки и антибот-защита создают ложные совпадения.

Maigret — дополнительный инструмент: не установлен. Он полезен для расширенного анализа публичных профилей и отчётов; синтаксис и поддержка сайтов меняются. Устанавливайте отдельно от Sherlock:

python3 -m venv .venv-maigret
.venv-maigret/bin/python -m pip install maigret
.venv-maigret/bin/maigret --help

Совместимость Maigret с Python 3.14 в этой сборке не проверялась. При конфликте используйте поддерживаемую проектом версию Python в отдельном окружении; не меняйте системный Python.

Проверка соответствия

Проверяйте независимые признаки: двусторонние ссылки между профилями, совпадение публичного сайта, последовательность биографии, редкий самобытный контент и согласованную хронологию. Один аватар и ник — слабое основание: копирование и выдача себя за другого распространены.

Создайте отдельную строку на каждого кандидата. Храните как положительные, так и отрицательные признаки. Если профиль объявляет другой регион или историю, выясните объяснение вместо автоматического объединения. Совпадение редкого ника повышает интерес, но не заменяет доказательства.

Анализ публичного поведения

Для исследований общественных дискуссий используйте разрешённые выгрузки: время публикации, URL, авторский ID, тип взаимодействия, исходный пост. Не смешивайте репосты, цитирования и поддержку. Для временных паттернов учитывайте часовые пояса, отложенные публикации и инструменты управления аккаунтами.

Похожие тексты и синхронность — индикатор для проверки, а не доказательство координации. Проверяйте общий пресс-релиз, час публикации новости, рекомендации платформы и копирование популярного шаблона. Автоматические «bot scores» не являются надёжным установлением личности.

Источники: https://github.com/sherlock-project/sherlock ; https://github.com/soxoj/maigret ; https://bellingcat.gitbook.io/toolkit

05 • Компании, бенефициары, санкции и закупки

От названия к юридической сущности

Выберите юрисдикцию и найдите регистрационный номер. Сохраните полное наименование, статус, дату выписки, прежние названия и адрес. Затем исследуйте директоров, владельцев, отчётность, дочерние структуры и изменения во времени. Компания с похожим названием в другой стране — отдельная сущность до доказательства обратного.

Приоритет: национальный реестр → поданные документы → регулятор и суд → независимый агрегатор. OpenCorporates полезен как указатель к реестру. GLEIF связывает юридические лица через LEI и доступные данные об отношениях; отсутствие LEI не означает отсутствие компании, а корпоративные отношения не дают полного списка конечных физических владельцев.

Практический маршрут

Найдите сайт → возьмите legal notice и номер компании → проверьте номер в реестре → скачайте документы за нужный период → выделите контролирующих лиц и цепочку долей → проверьте переименования → сравните с публичными договорами и закупками. В графе отличайте юридическое владение, должность, контроль и просто совместный адрес.

Германия: Handelsregister и Unternehmensregister. Великобритания: Companies House. ЕС: TED для закупок. США: SEC EDGAR для отчётности публичных компаний и других подателей. Для каждой страны проверяйте, какие сведения реестр публикует и к какой дате они относятся; платность и регистрация различаются.

Санкции и PEP

OpenSanctions — агрегатор для поиска кандидатов; окончательно проверяйте идентификаторы и актуальную запись у органа, который ввёл ограничение. Сверяйте дату рождения, юрисдикцию, регистрационный номер, aliases и ссылки на основание включения. Совпадение имени не равно совпадению лица. PEP-статус сам по себе не означает противоправную деятельность.

Для коммерческого использования данных OpenSanctions требуется лицензия; веб-доступ и API имеют разные условия. Не принимайте агрегатор за юридическое заключение.

Сложные случаи

Общий адрес агента регистрации — слабая связь. Директор, обслуживающий сотни компаний, не обязательно бенефициар. Указанный процент может относиться к голосам или косвенному контролю. Не складывайте доли по разным датам. Для каждой ступени цепочки фиксируйте документ и действовавший период.

При отсутствии данных формулируйте границу: «В реестре X на дату Y опубликован директор Z; конечный владелец по использованным открытым источникам не установлен».

Источники: https://gijn.org/resource/researching-corporations-and-their-owners ; https://www.gleif.org/en/lei-data/gleif-api ; https://docs.aleph.occrp.org/ ; https://www.opensanctions.org/docs/ ; https://standard.openownership.org/

06 • GEOINT, геолокация и хронолокация

От наблюдений к месту

Сначала выпишите только видимые признаки: дорожная разметка, язык вывесок, сторона движения, рельеф, растительность, конфигурация крыш, столбы, характерные объекты. Затем формулируйте несколько региональных гипотез. Не начинайте с любимого места и не подгоняйте под него признаки.

Сужайте область от страны к району, затем к точке и направлению камеры. Сравнивайте геометрию: угол пересечения улиц, расстояние до объекта, линию горизонта, последовательность зданий. Минимум два независимых устойчивых ориентира полезнее одного похожего фасада.

Источники

OpenStreetMap и Overpass — объекты и теги; Google Earth — рельеф и исторические изображения, где доступны; Copernicus Browser — спутниковые наблюдения; QGIS — измерения, слои и собственные карты. Не считайте карту полной: объект может существовать без отметки, а отметка — пережить демонтаж.

Для Copernicus фиксируйте спутник, идентификатор продукта, время съёмки, уровень обработки, облачность и разрешение. Пиксель не равен объекту; размер и контраст ограничивают различимость. Изменение цвета может быть сезонностью, атмосферой или обработкой. Для сравнения выбирайте согласованные каналы и близкий сезон.

Время

Сопоставляйте раннюю публикацию, EXIF, погоду, состояние стройки, растительность, вывески и спутниковые снимки до/после. По теням можно проверить совместимость времени при известных месте, ориентации и геометрии; одной длины тени недостаточно для точной даты.

SunCalc — проверка солнечной геометрии. Используйте заявленную дату как гипотезу, не вводите её незаметно как доказанный факт. Время загрузки не задаёт время съёмки; местное время зависит от зоны и переходов сезонного времени.

Воспроизводимый результат

Сохраните исходный кадр, аннотированную рабочую копию, карту, координаты WGS84, направление камеры, список ориентиров и отклонённые кандидаты. Точку, область неопределённости и оценку уверенности показывайте отдельно. Для исторического снимка укажите дату самого слоя, а не дату открытия карты.

Источники: https://documentation.v1.dataspace.copernicus.eu/Applications/Browser.html ; https://docs.qgis.org/latest/en/docs/ ; https://wiki.openstreetmap.org/wiki/Overpass_API ; https://bellingcat.gitbook.io/toolkit ; https://www.suncalc.org/

07 • Фото, видео, метаданные и проверка контекста

Базовая цепочка

Сохраните доступный оригинал → вычислите хеш → найдите ранние появления → извлеките метаданные → проверьте место и время → сравните независимые материалы. Репост с правильным изображением и ложной подписью встречается чаще, чем убедительно доказуемый монтаж.

ExifTool установлен. Команды ниже читают сведения и не переписывают исходный файл:

exiftool -a -G1 -s photo.jpg
exiftool -json photo.jpg > metadata.json
exiftool -GPSLatitude -GPSLongitude -DateTimeOriginal -OffsetTimeOriginal photo.jpg
shasum -a 256 photo.jpg

Соцсети часто удаляют EXIF. Его отсутствие не доказывает подделку, а наличие не гарантирует подлинность: поля можно изменить. Сверяйте время камеры с часовым поясом и независимыми наблюдениями.

Обратный поиск

Google Lens, TinEye и другие поисковики могут находить разные фрагменты. Проверяйте полный кадр, обрезки характерных деталей и зеркальное отражение. Дата результата в выдаче не доказывает первое появление; откройте найденную страницу и её исторические копии.

InVID-WeVerify помогает исследовать медиа и ключевые кадры. Доступность отдельных функций зависит от внешних сервисов. Перед загрузкой оцените, содержит ли файл чувствительную информацию; локальный ExifTool не отправляет файл стороннему сервису.

Видео: доустановка ffmpeg

ffprobe -v error -show_format -show_streams -of json video.mp4 > video-info.json
mkdir -p frames
ffmpeg -i video.mp4 -vf fps=1/10 frames/frame-%05d.jpg

Это один кадр примерно каждые 10 секунд, а не гарантированное извлечение всех монтажных границ. Для коротких сцен выбирайте меньший интервал. Сравнивайте объекты между кадрами и учитывайте переменную частоту кадров, обрезку и перекодирование.

Проверка манипуляций

Не делайте вывод по одному ELA-фильтру, шуму или детектору AI. Сжатие, повторное сохранение и обработка платформой меняют артефакты. Подтверждение требует согласованной истории происхождения, признаков редактирования и независимого контекста. Content Credentials могут дать сведения о подписанной истории, но отсутствие подписи не доказывает фальсификацию, а наличие не делает правдивой подпись к сцене.

Источники: https://github.com/ExifTool/exiftool ; https://www.invid-project.eu/tools-and-services/invid-verification-plugin/ ; https://ffmpeg.org/ffprobe.html ; https://ffmpeg.org/ffmpeg-filters.html ; https://spec.c2pa.org/

08 • Документы, OCR и большие массивы

Сохранение и извлечение

Храните полученный файл отдельно от преобразований. Для PDF различайте текстовый слой, скан и гибридный документ. Извлечение текста не гарантирует правильный порядок колонок, строк таблицы или сносок.

Доустановка poppler и tesseract:

pdfinfo report.pdf
pdftotext -layout report.pdf report.txt
rg -n -i 'registration|director|company' report.txt
pdftoppm -f 1 -singlefile -png -r 200 report.pdf page
# При наличии английской и русской языковых моделей:
tesseract page.png ocr -l rus+eng

Наличие моделей проверьте через tesseract --list-langs. OCR ошибается в фамилиях, номерах, суммах и похожих символах. Любое значимое совпадение проверяйте на исходной странице и сохраняйте номер страницы.

Обработка массивов

Начинайте с инвентаризации: имя, размер, SHA-256, источник, время получения, тип, язык. Затем дедупликация по байтам, извлечение текста, нормализация дат и поиск идентификаторов. Визуально одинаковые файлы могут иметь разные хеши после перекодирования; это отдельный уровень сходства.

OpenRefine полезен для очистки и кластеризации таблиц. Синтаксически похожие названия не обязательно обозначают одну сущность. Перед объединением сверяйте реестровый номер, страну и дату. Reconciliation обращается к внешнему сервису: убедитесь, что допустимо передавать ему эти поля.

Aleph удобен для полнотекстового поиска, сущностей и связей в исследовательском корпусе. Доступ к наборам различается. Не загружайте непубличные документы в общий сервис без понимания прав доступа. Локальная установка Aleph существенно сложнее простой CLI-утилиты и не выполнена в этой сборке.

Контроль качества

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

Источники: https://github.com/tesseract-ocr/tessdoc ; https://openrefine.org/docs.html ; https://openrefine.org/docs/technical-reference/clustering-in-depth ; https://docs.aleph.occrp.org/

09 • Архивирование, история и происхождение

Три разных задачи

Скриншот фиксирует внешний вид. Сохранённый HTML помогает изучать структуру и текст. WARC/WACZ предназначен для сохранения веб-сеанса и воспроизведения связанных ресурсов. Ни один формат не гарантирует полноту динамической страницы.

SingleFile — расширение для сохранения страницы одним HTML. Webrecorder ArchiveWeb.page и Browsertrix полезны для более сложного веб-архивирования. Для каждого захвата сохраняйте исходный URL, UTC-время, сведения о браузере, инструменте и версии, видимый статус входа, полученные файлы и SHA-256.

Исторические сайты

Wayback Machine помогает увидеть опубликованные архивные снимки. Дата захвата не равна дате первой публикации; отсутствие снимка не доказывает отсутствие страницы. Ресурсы могут загружаться из другого периода или с живого сайта. Проверяйте каждый значимый элемент отдельно.

При сравнении двух дат фиксируйте exact URL, редиректы, финальный адрес и язык. Баннер согласия, региональная выдача и персонализация могут создавать ложное впечатление изменения контента.

Минимальная фиксация в терминале

curl --fail --location --max-time 30 --dump-header headers.txt --output page.html 'https://example.com/'
shasum -a 256 page.html > page.sha256

Это прямое обращение к сайту. curl сохраняет полученный HTML, но не исполняет JavaScript и не скачивает все зависимости. Для полноценной визуальной копии используйте браузерный захват и проверьте результат офлайн.

Контроль

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

Публикация в публичный архив раскрывает содержимое и ссылку. Для материалов с персональными данными выбирайте локальную фиксацию и ограниченный доступ. Сама фиксация не заменяет проверку происхождения.

Источники: https://github.com/gildas-lormeau/SingleFile ; https://webrecorder.net/ ; https://archiveweb.page/ ; https://web.archive.org/

10 • Специализированные направления

Транспорт и логистика

Авиация: OpenSky Network — наблюдения ADS-B; регистрационные реестры — сведения о борте. Различайте регистрационный номер, ICAO hex и callsign; они могут меняться. Пробел в треке не доказывает отключение транспондера: важны покрытие и доступность приёмников.

Море: IMO обычно полезнее меняющегося названия; сверяйте MMSI, флаг, тип судна и период. AIS — сообщение о положении, а не неизменяемое доказательство: бывают задержки, ошибки и манипуляции. Груз и фактического бенефициара нельзя выводить из одного трека. Сопоставляйте портовые сообщения, реестры и спутниковые наблюдения.

Экология и изменения местности

NASA FIRMS помогает исследовать наблюдения термальных аномалий. Точка не устанавливает причину пожара или точный контур события. Проверяйте спутник, время наблюдения, пространственное разрешение и независимые снимки. Copernicus полезен для согласованных сравнений до/после; погода и сезонность — обязательные альтернативы.

Блокчейн

Blockstream Explorer и Etherscan позволяют просматривать публичные транзакции соответствующих сетей. Зафиксируйте chain, высоту блока, tx hash, адрес, токен, decimals, время и статус финальности. Передвижение токена отличается от внутреннего вызова контракта и комиссии.

Адрес не равен человеку. Метка сервиса — внешнее утверждение, требующее источника. Биржевые кошельки, мосты, мультисиг и контракты усложняют атрибуцию. Визуальная цепочка переводов не доказывает принадлежность промежуточных адресов одному субъекту. Не публикуйте уверенную идентификацию только по кластеризации.

Код и публичные репозитории

GitHub пригоден для проверки опубликованных связей проекта, домена и организации. Подпись автора коммита может быть произвольной; верификация подписи говорит о подписи коммита, а не автоматически о юридической личности. История форка и импорт старого проекта могут объяснять совпадения файлов.

При случайном обнаружении действующего секрета не проверяйте его работоспособность. Для OSINT достаточно зафиксировать публичный контекст и воспользоваться каналом ответственного уведомления владельца.

Источники: https://opensky-network.org/ ; https://www.imo.org/en/OurWork/MSAS/Pages/IMO-identification-number-scheme.aspx ; https://firms.modaps.eosdis.nasa.gov/ ; https://blockstream.info/ ; https://etherscan.io/ ; https://docs.github.com/en/authentication/managing-commit-signature-verification

11 • Графы, временные связи и аналитика

Модель данных

Узел — конкретная сущность с устойчивым ID и типом. Ребро — утверждение об отношении, а не визуальное удобство. Для ребра нужны source_id, relation, valid_from/valid_to, observed_at, confidence и объяснение. Сохраните исходную строку отдельно от нормализованного поля.

Пример: компания C1 → owns_domain → D1 с документом S1 и периодом 2024–2025. Совместный хостинг — другое отношение, не owns_domain. Не делайте вывод о текущем владении из исторического ребра.

Gephi подходит для анализа и визуализации сетей; Maltego — для преобразований и исследовательского графа, часть функций зависит от лицензий и внешних провайдеров. Aleph помогает связывать сведения корпуса. Ни один инструмент не проверяет истинность всех добавленных связей автоматически.

Разрешение сущностей

Сначала точные идентификаторы. Затем кандидаты по нормализованным именам и адресам. Затем ручная проверка по независимым атрибутам. Не удаляйте знаки и диакритику без сохранения оригинала: чрезмерная нормализация склеивает разные сущности.

Транзитивность совпадений опасна: A похоже на B, B похоже на C не гарантирует, что A = C. Особенно это важно для общих адресов, бухгалтеров, регистраторов и массовых доменных провайдеров.

Метрики и визуальные ловушки

Высокая степень узла может означать посредника или полноту данных, а не влиятельность. Центральность зависит от границы корпуса. Кластеризация показывает структуру записанных связей, не автоматически социальную группу. Всегда сравнивайте результат с механизмом сбора: если данные собирали из одного центрального аккаунта, его центральность ожидаема.

Делайте два графа: исследовательский со всеми гипотезами и итоговый только с проверенными связями. Различайте типы рёбер стилем и показывайте дату среза. Сохраните исходные таблицы: красивое изображение без данных плохо проверяется.

В templates есть entities.csv и edges.csv. Для Gephi импортируйте узлы и рёбра раздельно через Data Laboratory; колонкам Source и Target нужны существующие ID. В practice — небольшой синтетический пример без реальных людей.

Источники: https://docs.gephi.org/desktop/User_Manual/Import/CSV_Format/ ; https://openrefine.org/docs/manual/reconciling ; https://docs.aleph.occrp.org/ ; https://www.maltego.com/

12 • Автоматизация и воспроизводимость

Выбор стека

Минимальный рабочий стек уже установлен: Sherlock, ExifTool, jq, ripgrep, curl и dig. Для конкретной задачи добавляйте один компонент, проверяйте его --help, версию, источник установки и формат вывода. Пакет не запускает расследования или сбор сведений о людях автоматически.

Subfinder — пассивные доменные источники. theHarvester — сбор из выбранных провайдеров. SpiderFoot и Recon-ng — модульные среды: каждый модуль имеет собственное сетевое поведение, ключи и требования. Не включайте все модули ради полноты: это увеличивает шум, стоимость и число обращений.

Проверенный маршрут установки theHarvester из текущего README

Инструмент не установлен в пакет. Доустановка uv через существующий Homebrew:

brew install uv
git clone https://github.com/laramies/theHarvester.git
cd theHarvester
uv sync
uv run theHarvester -h
uv run theHarvester -d example.com -b crtsh,certspotter -f report

README на дату исследования указывает Python 3.14; uv выбирает версию проекта. Пример использует явно выбранные пассивные источники. Перед выполнением перечитайте актуальный README. Команды установки здесь подготовлены по документации, но end-to-end запуск theHarvester не проверен.

Пакетные процессы

Для каждого запроса храните run_id, версию, параметры без секретов, входной список, время начала/конца, статус источника, сырой ответ и нормализованные записи. Отделяйте «нет результатов» от «ошибка», «квота» и «частичный ответ».

Ограничивайте скорость, используйте таймауты и конечное число повторов с увеличением паузы. Не обходите CAPTCHA и не продолжайте бесконечно после блокировки. Для сравнения дней сначала нормализуйте данные, затем отделяйте новые записи от изменившихся и исчезнувших.

sort -u yesterday.txt > yesterday.sorted
sort -u today.txt > today.sorted
comm -13 yesterday.sorted today.sorted > added.txt
comm -23 yesterday.sorted today.sorted > missing.txt

Исчезнувшее из ответа провайдера не обязательно удалено из интернета. Сверяйте статус запуска и полноту источника.

Секреты и локальная утилита

API-ключи храните вне отчёта и публичного репозитория. Не вставляйте их прямо в примеры команд и журналы. osint-case работает локально: создаёт структуру дела, потоково вычисляет SHA-256 и извлекает URL из локального текста без сетевых запросов. Он не собирает данные с сайтов.

Источники: https://github.com/laramies/theHarvester ; https://github.com/smicallef/spiderfoot ; https://github.com/lanmaster53/recon-ng ; https://docs.projectdiscovery.io/opensource/subfinder/running

13 • Четыре воспроизводимых сценария

A. Проверить связь компании с сайтом на дату

Вход: домен, дата, название. Создайте дело; найдите юридические реквизиты и архивную копию; проверьте регистрационный номер в реестре; изучите документы за нужный период; добавьте DNS/CT как контекст. Выход: временной граф с источниками. Критерий успеха: связь опирается на реквизиты и документы, а инфраструктурные совпадения обозначены отдельно. Альтернатива: сайт скопировал реквизиты или обслуживался подрядчиком.

B. Проверить подпись к изображению

Вход: файл и утверждение о месте/дате. Хешируйте оригинал; извлеките EXIF; выполните обратный поиск целого и деталей; найдите ранние публикации; проверьте ориентиры; сопоставьте временные признаки. Выход: таблица «утверждение / наблюдение / источник / ограничение». Критерий успеха: отдельно установлены происхождение, место и временной диапазон; неизвестное прямо отмечено.

C. Аудит собственного публичного следа

Вход: ваши ники и разрешённые к проверке аккаунты. Сначала ограниченный Sherlock; затем ручная проверка кандидатов и двусторонних ссылок; зафиксируйте устаревшие профили и публичные контактные сведения. Выход: список подтверждённых аккаунтов и действий владельца. Критерий успеха: ложные совпадения исключены; чужие профили не объединены только по нику.

D. Исследовать закупочную связь

Вход: номер тендера и поставщик. Найдите первичную карточку и документы; запишите юридический номер победителя, даты, валюту и сумму; проверьте компании и должностных лиц на соответствующую дату; сопоставьте фактические изменения контракта. Выход: хронология и граф документированных отношений. Критерий успеха: совпадение адреса или директора само по себе не названо конфликтом интересов.

Учебные данные

practice содержит вымышленные сущности, ссылки example.com и намеренно слабую связь «shared_address». Задание: собрать граф, который показывает наблюдаемую связь, но не приписывает общего владельца. Потом найдите, какого первичного документа не хватает, чтобы усилить вывод.

Проверка готовности отчёта

Можно ли повторить запросы? Сохранены ли оригиналы и версии инструментов? Разведены ли даты события, публикации и получения? Есть ли независимость источников? Для каждого вывода указаны альтернативы? Не преувеличена ли полнота охвата? Можно ли открыть каждую ссылку и найти нужный фрагмент? Итоговый читатель должен видеть границу между наблюдением и выводом.

14 • Расширения, дополнительные программы и обучение

Браузерные расширения

SingleFile — сохранить страницу в HTML. Устанавливайте через ссылку на магазин из официального репозитория: https://github.com/gildas-lormeau/SingleFile . Проверьте издателя и запрашиваемые разрешения. После установки сохраните example.com и откройте копию без сети.

InVID-WeVerify — помощник проверки фото/видео. Официальная страница: https://www.invid-project.eu/tools-and-services/invid-verification-plugin/ . Установите расширение из ссылки проекта; функции, использующие внешние сервисы, могут отличаться от старых видеоруководств. Тест: откройте собственное изображение и проверьте метаданные; сравните их с локальным ExifTool.

Расширения не установлены автоматически: их установку и разрешения подтверждает пользователь в браузере. В доступном каталоге плагинов по запросу OSINT / Maltego / Shodan подходящей интеграции не найдено. Это не утверждение об отсутствии таких плагинов во всех каталогах.

Доустановка по задачам

# Обработка локального видео и PDF, OCR:
brew install ffmpeg poppler tesseract tesseract-lang
# Пассивные доменные источники:
brew install subfinder

Эти дополнительные команды не выполнялись. QGIS, Gephi, OpenRefine и Maltego выбирайте по задаче и скачивайте с сайтов разработчиков. Условия лицензирования и объём установки различаются. Не нужен весь Kali Linux, чтобы использовать OSINT на Mac.

SpiderFoot: сначала прочитайте README и список модулей. Проверка совместимости его зависимостей с Python 3.14 не выполнена. Для воспроизводимости разумно использовать отдельную среду или контейнер поддерживаемой версии, не смешивая её с окружением Sherlock.

План на четыре недели

Неделя 1: метод, поиск, фиксация; сделайте дело по собственному домену или example.com и напишите двухстраничный отчёт с ограничениями.

Неделя 2: компании и инфраструктура; постройте временной граф на основе реестровых документов и архивного сайта. Удалите неподтверждённые выводы по общему IP.

Неделя 3: GEOINT и медиа; подтвердите место и диапазон времени для учебного материала Bellingcat. Сохраните ориентиры и отвергнутые гипотезы.

Неделя 4: корпус документов и автоматизация; извлеките текст собственных PDF, создайте журнал и сравнение двух запусков. Передайте материалы другому исследователю для повторения.

Практика: https://challenge.bellingcat.com/ . Руководства и каталог: https://bellingcat.gitbook.io/toolkit ; https://gijn.org/resource/researching-corporations-and-their-owners ; https://osintframework.com/ . В пакете нет пиратских копий платных книг или курсов.

15 • Nmap: инвентаризация своей сети

Nmap и arp-scan — активная сетевая разведка. Они дополняют OSINT, но отправляют пакеты исследуемым устройствам. Используйте их в своей сети или в согласованном диапазоне. В этой сборке проверяется только localhost; домашняя сеть автоматически не сканируется.

Сначала интерфейс, маршрут и диапазон

networksetup -listallhardwareports
route -n get default
ifconfig
nmap --iflist

Wi-Fi не всегда en0. VPN может менять маршрут по умолчанию, а гостевая сеть — изолировать клиентов. Частный адрес сам по себе не означает, что вся подсеть принадлежит вам. Не выводите маску /24 из одного адреса: посмотрите netmask в ifconfig и настройки маршрутизатора.

Поэтапный процесс

Начните с localhost, затем одного своего устройства и только потом со своей согласованной подсети. Сохраните отдельную папку для каждого запуска.

mkdir -p reports/network
# Контрольный запуск на этом компьютере:
nmap -sT -Pn -n -p 22,80,443,8000 127.0.0.1 -oA reports/network/localhost

-sT использует обычное TCP-подключение; -Pn пропускает поиск хоста; -n отключает обратные DNS-запросы; -p задаёт порты; -oA сохраняет текст, XML и grepable-формат. Не используйте -Pn бездумно на большом диапазоне: будут проверяться и неотвечающие адреса.

Примеры ниже требуют замены адреса на адрес вашего устройства/подсети:

# Обнаружение устройств без сканирования портов:
nmap -sn -n 192.168.1.0/24 -oA reports/network/discovery
# Ограниченный TCP-скан одного устройства:
nmap -sT -n --top-ports 100 -T3 192.168.1.10 -oA reports/network/top100
# Все TCP-порты одного своего тестового хоста:
nmap -sT -n -p- -T3 --max-retries 2 --host-timeout 10m 192.168.1.10 -oA reports/network/alltcp
# Уточнение сервисов только на найденных портах:
nmap -sT -sV --version-light -n -p 22,80,443 192.168.1.10 -oA reports/network/services

--host-timeout ограничивает продолжительность, но может оставить результат неполным. -sV отправляет протокольные пробы и увеличивает взаимодействие. -T3 выбран как умеренный старт, а не гарантия отсутствия влияния на устройства.

Права и другие типы проверки

SYN-скан -sS, UDP -sU и определение ОС -O обычно требуют повышенных прав. Для одного своего лабораторного хоста:

sudo nmap -sS -n -p 22,80,443 -T3 192.168.1.10
sudo nmap -sU -n -p 53,123,161 -T3 --max-retries 1 192.168.1.10

UDP часто даёт open|filtered: отсутствие ответа не отличает молчащий сервис от фильтра. Сокращение повторов снижает точность. Для IPv6 укажите -6 и известный адрес своего узла; перебор всей /64 практически не является разумной стратегией обнаружения.

Чтение результата

open — порт принимает соответствующее взаимодействие; closed — узел ответил, но слушателя нет; filtered — фильтрация или отсутствие достаточного ответа. Это наблюдение с конкретной точки сети и в конкретное время. Название сервиса по номеру порта — предположение, пока не выполнена проверка протокола. Баннер и версия не доказывают наличие уязвимости: возможны backport исправления, прокси и изменённые строки.

Сохраните адрес источника, интерфейс/VPN, время, команду, версию Nmap и все ошибки. Для сравнения XML используйте ndiff, если он входит в установленный комплект; наличие сначала проверьте через command -v ndiff. Различия в точке наблюдения или полноте скана могут объяснить изменение портов.

NSE

Не запускайте --script all. Перед конкретным скриптом прочитайте описание, категории и действие:

nmap --script-help ssl-cert
nmap --script-help http-title
nmap -sT -sV -n -p 443 --script ssl-cert 192.168.1.10

Это примеры получения сертификата/сведений, а не разрешение запускать любые категории. Даже пометка safe не заменяет оценки поведения на конкретном оборудовании. Скрипты brute, intrusive и exploit не входят в учебные сценарии пакета.

Источники: https://nmap.org/book/man.html ; https://nmap.org/book/man-host-discovery.html ; https://nmap.org/book/man-port-scanning-basics.html ; https://nmap.org/book/man-version-detection.html ; https://nmap.org/nsedoc/

16 • ARP, маршруты, скорость и захват пакетов

Какой инструмент для чего

Nmap — доступность хостов, порты и сервисы. arp-scan — поиск IPv4-устройств в локальном широковещательном сегменте. mtr — наблюдение маршрута, задержек и ответов промежуточных узлов. iperf3 — измерение пропускной способности между двумя контролируемыми устройствами. tcpdump/Wireshark — захват и разбор видимого вашему интерфейсу трафика.

arp-scan, mtr и iperf3 установлены через Homebrew. tcpdump входит в macOS. Графический Wireshark и tshark в эту установку не включены; официальный маршрут установки ниже.

Локальные устройства

arp -an
# en0 замените на интерфейс своей локальной сети:
sudo arp-scan --interface=en0 --localnet

arp -an показывает кэш наблюдений, не полный список сети. arp-scan не проходит через маршрутизатор и не обнаруживает IPv6. Производитель по MAC — справочная догадка: рандомизация MAC и виртуальные интерфейсы ограничивают атрибуцию.

Маршрут и потери

# 192.168.1.1 замените на свой шлюз:
ping -c 5 192.168.1.1
traceroute -m 12 192.168.1.1
sudo mtr --report --report-cycles 10 --no-dns 192.168.1.1

Потери на промежуточном узле при нормальном результате на последующих могут быть ограничением ICMP-ответов, а не потерей пользовательского трафика. Маршрут туда и обратно может различаться. Повторяйте измерения в разные периоды, сохраняя время и тип соединения Wi-Fi/Ethernet/VPN.

Скорость между своими устройствами

На сервере запустите однократный тестовый приёмник; затем на клиенте:

# На первом устройстве, ожидает один тест:
iperf3 -s -1
# На втором устройстве, адрес первого:
iperf3 -c 192.168.1.10 -t 10 -J > iperf-result.json

Тест создаёт реальную нагрузку и требует открытого TCP 5201 между устройствами. Для теста обратного направления запустите сервер снова и добавьте клиенту -R. UDP-тест начинайте с заданной умеренной полосы -u -b 5M -t 10. Это измерение конкретного маршрута и условий, не универсальная «скорость интернета».

Ограниченный захват

sudo tcpdump -D
# Учебный захват только DNS на выбранном интерфейсе, максимум 100 пакетов:
sudo tcpdump -i en0 -nn -s 0 -c 100 -w dns-sample.pcap 'port 53'
# Прочитать сохранённый файл:
tcpdump -nn -r dns-sample.pcap

Если DNS-пакетов нет, команда будет ждать; завершите Ctrl+C. DNS-over-HTTPS/TLS не попадёт в фильтр port 53 как обычный DNS. На коммутируемой сети интерфейс обычно не видит весь чужой unicast-трафик; режим promiscuous сам по себе этого не меняет. PCAP может содержать имена, адреса и незашифрованные данные: храните его как материал расследования.

Wireshark: доустановка и фильтры

Официальный сайт: https://www.wireshark.org/download.html . На macOS для живого захвата могут потребоваться BPF-разрешения; используйте официальный установщик и его инструкции. Для анализа уже сохранённого PCAP права захвата не нужны.

Capture filter ограничивает записываемые пакеты: host 192.168.1.10 and port 443. Display filter отбирает уже записанные пакеты:

dns
ip.addr == 192.168.1.10
tcp.flags.syn == 1 && tcp.flags.ack == 0
tcp.analysis.retransmission
tls.handshake.type == 1

Повторные передачи могут быть реальными потерями или особенностью точки захвата. Большинство содержимого TLS зашифровано; видимые метаданные не раскрывают автоматически URL и тело запроса. Захват не включает MITM, подмену ARP или расшифровку чужих сессий.

Практикум

На собственном тестовом устройстве поднимите известный сервис → убедитесь в локальном слушателе → проверьте его с другого своего узла → сравните Nmap и журнал сервиса → исследуйте трафик этого теста → закройте сервис и повторите проверку. Запишите, какие наблюдения изменились и какие альтернативы объясняют результат.

Источники: https://github.com/royhills/arp-scan ; https://github.com/traviscross/mtr ; https://software.es.net/iperf/invoking.html ; https://www.tcpdump.org/manpages/tcpdump.1.html ; https://www.wireshark.org/docs/wsug_html_chunked/