Skip to content

Latest commit

 

History

History
1148 lines (930 loc) · 109 KB

File metadata and controls

1148 lines (930 loc) · 109 KB

🌐 Language / Язык

English Русский


Security Scanner Bot

Обнаружение мобильных угроз через анализ VPN-трафика — без установки приложений на устройство.

@secure_scanbot в Telegram

License: MIT Stars Validate Bot Platform IDS Rules Stalkerware DB JA3 Fingerprints


Как это выглядит

Интерфейс показан на русском (язык по умолчанию). Бот билингв — английская локаль также поддержана.

Онбординг — три экрана Telegram: проверка телефона на вирусы, политика приватности 'мы не читаем переписки и не видим пароли', выбор VPN-клиента под Android и iPhone
1 — Онбординг и подключение VPN
Простое объяснение как работает сканирование, явный privacy-disclaimer («мы не читаем переписки — только куда подключается ваш телефон»), линки на VPN-клиенты под каждую ОС с RU-aware fallback'ами на AppStore / Google Play.
Сканирование — три экрана Telegram: сканирование запущено с инструкцией по настройке VPN, два способа передачи VLESS-ключа с copy-to-clipboard, финальный отчёт «Ваш телефон в безопасности — 729 подключений к 29 сервисам за 10 минут» с прикреплённым HTML-отчётом
2 — Активное сканирование и доставка отчёта
Прогресс сканирования + два режима доставки VPN-ключа (subscription URL рекомендуется, raw VLESS как fallback), затем финальный отчёт — счётчики подключений, список сервисов и HTML-вложение для офлайн-чтения. AI-адаптивный: те же данные на трёх уровнях сложности.

📄 Пример отчёта: docs/reports/sample-scan-report.md · HTML-версия. Анонимизированный реальный отчёт — три CRITICAL находки (SSH / Telnet / RTSP), шесть HIGH-severity threat-intel IP, статистика трафика.


Содержание


Обзор проекта

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                        
└──────────────────────────────────────────────────────────────────┘

Поток данных (пошагово)

  1. Пользователь запускает сканирование через Telegram-бот (команда /scan)
  2. Бот создаёт временную VPN-конфигурацию VLESS+Reality
  3. Пользователь подключает телефон к VPN через v2rayNG (Android) или Shadowrocket (iOS)
  4. Весь трафик телефона проходит через сервер анализа в течение настраиваемого окна (по умолчанию: 30 минут, админ: 10 минут)
  5. Suricata выполняет сопоставление с 18 987 сигнатурами в реальном времени
  6. Zeek генерирует структурированные логи соединений/DNS/TLS
  7. xray-core логирует метаданные всех соединений (IP назначения, порты, протоколы)
  8. MalwareDetector запускает четырёхуровневый анализ по всем собранным данным (порты, поведение, чёрные списки, JA3 TLS-фингерпринтинг)
  9. AI-анализатор генерирует адаптивный отчёт, соответствующий техническому уровню пользователя
  10. Бот доставляет отчёт с рейтингами серьёзности угроз и рекомендациями
  11. VPN-учётные данные отзываются после завершения сканирования

Подробная архитектурная документация: docs/architecture.md.


Четырёхуровневый движок обнаружения

Уровень 1: Анализ портов

Мобильные телефоны — НЕ серверы. Они не должны инициировать соединения на портах серверного администрирования, промышленных протоколов или известных портах управления вредоносным ПО. Уровень 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.

Уровень 2: Поведенческий анализ

Даже когда вредоносное ПО использует стандартные порты (443) или неизвестные порты, его поведение создаёт обнаруживаемые паттерны. Уровень 2 анализирует характеристики потоков трафика.

Обнаружение Beaconing (идентификация callback к C2)

Что это: Вредоносное ПО, периодически «звонящее домой» на свой сервер управления для проверки новых команд, отчёта о статусе или эксфильтрации данных.

