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


На пентесте инфраструктуры логистической компании основная цель была Active Directory, но первый foothold случился через Mattermost - самохостируемый инстанс с дефолтным incoming webhook, через который бот CI/CD-пайплайна отправлял deploy-логи с AWS-ключами в plaintext. Три строки в curl, один вызов API - и initial access в облако появился задолго до того, как я добрался до контроллера домена.

Корпоративные мессенджеры - одна из самых недооценённых поверхностей атаки. Компании вкладываются в WAF и EDR, а переписку аудируют в последнюю очередь. Если вообще аудируют. Ниже - методология, которую я применяю при аудите безопасности мессенджеров, с конкретными инструментами, командами и ограничениями каждой техники.

Место мессенджера в цепочке атаки​

Прежде чем разбирать конкретные техники пентеста - зачем атакующему вообще нужен мессенджер? В терминах MITRE ATT&CK корпоративные коммуникации фигурируют минимум в трёх тактиках: Подробнее - в нашем статье о пентест мобильных приложений.
  • Initial Access - фишинг через сервис (Spearphishing via Service, T1566.003): вместо email атакующий отправляет вредоносную ссылку или файл через Slack, Teams или внутренний чат. Контент-фильтрация там на порядок слабее почтового шлюза
  • Credential Access - извлечение учётных данных из сообщений (Chat Messages, T1552.008): пароли, API-токены, SSH-ключи, которые сотрудники пересылают друг другу в чате
  • Collection - сбор данных из мессенджеров (Messaging Applications, T1213.005): выгрузка переписки, файлов, контактов после компрометации учётной записи
Бизнес-логика атаки проста: мессенджер - место, где люди расслабляются. Через email сотрудник ещё подумает перед тем как отправить пароль от staging, а в Slack-канале #devops это происходит ежедневно. Финальный импакт - от lateral movement через украденные токены до полной компрометации облачной инфраструктуры через CI/CD-ключи из чатов.

При пентесте мессенджера работа идёт на пересечении нескольких доменов: веб-приложение (REST API), мобильный клиент, десктоп (Electron), сетевой трафик и криптография. Это и определяет набор инструментов.

Recon - fingerprinting до первого запроса к мессенджеру​

1784276168648.webp

Определение класса и версии​

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

КлассПримерыЧто доступно для аудитаТипичные находки
SaaS (облачный)Slack, TeamsAPI, интеграции, конфигурация workspaceИзбыточные OAuth-скоупы, утечки токенов в логах
Self-hostedMattermost, Rocket.Chat, Matrix/SynapseСервер целиком + API + конфигурацияДефолтные credentials, открытые admin-панели, устаревшие версии
Custom (собственная разработка)Внутренние решенияПолный стекВсё вышеперечисленное + логические уязвимости бизнес-процессов

[Применимо: grey box / white box, внешний и внутренний пентест]

Для self-hosted решений recon начинается стандартно: nmap -sV по целевому хосту покажет версию Nginx/Apache и косвенно - продукт за ним. Mattermost отдаёт характерный заголовок X-Version-Id. Rocket.Chat раскрывает версию через endpoint /api/info без аутентификации. Matrix/Synapse - через /_matrix/federation/v1/version.

Ограничение: для SaaS-решений (Slack, Teams) серверный fingerprinting бесполезен - вы работаете с инфраструктурой вендора. Фокус целиком смещается на конфигурацию workspace и интеграции.

Анализ OAuth-интеграций и ботов​

