003 — OSINT: полная карта открытых источников
Всё, что можно узнать о человеке, фирме, месте и объекте — без единого запроса в закрытые базы
Часть 1: Философия
Ты оставляешь след везде. Каждый пост, фото, заказ, логин, маршрут. Эти данные уже публичны — просто разложены по сотням мест.
OSINT — искусство собирать эти куски в единую картину.
- Фрагмент 1: ник на форуме
- Фрагмент 2: почта в утечке
- Фрагмент 3: фото с геолокацией
- Фрагмент 4: номер телефона в объявлении
- Фрагмент 5: коммент в соцсети
По отдельности — мусор.
Вместе — досье.
Часть 2: Классификация
OSINT делится на дисциплины. У каждой свои инструменты и методы.
Часть 3: SOCMINT — человек через соцсети
Метод 1: Пивот от ника
Один ник почти всегда используется на десятках площадок. Это точка входа.
- WhatsMyName (web) — 600+ площадок
- Sherlock (CLI) — быстрый перебор
- Maigret (CLI) — Sherlock на стероидах
- Nexfil (CLI) — фокус на стриминг и киносайты
- Blackbird (CLI) — быстрый + поиск аккаунтов
- ID Crawl — веб-интерфейс
# Установка pip install sherlock-project # Поиск ника на 400+ сайтах sherlock vatican --timeout 10 # Результат: # [+] GitHub: https://github.com/vatican # [+] Telegram: https://t.me/vatican # [+] Steam: https://steamcommunity.com/id/vatican # [+] Reddit: https://reddit.com/user/vatican # [+] SoundCloud: https://soundcloud.com/vatican
# Поддерживает больше сайтов + вытаскивает доп. инфо maigret vatican --html report # Парсит аватарки, био, количество постов # Генерирует HTML-отчёт со всеми найденными аккаунтами
Метод 2: Пивот от email
Почта — ключ к большинству сервисов.
- Email → leaks → пароли
- Email → GitHub → код, коммиты, юзернейм
- Email → Gravatar → аватар
- Email → соцсети → восстановление → маска номера
- Epieos — покажет где зарегистрирован email
- EmailRep — репутация и возраст почты
- Holehe — проверка регистрации на 120+ сайтах
Holehe — где зарегистрирована почта:
pip install holehe holehe target@example.com # [+] Instagram — зарегистрирован # [+] Twitter — зарегистрирован # [+] Spotify — зарегистрирован # [+] Discord — зарегистрирован
Метод 3: Пивот от телефона
Номер телефона — это оператор, регион, и часто — имя.
- Номер → оператор/регион → гео
- Номер → Telegram → аватар, юзернейм, био
- Номер → мессенджеры (WhatsApp, Viber)
- Номер → объявления (Avito, Юла)
- Номер → утечки
Определение оператора и региона:
Портация номеров между операторами делает определение оператора неточным
import phonenumbers
from phonenumbers import carrier, geocoder, timezone
def analyze_phone(number_str):
try:
number = phonenumbers.parse(number_str, "RU")
if not phonenumbers.is_valid_number(number):
return {"valid": False}
return {
"valid": True,
"country": geocoder.description_for_number(number, "ru"),
"carrier": carrier.name_for_number(number, "ru"),
"timezone": str(timezone.time_zones_for_number(number)),
"type": phonenumbers.number_type(number),
"formatted": phonenumbers.format_number(
number, phonenumbers.PhoneNumberFormat.INTERNATIONAL
)
}
except Exception as e:
return {"error": str(e)}Telegram как OSINT-инструмент:
- Метод 1: Добавление в контакты
Telegram покажет: аватар, имя, юзернейм, био, последний раз онлайн - Метод 2: через Telegram API
даже без сохранения контакта можно получить:
- аватар
- юзернейм
- last seen
- статус (был недавно/онлайн/офлайн)
api id и api hash можно получить тут
https://my.telegram.org/auth
from telethon.sync import TelegramClient
api_id = API_ID
api_hash = "API_HASH"
with TelegramClient("session", api_id, api_hash) as client:
# Поиск по номеру
contact = client.get_entity("+79991234567")
print(f"Имя: {contact.first_name} {contact.last_name}")
print(f"Юзернейм: @{contact.username}")
print(f"Телефон: {contact.phone}")
print(f"Статус: {contact.status}")
# Скачать аватар
client.download_profile_photo(contact, file="avatar.jpg")
# Получить био
full = client.get_entity(contact)
print(f"Био: {full.about}")Определение наличия в мессенджерах:
- truecaller — имя по номеру (платно, но есть триал)
- eyecon — то же
- GetContact — показывает как записан в контактах других
- NumBuster — аналогично
Метод 4: Кросс-корреляция
Самое мощное — когда данные из разных источников сходятся.
Ник "vatican"
→ Sherlock находит Twitter, GitHub, Telegram
→ GitHub → email в коммите → vatican@example.com
→ Holehe → почта зарегистрирована в VK, Avito
→ VK → настоящие имя и фамилия, город
→ Avito → телефон → пробив в Telegram
→ Telegram → настоящее фото → Google Images
→ Google Images → LinkedIn → место работы
Итого: полное досье за 30 минут.
Часть 4: GEOINT — геолокация
Метод 1: EXIF данные
Каждое фото с телефона содержит метаданные — если автор их не вычистил.
from PIL import Image
from PIL.ExifTags import TAGS, GPSTAGS
import requests
def extract_exif(image_path):
image = Image.open(image_path)
exif_data = image._getexif()
if not exif_data:
return {"error": "EXIF данные удалены или отсутствуют"}
data = {}
for tag_id, value in exif_data.items():
tag = TAGS.get(tag_id, tag_id)
data[tag] = value
# GPS координаты
if "GPSInfo" in data:
gps_info = data["GPSInfo"]
gps = {}
for key in gps_info:
decode = GPSTAGS.get(key, key)
gps[decode] = gps_info[key]
# Конвертация в десятичные градусы
def dms_to_decimal(dms, ref):
degrees = float(dms[0])
minutes = float(dms[1])
seconds = float(dms[2])
decimal = degrees + minutes/60 + seconds/3600
if ref in ["S", "W"]:
decimal = -decimal
return decimal
lat = dms_to_decimal(gps["GPSLatitude"], gps.get("GPSLatitudeRef", "N"))
lon = dms_to_decimal(gps["GPSLongitude"], gps.get("GPSLongitudeRef", "E"))
return {
"coordinates": (lat, lon),
"maps_link": f"https://maps.google.com/?q={lat},{lon}",
"camera": data.get("Model"),
"date": data.get("DateTimeOriginal"),
"software": data.get("Software")
}
return {"gps": "нет GPS данных", "meta": data}
# Что даёт EXIF:
# точные координаты съёмки
# модель телефона/камеры
# дату и время
# настройки съёмки
# иногда — серийный номер устройстваПроверка онлайн (без установки):
- exif.tools — просто загрузил увидел всё
- fotoforensics.com — анализ + детект фотошопа
- metapicz — аналогично
Метод 2: Геолокация по фото без EXIF
Когда метаданные вычищены — включается дедукция. Это уже ремесло.
- Таблички (названия улиц, номера домов)
- Вывески (магазины, рестораны, названия)
- Язык надписей и шрифты
- Номерные знаки машин (формат, цвет, регион)
- Сторона движения (левостороннее/правостороннее)
- Архитектурный стиль
- Тип фонарей и разметки
- Положение солнца (время + полушарие)
- Провода (есть/нет, над/под землёй)
- Горы/море/рельеф на горизонте
- Как уложена плитка/тротуар (положение/форма/материал/узор)
- Обрати внимание на уникальные объекты
- Обратный поиск через Google Lens
- Открой Google Maps в этом регионе
- Включи Street View
- Совмещай панорамы с фото
- Ищи совпадения по ориентирам
- Google Lens — распознавание объектов и мест
- Yandex Images — часто лучше Google для СНГ
- Bing Visual Search — третий источник
- GeoGuessr — тренировка навыка (игра)
- Mapillary — краудсорсинговый street view
- OpenStreetMap — детальные карты
- Sentinel Hub — спутниковые снимки
- SunCalc — положение солнца по времени/месту
Пример метода "солнце + тень":
Дано: фото без гео, с тенью от столба
- Замерь угол тени относительно объекта
- Солнце движется с востока на запад
- Угол тени + время на фото (если есть) = широта
- Сверяешь с картой
- Читаешь название на стакане "Coffee Like"
- Ищешь "Coffee Like" на 2GIS в городе из контекста
- Открываешь панораму у каждого филиала
- Ищешь совпадение интерьера
- Совпало → точная локация
Метод 3: Геолокация через поведение
Не фото, а цифровой след человека в пространстве.
- Strava Heatmap — маршруты бегунов (палит военные базы)
- Instagram локации — чекины
- Fitness-трекеры — маршруты
- Фото по тегам города — где бывает
- Отзывы на картах — Google/Yandex отзывы = места посещения
- Объявления — геолокация на Avito
Strava Heatmap — классический пример:
Сервис публикует тепловую карту всех маршрутов пользователей. Через неё нашли:
Метод 4: Спутниковые снимки
- Google Earth Pro — бесплатно, история снимков
- Sentinel Playground — свежие снимки (обновление каждые 5 дней)
- Bing Maps — иногда снимки лучше Google
- Yandex Maps — для СНГ
- Terraserver — исторические снимки
Что можно определить по спутнику:
- Размер объекта и планировку
- Теневую сторону в разное время суток
- Историю (Google Earth хранит архив за 20+ лет)
- Транспорт и технику
- Недавние изменения (стройка, снос)
Часть 5: IMINT — изображения
Обратный поиск изображений
- Google Images — Универсальный, глобальный
- Yandex Images — СНГ, лица, лучше всех ищет по людям
- Bing Visual — Промтовары, продукты
- TinEye — Точное совпадение, история
- PimEyes — Поиск по лицу (найти все фото человека)
- FaceCheck.ID — Поиск по лицу в криминальном контексте
- 百度 (Baidu) — Азия
- движок сканирует веб
- показывает ВСЕ фото этого лица в открытом доступе
- даже те, где нет тега или имени
Это самый мощный инструмент деанона через визуал. Есть и обратная сторона — работает в обе стороны.
Автоматизация обратного поиска:
# Яндекс Images — автоматический обратный поиск
import requests
from io import BytesIO
def yandex_reverse_search(image_path):
url = "https://yandex.ru/images/search"
files = {"upfile": ("image.jpg", open(image_path, "rb"), "image/jpeg")}
params = {"rpt": "imageview", "cbird": "77"}
session = requests.Session()
response = session.post(url, params=params, files=files)
return response.url # ссылка на результаты поиска
# Для продакшена лучше использовать:
# - SerpAPI (платно, стабильно)
# - Browser automation (Playwright)Часть 6: TECHINT — инфраструктура
Домены и IP
- whois — владелец домена, регистратор
- DNSDumpster — вся DNS-структура
- Shodan — поисковик по устройствам в сети
- Censys — аналог Shodan
- SecurityTrails — история DNS, субдомены
- crt.sh — SSL сертификаты и субдомены
- ViewDNS — обратный IP (кто ещё на этом IP)
- Hunter.io — email на домене
import shodan
api = shodan.Shodan("API_KEY")
# Поиск открытых камер
results = api.search('webcam city:Moscow')
for result in results['matches']:
print(f"IP: {result['ip_str']}")
print(f"Port: {result['port']}")
print(f"Org: {result.get('org')}")
print(f"Location: {result['location']}")
print("---")
# Поиск незащищённых баз данных
results = api.search('mongodb port:27017')
# Поиск по IP — вся информация об устройстве
host = api.host('8.8.8.8')
print(host)crt.sh — скрытые субдомены через SSL:
# Все SSL сертификаты, выданные для домена curl -s "https://crt.sh/?q=%25.example.com&output=json" | \ jq -r '.[].name_value' | sort -u # Результат — все субдомены, которые когда-либо выпускали серт
import requests
import whois
from dns import resolver
def full_domain_recon(domain):
report = {}
# WHOIS
try:
w = whois.whois(domain)
report["registrar"] = w.registrar
report["created"] = str(w.creation_date)
report["owner"] = w.name # если не скрыт privacy
except:
pass
# DNS записи
for record_type in ["A", "MX", "NS", "TXT"]:
try:
answers = resolver.resolve(domain, record_type)
report[record_type] = [str(r) for r in answers]
except:
pass
# Субдомены через crt.sh
try:
resp = requests.get(
f"https://crt.sh/?q=%25.{domain}&output=json",
timeout=10
)
subdomains = set()
for entry in resp.json():
for name in entry["name_value"].split("\n"):
if domain in name:
subdomains.add(name.strip())
report["subdomains"] = list(subdomains)
except:
pass
# Email через Hunter.io
# (нужен API ключ, бесплатный тариф — 25 запросов/мес)
return reportЧасть 7: Утечки данных
Проверка своих данных
- HaveIBeenPwned — email + пароли (проверка по K-Anonymity)
- DeHashed — полный поиск по утечкам (email, имя, IP, телефон)
- LeakCheck — email/телефон/ник
- Snusbase — самый быстрый (платный)
- Intelligence X — darknet + утечки
Что дают утечки:
- Email + пароль → доступ к аккаунтам (если пароль не уникальный)
- Email + телефон → связка для деанона
- Email + адрес → физическая локация
- Email + паспортные данные → полный профиль
import requests
import base64
def dehashed_search(query, email, api_key):
# Поиск по всем утечкам
auth = base64.b64encode(f"{email}:{api_key}".encode()).decode()
headers = {
"Accept": "application/json",
"Authorization": f"Basic {auth}"
}
# Поиск можно вести по:
# email, username, name, address, phone, ip, hash
response = requests.get(
f"https://api.dehashed.com/search?query=email:{query}",
headers=headers
)
return response.json()
# Результат содержит:
# - все пароли (в чистом/хешированном виде)
# - все email
# - имена
# - адреса
# - телефоны
# - IPЧасть 8: Транспорт и физический мир
Номера автомобилей
Формат российского номера:
А123ВС77 регион 77, Москва
- ГИБДД (гибдд.рф) — история ДТП
- Автокод (avtocod.ru) — платный агрегатор
- Номер-база — платные Telegram-боты
- Реестр залогов (reestr-zalogov.ru) — залог
- ФССП — если есть долги владельца
Авиация
- Flightradar24 — все рейсы в реальном времени
- ADS-B Exchange — без фильтров (в отличие от FR24)
- OpenSky Network — открытое API
import requests
def track_aircraft(callsign):
response = requests.get(
f"https://opensky-network.org/api/states/all?callsign={callsign}"
)
data = response.json()
if data.get("states"):
for state in data["states"]:
return {
"callsign": state[1],
"latitude": state[6],
"longitude": state[5],
"altitude": state[13],
"velocity": state[9],
"heading": state[10],
"on_ground": state[8]
}
return NoneМорской транспорт
Часть 9: Автоматизация — фреймворки
SpiderFoot — автоматический OSINT-скан
# Установка pip install spiderfoot # Запуск веб-интерфейса sf -l 127.0.0.1:5001 # Скан по email sf -s target@example.com -t all # Скан по IP sf -s 8.8.8.8 -t all # Скан по домену sf -s example.com -t all
SpiderFoot автоматически прогоняет цель через 200+ модулей и собирает всё в один отчёт.
Maltego — визуальный OSINT
Построение графов связей: Цель → запросы к разным источникам → визуальные связи Пример графа: Email ├── Twitter аккаунт │ └── Подписки → другие аккаунты ├── Домены (whois) │ └── Другие домены на тот же whois ├── Утечки └── Соцсети Платный, но Community-версия достаточна для старта.
TheHarvester — сбор email/субдоменов
# Сбор email с домена из публичных источников theHarvester -d example.com -b all # Источники: # - поисковые системы # - LinkedIn # - сертификаты # - DNS
Часть 10: OpSec исследователя
Пока ты копаешь — тебя тоже могут копать.
- Никогда не логинься в свои аккаунты при исследовании
- Используй отдельный браузер (профиль) для OSINT
- SOCKS5 / VPN — не для анонимности, для смены IP
- Виртуалка для рискованных сайтов
- Не открывай ссылки напрямую — скрин через сервисы
- Не переходи по ссылкам из подозрительных сообщений
- Отключи синхронизацию браузера
- Отдельная почта для регистраций при исследовании
Инструменты безопасного просмотра:
- urlscan.io — скриншот сайта без захода на него
- archive.org — просмотр старой версии
- proxy — через прокси для смены IP
- whonix — виртуалка с Tor
Часть 11: Как НЕ надо
- Сталкинг бывших/близких — это незаконно и аморально XD)
- Скачивание данных из взломанных баз (кроме проверки своих)
- Попытки взлома на основе собранной информации
- Публикация собранных данных без согласия
- Пробив через "серые" Telegram-боты (палевно и небезопасно)
- Использование OSINT для шантажа
OSINT — это про понимание системы. Будь умнее чем просто шантажировать и публиковать просто так)
By Vatican