10 шокирующих способов защититься от имитации службы поддержки в Microsoft Teams

19 апреля 2026 г.

Вступление

В последние годы облачные платформы становятся основной ареной для работы компаний любого масштаба. Microsoft Teams, будучи интегрированным в пакет офисных приложений, используется миллионами сотрудников для общения, совместного редактирования документов и проведения видеоконференций. Именно эта популярность делает Teams привлекательной целью для киберпреступников.

Новые исследования показывают, что злоумышленники всё чаще используют Teams не только как канал для рассылки вредоносных ссылок, но и как средство для имитации сотрудников службы поддержки. Под видом «техподдержки» они убеждают пользователей раскрыть учётные данные, инициируют сброс паролей и даже перемещаются между различными аренами (tenant‑ами) облака, получая доступ к конфиденциальной информации.

Почему это актуально именно сейчас? Во-первых, рост удалённой работы усилил зависимость от облачных сервисов. Во‑вторых, многие организации недостаточно усилили процессы проверки подлинности запросов от службы поддержки. В‑третьих, Microsoft Teams предоставляет удобный интерфейс для мгновенного общения, что упрощает социальную инженерию.

Японское хокку, отражающее суть проблемы:

静かな夜、
影がささやく、
クリックで消える光。

Пересказ оригинального Reddit‑поста

Автор поста thejournalizer в нескольких абзацах изложил суть новой угрозы: живые злоумышленники используют Microsoft Teams, чтобы выдавать себя за сотрудников службы поддержки, заставлять жертв менять пароли и методы многофакторной аутентификации, перемещаться между аренами разных компаний и выводить данные через легитимные облачные сервисы. В качестве рекомендаций он предложил усилить проверку запросов от техподдержки, ограничить межарендный доступ, отслеживать аномальные паттерны общения в Teams и сопоставлять события изменения учётных данных с всплесками доступа к данным.

В комментариях Benzo‑Kazooie отметил, что перед появлением «фальшивой службы поддержки» часто приходят массовые рассылки‑бомбы, а затем злоумышленники предлагают «исправить» ситуацию с помощью удалённого управления или поддельных страниц входа. mikegainesville спросил у сообщества, какие инструменты и процессы подходят для проверки подлинности запросов от техподдержки.

Суть проблемы и хакерский подход

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

  1. Инициация контакта. Злоумышленник отправляет пользователю сообщение в Teams, маскируясь под сотрудника службы поддержки. Текст обычно содержит «помощь в решении проблемы с учётной записью» или «необходимость срочно обновить пароль».
  2. Социальная инженерия. Через диалог создаётся ощущение доверия: «Мы видим, что ваш аккаунт заблокирован, пожалуйста, перейдите по ссылке» или «Мы можем установить удалённый агент, чтобы исправить ошибку».
  3. Сбор учётных данных. Пользователь вводит логин и пароль, а иногда и код из приложения‑генератора, который злоумышленник перехватывает.
  4. Сброс MFA и получение привилегий. После получения начальных данных атакующий инициирует сброс многофакторной аутентификации, тем самым получая полный контроль над учётной записью.
  5. Перемещение между аренами. С помощью полученных прав злоумышленник «перепрыгивает» в другие аренки, где у него могут быть дополнительные привилегии, и начинает массовый экспорт данных через легитимные сервисы (OneDrive, SharePoint, Azure Blob).

Основные тенденции

  • Рост использования Teams как «канала доверия». Пользователи привыкли к быстрым сообщениям от коллег, поэтому подозрительные запросы часто игнорируются.
  • Сочетание фишинга и прямого доступа. Вместо традиционных писем‑фишинговых ссылок злоумышленники используют уже открытый чат‑мессенджер.
  • Эксплуатация слабых процессов верификации. Многие организации полагаются лишь на имя отправителя, не проверяя вторую форму подтверждения (например, звонок по внутреннему номеру).
  • Масштабирование через облачные сервисы. После получения доступа атакующий использует встроенные возможности Microsoft 365 для копирования и выгрузки данных без необходимости установки сторонних программ.

Детальный разбор проблемы с разных сторон

Техническая сторона

Технически атака опирается на две уязвимости:

  1. Отсутствие строгой политики проверки запросов. В Teams нет встроенного механизма «подтверждения подлинности» для сообщений от службы поддержки.
  2. Гибкость межарендного доступа. При наличии прав «глобального администратора» в одной аренке злоумышленник может добавить себя в другие аренки, если те используют общие идентификационные провайдеры.

Кроме того, Microsoft Teams хранит историю сообщений в облаке, что позволяет злоумышленнику после получения доступа собрать контекстные данные (имена коллег, проекты, внутренние коды).

Организационная сторона

Большинство компаний полагаются на «доверие к имени» в корпоративных чатах. Процессы верификации часто ограничиваются простым «проверьте, что сообщение пришло от официального аккаунта». При этом не учитывается, что аккаунт может быть скомпрометирован.

Психологическая сторона

Социальная инженерия использует три основных триггера:

  • Срочность. Фразы типа «нужно немедленно исправить проблему» заставляют пользователя действовать без раздумий.
  • Авторитет. Упоминание «службы поддержки» создаёт ощущение официального запроса.
  • Страх потери доступа. Угроза блокировки аккаунта усиливает давление.

Практические примеры и кейсы

Кейс 1: Финансовая компания «АльфаКапитал»

Злоумышленник, получив доступ к одному сотруднику через Teams, инициировал сброс MFA, после чего получил доступ к финансовым отчётам, выгрузив их в Azure Blob Storage. Выявление произошло только после аномального скачивания более 10 ГБ данных за один час.

Кейс 2: ИТ‑консалтинговая фирма «ТехСфера»

Сотрудники получили сообщение от «службы поддержки», в котором предлагалось установить «обновление безопасности». После установки вредоносного агента RMM (Remote Monitoring and Management) злоумышленник получил возможность удалённо управлять рабочими станциями, а затем использовал их для рассылки спама.

Экспертные мнения из комментариев

«Я видел, как перед появлением фальшивой службы поддержки приходят массовые письма‑бомбы, а затем злоумышленники предлагают «исправить» ситуацию с помощью RMM‑программ или поддельных страниц входа».

— Benzo‑Kazooie

«Какие методы или продукты вы используете для проверки подлинности запросов от службы поддержки? Я ищу способы внедрить процесс для этого».

— mikegainesville

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

Возможные решения и рекомендации

Технические меры

  • Внедрить политику двойной верификации запросов. Любой запрос на изменение учётных данных должен подтверждаться через отдельный канал (SMS, телефонный звонок, внутренний тикет‑система).
  • Ограничить межарендный доступ. Настроить Conditional Access (условный доступ) так, чтобы только проверенные сервисные аккаунты могли перемещаться между аренками.
  • Мониторинг аномальных паттернов в Teams. Использовать Microsoft Sentinel или аналогичные SIEM‑системы для обнаружения резкого увеличения количества сообщений от одного аккаунта.
  • Корреляция событий. Связывать события сброса MFA с логами доступа к файлам; если после сброса наблюдается скачивание больших объёмов данных – генерировать тревогу.

Организационные меры

  • Разработать чёткие инструкции для сотрудников: «Служба поддержки никогда не просит вводить пароль в чат‑сообщении».
  • Провести регулярные тренинги по социальной инженерии, используя реальные сценарии из кейсов.
  • Назначить ответственного за проверку запросов от техподдержки (например, менеджер ИТ‑службы).

Процедурные меры

  • Ввести обязательный тикет‑процесс: любой запрос на изменение учётных данных фиксируется в системе управления инцидентами и проходит согласование.
  • Регулярно проводить аудит прав доступа, особенно у глобальных администраторов.
  • Обновлять политики паролей и MFA, используя адаптивные методы (поведенческий анализ).

Заключение и прогноз развития

С учётом ускоренного перехода к гибридным и полностью удалённым моделям работы, злоумышленники будут всё активнее использовать уже «заслуженные» каналы коммуникации, такие как Microsoft Teams, для проведения атак. Ожидается рост количества инцидентов, связанных с имитацией службы поддержки, а также появление более изощрённых методов обхода MFA (например, атаки на генераторы токенов через вредоносные мобильные приложения).

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

Практический пример на Python