Алгоритм обнаружения:

  1. Группировка всех соединений по IP назначения
  2. Вычисление интервалов между соединениями для каждого назначения
  3. Расчёт коэффициента вариации (CV) интервалов
  4. Если CV < 0.3 и интервал от 30 секунд до 15 минут — beaconing обнаружен
  5. Допуск на джиттер: вредоносное ПО добавляет 10-50% рандомизации к интервалам для обхода обнаружения. Мы учитываем это через анализ скользящего окна вместо строгого сопоставления периодичности

Пороговые значения:

  • Минимум соединений для анализа: 10
  • Диапазон интервалов: 30 секунд — 900 секунд (15 минут)
  • Порог регулярности: коэффициент вариации < 0.30
  • Допуск на джиттер: до 50%

Пример: IP, получающий соединения каждые ~60 секунд (+-10 секунд джиттера) за 5-минутное окно сканирования, вызовет алерт beaconing с высокой уверенностью.

Обнаружение эксфильтрации данных

Что это: Вредоносное ПО, загружающее украденные данные (контакты, сообщения, фото, файлы) на внешний сервер.

Алгоритм обнаружения:

  1. Отслеживание соотношения upload/download для каждого IP назначения
  2. Пометка соединений, где upload значительно превышает download (соотношение > 3:1)
  3. Подсчёт общего объёма данных, загруженных на не-CDN, не-облачные хранилища
  4. Корреляция со временем суток — эксфильтрация часто происходит во время зарядки (ночью)
  5. Проверка на пакетные паттерны: большая отправка с последующим закрытием соединения

Индикаторы:

  • Соединения с преобладанием upload на неизвестные IP
  • Большие передачи данных (>10 МБ) на один не-CDN адрес назначения
  • Время передачи коррелирует с выключенным экраном / состоянием зарядки

Обнаружение стриминга (слежка через камеру/микрофон)

Что это: RAT или stalkerware, транслирующие поток с камеры/микрофона атакующему в реальном времени.

Алгоритм обнаружения:

  1. Идентификация устойчивых соединений со стабильным битрейтом
  2. Сигнатура видеостриминга: 200-800 Кбит/с устойчивый upload на один IP
  3. Сигнатура аудиостриминга: 16-128 Кбит/с устойчивый upload на один IP
  4. Проверка маркеров протокола RTSP на любом порту
  5. Исключение известных легитимных стриминговых сервисов (YouTube, Twitch upload endpoints)

Индикаторы:

  • Устойчивый поток upload длительностью >30 секунд со стабильным битрейтом
  • RTSP-трафик на любом порту
  • WebRTC data channels к STUN/TURN-серверам не из белого списка

Паттерн трафика кейлоггера

Что это: ПО, записывающее каждое нажатие клавиш и периодически отправляющее лог атакующему.

Алгоритм обнаружения:

  1. Выявление частых, мелких (< 1 КБ) POST-запросов к одному назначению
  2. Частота: несколько раз в минуту при активном использовании телефона
  3. Размер payload, соответствующий пакетам кейлога
  4. Часто используется HTTP POST или кастомный TCP с маленькими payload
  5. Корреляция с временем пользовательского ввода, если доступно

Уровень 3: Проверка по чёрным спискам

Уровень 3 проверяет все обнаруженные домены и IP по курированным базам threat intelligence.

База доменов Stalkerware

Источник: 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)

Вредоносное ПО часто использует 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.

Поведенческие индикаторы NSO Pegasus

Хотя Pegasus — это инструмент государственного уровня и его обнаружение не гарантировано, определённые сетевые поведения ассоциированы с ним на основе исследований Amnesty International:

  • Соединения к портам в диапазоне 30000-40000
  • TLS-соединения к AWS CloudFront с самоподписанными или необычными сертификатами
  • Известные домены: free247downloads.com, urlpush.net (исторические, часто меняются)
  • Инъекция доменов в SMS/WhatsApp-сообщениях

Справка: MVT (Mobile Verification Toolkit) от Amnesty International для комплексной форензики Pegasus.

Уровень 4: JA3 TLS-фингерпринтинг