В каждом корпоративном мессенджере живут боты и интеграции - одна из самых жирных поверхностей атаки. Почему:
  • Webhook URL часто содержит токен прямо в URL (Slack incoming webhooks: https://hooks.slack.com/services/T00/B00/XXXX)
  • Боты получают OAuth-скоупы, избыточные для задачи: бот для нотификаций с правом channels:read на все приватные каналы
  • Токены ботов не ротируются годами и не покрываются MFA
По OWASP API Security Top 10 это напрямую попадает под API2:2023 (Broken Authentication): токены интеграций - полноценные credentials, которые редко защищают как таковые.

На этом этапе запрашиваем у заказчика (grey box) или находим самостоятельно:
  • Список установленных приложений/ботов и их OAuth-скоупы
  • Webhook URL (поиск в репозиториях, CI/CD-конфигах, переменных окружения)
  • Сервисные учётные записи мессенджера

Анализ трафика мессенджеров​

Требования к окружению​

  • ОС: Kali Linux 2024.x+ или macOS с brew
  • RAM: минимум 8 ГБ (mitmproxy + Wireshark одновременно)
  • Инструменты: mitmproxy 10.x+ (активно поддерживается, OSS), Wireshark 4.x+ (активно поддерживается, OSS), собственный CA-сертификат
  • Сеть: контролируемый сегмент - физический доступ к Wi-Fi или VLAN, режим online
  • Права: root/sudo для перехвата трафика, письменное согласие заказчика на перехват

Перехват через mitmproxy​

Большинство мессенджеров используют TLS 1.2+ для транспорта, но десктопные Electron-клиенты (Slack, Mattermost, Teams) и мобильные приложения по-разному реализуют certificate pinning. Это техника Network Sniffing (T1040, Credential Access / Discovery) по MITRE ATT&CK.

[Применимо: внутренний пентест, grey box с доступом к устройству]
Bash:
# Запуск mitmproxy с фильтром по домену мессенджера
mitmproxy --mode transparent --set block_global=false -w messenger_traffic.flow --view-filter "~d mattermost.corp.local | ~d slack.com"
На что смотреть в перехваченном трафике:
  • Токены в заголовках - Bearer-токены в Authorization, cookie с session ID. Передаются ли они по незащищённым каналам при fallback?
  • API-вызовы без аутентификации - некоторые эндпоинты self-hosted решений доступны без токена (получение публичных каналов, список пользователей)
  • Метаданные - даже при E2EE метаданные (кто с кем, когда, объём данных) идут в открытом виде и доступны при анализе трафика мессенджеров
На нескольких проектах через перехват трафика мессенджера я находил session-токены, позволявшие имперсонировать учётные записи без знания пароля - прямой lateral movement.

Ограничения: certificate pinning в мобильных клиентах Slack и Teams делает прозрачный перехват невозможным без модификации приложения (Frida). Десктопные Electron-клиенты обычно доверяют системному хранилищу сертификатов - pinning там встречается реже.

Пентест API мессенджера - уязвимости корпоративных мессенджеров​

1784276199691.webp

Webhook-инъекции и утечка токенов​

Webhook - входная точка, которую разработчики защищают хуже всего. Типичный сценарий: CI/CD (Jenkins, GitLab CI) отправляет уведомления в канал мессенджера через incoming webhook.

Что проверять в рамках тестирования безопасности мессенджеров:
  1. Аутентификация webhook - принимает ли endpoint произвольные POST-запросы без подписи? Mattermost incoming webhooks по умолчанию не проверяют payload signature
  2. Формат сообщений - можно ли через webhook отправить сообщение с произвольным username и icon_url, имитируя системные уведомления (social engineering внутри мессенджера)
  3. Утечка webhook URL - поиск в публичных репозиториях, Docker-образах, CI/CD-конфигурациях. Один найденный webhook URL = возможность отправлять сообщения от имени бота в любой канал
По OWASP Top 10 это пересечение A01:2021 (Broken Access Control) и A05:2021 (Security Misconfiguration).

Broken Access Control в API чатов​

Для self-hosted мессенджеров тестирование API проводится через Burp Suite (коммерческий, активно поддерживается PortSwigger) по методологии OWASP WSTG, но с мессенджер-специфичными проверками:
  • IDOR на сообщения - подмена message_id или channel_id в API-запросе. Можно ли прочитать сообщения чужого приватного канала?
  • Эскалация ролей - может ли обычный пользователь через API назначить себе роль admin или channel_admin?
  • Экспорт данных - API для compliance-экспорта переписки доступен только администраторам? Или любой пользователь с валидным токеном способен выгрузить историю всех каналов?
[Применимо: self-hosted (Mattermost, Rocket.Chat, Matrix), grey box с учётными записями разных ролей]

Ограничение: SaaS-решения (Slack, Teams) не позволяют тестировать серверную логику - баги ищутся только на уровне API-вызовов с позиции пользователя. Фаззинг серверных эндпоинтов Slack приведёт к бану IP и нарушению Terms of Service.

Проверка шифрования мессенджеров: криптографический аудит​

End-to-end encryption - что реально проверять​

Анализ защищённости мессенджеров на уровне E2EE - отдельная дисциплина. Тут сканер не поможет. По классификации OWASP ASVS (уровни 2-3) криптографические проверки включают валидацию конкретных реализаций, а не просто галочку "шифрование включено".

Ключевые вопросы при аудите E2EE:
  1. Какой протокол? Signal Protocol (Double Ratchet) - стандарт де-факто, используется в WhatsApp, Signal, частично Matrix (Olm/Megolm). Но реализация может расходиться со спецификацией
  2. Обмен ключами - TOFU (Trust On First Use) без верификации fingerprint открывает возможность MITM при первом подключении
  3. Что именно шифруется? Тело сообщения - да. А метаданные (отправитель, получатель, время, размер)? Вложения? Реакции?
  4. Групповые чаты - sender keys vs pairwise encryption. При добавлении нового участника пересоздаются ли сессионные ключи?
По данным OpenTech Fund, независимые аудиты мессенджеров (Delta Chat, Briar, Partisan Telegram) регулярно выявляют проблемы не в самом криптопротоколе, а в его реализации: некорректное управление ключами, отсутствие ротации, утечки ключевого материала через побочные каналы. Аудит протокола Signal на бумаге - это одно. Анализ того, как его прикрутили к конкретному продукту - совсем другое.

Downgrade-атаки на протокол​

[Применимо: внутренний пентест с контролем сетевого сегмента]

Если мессенджер поддерживает и E2EE, и обычный режим, проверяется:
  • Можно ли принудительно переключить сессию на не-E2EE (downgrade)
  • Уведомляется ли пользователь при смене ключа собеседника
  • Работает ли E2EE при переключении между Wi-Fi и мобильной сетью без разрыва
Это попадает под A02:2021 (Cryptographic Failures) в OWASP Top 10.

Ограничение: полноценный криптоаудит протокола требует white box доступа к исходному коду. В black box и grey box оценивается только поведение клиента - наличие downgrade, реакция на подмену ключей, утечки в трафике.

Извлечение артефактов: от SQLite до Frida​

1784276258490.webp

Локальное хранилище десктопных клиентов​

Десктопные клиенты мессенджеров (Electron-приложения Slack, Mattermost, Teams) хранят данные локально. На скомпрометированном хосте это золотая жила для утечки данных через мессенджеры.

Типичные пути хранения:
  • Slack: ~/.config/Slack/Local Storage/leveldb/ (Chromium LevelDB)
  • Mattermost: ~/.config/Mattermost/ - SQLite-база с историей сообщений
  • Teams: ~/.config/Microsoft/Microsoft Teams/ - cookies, tokens в LevelDB
Bash:
# Извлечение токенов из LevelDB Slack на GNU/Linux
strings ~/.config/Slack/Local\ Storage/leveldb/*.ldb | grep -oP 'xoxc-[a-zA-Z0-9-]+'
Найденные токены (xoxc-, xoxb-, xoxp- для Slack) позволяют обращаться к API от имени пользователя без пароля и без MFA. По MITRE ATT&CK это Valid Accounts (T1078, Initial Access / Persistence) - украденный токен функционально эквивалентен легитимной сессии.

Ограничения: в Windows-среде с настроенным DPAPI токены могут быть зашифрованы ключом пользователя - потребуется DPAPI-расшифровка, что добавляет шаг к цепочке. На macOS - Keychain Access с паролем пользователя.

Динамический анализ мобильных клиентов​

[Применимо: grey/white box, мобильное приложение мессенджера, рутованное устройство или эмулятор]

Frida (активно поддерживается, OSS) позволяет перехватывать вызовы криптографических функций в рантайме и проверять, действительно ли сквозное шифрование работает как заявлено.
JavaScript:
// Frida hook: перехват вызова шифрования в мобильном клиенте
// Имя функции зависит от конкретного приложения - это пример для демонстрации подхода
Interceptor.attach(Module.findExportByName("libsignal.so", "signal_encrypt"), {
  onEnter: function(args) {
    console.log("[*] signal_encrypt called");
    console.log("    plaintext len: " + args[1].toInt32());
  }
});
Хук покажет, вызывается ли функция шифрования перед отправкой сообщения. Если libsignal.so не загружается или отправка идёт через обычный HTTP POST - E2EE не работает для этого типа сообщений. Бывает, что текстовые сообщения шифруются, а вложения летят в чём мать родила.

Ограничение: Frida требует root/jailbreak на устройстве. На iOS с актуальным jailbreak ситуация нестабильная (мягко говоря). На Android рекомендуется эмулятор с API level, соответствующим целевому приложению.

Выбор вектора при пентесте мессенджера​

Decision tree: какой вектор выбрать в зависимости от условий аудита корпоративного мессенджера.

УсловиеВекторОсновной инструмент
Self-hosted, grey box, есть учётные записи разных ролейAPI-тестирование: IDOR, privilege escalation, exportBurp Suite + методология OWASP WSTG
Доступ к рабочей станции сотрудникаИзвлечение токенов из SQLite/LevelDBstrings, sqlite3, ручной анализ
Контроль сетевого сегмента (внутренний пентест)Перехват трафика, downgrade-атакиmitmproxy, Wireshark
Root-доступ к мобильному устройствуАнализ E2EE-реализации, обход pinningFrida
Только внешний доступ (black box, SaaS)Webhook-интеграции, OAuth-скоупы, phishing через сервисBurp Suite, OSINT по утечкам токенов
White box, доступ к кодуКриптографический аудит протокола, code reviewРучной анализ + специализированные фреймворки

Trade-off: инструменты тестирования безопасности мессенджеров​

ИнструментПреимуществаОграниченияКогда использоватьКогда НЕ использовать
Burp SuiteПолноценный перехват и модификация API-запросов, расширения для автоматизацииНе подходит для бинарных протоколов (Matrix Federation), требует настройки SSL для каждого клиентаAPI-тестирование self-hosted мессенджеровАнализ криптопримитивов E2EE
mitmproxyСкриптуемость на Python, фильтрация по домену, сохранение flows для повторного анализаБесполезен при certificate pinning без Frida, не парсит custom-протоколыПерехват REST API трафика Electron-клиентовМобильные клиенты с pinning
WiresharkГлубокий анализ пакетов, TLS-расшифровка при наличии SSLKEYLOGFILEПассивный - не модифицирует трафик, генерирует огромный объём данныхАнализ метаданных, выявление fallback на незащищённые протоколыАктивное тестирование API
FridaДинамический анализ без исходного кода, хук любой экспортируемой функцииТребует root/jailbreak, нестабилен на свежих iOSПроверка реальной работы E2EE в рантайме, обход pinningСерверная часть, нет физического доступа

Чеклист аудита безопасности корпоративного мессенджера​

📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме

Клиентская часть:
  1. Проверить хранение токенов на диске: plaintext vs зашифрованное хранилище (DPAPI, Keychain)
  2. Проверить, инвалидируется ли сессия на сервере при logout (не только удаление с клиента)
  3. Проверить кэширование сообщений и вложений на диске - наличие шифрования at rest
Большая часть описанного - стандартная методология аудита веб-приложений, адаптированная под специфику мессенджеров. Но подобные проверки проводятся редко. Причина прозаичная: заказчик приходит с запросом "проверьте нам AD и периметр", а мессенджер воспринимается как "ну это же просто чат".

Между тем, за два года работы с корпоративными инсталляциями я вытаскивал из чатов AWS-ключи, пароли от production-баз, VPN-конфиги с приватными ключами и однажды - полный дамп клиентской базы, который менеджер переслал коллеге CSV-файлом в приватном канале Slack. Ни один из этих случаев не был бы обнаружен существующими средствами мониторинга, потому что мессенджер не входил в периметр детекции.

Мессенджер в корпоративной инфраструктуре - это одновременно хранилище секретов, канал доставки payload и вектор lateral movement. Пока его не начнут включать в скоуп пентеста по умолчанию, а не по отдельному запросу за дополнительную оплату - мы будем продолжать находить там одни и те же AWS-ключи и одни и те же дампы. Проверьте свой Mattermost прямо сейчас - grep -ri "AKIA" /opt/mattermost/data/ - и посмотрите, сколько ключей там валяется.
 
Последнее редактирование модератором:
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🧭 Навигатор · ИБ 2026
Не знаешь, какой трек твой?
5 направлений ИБ, реальные зарплаты и точка входа для каждого — в одном треде.
JuniorSenior+
100K → 600K+ ₽ /мес
Открыть навигатор →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab