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.

Ключевые шаги атаки

  1. Контакт через внешний чат. Хакер создаёт учётную запись в чужом tenant и пишет сотруднику, выдавая себя за ИТ‑специалиста.
  2. Запрос удалённого доступа. Предлагает открыть сеанс Quick Assist или аналогичный инструмент.
  3. Быстрая разведка. С помощью PowerShell проверяет права, членство в домене, доступность других машин.
  4. Запуск вредоносного кода. Через DLL‑side‑loading в доверённом приложении.
  5. Установление постоянного доступа. Модификации реестра, настройка WinRM.
  6. Перемещение по сети. Поиск контроллеров домена, серверов с ценными данными.
  7. Экспорт данных. 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, позволяя оперативно реагировать.


Оригинал
PREVIOUS ARTICLE