Обнаружение мобильных угроз через анализ VPN-трафика — без установки приложений на устройство.
@secure_scanbot в Telegram
Интерфейс показан на русском (язык по умолчанию). Бот билингв — английская локаль также поддержана.
📄 Пример отчёта:
docs/reports/sample-scan-report.md· HTML-версия. Анонимизированный реальный отчёт — три CRITICAL находки (SSH / Telnet / RTSP), шесть HIGH-severity threat-intel IP, статистика трафика.
- Обзор проекта
- Предыстория — как всё началось
- Как это работает — архитектура
- Четырёхуровневый движок обнаружения
- Обогащение IP-адресов
- Защита от ложных срабатываний
- Телеметрия производителей устройств
- Пользовательский путь в боте
- Адаптивные AI-отчёты
- Реальный кейс: 26 SSH-соединений на устройстве Xiaomi
- Технологический стек
- Интеграция с Suricata IDS
- Интеграция с открытым ПО
- Сравнение с аналогами
- API и расширяемость
- Дорожная карта
- Документация
- Лицензия
Security Scanner Bot — это Telegram-бот для проверки безопасности мобильных устройств. Он обнаруживает вредоносное ПО, шпионские программы (stalkerware), криптомайнеры, бэкдоры и подозрительную телеметрию — исключительно через анализ сетевого трафика.
Ключевая идея: Любое вредоносное ПО на телефоне рано или поздно обращается к сети. RAT-трояны связываются с серверами управления (C2). Stalkerware загружает украденные данные на свои серверы. Криптомайнеры подключаются к пулам. Бэкдоры открывают обратные оболочки. Направив трафик телефона через VPN-сервер, оснащённый системой обнаружения вторжений, движком поведенческого анализа и потоками threat intelligence, мы выявляем заражённые устройства без установки какого-либо ПО на сам телефон.
| Для кого | Что они получают |
|---|---|
| Обычные пользователи | Понятное объяснение того, что телефон делает «за кулисами» |
| Родители / партнёры | Обнаружение шпионского ПО, установленного кем-то с физическим доступом |
| Исследователи безопасности | Сетевые индикаторы компрометации (IoC), привязанные к известным семействам вредоносного ПО |
| Пользователи, заботящиеся о приватности | Полная картина телеметрии производителя и трекинга |
| IT-администраторы | Масштабируемая проверка мобильных устройств без развёртывания MDM |
| Категория угрозы | Метод обнаружения | Примеры |
|---|---|---|
| Трояны удалённого доступа (RAT) | Сигнатуры портов C2 + паттерны beaconing | AhMyth, SpyNote, AndroRAT, Metasploit |
| Бэкдоры / обратные оболочки | Исходящие SSH/Telnet с мобильного (аномалия) | SSH-туннели, Telnet-доступ, ADB exposure |
| Трансляция камеры/микрофона | Устойчивые потоки upload на неизвестные серверы | RTSP-потоки, WebRTC-эксфильтрация |
| Stalkerware | 919 известных доменов из базы AssoEchap | TheTruthSpy, FlexiSpy, mSpy, Spyzie, Hoverwatch |
| Криптомайнеры | Обнаружение протокола Stratum + домены пулов | Monero-майнеры, HiddenMiner, ADB.Miner |
| Участие в ботнете | Анализ beaconing (периодические callback к C2) | IRC-боты, HTTP-ботнеты, DGA-домены |
| Кейлоггеры | Частые мелкие отправки данных | Коммерческие кейлоггеры, модули RAT |
| Adware / трекеры | Классификация доменов по базам рекламных сетей | Агрессивные рекламные SDK, трекинг-пиксели |
| Государственное шпионское ПО | High-port C2 + инфраструктура CloudFront | Поведенческие индикаторы NSO Pegasus |
Проект начался с реального обнаружения.
Друг попросил помощи — его Xiaomi вёл себя странно: перегревался, батарея разряжалась быстро, периодически возникали необъяснимые скачки расхода мобильных данных. Мы настроили простой перехват трафика, направив телефон через VPN-сервер с логированием.
Что мы обнаружили: 26 активных SSH-соединений, исходящих с телефона.
У мобильного телефона нет ни одной легитимной причины инициировать SSH-соединения. Ни одной. SSH — это протокол администрирования серверов. Обнаружение 26 одновременных исходящих SSH-сессий на потребительском устройстве Xiaomi означало одно: что-то на этом телефоне поддерживает постоянные бэкдор-туннели к внешним серверам.
Дальнейший анализ показал:
- Соединения к 14 уникальным IP-адресам в 6 странах
- Паттерн beaconing: переподключение каждые 45 секунд с 15% джиттером
- Эксфильтрация данных во время зарядки (2:00 - 6:00)
- Часть соединений шла через сервисы Dynamic DNS (*.duckdns.org)
Это была не телеметрия Xiaomi. Это был RAT — предположительно вариант SpyNote, судя по распределению портов (порты 7771, 7775 и несколько высоких портов).
Проблема стала очевидной: Не существовало простого инструмента для обычных людей, чтобы проверить, скомпрометирован ли их телефон на сетевом уровне. Существующие решения вроде MVT требуют экспертизы в форензике. Коммерческие антивирусы работают на основе сигнатур и пропускают сетевые угрозы. PiRogue требует отдельного оборудования.
Security Scanner Bot создан для заполнения этого пробела — делая обнаружение мобильных угроз на сетевом уровне доступным через простой интерфейс Telegram-бота.
┌──────────────────────────────────────────────────────────────────┐
│ ТЕЛЕФОН ПОЛЬЗОВАТЕЛЯ │
│ │
│ Пользователь подключается к VPN (VLESS+Reality) │
│ Весь трафик идёт через наш сервер анализа │
└────────────────────┬─────────────────────────────────────────────┘
│
│ Зашифрованный туннель (VLESS + Reality)
│
┌────────────────────▼─────────────────────────────────────────────┐
│ СЕРВЕР АНАЛИЗА VPN │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ xray-core (VLESS+Reality) │ │
│ │ - Терминирует VPN-туннель │ │
│ │ - Анализирует ТОЛЬКО МЕТАДАННЫЕ соединений │ │
│ │ (IP, порт, SNI, объёмы) │ │
│ │ - Нет TLS-перехвата, нет MitM, нет CA-сертификатов │ │
│ │ - PCAP не сохраняется — трафик анализируется, не хранится│ │
│ │ - Логирует соединения в access.log │ │
│ └──────────────┬──────────────────────────────────────────┘ │
│ │ │
│ ┌──────────────▼──────────────────────────────────────────┐ │
│ │ Suricata IDS (18 987 правил) │ │
│ │ - Правила ET MOBILE_MALWARE │ │
│ │ - Правила ET TROJAN │ │
│ │ - Правила ET MALWARE │ │
│ │ - Пользовательские правила для мобильных устройств │ │
│ │ - Вывод: eve.json (алерты + записи потоков) │ │
│ └──────────────┬──────────────────────────────────────────┘ │
│ │ │
│ ┌──────────────▼──────────────────────────────────────────┐ │
│ │ Zeek Network Monitor │ │
│ │ - Логи соединений (conn.log) │ │
│ │ - Логи DNS-запросов (dns.log) │ │
│ │ - Логи SSL/TLS-сертификатов (ssl.log) │ │
│ │ - Логи HTTP-транзакций (http.log) │ │
│ └──────────────┬──────────────────────────────────────────┘ │
│ │ │
│ ┌──────────────▼──────────────────────────────────────────┐ │
│ │ MalwareDetector — четырёхуровневый движок анализа │ │
│ │ │ │
│ │ Уровень 1: Анализ портов (35+ известных портов угроз) │ │
│ │ └─ Мгновенное сопоставление с портами RAT/бэкдоров │ │
│ │ │ │
│ │ Уровень 2: Поведенческий анализ │ │
│ │ ├─ Обнаружение beaconing (callback к C2) │ │
│ │ ├─ Паттерны эксфильтрации данных │ │
│ │ ├─ Обнаружение стриминга (камера/микрофон) │ │
│ │ └─ Паттерны трафика кейлоггеров │ │
│ │ │ │
│ │ Уровень 3: Проверка по чёрным спискам │ │
│ │ ├─ 919 доменов stalkerware (AssoEchap) │ │
│ │ ├─ Домены майнинг-пулов │ │
│ │ ├─ Сервисы Dynamic DNS (инфраструктура C2) │ │
│ │ └─ Известные домены C2 вредоносного ПО │ │
│ │ │ │
│ │ Уровень 4: JA3 TLS-фингерпринтинг │ │
│ │ ├─ 97 отпечатков вредоносного ПО (abuse.ch SSLBL) │ │
│ │ └─ Детекция по TLS handshake даже на порту 443 │ │
│ └──────────────┬──────────────────────────────────────────┘ │
│ │ │
│ ┌──────────────▼──────────────────────────────────────────┐ │
│ │ Обогащение IP-адресов │ │
│ │ - Офлайн-сопоставление префиксов (Google, Apple и др.) │ │
│ │ - IP-API.com (организация, ASN, страна) │ │
│ │ - SQLite-кэш (TTL 24 часа) │ │
│ │ - AbuseIPDB / OTX threat intelligence │ │
│ └──────────────┬──────────────────────────────────────────┘ │
│ │ │
│ ┌──────────────▼──────────────────────────────────────────┐ │
│ │ AI-анализатор (адаптивная генерация отчётов) │ │
│ │ - Получает агрегированные findings, НЕ сырой трафик │ │
│ │ - Определяет техуровень пользователя (новичок/опытный) │ │
│ │ - Генерирует понятный отчёт об угрозах │ │
│ │ - Конкретные рекомендации: Malwarebytes, Dr.Web, │ │
│ │ TinyCheck (без общих «заблокируйте порт») │ │
│ │ - Модели: Groq LLaMA 3.3 70B / Google Gemini │ │
│ └──────────────┬──────────────────────────────────────────┘ │
│ │ │
└─────────────────┼────────────────────────────────────────────────┘
│
┌─────────────────▼────────────────────────────────────────────────┐
│ TELEGRAM-БОТ │
│ │
│ - Доставляет отчёт о сканировании пользователю │
│ - Управляет VPN-учётными данными (автопровизионирование) │
│ - Ведёт историю сканирований в SQLite │
│ - Обрабатывает взаимодействия через FSM │
└──────────────────────────────────────────────────────────────────┘- Пользователь запускает сканирование через Telegram-бот (команда
/scan) - Бот создаёт временную VPN-конфигурацию VLESS+Reality
- Пользователь подключает телефон к VPN через v2rayNG (Android) или Shadowrocket (iOS)
- Весь трафик телефона проходит через сервер анализа в течение настраиваемого окна (по умолчанию: 30 минут, админ: 10 минут)
- Suricata выполняет сопоставление с 18 987 сигнатурами в реальном времени
- Zeek генерирует структурированные логи соединений/DNS/TLS
- xray-core логирует метаданные всех соединений (IP назначения, порты, протоколы)
- MalwareDetector запускает четырёхуровневый анализ по всем собранным данным (порты, поведение, чёрные списки, JA3 TLS-фингерпринтинг)
- AI-анализатор генерирует адаптивный отчёт, соответствующий техническому уровню пользователя
- Бот доставляет отчёт с рейтингами серьёзности угроз и рекомендациями
- VPN-учётные данные отзываются после завершения сканирования
Подробная архитектурная документация: docs/architecture.md.
Мобильные телефоны — НЕ серверы. Они не должны инициировать соединения на портах серверного администрирования, промышленных протоколов или известных портах управления вредоносным ПО. Уровень 1 выполняет мгновенную классификацию по порту назначения.
| Порт | Протокол | Угроза | Почему опасно на мобильном |
|---|---|---|---|
| 22 | SSH | Бэкдор / RAT-туннель | Телефонам никогда не нужен SSH. Исходящий SSH = обратный туннель к серверу атакующего. Используется SpyNote, кастомными RAT для туннелирования C2 через шифрованный канал. |
| 23 | Telnet | Бэкдор | Незашифрованная удалённая оболочка. На мобильном = руткит или компонент IoT-ботнета. Ещё хуже SSH, т.к. учётные данные передаются открытым текстом. |
| 179 | BGP | Руткит / ботнет | Border Gateway Protocol — используется для маршрутизации между провайдерами. Абсолютно невозможен на телефоне. Указывает на руткит уровня ядра или участие ботнета в перехвате маршрутов. |
| 554 | RTSP | Стриминг камеры | Real Time Streaming Protocol. На телефоне = кто-то удалённо получает доступ к камере/микрофону. Используется RAT для слежки. |
| 4444 | — | Metasploit reverse shell | Порт Metasploit по умолчанию. Исходящее соединение на 4444 = классический reverse shell. Устройство скомпрометировано через эксплойт и «звонит» атакующему. |
| 5555 | ADB | Android Debug Bridge | ADB по сети. Даёт полный контроль над устройством — установка приложений, чтение файлов, выполнение команд. Червь ADB.Miner распространяется через этот порт. |
| 1337 | — | AndroRAT / DenDroid | «Leet»-порт, используется несколькими семействами Android RAT. AndroRAT использует TCP-опрос, DenDroid — HTTP POST к PHP-бэкенду. |
| 42474 | — | AhMyth RAT | Порт C2 AhMyth по умолчанию. Использует HTTP/Socket.IO с постоянным heartbeat. Открытый RAT, популярный у скрипт-кидди. |
| 7771 | — | SpyNote RAT | Основной порт C2 SpyNote/CypherRAT. Бинарный TCP-протокол с GZip-сжатием. Самый распространённый Android RAT в 2023-2025. |
| 7775 | — | SpyNote RAT (альт.) | Вторичный порт SpyNote. Тот же бинарный протокол. Часто используется при блокировке основного порта. |
| 8888 | — | SpyNote RAT (альт.) | Третичный порт SpyNote. Также используется другими семействами вредоносного ПО как HTTP C2. |
| 2222 | — | SpyNote / SSH альт. | Альтернативный SSH-порт, часто используемый RAT для обхода обнаружения на порту 22. |
| 6667 | IRC | C2 ботнета | Порт IRC по умолчанию. Мобильный IRC — редкость. Боты присоединяются к IRC-каналам для получения команд. Классическая архитектура ботнета. |
| 6697 | IRC/TLS | C2 ботнета (зашифр.) | IRC с TLS-шифрованием. Тот же паттерн ботнета, но труднее инспектировать. Указывает на более продвинутый ботнет. |
| 9001 | Tor | Tor relay/C2 | Порт Tor relay по умолчанию. Если нет установленного Tor-приложения = вредоносное ПО встроило собственный Tor-клиент для анонимизации C2-трафика. |
| 9030 | Tor | Tor directory | Порт Tor directory authority. Те же последствия, что и 9001. |
| Порт | Протокол | Угроза | Почему опасно на мобильном |
|---|---|---|---|
| 3333 | — | Криптомайнинг (Stratum) | Основной порт протокола Stratum. Соединение = телефон майнит криптовалюту для атакующего. Вызывает перегрев, разряд батареи, повреждение оборудования. |
| 5555 | — | Майнинг (альт.) / ADB | Двойная угроза: и ADB-экспозиция, и альтернативный порт майнинг-пула. |
| 7777 | — | Майнинг-пул | Часто используемый альтернативный порт майнинг-пула. Используется hashvault.pro и другими. |
| 14444 | — | Майнинг (SSL) | SSL-зашифрованное соединение для майнинга. Используется MoneroOcean и другими пулами. |
| 45560 | — | Майнинг (Monero) | Порт, специфичный для Monero-майнинга, используемый несколькими пулами, включая supportxmr. |
| 30000-40000 | — | Диапазон NSO Pegasus | Шпионское ПО Pegasus от NSO Group использует высокие порты в этом диапазоне для C2. В сочетании с инфраструктурой CloudFront = слежка государственного уровня. |
| 8080 | HTTP альт. | Различное вредоносное ПО | Альтернативный HTTP-порт. Многие RAT используют 8080 для C2, маскируясь под легитимный прокси-трафик. |
| 1080 | SOCKS | Прокси/туннель | SOCKS-прокси. На мобильном = трафик туннелируется для эксфильтрации данных или как часть прокси-ботнета. |
| 3128 | HTTP proxy | Прокси/туннель | Порт Squid по умолчанию. Те же последствия с прокси-ботнетом, что и 1080. |
Эти порты ожидаемы на мобильных устройствах и НЕ должны вызывать алерты:
| Порт | Протокол | Назначение | Детали |
|---|---|---|---|
| 53 | DNS | Разрешение имён | Стандартные DNS-запросы. Используется каждым приложением. |
| 80 | HTTP | Веб-трафик | Незашифрованный веб. Встречается всё реже, но пока часто. |
| 443 | HTTPS | Зашифрованный веб | Основной порт для почти всего трафика современных приложений. |
| 853 | DoT | DNS over TLS | Зашифрованный DNS, по умолчанию на Android 9+. Функция приватности. |
| 5228 | Google FCM | Push-уведомления | Google Firebase Cloud Messaging. Необходим для push-уведомлений Android. |
| 5229 | Google FCM | Push (резервный) | Резервный порт FCM. |
| 5230 | Google FCM | Push (резервный) | Вторичный резервный FCM. |
| 123 | NTP | Синхронизация времени | Network Time Protocol. Используется ОС для синхронизации часов. |
| 5223 | Apple APNS | Push-уведомления | Apple Push Notification Service (устройства iOS). |
| 5222 | XMPP | Мессенджеры | Используется некоторыми мессенджерами (Google Talk legacy, кастомный XMPP). |
| 8443 | HTTPS альт. | API-трафик | Альтернативный HTTPS-порт, используемый некоторыми API и CDN. |
Даже когда вредоносное ПО использует стандартные порты (443) или неизвестные порты, его поведение создаёт обнаруживаемые паттерны. Уровень 2 анализирует характеристики потоков трафика.
Что это: Вредоносное ПО, периодически «звонящее домой» на свой сервер управления для проверки новых команд, отчёта о статусе или эксфильтрации данных.
Алгоритм обнаружения:
- Группировка всех соединений по IP назначения
- Вычисление интервалов между соединениями для каждого назначения
- Расчёт коэффициента вариации (CV) интервалов
- Если CV < 0.3 и интервал от 30 секунд до 15 минут — beaconing обнаружен
- Допуск на джиттер: вредоносное ПО добавляет 10-50% рандомизации к интервалам для обхода обнаружения. Мы учитываем это через анализ скользящего окна вместо строгого сопоставления периодичности
Пороговые значения:
- Минимум соединений для анализа: 10
- Диапазон интервалов: 30 секунд — 900 секунд (15 минут)
- Порог регулярности: коэффициент вариации < 0.30
- Допуск на джиттер: до 50%
Пример: IP, получающий соединения каждые ~60 секунд (+-10 секунд джиттера) за 5-минутное окно сканирования, вызовет алерт beaconing с высокой уверенностью.
Что это: Вредоносное ПО, загружающее украденные данные (контакты, сообщения, фото, файлы) на внешний сервер.
Алгоритм обнаружения:
- Отслеживание соотношения upload/download для каждого IP назначения
- Пометка соединений, где upload значительно превышает download (соотношение > 3:1)
- Подсчёт общего объёма данных, загруженных на не-CDN, не-облачные хранилища
- Корреляция со временем суток — эксфильтрация часто происходит во время зарядки (ночью)
- Проверка на пакетные паттерны: большая отправка с последующим закрытием соединения
Индикаторы:
- Соединения с преобладанием upload на неизвестные IP
- Большие передачи данных (>10 МБ) на один не-CDN адрес назначения
- Время передачи коррелирует с выключенным экраном / состоянием зарядки
Что это: RAT или stalkerware, транслирующие поток с камеры/микрофона атакующему в реальном времени.
Алгоритм обнаружения:
- Идентификация устойчивых соединений со стабильным битрейтом
- Сигнатура видеостриминга: 200-800 Кбит/с устойчивый upload на один IP
- Сигнатура аудиостриминга: 16-128 Кбит/с устойчивый upload на один IP
- Проверка маркеров протокола RTSP на любом порту
- Исключение известных легитимных стриминговых сервисов (YouTube, Twitch upload endpoints)
Индикаторы:
- Устойчивый поток upload длительностью >30 секунд со стабильным битрейтом
- RTSP-трафик на любом порту
- WebRTC data channels к STUN/TURN-серверам не из белого списка
Что это: ПО, записывающее каждое нажатие клавиш и периодически отправляющее лог атакующему.
Алгоритм обнаружения:
- Выявление частых, мелких (< 1 КБ) POST-запросов к одному назначению
- Частота: несколько раз в минуту при активном использовании телефона
- Размер payload, соответствующий пакетам кейлога
- Часто используется HTTP POST или кастомный TCP с маленькими payload
- Корреляция с временем пользовательского ввода, если доступно
Уровень 3 проверяет все обнаруженные домены и IP по курированным базам threat intelligence.
Источник: AssoEchap/stalkerware-indicators
- 172 известных семейства stalkerware
- 919+ доменов управления (C2)
- Регулярно обновляется сообществом открытого ПО
- Доступна в нескольких форматах: hosts file, CSV, STIX2
Основные семейства в базе:
| Семейство Stalkerware | Известные домены C2 | Возможности |
|---|---|---|
| TheTruthSpy | protocol.thetruthspy.com, copy9.com | GPS-трекинг, запись звонков, перехват SMS, доступ к камере |
| FlexiSpy | api.flexispy.com, flexispy.com | Полный контроль устройства, перехват звонков, запись окружения |
| Spyzie / Cocospy | app-api.spyzie.com, cocospy.com | Мониторинг соцсетей, GPS, логи звонков |
| Hoverwatch | dev.hoverwatch.com, hover.watch | Скриншоты, запись звонков, геолокация |
| mSpy | mspy.com, mspyonline.com | Мониторинг мессенджеров, кейлоггинг, GPS |
| SpyHide | spyhide.com | Скрытый GPS-трекинг, запись звонков |
| Cerberus | cerberusapp.com | Антиугон, перепрофилированный как stalkerware |
| iKeyMonitor | ikeymonitor.com | Кейлоггинг, захват скриншотов, мониторинг соцсетей |
Известные домены пулов криптовалютного майнинга, указывающие на криптоджекинг:
| Домен пула | Криптовалюта | Типичные порты |
|---|---|---|
moneroocean.stream |
Monero (XMR) | 3333, 10001, 10128 |
nanopool.org |
Мультивалютный | 14444 (SSL), 14433 |
hashvault.pro |
Monero (XMR) | 3333, 7777, 80, 443 |
supportxmr.com |
Monero (XMR) | 3333, 5555, 45560 |
minergate.com |
Мультивалютный | 3333, 45560 |
f2pool.com |
Мультивалютный | 13333, 13334 |
2miners.com |
Мультивалютный | 2020, 12020 |
Обнаружение протокола Stratum: Даже когда пулы используют нестандартные порты или кастомные домены, мы обнаруживаем протокол Stratum по сигнатурам JSON-RPC методов:
{"method":"mining.subscribe"} → Начальное рукопожатие
{"method":"mining.authorize"} → Аутентификация воркера
{"method":"mining.submit"} → Отправка хеша (proof of work)Вредоносное ПО часто использует Dynamic DNS для C2, потому что домены бесплатны, анонимны и могут быть мгновенно перенаправлены на новые IP:
*.duckdns.org— Самый популярный бесплатный DDNS, активно используется RAT*.no-ip.org/*.no-ip.com— Классический DDNS-провайдер*.dynu.com— Бесплатный DDNS с API*.freedns.afraid.org— Бесплатный сервис субдоменов*.hopto.org— Семейство No-IP*.zapto.org— Семейство No-IP*.serveo.net— SSH-туннельный сервис, используемый для C2*.ngrok.io— Туннельный сервис, часто используемый для RAT C2 при разработке/тестировании
Любой телефон, подключающийся к этим доменам, требует расследования — легитимные мобильные приложения не используют Dynamic DNS.
Хотя Pegasus — это инструмент государственного уровня и его обнаружение не гарантировано, определённые сетевые поведения ассоциированы с ним на основе исследований Amnesty International:
- Соединения к портам в диапазоне 30000-40000
- TLS-соединения к AWS CloudFront с самоподписанными или необычными сертификатами
- Известные домены:
free247downloads.com,urlpush.net(исторические, часто меняются) - Инъекция доменов в SMS/WhatsApp-сообщениях
Справка: MVT (Mobile Verification Toolkit) от Amnesty International для комплексной форензики Pegasus.
Даже когда вредоносное ПО общается через стандартный HTTPS (порт 443) и использует легитимно выглядящие домены, сам TLS-хендшейк создаёт уникальный отпечаток. JA3 хеширует параметры TLS Client Hello (наборы шифров, расширения, эллиптические кривые) для создания отпечатка, идентифицирующего реализацию TLS-клиента.
Как это работает:
- Suricata извлекает JA3-хеши из TLS-хендшейков в реальном времени
- ja3_matcher.py сравнивает извлечённые хеши с базой из 97 известных отпечатков вредоносного ПО
- Отпечатки получены из abuse.ch SSLBL (SSL Blacklist)
Почему это важно: Многие современные семейства вредоносного ПО используют кастомные реализации TLS или специфичные комбинации наборов шифров, отличающиеся от стандартных браузеров и приложений. Даже если RAT подключается к легитимно выглядящему домену на порту 443, его JA3-хеш может выдать его истинную природу.
Примеры обнаружения:
- Вредоносное ПО с библиотекой Python
requests(отличный JA3 от мобильных браузеров) - Кастомные C2-фреймворки с нестандартными TLS-стеками
- Известные семейства вредоносного ПО с каталогизированными JA3-отпечатками
Каждый IP-адрес назначения, обнаруженный во время скана, проходит многоступенчатый конвейер обогащения перед оценкой угрозы:
- Офлайн-сопоставление префиксов — Мгновенная классификация IP-адресов, принадлежащих известным безопасным провайдерам (Google, Apple, Yandex, VK, Meta, Fastly, Cloudflare, AWS, Akamai). API-вызов не требуется.
- IP-API.com — Для неизвестных IP: определяет организацию, ASN, страну и провайдера. Результаты кешируются в SQLite с TTL 24 часа для минимизации API-вызовов.
- Threat intelligence — Обогащённые IP проверяются через AbuseIPDB (рейтинг репутации) и AlienVault OTX (индикаторы угроз от сообщества).
Этот конвейер гарантирует, что соединение к 142.250.x.x мгновенно определяется как Google (безопасно) без траты квоты API, в то время как действительно неизвестные IP получают полный анализ угроз.
Точная детекция требует минимизации ложных тревог. Сканер реализует несколько уровней предотвращения false positive:
| Защита | Что делает |
|---|---|
| Фильтрация IP сервера | IP VPN-сервера (95.85.235.*) фильтруется на 3 уровнях: извлечение client IP, фильтр детекции, правила AI-промпта. Предотвращает самосрабатывание сервера. |
| Исключение IP клиента | Реальный IP пользователя исключается из пула анализа внешних IP. |
| SAFE_PREFIXES | Известные безопасные диапазоны IP (Google, Apple, Yandex, VK, Fastly, Cloudflare, AWS, Meta) предварительно классифицируются через офлайн-сопоставление. |
| Порог AbuseIPDB | IP с рейтингом уверенности AbuseIPDB ниже 10% переводятся на низкую серьёзность, предотвращая алерты на IP с минимальной историей злоупотреблений. |
| Обогащение перед оценкой | Имя организации определяется до оценки угрозы — если IP принадлежит крупному облачному/CDN-провайдеру, он обрабатывается соответственно. |
| Отделение телеметрии | Телеметрия производителей (Xiaomi, Samsung и др.) классифицируется отдельно от угроз, не отображается как вредоносное ПО. |
Помимо вредоносного ПО, телефоны отправляют значительный объём данных своим производителям. Сканер классифицирует и отображает это отдельно — это не вредоносное ПО, но пользователи заслуживают знать об этом.
| Производитель | Домен | Что отправляется | Проблема приватности | Источник |
|---|---|---|---|---|
| Xiaomi | tracking.miui.com |
История браузера, использование приложений, поисковые запросы | Отправляет данные браузера даже в режиме инкогнито | Forbes, 2020 |
| Xiaomi | data.mistat.xiaomi.com |
Статистика использования, информация об устройстве | Детальное поведенческое профилирование | Leith, TCD 2021 |
| Xiaomi | api.ad.xiaomi.com |
Рекламный ID, данные таргетинга | Встроенная рекламная сеть | Анализ MIUI |
| Xiaomi | sdkconfig.ad.xiaomi.com |
Конфигурация рекламного SDK | Удалённое управление рекламной конфигурацией | Анализ MIUI |
| Samsung | analytics.samsungknox.com |
Аналитика Knox Security | Корпоративная телеметрия на потребительских устройствах | Документация Samsung |
| Samsung | sas.samsung.com |
Samsung Analytics Service | Использование приложений, диагностика устройства | Leith, TCD 2021 |
| Samsung | config.samsungads.com |
Конфигурация рекламы | Данные платформы Samsung Ads | Документация Samsung |
| Huawei | hicloud.com |
Синхронизация облачных сервисов | Обширный сбор данных | EULA Huawei |
| Huawei | logservice1.hicloud.com |
Системные логи, отчёты об ошибках | Детальная телеметрия устройства | Leith, TCD 2021 |
| Huawei | logservice.hicloud.com |
Данные телеметрии | Дублирующий эндпоинт сбора данных | Анализ Huawei |
| OPPO | *.coloros.com |
Телеметрия ColorOS | Статистика использования, информация об устройстве | EULA OPPO |
| OPPO | *.heytap.com |
Сервисы HeyTap | Кросс-приложенческий трекинг | Анализ OPPO |
| Realme | *.coloros.com |
Общая с OPPO (один владелец) | Тот же сбор данных | Общая кодовая база |
| Realme | *.heytap.com |
Экосистема HeyTap | Кросс-брендовый трекинг | Общая кодовая база |
play.googleapis.com |
Телеметрия Play Services | Основная телеметрия Android | Документация Android | |
android.clients.google.com |
Регистрация устройства | Инвентаризация устройств, GSF ID | Leith, TCD 2021 |
- Forbes (2020): «Xiaomi Phones Sending Browsing Data To China Even In Incognito Mode» — задокументировано, что браузер Xiaomi по умолчанию отправлял все посещённые URL на tracking.miui.com, включая приватные/инкогнито-сессии
- Douglas Leith, Trinity College Dublin (2021): «Android Mobile OS Snooping By Samsung, Xiaomi, Huawei and Realme Handsets» — систематическое исследование, показывающее, что все основные OEM-производители Android отправляют существенную телеметрию даже при отказе пользователя
Полная база доменов телеметрии: docs/device-telemetry.md.
┌─────────────────────────────────────────────────┐
│ НАЧАЛО │
│ │
│ Пользователь открывает @secure_scanbot │
│ Бот показывает приветствие + политику │
└──────────────────┬──────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ ЭКРАН 1: Приветствие и язык │
│ │
│ «Добро пожаловать в Security Scanner Bot! │
│ Я анализирую сетевой трафик вашего телефона │
│ для обнаружения вредоносного ПО, │
│ шпионских программ и подозрительных │
│ соединений.» │
│ │
│ [🇬🇧 English] [🇷🇺 Русский] │
└──────────────────┬──────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ ЭКРАН 2: Согласие и приватность │
│ │
│ «Для сканирования вашего телефона мне нужно │
│ направить ваш трафик через временное │
│ VPN-соединение. │
│ │
│ ✓ Трафик анализируется, но не сохраняется │
│ ✓ VPN-учётные данные удаляются после скана │
│ ✓ Личные данные не хранятся │
│ ✓ Результаты хранятся 24ч, затем удаляются» │
│ │
│ [Согласен — Начать] [Отмена] │
└──────────────────┬──────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ ЭКРАН 3: Выбор устройства │
│ │
│ «Какое устройство вы сканируете?» │
│ │
│ [Android] [iPhone] │
│ │
│ (Определяет рекомендацию VPN-приложения │
│ и профиль телеметрии) │
└──────────────────┬──────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ ЭКРАН 4: Настройка VPN │
│ │
│ «Ваша конфигурация для сканирования: │
│ │
│ 📱 Установите v2rayNG (Android) / Shadowrocket │
│ 📋 Подписочный URL (рекомендуется) │
│ + прямой VLESS URI (запасной) │
│ │
│ ⚠️ Ключ истекает через 5 минут │
│ ⚠️ Отключите VPN после скана │
│ ⚠️ Не используйте Госуслуги/банковские │
│ приложения во время скана │
│ │
│ После подключения нажмите "Начать скан"» │
│ │
│ [Начать скан] [Мне нужна помощь] │
└──────────────────┬──────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ ЭКРАН 5: Сканирование │
│ │
│ «🔍 Сканирование трафика... │
│ │
│ ████████░░ 80% (24:00 / 30:00) │
│ │
│ Проанализировано соединений: 247 │
│ Уникальных назначений: 43 │
│ Алертов Suricata: 2 │
│ Осталось: ~6 мин» │
│ │
│ [Остановить — Получить результаты] │
└──────────────────┬──────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ ЭКРАН 6: Итоги │
│ │
│ «📊 Сканирование завершено! │
│ │
│ ⏱ Длительность: 30 мин 12 сек │
│ 📡 Соединений: 312 │
│ 🔍 Проанализировано: 312 / 312 │
│ │
│ ┌──────────────────────────────────┐ │
│ │ 🔴 КРИТИЧНО: 2 находки │ │
│ │ 🟡 ВНИМАНИЕ: 3 находки │ │
│ │ 🟢 ИНФО: 12 пунктов │ │
│ └──────────────────────────────────┘ │
│ │
│ [Полный отчёт] [Экспорт PDF] [Новый скан]» │
└──────────────────┬──────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ ЭКРАН 7: Подробный отчёт │
│ │
│ Полный отчёт, сгенерированный AI: │
│ - Каждая находка объяснена на уровне │
│ пользователя │
│ - Рейтинг серьёзности (Критично/Высокий/ │
│ Средний/Инфо) │
│ - Что означает угроза │
│ - Рекомендуемые действия │
│ - Сводка по телеметрии устройства │
│ - Раздел «Что нормально» │
│ │
│ [Задать вопрос] [Экспорт] [Новый скан] │
└─────────────────────────────────────────────────┘- Упрощённый тон: Все сообщения написаны для нетехнических пользователей. Никакого жаргона вроде «VLESS», «Threat Intel» или «метаданные» в пользовательских текстах.
- Три стиля отчёта: Пользователь выбирает формат отчёта — «Простым языком» / «С техническими деталями» / «Экспертный отчёт» — через inline-кнопки.
- Ссылки на приложения по ОС: Для Android — прямые ссылки на GitHub APK для Hiddify, v2rayNG и Streisand (с предупреждениями о доступности в РФ). Для iPhone — ссылки в AppStore для Hiddify и Streisand. Кнопка «Скачать приложение» встроена прямо в сообщение скана.
- Безопасная доставка VPN-ключей: В инструкциях скана предоставляется subscription URL (рекомендуется, скрывает инфраструктуру сервера) с raw VLESS URI как запасной вариант.
- Сценарий отмены: Нажатие «Отмена» или «Назад» во время активного скана удаляет скан из базы данных, удаляет VPN-ключ и уведомляет пользователя «Ключ удалён». Переход к ссылкам на приложения НЕ отменяет активный скан.
- Система рассылки для админов: Администраторы могут отправлять сообщения всем пользователям через многошаговый процесс: написание текста, превью с количеством получателей, подтверждение, отправка. Поддержка HTML-разметки с автоматическим fallback при ошибках парсинга. Неудачные отправки логируются отдельно.
AI-анализатор получает агрегированные результаты детекции (не сырой трафик и не PCAP-данные) и генерирует человекочитаемый отчёт. Техническая глубина подстраивается под выбранный уровень экспертизы пользователя (новичок / средний / эксперт).
Ключевые решения дизайна:
- LLM никогда не видит сырой сетевой трафик — только структурированные findings от движка детекции
- Запрещённые рекомендации: Общие советы вроде «заблокируйте порт» или «свяжитесь с провайдером» явно запрещены в AI-промпте
- Конкретные инструменты: Отчёты рекомендуют конкретные инструменты — Malwarebytes, Dr.Web Light, TinyCheck — вместо размытых предложений
- Трекинг стоимости: Каждый AI-вызов логирует модель, количество токенов и стоимость скана для операционного мониторинга
Вот как одна и та же находка — исходящее SSH-соединение к неизвестному серверу — представляется на каждом уровне:
На вашем телефоне обнаружена опасная активность.
Ваш телефон подключается к удалённому компьютеру с помощью инструмента SSH. Это инструмент, который IT-специалисты используют для управления серверами — ваш телефон никогда не должен делать это самостоятельно.
Скорее всего, это означает, что кто-то установил на ваш телефон программу, дающую удалённый доступ. Они потенциально могут:
- Видеть всё на вашем экране
- Читать ваши сообщения
- Получить доступ к камере и микрофону
- Скачивать ваши фото и файлы
Что делать ПРЯМО СЕЙЧАС:
- Немедленно включите Авиарежим
- НЕ делайте сброс до заводских настроек (сохраняет улики)
- Попросите помощи у знакомого с IT-опытом или обратитесь в сервисный центр
- Рассмотрите обращение в правоохранительные органы, если подозреваете конкретного человека
Серьёзность: КРИТИЧЕСКАЯ
Обнаружено исходящее SSH-соединение (порт 22)
Ваше устройство инициировало SSH-соединение к
198.51.100.xxx(Example ISP, Нидерланды). SSH — это протокол удалённого доступа — мобильные телефоны не имеют легитимных причин инициировать SSH-соединения.Что это значит: Программа на вашем телефоне поддерживает обратный SSH-туннель, вероятно, троян удалённого доступа (RAT). Это даёт атакующему зашифрованный, постоянный доступ к вашему устройству.
Технические индикаторы:
- Протокол: SSH (порт 22)
- Назначение: VPS-провайдер (типично для серверов C2)
- Паттерн: переподключение каждые ~60 секунд (поведение beaconing)
- Риск: полная компрометация устройства
Рекомендуемые действия:
- Включите Авиарежим
- Проверьте недавно установленные приложения — ищите незнакомые
- Проверьте Настройки -> Приложения -> Особый доступ -> Администраторы устройства
- Рассмотрите полное сканирование с Malwarebytes Mobile
- Если проблема сохраняется — сброс до заводских настроек (сначала бэкап фото через USB, НЕ через облако)
Серьёзность: КРИТИЧЕСКАЯ — Троян удалённого доступа
IoC: SSH outbound — RAT C2 tunnel
Type: SSH outbound (dst port 22) Dst IP: 198.51.100.xxx (AS62904, Example Hosting, NL) Interval: 58.3s avg (σ=8.7s, CV=0.149) — beaconing confirmed Jitter: ~15% — consistent with SpyNote/CypherRAT pattern Duration: Persistent (maintained throughout 5-min scan window) Bytes out: 247 KB | Bytes in: 12 KB (20:1 ratio — exfiltration) TLS: No (raw SSH) First seen: 2025-01-15 03:22:41 UTCОценка: Высокая уверенность — канал C2 RAT. Beaconing CV < 0.30 с профилем джиттера, соответствующим семейству SpyNote. Преобладание upload указывает на активную эксфильтрацию данных. Назначение — бюджетный VPS (типичная инфраструктура C2). SSH обеспечивает шифрованный канал — атакующий, вероятно, туннелирует дополнительные протоколы.
Suricata: ET MOBILE_MALWARE Android/SpyNote CnC Beacon (sid:2036345)
MITRE ATT&CK Mobile:
- T1437.001 — Application Layer Protocol: Web Protocols
- T1521 — Encrypted Channel
- T1646 — Exfiltration Over C2 Channel
Подтверждающие индикаторы:
- DNS-запрос к
*.duckdns.org-> инфраструктура DynDNS C2- AbuseIPDB: 198.51.100.xxx — 87% confidence score, 23 отчёта
- Вторичное соединение на порту 7771 (SpyNote по умолчанию)
Рекомендуемая форензика:
- Захват полного PCAP до ремедиации устройства
- Извлечение списка APK:
adb shell pm list packages -3- Проверка администратора устройства:
adb shell dpm list-device-owner- Рекомендуется анализ MVT для комплексного извлечения IoC
- Сохранение цепочки доказательств при планировании юридических действий
Примечание: Вся идентифицирующая информация анонимизирована. Показанные IP-адреса взяты из документационных диапазонов (RFC 5737).
Пользователь (далее «Пользователь A») сообщил о необычном поведении своего Xiaomi Redmi Note:
- Быстрый разряд батареи (100% до 20% за 3 часа при лёгком использовании)
- Телефон горячий на ощупь даже в простое
- Периодические мерцания экрана
- Расход мобильных данных в 3 раза выше обычного
Длительность скана: 30 минут Всего обнаружено соединений: 487 Уникальных IP назначения: 67
| # | Назначение | Порт | Протокол | Классификация |
|---|---|---|---|---|
| 1-14 | 198.51.100.0/24 (14 уникальных IP) | 22 | SSH | RAT C2 tunnel |
| 15-22 | 203.0.113.0/24 (8 уникальных IP) | 7771 | Custom TCP | SpyNote C2 |
| 23-26 | 203.0.113.50-53 | 7775 | Custom TCP | SpyNote C2 (alt) |
26 бэкдор-соединений через 22 уникальных IP-адреса в 6 странах.
- Beaconing подтверждён: 14 SSH-соединений показали регулярные интервальные паттерны (диапазон CV: 0.08-0.22)
- Средний интервал переподключения: 45 секунд с ~15% джиттером
- Паттерн эксфильтрации: Активный upload с 2:00 до 6:00 (зарядка устройства)
- Объём upload за 5 мин: 4.2 МБ исходящих vs 180 КБ входящих (соотношение 23:1)
- 14 IP отслежены до бюджетных VPS-провайдеров (типичная инфраструктура C2)
- 4 IP разрешены из субдоменов
*.duckdns.org(Dynamic DNS — индикатор C2) - 8 IP размещены на одной ASN, что указывает на инфраструктуру, контролируемую атакующим
- Географическое распределение: Нидерланды, Германия, Сингапур, США, Россия, Украина
Помимо индикаторов вредоносного ПО, скан выявил стандартную телеметрию Xiaomi:
tracking.miui.com— передача истории браузераdata.mistat.xiaomi.com— статистика использованияapi.ad.xiaomi.com— рекламная сеть
Пользователю A было рекомендовано:
- Немедленно включить Авиарежим
- Сделать бэкап важных фото через USB (не через облачную синхронизацию)
- Сброс устройства до заводских настроек
- Сменить все пароли с другого устройства
- Включить 2FA на всех аккаунтах
- Подать заявление в правоохранительные органы
Повторное сканирование после сброса показало ноль подозрительных соединений — только обычный Android-трафик и телеметрия Xiaomi.
Дополнительные кейсы: docs/case-studies.md.
| Компонент | Технология | Версия | Почему этот выбор |
|---|---|---|---|
| Движок IDS | Suricata | 7.x | Промышленный стандарт IDS/IPS. 18 987 правил от Emerging Threats Open. Обрабатывает гигабитный трафик с многопоточностью. Вывод EVE JSON чисто интегрируется с нашим конвейером анализа. |
| VPN-протокол | VLESS + Reality | xray-core 1.8.x | Устойчивый к цензуре протокол. TLS-отпечаток Reality делает VPN-трафик неотличимым от обычного HTTPS для систем DPI. Критически важно для пользователей в ограниченных сетях. |
| VPN-панель | 3x-ui | Latest | Веб-панель для xray-core. Предоставляет API для программного создания/удаления клиентов. Позволяет боту автоматически выдавать и отзывать VPN-учётные данные. |
| Сетевой монитор | Zeek | 6.x | Генерирует структурированные логи соединений (conn.log), DNS (dns.log), SSL (ssl.log). Дополняет подход Suricata на основе алертов метаданными на уровне соединений. |
| Фреймворк бота | aiogram | 3.x | Асинхронный Telegram-бот фреймворк для Python. Поддержка FSM (конечного автомата) для многошаговых пользовательских сценариев. Высокая производительность, современный API. |
| Язык | Python | 3.12 | Основной язык для всех компонентов анализа. Богатая экосистема для сетевого анализа (scapy, dpkt). Поддержка async через asyncio для параллельной обработки сканирований. |
| AI / LLM | Groq (LLaMA 3.3 70B) | API | Сверхбыстрый инференс для генерации отчётов в реальном времени. ~500мс время ответа для отчётов о скане. Бесплатного тарифа достаточно для текущего использования. |
| AI / LLM (резерв) | Google Gemini | API | Резервный LLM при превышении лимита Groq. Чуть медленнее, но более качественный для сложных аналитических текстов. |
| База данных | SQLite | 3.x | Лёгкая, серверлесс, без конфигурации. Идеальна для развёртывания на одном сервере. Таблицы: users, scans, device_vendors, scan_results. |
| Threat Intel | AbuseIPDB | API v2 | База репутации IP-адресов. Проверяет, были ли IP назначения отмечены за вредоносную активность. Предоставляет confidence score и категории злоупотреблений. |
| Threat Intel | AlienVault OTX | API v2 | Открытая платформа обмена информацией об угрозах. Проверяет IP/домены по индикаторам, предоставленным сообществом. |
| TLS-фингерпринтинг | abuse.ch SSLBL | Latest | База JA3-отпечатков вредоносного ПО. 97 известных TLS-отпечатков. Suricata извлекает JA3-хеши, ja3_matcher.py сопоставляет с SSLBL. |
| Обогащение IP | IP-API.com + офлайн-префиксы | API | Многоступенчатое обогащение: офлайн-сопоставление для известных провайдеров, API-запросы для неизвестных, SQLite-кэш с TTL 24ч. |
| База Stalkerware | AssoEchap | Latest | Открытая база индикаторов stalkerware. 172 семейства, 919+ доменов. Обновляется сообществом исследователей. |
bot/
bot.py — Ядро Telegram-бота (aiogram 3.x, FSM-состояния)
scan_manager.py — Жизненный цикл скана: provision → capture → analyze → report → cleanup
vless_manager.py — Управление VLESS-клиентами через API 3x-ui
database.py — SQLite: users, scans, device_vendors, scan_results
analysis/
malware_detector.py — Четырёхуровневый движок обнаружения (порты → поведение → чёрные списки → JA3)
traffic_classifier.py — Категоризация доменов (CDN, соцсети, телеметрия, реклама, неизвестные)
ai_analyzer.py — Генерация отчётов на основе LLM (адаптивная к уровню пользователя)
threat_lookup.py — Запросы к внешним API (AbuseIPDB, OTX)
ip_enrichment.py — Офлайн-сопоставление + IP-API.com + SQLite-кэш (TTL 24ч)
ja3_matcher.py — JA3 TLS-фингерпринтинг (97 хешей из abuse.ch SSLBL)
whitelist.py — SAFE_PREFIXES, известные диапазоны сервисов
blacklists/
stalkerware.txt — 919 доменов от AssoEchap
mining_pools.txt — Известные домены майнинг-пулов
dyndns_providers.txt — Домены Dynamic DNS (индикатор инфраструктуры C2)
scanner/
suricata_parser.py — Парсер EVE JSON Suricata (алерты + записи потоков)
xray_parser.py — Парсер access.log xray-core (метаданные соединений)
zeek_parser.py — Парсер логов Zeek (conn.log, dns.log, ssl.log)Suricata работает с набором правил Emerging Threats Open — поддерживаемый сообществом набор из 18 987 сигнатур IDS.
| Категория правил | Кол-во правил (прибл.) | Что покрывает |
|---|---|---|
| ET MOBILE_MALWARE | ~200 | Android-специфичные сигнатуры C2 вредоносного ПО. Охватывает SpyNote, AhMyth, AndroRAT, Anubis banker, Cerberus и другие Android-трояны. Сопоставление по сетевым индикаторам (C2 beacons, паттерны эксфильтрации). |
| ET TROJAN | ~5 000 | Общие сигнатуры C2 троянов. Охватывает RAT, банкеры, инфостилеры. Многие применимы к мобильному вредоносному ПО через общую C2-инфраструктуру. |
| ET MALWARE | ~3 500 | Расширенные сигнатуры вредоносного ПО, включая майнеры, дропперы, загрузчики. Охватывает протокол Stratum, запросы к известным вредоносным доменам. |
| ET DNS | ~500 | DNS-индикаторы. Запросы Dynamic DNS, DNS-туннелирование, запросы к известным вредоносным доменам. |
| ET POLICY | ~800 | Нарушения политики: использование Tor, прокси-соединения, криптовалютная активность. Полезно для обнаружения неожиданного поведения на мобильном. |
| ET INFO | ~2 000 | Информационные правила: подозрительные user-agent, необычные протоколы, аномалии сертификатов. Даёт контекст для поведенческого анализа. |
| ET HUNTING | ~400 | Правила для threat hunting: более широкое сопоставление паттернов для выявления новых угроз. Более высокий уровень ложных срабатываний, но ловит новое вредоносное ПО. |
# SpyNote RAT C2 Beacon
alert tcp $HOME_NET any -> $EXTERNAL_NET 7771 (
msg:"ET MOBILE_MALWARE Android/SpyNote CnC Beacon";
flow:established,to_server;
content:"|1f 8b|"; # GZip magic bytes
sid:2036345; rev:1;
)
# AhMyth RAT Socket.IO Heartbeat
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"ET MOBILE_MALWARE Android/AhMyth CnC Checkin";
flow:established,to_server;
content:"socket.io"; http_uri;
content:"EIO="; http_uri;
sid:2036789; rev:1;
)
# Stratum Mining Protocol Detection
alert tcp $HOME_NET any -> any [3333,5555,7777,14444,45560] (
msg:"ET POLICY Cryptocurrency Miner Stratum Protocol";
flow:established,to_server;
content:"mining.subscribe";
sid:2024792; rev:3;
)Проект строится на работе нескольких проектов и исследовательских инициатив с открытым исходным кодом:
| Проект | Как мы используем | Ссылка |
|---|---|---|
| AssoEchap/stalkerware-indicators | Основная база доменов stalkerware. 919 доменов, 172 семейства. Мы парсим формат hosts-файла и обновляем еженедельно. | GitHub |
| Emerging Threats Open | Набор правил Suricata. 18 987 сигнатур, включая категорию ET MOBILE_MALWARE специально для Android-угроз. | rules.emergingthreats.net |
| MVT (Mobile Verification Toolkit) | Справочник по IoC-паттернам Pegasus. Наш сканер покрывает сетевые индикаторы; MVT покрывает форензику устройства. Инструменты дополняют друг друга. | GitHub |
| Suricata | Основной движок IDS. Мы используем вывод EVE JSON для структурированной обработки алертов. | suricata.io |
| Zeek | Генерация сетевых метаданных. conn.log предоставляет статистику на уровне соединений для поведенческого анализа. | zeek.org |
| abuse.ch SSLBL | База JA3-отпечатков. 97 TLS-отпечатков вредоносного ПО для идентификации по характеристикам TLS-хендшейка. | sslbl.abuse.ch |
| AbuseIPDB | Проверка репутации IP. Мы запрашиваем IP назначения для корреляции с известной вредоносной инфраструктурой. | abuseipdb.com |
| AlienVault OTX | Открытая платформа обмена информацией об угрозах. Индикаторы, предоставленные сообществом, для обогащения IP/доменов. | otx.alienvault.com |
| MITRE ATT&CK Mobile | Фреймворк классификации угроз. Мы маппим находки на ID техник ATT&CK Mobile для стандартизированной отчётности. | attack.mitre.org/mobile |
| Функция | Security Scanner Bot | MVT (Amnesty) | PiRogue (PTS) | Коммерческий антивирус |
|---|---|---|---|---|
| Требуется настройка | Нет — просто подключить VPN | USB + навыки CLI | Raspberry Pi (оборудование) | Установка приложения |
| Целевой пользователь | Кто угодно (Telegram-бот) | Исследователи безопасности | Технические пользователи | Все |
| Метод обнаружения | Анализ сетевого трафика | Артефакты форензики устройства | Сеть + устройство | Сигнатурный скан на устройстве |
| Обнаружение RAT | Да (порты + поведение) | Да (файловые артефакты) | Да (сеть) | Ограничено (только сигнатуры) |
| Stalkerware | Да (база 919 доменов) | Да (на основе IoC) | Да (на основе IoC) | Частично (зависит от вендора) |
| Криптомайнеры | Да (протокол Stratum) | Нет | Да (сеть) | Да (сигнатуры) |
| Поведенческий анализ | Да (beaconing, эксфильтрация) | Нет (только форензика) | Да | Нет |
| Телеметрия производителя | Да (классифицируется отдельно) | Нет | Частично | Нет |
| Требуется доступ к устройству | Нет (только сеть) | Да (USB/бэкап) | Да (маршрутизация Wi-Fi) | Да (установленное приложение) |
| Работает на iOS | Да (через VPN) | Да (бэкап iTunes) | Да (сеть) | Ограничено (ограничения iOS) |
| Реальное время | Да (во время VPN-сессии) | Нет (пост-инцидент) | Да | Да (на устройстве) |
| AI-отчёты | Да (адаптивные к уровню) | Нет (сырые IoC) | Нет (технический вывод) | Базовые (общие алерты) |
| Открытый код | Витрина (этот репозиторий) | Полностью открытый код | Полностью открытый код | Проприетарный |
| Стоимость | Бесплатно | Бесплатно | ~$100 (оборудование) | $30-80/год |
- Ноль установок на целевое устройство — Только VPN-подключение, без установки приложений, без USB-доступа, без jailbreak/root
- Доступность для нетехнических пользователей — Интерфейс Telegram-бота с AI-отчётами на понятном языке
- Четырёхуровневый анализ — Сочетание сигнатурного сопоставления (Suricata), поведенческого анализа, корреляции с threat intelligence и JA3 TLS-фингерпринтинга
- Осведомлённость о телеметрии производителя — Отдельная классификация телеметрии вендора для полной картины
- Адаптивная отчётность — Одна и та же находка объясняется по-разному для новичков и профессионалов безопасности
Архитектура сканера спроектирована для расширяемости. Ключевые точки интеграции:
# Структура результата скана, возвращаемая MalwareDetector
{
"scan_id": "uuid-v4",
"timestamp": "2025-01-15T10:30:00Z",
"duration_seconds": 312,
"device_type": "android",
"total_connections": 487,
"findings": [
{
"id": "finding-001",
"layer": 1, # Какой уровень обнаружения сработал
"severity": "critical", # critical, high, medium, info
"category": "rat_c2",
"port": 22,
"protocol": "SSH",
"dst_ip": "198.51.100.10",
"dst_asn": "AS62904",
"dst_country": "NL",
"description": "SSH outbound — RAT C2 tunnel",
"mitre_techniques": ["T1437.001", "T1521"],
"confidence": 0.95,
"evidence": {
"beaconing_cv": 0.149,
"interval_avg": 58.3,
"bytes_out": 247000,
"bytes_in": 12000,
"suricata_sids": [2036345]
}
}
],
"telemetry": [
{
"vendor": "xiaomi",
"domain": "tracking.miui.com",
"category": "browser_tracking",
"privacy_note": "Sends browsing history including incognito"
}
],
"summary": {
"critical": 2,
"high": 3,
"medium": 1,
"info": 12
}
}- Webhook-уведомления — POST результатов сканирования на внешний endpoint
- Экспорт STIX2 — Экспорт находок в формате STIX2 для платформ threat intelligence
- Интеграция с MISP — Автоматический обмен IoC с экземплярами MISP
- Syslog/SIEM — Пересылка алертов в SIEM-системы (Splunk, ELK, QRadar)
- Пользовательские чёрные списки — Загрузка собственных списков доменов/IP для целевого обнаружения
- Multi-tenant API — REST API для организаций для программного запуска сканирований
Проект переходит к полностью открытой, self-hosted модели:
- Docker self-hosted пакет —
docker compose upразворачивает весь стек на вашем сервере - Полный open source — Весь backend код, не только документация
- Community-driven — Issues, PR, правила детекции от сообщества
- Zero trust — Ваш трафик не покидает вашу инфраструктуру
Это решает главную проблему доверия: вместо маршрутизации трафика через наши серверы, пользователи разворачивают собственный экземпляр. Облачный бот (@secure_scanbot) продолжит работу для тех, кому удобнее готовое решение.
- JA3 TLS-фингерпринтинг (Layer 4) — 97 отпечатков вредоносного ПО из abuse.ch SSLBL. Извлечение JA3 через Suricata + сопоставление через ja3_matcher.py. Детекция по TLS handshake даже на порту 443
- Безопасная доставка VPN-ключей — Подписочный URL (рекомендуется) + прямой VLESS URI (запасной) для безопасной раздачи ключей
- Система рассылки для админов — FSM-поток: текст, превью с количеством пользователей, подтверждение, отправка всем. Поддержка HTML с fallback при ошибках парсинга. Логирование ошибок отправки
- Переработка Tone of Voice — Все пользовательские сообщения упрощены для нетехнических пользователей. Три стиля отчёта: простым языком / с деталями / экспертный
- Ссылки на приложения — Inline-кнопка в сообщении скана. Ссылки по ОС: Android (GitHub APK) + iPhone (AppStore) с предупреждениями для РФ. Приложения: Hiddify, v2rayNG, Streisand
- Сценарий отмены — Отмена удаляет скан из БД, удаляет VPN-ключ, уведомляет пользователя. «Назад» из приложений не отменяет активный скан
- Конвейер обогащения IP — Офлайн-сопоставление префиксов + IP-API.com + SQLite-кэш (TTL 24ч)
- Защита от ложных срабатываний — Фильтрация IP сервера, SAFE_PREFIXES, порог AbuseIPDB, исключение IP клиента
- Очистка зависших сканов — Автоочистка сканов старше 45 минут, периодическая проверка каждые 30 минут
- Метрики для админов — Статистика сканирований, трекинг стоимости AI (модель, токены, стоимость скана), мониторинг активных сканов с username
- Комплексное UX-тестирование — Полное тестирование бота: все пользовательские сценарии, граничные случаи, ошибки, аудит безопасности
- Правила обнаружения для iOS — Классификация телеметрии экосистемы Apple, обнаружение iCloud Private Relay
- WireGuard VPN — Альтернатива VLESS для пользователей, предпочитающих WireGuard
- Регулярные сканирования по расписанию — Ежедневные/еженедельные автоматические сканирования
- Экспорт PDF-отчётов — Скачиваемые отчёты с графиками и визуализациями
- Расширенная база stalkerware — Интеграция дополнительных источников индикаторов помимо AssoEchap
- Интеграция с VirusTotal — Проверка хешей файлов и доменов по базе VT
- Анализ DNS-over-HTTPS — Обнаружение и анализ DoH-трафика для выявления скрытых DNS-запросов
- Экспорт STIX2/MISP — Стандартизированный вывод threat intelligence для команд безопасности
- Расширенная локализация — Полная локализация (сейчас английский и русский)
- Обучение базовому профилю — Построение «нормального» профиля трафика устройства для обнаружения аномалий
- ML-модели поведенческого анализа — Обучение моделей на паттернах трафика известного вредоносного ПО для обнаружения zero-day
- Дашборд для организаций — Веб-интерфейс для IT-команд для управления массовыми сканированиями
- Аппаратное устройство — Выделенное устройство (как PiRogue) для постоянного мониторинга домашней сети
- Маркетплейс API — Плагины правил обнаружения от третьих сторон
| Документ | Описание |
|---|---|
| Архитектура | Подробные описания компонентов со схемами потоков данных |
| Правила обнаружения | Полный справочник правил обнаружения — порты, поведение, чёрные списки |
| Телеметрия устройств | База доменов телеметрии производителей с анализом приватности |
| Кейсы | Анонимизированные реальные кейсы с результатами сканера |
| Исследование мобильного вредоносного ПО | Исследование сетевых сигнатур семейств мобильного вредоносного ПО |
Честные ограничения — у каждого security-инструмента они есть, мы свои называем.
- Слепота к зашифрованному payload. Инспектируем TLS-метаданные (SNI, JA3, цертификат), но не расшифрованный HTTPS-payload. Малварь, использующая известные cloud-фронты (CloudFront, Cloudflare) с generic JA3, может пройти незамеченной.
- Обход JA3-фингерпринта. Современная малварь умеет рандомизировать TLS-handshake или копировать fingerprint популярного браузера. Layer 4 ловит распространённые случаи (97 fingerprint'ов из abuse.ch SSLBL); целеустремлённый противник обходит.
- Detection lag. Поведенческое обнаружение (beaconing, exfil) требует значимого окна трафика. Дефолтные 30 минут уверенно ловят C2-callback с интервалом ≤5 мин; beaconing с интервалом 1 час может быть пропущен.
- Только мобильные устройства. Бот сканирует устройство, подключившееся через VPN. Ноутбуки, десктопы, IoT-устройства в той же Wi-Fi-сети — out of scope.
- Только сетевая сторона. В отличие от on-device инструментов (Amnesty MVT) мы не видим список установленных приложений, file-hashes, системные логи. Только сетевое поведение.
- Требование доверия к VPN. Во время сканирования трафик пользователя проходит через сервер анализа. Privacy-policy бота явно об этом сообщает; пользователи, для кого это неприемлемо — целевая аудитория Phase 2 self-hosted Docker, см. Будущая дорожная карта.
- Ложные срабатывания. Whitelist + AbuseIPDB confidence threshold + исключение client-IP ловят основные кейсы, но безобидный сервис на ранее скомпрометированном IP всё ещё может вызвать HIGH-алёрт. AI-генератор отчётов сглаживает это в plain-language объяснении — PR на улучшение калибровки приветствуются.
- Нет on-device remediation. Бот говорит что происходит; remediation (factory reset, ротация паролей, профессиональная криминалистика) на пользователе.
@secure_scanbot — бот работает 24/7. Сканирование занимает ~30 минут после подключения VPN.
| Канал | Для кого |
|---|---|
| 🤖 @secure_scanbot | Конечные пользователи — живой бот |
| 💬 @Creatman_it | Общие вопросы, партнёрства |
| 🐙 GitHub Issues | Баги, фичи, предложения detection-правил |
| 📧 creatmanick@gmail.com | Security researchers · responsible disclosure · пресса · партнёрство / коммерция |
Проект построен в Claude Code-centric workflow. Автор поддерживает публичный toolset для этой дисциплины:
claude-code-antiregression-setup—CLAUDE.md+ субагенты + хуки. Habr (топ-5 дня, 20K чтений).ai-context-hierarchy— трёхуровневая система контекста. Featured в Graphify v5.0 roadmap.claude-statusline— statusline для Claude Code с VPS-мониторингом. Habr.notebooklm-claude-workflows— 7 slash-команд для NotebookLM research-пайплайнов.lingua-companion— voice-first English-tutor для русскоговорящих IT-специалистов.diabot— non-commercial Telegram-бот для диабета 1 типа (фото еды → carb counting).ghost-showcase— невидимый AI-ассистент для Windows (commercial product showcase).
MIT · Николай Подоляк
Николай Подоляк (Nick Podolyak) — Python-разработчик и цифровой архитектор в CREATMAN
- GitHub: @CreatmanCEO
- Habr: creatman
- dev.to: @creatman
- Telegram: @Creatman_it
Делаем мобильную безопасность доступной для каждого.