Даже когда вредоносное ПО общается через стандартный HTTPS (порт 443) и использует легитимно выглядящие домены, сам TLS-хендшейк создаёт уникальный отпечаток. JA3 хеширует параметры TLS Client Hello (наборы шифров, расширения, эллиптические кривые) для создания отпечатка, идентифицирующего реализацию TLS-клиента.

Как это работает:

  1. Suricata извлекает JA3-хеши из TLS-хендшейков в реальном времени
  2. ja3_matcher.py сравнивает извлечённые хеши с базой из 97 известных отпечатков вредоносного ПО
  3. Отпечатки получены из abuse.ch SSLBL (SSL Blacklist)

Почему это важно: Многие современные семейства вредоносного ПО используют кастомные реализации TLS или специфичные комбинации наборов шифров, отличающиеся от стандартных браузеров и приложений. Даже если RAT подключается к легитимно выглядящему домену на порту 443, его JA3-хеш может выдать его истинную природу.

Примеры обнаружения:

  • Вредоносное ПО с библиотекой Python requests (отличный JA3 от мобильных браузеров)
  • Кастомные C2-фреймворки с нестандартными TLS-стеками
  • Известные семейства вредоносного ПО с каталогизированными JA3-отпечатками

Обогащение IP-адресов

Каждый IP-адрес назначения, обнаруженный во время скана, проходит многоступенчатый конвейер обогащения перед оценкой угрозы:

  1. Офлайн-сопоставление префиксов — Мгновенная классификация IP-адресов, принадлежащих известным безопасным провайдерам (Google, Apple, Yandex, VK, Meta, Fastly, Cloudflare, AWS, Akamai). API-вызов не требуется.
  2. IP-API.com — Для неизвестных IP: определяет организацию, ASN, страну и провайдера. Результаты кешируются в SQLite с TTL 24 часа для минимизации API-вызовов.
  3. 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 Кросс-брендовый трекинг Общая кодовая база
Google play.googleapis.com Телеметрия Play Services Основная телеметрия Android Документация Android
Google 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:               
  - Каждая находка объяснена на уровне            
    пользователя                                  
  - Рейтинг серьёзности (Критично/Высокий/       
    Средний/Инфо)                                 
  - Что означает угроза                           
  - Рекомендуемые действия                        
  - Сводка по телеметрии устройства               
  - Раздел «Что нормально»                        
                                                   
  [Задать вопрос]  [Экспорт]  [Новый скан]       
└─────────────────────────────────────────────────┘

Принципы UX-дизайна (v2.3)

  • Упрощённый тон: Все сообщения написаны для нетехнических пользователей. Никакого жаргона вроде «VLESS», «Threat Intel» или «метаданные» в пользовательских текстах.
  • Три стиля отчёта: Пользователь выбирает формат отчёта — «Простым языком» / «С техническими деталями» / «Экспертный отчёт» — через inline-кнопки.
  • Ссылки на приложения по ОС: Для Android — прямые ссылки на GitHub APK для Hiddify, v2rayNG и Streisand (с предупреждениями о доступности в РФ). Для iPhone — ссылки в AppStore для Hiddify и Streisand. Кнопка «Скачать приложение» встроена прямо в сообщение скана.
  • Безопасная доставка VPN-ключей: В инструкциях скана предоставляется subscription URL (рекомендуется, скрывает инфраструктуру сервера) с raw VLESS URI как запасной вариант.
  • Сценарий отмены: Нажатие «Отмена» или «Назад» во время активного скана удаляет скан из базы данных, удаляет VPN-ключ и уведомляет пользователя «Ключ удалён». Переход к ссылкам на приложения НЕ отменяет активный скан.
  • Система рассылки для админов: Администраторы могут отправлять сообщения всем пользователям через многошаговый процесс: написание текста, превью с количеством получателей, подтверждение, отправка. Поддержка HTML-разметки с автоматическим fallback при ошибках парсинга. Неудачные отправки логируются отдельно.

Адаптивные AI-отчёты

AI-анализатор получает агрегированные результаты детекции (не сырой трафик и не PCAP-данные) и генерирует человекочитаемый отчёт. Техническая глубина подстраивается под выбранный уровень экспертизы пользователя (новичок / средний / эксперт).

