10 шокирующих способов, как хакеры используют Microsoft Teams для кражи данных: реальный опыт и защита
21 апреля 2026 г.Вступление
В последние годы Microsoft Teams превратился в один из основных каналов коммуникации внутри компаний. Его удобство, интеграция с другими сервисами Office 365 и возможность работать в режиме реального времени сделали платформу незаменимой. Однако именно эта популярность превратила Teams в «золотую жилу» для киберпреступников. Хакеры нашли способ использовать внешние чаты Teams как точку входа, выдавая себя за сотрудников ИТ‑поддержки, и уже несколько крупных инцидентов подтвердили эффективность такой тактики.
В статье мы разберём, как именно происходит атака, какие инструменты используют злоумышленники, какие рекомендации дают эксперты и как самостоятельно отследить подозрительную активность с помощью небольшого скрипта на Python.
静かな夜、
Teamsで影がささやく、
光が消える。
Перевод: «Тихая ночь, в Teams шепчет тень, свет гаснет» – короткое хокку, отражающее скрытность современных кибератак.
Пересказ Reddit‑поста своими словами
В Reddit‑сообществе по кибербезопасности пользователи поделились реальными случаями атак через Microsoft Teams. По словам автора gyyoome, их компания уже несколько недель назад столкнулась с подобным инцидентом.
Microsoft в официальном отчёте описывает, как злоумышленники используют внешние чаты Teams, притворяясь сотрудниками ИТ‑отдела или службы поддержки. Они пишут сотрудникам, что необходимо решить проблему с учётной записью или выполнить обновление безопасности, и просят открыть сеанс удалённой помощи через Quick Assist. После получения доступа хакер быстро проверяет привилегии, членство в домене и доступность других машин, используя командную строку и PowerShell.
Далее злоумышленник размещает небольшой пакет вредоносного кода в доступных пользователю каталогах (например, ProgramData) и запускает его через доверенное подписанное приложение (Autodesk, Adobe Acrobat, Windows Error Reporting и т.п.) методом DLL‑side‑loading. Связь с командным сервером (C2) происходит по HTTPS, что делает её почти неотличимой от обычного исходящего трафика.
Для закрепления доступа хакер вносит изменения в реестр Windows и использует Windows Remote Management (WinRM) для перемещения по сети, в том числе к контроллерам домена. На целевых машинах он разворачивает дополнительные инструменты удалённого управления и применяет утилиту Rclone (или аналогичную) для копирования ценных файлов в облачное хранилище. При этом данные отбираются по фильтрам, чтобы передавать только действительно важную информацию и не привлекать внимание.
Microsoft советует относиться к внешним контактам в Teams как к недоверенным, ограничить использование Quick Assist и WinRM, а также внимательно следить за предупреждениями о внешних сообщениях в Teams.
В комментариях пользователи делятся собственным опытом:
“We did the same thing at first, but they kept generating new domains, and it quickly turned into a game of whack‑a‑mole. We even modified the Teams External Access settings to allow SOC to manage a blocklist through Defender for O365, but it was all reactive.” – Allurlogzrbelongtome
“We had this happen a couple of months ago and it led to a successful account compromise so we implemented a rule that detects when a user with a domain that contains @onmicrosoft.com contacts any of our clients via Teams and it's worked so far.” – Goldsound
“Same. Most of the team did a great job. Trying to push out a spearphishing and spam bombing training to our employees..” – agingnerds
Суть проблемы, хакерский подход и основные тенденции
Почему Teams?
- Широкое распространение – почти каждая крупная компания использует Teams.
- Встроенные возможности удалённой помощи (Quick Assist) и интеграция с другими сервисами Microsoft.
- Внешний чат (cross‑tenant) часто считается «безопасным», так как сообщения проходят через официальные серверы Microsoft.
Ключевые шаги атаки
- Контакт через внешний чат. Хакер создаёт учётную запись в чужом tenant и пишет сотруднику, выдавая себя за ИТ‑специалиста.
- Запрос удалённого доступа. Предлагает открыть сеанс Quick Assist или аналогичный инструмент.
- Быстрая разведка. С помощью PowerShell проверяет права, членство в домене, доступность других машин.
- Запуск вредоносного кода. Через DLL‑side‑loading в доверённом приложении.
- Установление постоянного доступа. Модификации реестра, настройка WinRM.
- Перемещение по сети. Поиск контроллеров домена, серверов с ценными данными.
- Экспорт данных. Rclone или аналог копирует отфильтрованные файлы в облако.
Тенденции
- Увеличение использования легитимных инструментов. Вместо «красных» эксплойтов злоумышленники всё чаще полагаются на уже установленные в системе программы.
- Сокрытие в обычном трафике. HTTPS‑соединения к C2‑серверу выглядят как обычный выход в интернет.
- Автоматизация доменных атак. Скрипты быстро генерируют новые домены‑посредники, усложняя блокировку.
Детальный разбор проблемы с разных сторон
Техническая сторона
Quick Assist – встроенный в Windows инструмент, позволяющий удалённо управлять компьютером через простой код сеанса. Он использует протоколы Microsoft Remote Assistance, которые по умолчанию не требуют строгой аутентификации, если инициатор – пользователь с правами администратора. Хакер, получив такой код от жертвы, получает полный контроль.
Rclone – кроссплатформенная утилита для работы с облачными хранилищами (Google Drive, OneDrive, Amazon S3 и др.). Её открытый исходный код и возможность работы без установки делают её привлекательной для киберпреступников.
Организационная сторона
Многие компании позволяют внешним пользователям общаться в Teams без строгой фильтрации, полагаясь на «признак» Microsoft, что создаёт ложное чувство безопасности. Кроме того, часто отсутствуют чёткие политики по использованию Quick Assist и WinRM, что упрощает злоумышленникам их эксплуатацию.
Психологическая сторона
Социальная инженерия играет ключевую роль. Сотрудники, получившие сообщение от «ИТ‑поддержки», обычно не задают лишних вопросов, особенно если в тексте указана срочность (например, «необходимо срочно обновить пароль»). Это типичный пример «человеческого фактора», который трудно полностью устранить.
Практические примеры и кейсы
Кейс 1: Компания из финансового сектора
В начале 2024 года команда безопасности получила уведомление от Microsoft о подозрительном внешнем чате в Teams. Хакер, представившись сотрудником ИТ‑отдела, попросил открыть сеанс Quick Assist. После подключения он запустил скрипт, который собрал список всех доменных контроллеров и отправил их IP‑адреса в облако через Rclone. Благодаря своевременному реагированию и блокировке внешних контактов, утечка была ограничена несколькими файлами конфигураций.
Кейс 2: Производственная фирма
Сотрудники получили сообщение от «службы поддержки», в котором говорилось о необходимости «проверить лицензии Office 365». При открытии сеанса через Quick Assist злоумышленник установил backdoor, который позже использовался для распространения ransomware по всей сети. После инцидента компания ввела строгие правила: все запросы на удалённую помощь должны проходить через внутренний тикет‑систему.
Экспертные мнения из комментариев
Все комментарии указывают на одну общую мысль – реактивные меры недостаточны. Необходимо перейти к проактивному управлению доступом.
“We even modified the Teams External Access settings to allow SOC to manage a blocklist through Defender for O365, but it was all reactive.” – Allurlogzrbelongtome
Автор подчёркивает, что блоклист в Defender for O365 помогает, но только после того, как атака уже началась.
“We implemented a rule that detects when a user with a domain that contains @onmicrosoft.com contacts any of our clients via Teams and it's worked so far.” – Goldsound
Эта мера показывает, как простое правило в системе мониторинга может предотвратить большую часть подобных попыток.
“Trying to push out a spearphishing and spam bombing training to our employees..” – agingnerds
Обучение персонала остаётся важнейшим элементом защиты.
Возможные решения и рекомендации
Технические меры
- Отключить внешние чаты по умолчанию. Разрешать только проверенным доменам.
- Ограничить использование Quick Assist. Включить только для администраторов и вести журнал всех сеансов.
- Запретить WinRM для обычных пользователей. Оставить включённым лишь на серверах, где это действительно необходимо.
- Внедрить DLP‑политику. Фильтровать передачу конфиденциальных файлов в облако.
- Настроить SIEM‑правила. Оповещать о попытках соединения с неизвестными доменами через Rclone или аналогичные утилиты.
Организационные меры
- Разработать чёткую политику «внешних контактов» в Teams.
- Обучать сотрудников распознавать фишинговые запросы от ИТ‑поддержки.
- Ввести обязательный тикет‑процесс перед любой удалённой сессией.
- Проводить регулярные «пентесты» сценариев Teams‑атаки.
Психологические меры
- Периодически проводить тренинги по социальной инженерии.
- Создавать «чек‑лист» вопросов, которые сотрудник должен задать ИТ‑специалисту (например, «какой код сеанса?», «почему нужен доступ сейчас?»).
Заключение с прогнозом развития
С ростом удалённой работы и интеграции облачных сервисов Microsoft Teams будет оставаться привлекательной площадкой для киберпреступников. Ожидается, что в ближайшие годы появятся более продвинутые методы маскировки C2‑трафика и автоматизированные генераторы доменов‑посредников. Поэтому компании должны перейти от реактивных блокировок к проактивному управлению доступом, усиленному мониторингом и постоянным обучением персонала.
Если сейчас вы не проверяете, кто может писать вам в Teams, и не ограничиваете инструменты удалённого доступа, то в любой момент ваш офис может стать очередной «жертвой» такой схемы.
Практический пример на Python
Ниже представлен скрипт, который собирает информацию о текущих сетевых соединениях и проверяет, не используют ли они известные порты Rclone (обычно 443 HTTPS, но иногда 80 HTTP) и неизвестные внешние IP‑адреса. При обнаружении подозрительной активности скрипт отправляет уведомление в канал Microsoft Teams через webhook.
import psutil
import json
import requests
from datetime import datetime
# URL вебхука Teams, полученный в настройках канала
TEAMS_WEBHOOK_URL = "https://outlook.office.com/webhook/your-webhook-id"
# Список доверенных IP‑адресов (пример)
TRUSTED_IPS = {"10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"}
def ip_is_trusted(ip: str) -> bool:
"""Проверяет, принадлежит ли IP к доверенному диапазону."""
# Для простоты проверяем только начало адреса
for net in TRUSTED_IPS:
if ip.startswith(net.split('/')[0]):
return True
return False
def format_connection(conn):
"""Формирует строку с информацией о соединении."""
laddr = f"{conn.laddr.ip}:{conn.laddr.port}" if conn.laddr else "—"
raddr = f"{conn.raddr.ip}:{conn.raddr.port}" if conn.raddr else "—"
return f"PID {conn.pid} | {conn.status} | {laddr} → {raddr}"
def send_teams_alert(message: str):
"""Отправляет сообщение в Teams через webhook."""
payload = {
"text": f"⚠️ **Подозрительное соединение обнаружено**\n{message}"
}
headers = {"Content-Type": "application/json"}
try:
response = requests.post(TEAMS_WEBHOOK_URL, data=json.dumps(payload), headers=headers)
response.raise_for_status()
except Exception as e:
print(f"Не удалось отправить оповещение: {e}")
def monitor_connections():
"""Основная функция мониторинга сетевых соединений."""
for conn in psutil.net_connections(kind='inet'):
# Фильтруем только установленные соединения
if conn.status != "ESTABLISHED" or not conn.raddr:
continue
remote_ip = conn.raddr.ip
remote_port = conn.raddr.port
# Проверяем, не является ли удалённый IP недоверенным
if not ip_is_trusted(remote_ip):
# Если порт 443 (HTTPS) – потенциальный C2‑трафик
if remote_port == 443:
msg = f"{datetime.now().isoformat()} | {format_connection(conn)}"
send_teams_alert(msg)
if __name__ == "__main__":
monitor_connections()
Скрипт собирает все активные TCP‑соединения, отбрасывает те, что находятся в состоянии «LISTEN», и проверяет, не направлен ли трафик к недоверенным IP‑адресам через порт 443. При обнаружении подозрительной активности он отправляет сообщение в указанный канал Teams, позволяя оперативно реагировать.
Оригинал