Ниже представлен скрипт, который автоматически проверяет сообщения в Microsoft Teams на наличие подозрительных запросов о сбросе пароля. При обнаружении такой фразы скрипт отправляет уведомление в Slack‑канал безопасности и создаёт тикет в системе управления инцидентами.


# -*- coding: utf-8 -*-
"""
Пример скрипта для мониторинга сообщений в Microsoft Teams
и автоматической генерации оповещений при подозрительных запросах.
Требуются:
    - Microsoft Graph API (токен с правами чтения сообщений)
    - Slack webhook URL
    - API‑ключ системы тикетирования (пример: ServiceNow)
"""

import requests
import json
import time

# Конфигурационные параметры
GRAPH_ENDPOINT = "https://graph.microsoft.com/v1.0/me/chats"
SLACK_WEBHOOK = "https://hooks.slack.com/services/XXXXX/XXXXX/XXXXX"
SERVICENOW_ENDPOINT = "https://instance.service-now.com/api/now/table/incident"
SERVICENOW_USER = "api_user"
SERVICENOW_PASS = "api_password"

# Список ключевых слов, характерных для фишинговых запросов
SUSPICIOUS_PHRASES = [
    "сбросить пароль",
    "восстановить доступ",
    "помощь службы поддержки",
    "необходимо обновить учетные данные"
]

def get_teams_messages():
    """
    Получает последние сообщения из всех чатов пользователя.
    Возвращает список словарей с полями 'id', 'body' и 'from'.
    """
    headers = {"Authorization": f"Bearer {ACCESS_TOKEN}"}
    response = requests.get(GRAPH_ENDPOINT, headers=headers)
    response.raise_for_status()
    chats = response.json().get("value", [])
    messages = []
    for chat in chats:
        chat_id = chat["id"]
        msgs_url = f"{GRAPH_ENDPOINT}/{chat_id}/messages"
        msgs_resp = requests.get(msgs_url, headers=headers)
        msgs_resp.raise_for_status()
        msgs = msgs_resp.json().get("value", [])
        for m in msgs:
            messages.append({
                "id": m["id"],
                "body": m["body"]["content"].lower(),
                "from": m["from"]["user"]["displayName"]
            })
    return messages

def is_suspicious(text):
    """
    Проверяет, содержит ли текст подозрительные фразы.
    """
    for phrase in SUSPICIOUS_PHRASES:
        if phrase in text:
            return True
    return False

def send_slack_alert(message):
    """
    Отправляет сообщение в Slack через webhook.
    """
    payload = {"text": f":warning: Обнаружен подозрительный запрос в Teams: {message}"}
    requests.post(SLACK_WEBHOOK, data=json.dumps(payload))

def create_servicenow_incident(description):
    """
    Создаёт инцидент в ServiceNow.
    """
    data = {
        "short_description": "Подозрительный запрос в Microsoft Teams",
        "description": description,
        "category": "security"
    }
    response = requests.post(
        SERVICENOW_ENDPOINT,
        auth=(SERVICENOW_USER, SERVICENOW_PASS),
        headers={"Content-Type": "application/json"},
        data=json.dumps(data)
    )
    response.raise_for_status()
    return response.json()["result"]["number"]

def main_loop():
    """
    Основной цикл: каждые 60 секунд проверяем новые сообщения.
    """
    while True:
        try:
            msgs = get_teams_messages()
            for msg in msgs:
                if is_suspicious(msg["body"]):
                    alert_text = f"От {msg['from']}: {msg['body']}"
                    send_slack_alert(alert_text)
                    incident_id = create_servicenow_incident(alert_text)
                    print(f"Создан инцидент {incident_id}")
        except Exception as e:
            print(f"Ошибка при обработке: {e}")
        time.sleep(60)

# Токен доступа к Microsoft Graph API должен быть получен заранее
ACCESS_TOKEN = "YOUR_ACCESS_TOKEN"

if __name__ == "__main__":
    main_loop()

Скрипт демонстрирует, как с помощью официального API Microsoft Graph можно автоматически собирать сообщения из Teams, искать в них характерные фразы, а при их обнаружении мгновенно оповещать команду безопасности через Slack и создавать тикет в системе управления инцидентами. Такой подход позволяет сократить время реакции с часов до минут.


Оригинал
PREVIOUS ARTICLE