Ключевые решения дизайна:

  • LLM никогда не видит сырой сетевой трафик — только структурированные findings от движка детекции
  • Запрещённые рекомендации: Общие советы вроде «заблокируйте порт» или «свяжитесь с провайдером» явно запрещены в AI-промпте
  • Конкретные инструменты: Отчёты рекомендуют конкретные инструменты — Malwarebytes, Dr.Web Light, TinyCheck — вместо размытых предложений
  • Трекинг стоимости: Каждый AI-вызов логирует модель, количество токенов и стоимость скана для операционного мониторинга

Вот как одна и та же находка — исходящее SSH-соединение к неизвестному серверу — представляется на каждом уровне:

Отчёт для начинающего

На вашем телефоне обнаружена опасная активность.

Ваш телефон подключается к удалённому компьютеру с помощью инструмента SSH. Это инструмент, который IT-специалисты используют для управления серверами — ваш телефон никогда не должен делать это самостоятельно.

Скорее всего, это означает, что кто-то установил на ваш телефон программу, дающую удалённый доступ. Они потенциально могут:

  • Видеть всё на вашем экране
  • Читать ваши сообщения
  • Получить доступ к камере и микрофону
  • Скачивать ваши фото и файлы

Что делать ПРЯМО СЕЙЧАС:

  1. Немедленно включите Авиарежим
  2. НЕ делайте сброс до заводских настроек (сохраняет улики)
  3. Попросите помощи у знакомого с IT-опытом или обратитесь в сервисный центр
  4. Рассмотрите обращение в правоохранительные органы, если подозреваете конкретного человека

Серьёзность: КРИТИЧЕСКАЯ

Отчёт для среднего уровня

Обнаружено исходящее SSH-соединение (порт 22)

Ваше устройство инициировало SSH-соединение к 198.51.100.xxx (Example ISP, Нидерланды). SSH — это протокол удалённого доступа — мобильные телефоны не имеют легитимных причин инициировать SSH-соединения.

Что это значит: Программа на вашем телефоне поддерживает обратный SSH-туннель, вероятно, троян удалённого доступа (RAT). Это даёт атакующему зашифрованный, постоянный доступ к вашему устройству.

Технические индикаторы:

  • Протокол: SSH (порт 22)
  • Назначение: VPS-провайдер (типично для серверов C2)
  • Паттерн: переподключение каждые ~60 секунд (поведение beaconing)
  • Риск: полная компрометация устройства

Рекомендуемые действия:

  1. Включите Авиарежим
  2. Проверьте недавно установленные приложения — ищите незнакомые
  3. Проверьте Настройки -> Приложения -> Особый доступ -> Администраторы устройства
  4. Рассмотрите полное сканирование с Malwarebytes Mobile
  5. Если проблема сохраняется — сброс до заводских настроек (сначала бэкап фото через 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 по умолчанию)

Рекомендуемая форензика:

  1. Захват полного PCAP до ремедиации устройства
  2. Извлечение списка APK: adb shell pm list packages -3
  3. Проверка администратора устройства: adb shell dpm list-device-owner
  4. Рекомендуется анализ MVT для комплексного извлечения IoC
  5. Сохранение цепочки доказательств при планировании юридических действий

Реальный кейс: 26 SSH-соединений на устройстве Xiaomi

Примечание: Вся идентифицирующая информация анонимизирована. Показанные 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 было рекомендовано:

  1. Немедленно включить Авиарежим
  2. Сделать бэкап важных фото через USB (не через облачную синхронизацию)
  3. Сброс устройства до заводских настроек
  4. Сменить все пароли с другого устройства
  5. Включить 2FA на всех аккаунтах
  6. Подать заявление в правоохранительные органы

Повторное сканирование после сброса показало ноль подозрительных соединений — только обычный 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 IDS

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: более широкое сопоставление паттернов для выявления новых угроз. Более высокий уровень ложных срабатываний, но ловит новое вредоносное ПО.

Примеры правил Suricata (для мобильных устройств)

# 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/год

Ключевые отличия

  1. Ноль установок на целевое устройство — Только VPN-подключение, без установки приложений, без USB-доступа, без jailbreak/root
  2. Доступность для нетехнических пользователей — Интерфейс Telegram-бота с AI-отчётами на понятном языке
  3. Четырёхуровневый анализ — Сочетание сигнатурного сопоставления (Suricata), поведенческого анализа, корреляции с threat intelligence и JA3 TLS-фингерпринтинга
  4. Осведомлённость о телеметрии производителя — Отдельная классификация телеметрии вендора для полной картины
  5. Адаптивная отчётность — Одна и та же находка объясняется по-разному для новичков и профессионалов безопасности

API и расширяемость

Архитектура сканера спроектирована для расширяемости. Ключевые точки интеграции:

API результатов сканирования (внутренний)

# Структура результата скана, возвращаемая 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 для организаций для программного запуска сканирований

Дорожная карта

Phase 2: Локальный Docker + Open Source (Приоритет)

Проект переходит к полностью открытой, self-hosted модели:

  • Docker self-hosted пакетdocker compose up разворачивает весь стек на вашем сервере
  • Полный open source — Весь backend код, не только документация
  • Community-driven — Issues, PR, правила детекции от сообщества
  • Zero trust — Ваш трафик не покидает вашу инфраструктуру

Это решает главную проблему доверия: вместо маршрутизации трафика через наши серверы, пользователи разворачивают собственный экземпляр. Облачный бот (@secure_scanbot) продолжит работу для тех, кому удобнее готовое решение.

Реализовано (v2.1-v2.3)

  • 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

Краткосрочные планы (Q1-Q2 2026)

  • Комплексное UX-тестирование — Полное тестирование бота: все пользовательские сценарии, граничные случаи, ошибки, аудит безопасности
  • Правила обнаружения для iOS — Классификация телеметрии экосистемы Apple, обнаружение iCloud Private Relay
  • WireGuard VPN — Альтернатива VLESS для пользователей, предпочитающих WireGuard
  • Регулярные сканирования по расписанию — Ежедневные/еженедельные автоматические сканирования
  • Экспорт PDF-отчётов — Скачиваемые отчёты с графиками и визуализациями
  • Расширенная база stalkerware — Интеграция дополнительных источников индикаторов помимо AssoEchap

Среднесрочные планы (Q3-Q4 2026)

  • Интеграция с VirusTotal — Проверка хешей файлов и доменов по базе VT
  • Анализ DNS-over-HTTPS — Обнаружение и анализ DoH-трафика для выявления скрытых DNS-запросов
  • Экспорт STIX2/MISP — Стандартизированный вывод threat intelligence для команд безопасности
  • Расширенная локализация — Полная локализация (сейчас английский и русский)
  • Обучение базовому профилю — Построение «нормального» профиля трафика устройства для обнаружения аномалий

Долгосрочные планы (2027)

  • ML-модели поведенческого анализа — Обучение моделей на паттернах трафика известного вредоносного ПО для обнаружения zero-day
  • Дашборд для организаций — Веб-интерфейс для IT-команд для управления массовыми сканированиями
  • Аппаратное устройство — Выделенное устройство (как PiRogue) для постоянного мониторинга домашней сети
  • Маркетплейс API — Плагины правил обнаружения от третьих сторон

Документация

Документ Описание
Архитектура Подробные описания компонентов со схемами потоков данных
Правила обнаружения Полный справочник правил обнаружения — порты, поведение, чёрные списки
Телеметрия устройств База доменов телеметрии производителей с анализом приватности
Кейсы Анонимизированные реальные кейсы с результатами сканера
Исследование мобильного вредоносного ПО Исследование сетевых сигнатур семейств мобильного вредоносного ПО

Ограничения и известные failure modes

Честные ограничения — у каждого 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-экосистема того же автора

Проект построен в Claude Code-centric workflow. Автор поддерживает публичный toolset для этой дисциплины:


Лицензия

MIT · Николай Подоляк


Автор

Николай Подоляк (Nick Podolyak) — Python-разработчик и цифровой архитектор в CREATMAN

Делаем мобильную безопасность доступной для каждого.