Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
TeamsPhisher — Отправляйте фишинговые сообщения и вложения пользователям Microsoft Teams | Kitploit
Инструменты/GitHubGitHub/octoberfest7/teamsphisher
Инструменты фишингаРазведкаСбор информацииФишингТестирование на ПроникновениеСоциальная инженерияRed Teaming
GitHuboctoberfest7/teamsphisher

TeamsPhisher

Отправляйте фишинговые сообщения и вложения пользователям Microsoft Teams

Репозиторий
1.1k1422 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
root@kitploit:~
                            ...                                               
                        :-++++++=-.                                           
                      .=+++++++++++-                                          
                     .++++++++++++++=     :------:                            :-:--.                 
                     :+++++++++++++++.  .----------                           #= .-+.                
                     :+++++++++++++++.  -----------:                         :#=  :#.                   
:--------------------------=++++++++-  .------------                          .=+  ++                
----------------------------+++++*+-.   :+=-----===:                          -+-.+:                 
:---------------------------++++=-.      .=+++++=-.                           .=+:.                    
:------=%%%%%%%%%%%%--------:...           .:::..                              -*=-:                
:------=****#@@#****--------=++++++++++++++-----------.                        -#++-                   
:----------:+@@+:-----------+++++++++++++++=-----------                        -#++-                  
:-----------+@@*------------+++++++++++++++=-----------.                       -*+*-                  
:-----------+@@*------------+++++++++++++++=-----------.                   .   -*++-                    
:-----------+@@*------------+++++++++++++++=-----------.                   --  -*++-                  
:-----------+@@*------------+++++++++++++++=-----------.           .       ==  -*++-                .=
:-----------+@@+------------+++++++++++++++=-----------.          .+       -=  :+==-                .*
:---------------------------+++++++++++++++=-----------.          =*       -=  -+=+=                .::
----------------------------+++++++++++++++=-----------           **       -+  -+=++.               .*=
.:-------------------------=+++++++++++++++=---------=:           #+       :=  ++-:*=                ==
                -++++++++++++++++++++++++++=-------=+=:          :#=       .:. *=: -*-               ==
                .=+++++++++++++++++++++++++*+++++++=-.           -#-        ::++=   :+=.            .==
                :++++++++++++++++++++++++=:.:::::.               -*:        .=+-.    .=+-.          -+:
                .=+*+++++++++++++++++++-                         -+-      .:-=.        .-====----:-==:
                    .-+**+++++++++++**+-.                        .++:   .-=-:             .:-====-:.
                    :-=++******+=-:                               .=+===--.                  
                        ..:::..                                      ...                     
                                    
                   _____                            ______  _      _       _                 
                  |_   _|                           | ___ \| |    (_)     | |                
                    | |  ___   __ _  _ __ ___   ___ | |_/ /| |__   _  ___ | |__    ___  _ __ 
                    | | / _ \ / _` || '_ ` _ \ / __||  __/ | '_ \ | |/ __|| '_ \  / _ \| '__|
                    | ||  __/| (_| || | | | | |\__ \| |    | | | || |\__ \| | | ||  __/| |   
                    \_  \___| \__,_||_| |_| |_||___/\_|    |_| |_||_||___/|_| |_| \___||_|   
                  
                    v1.2 developed by @Octoberfest73 (https://github.com/Octoberfest7)

Введение

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

Обычно невозможно отправлять файлы пользователям Teams за пределами своей организации. Макс Корбридж (@CorbridgeMax) и Том Эллсон (@tde_sec) из JUMPSEC недавно раскрыли способ обхода этого ограничения путём манипуляции веб-запросами Teams для изменения получателя сообщения с вложенным файлом.

TeamsPhisher включает эту технику в дополнение к некоторым более ранним, раскрытым Андреа Сантезе (@Medu554).

Он также во многом опирается на TeamsEnum, замечательную работу Бастиана Канбаха (@bka) из SSE, для части аутентификации атакующего потока, а также некоторые общие вспомогательные функции.

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

Рекомендации по смягчению последствий см. в конце этого README.

Функции и демонстрация

Дайте TeamsPhisher вложение, сообщение и список целевых пользователей Teams. Он загрузит вложение в SharePoint отправителя, а затем переберёт список целей.

TeamsPhisher сначала перечислит целевого пользователя и убедится, что он существует и может получать внешние сообщения. Затем он создаст новый чат с целевым пользователем. Обратите внимание, что технически это «групповой» чат, поскольку TeamsPhisher дважды включает email цели; это изящный трюк от @Medu554, который обходит экран-заставку «Кто-то за пределами вашей организации отправил вам сообщение, вы уверены, что хотите его просмотреть?», который может заставить наших целей задуматься. (v1.2) Примечание: этот обход экрана-заставки был исправлен, но добавление целевого пользователя в групповой чат по-прежнему актуально для текущего обхода экрана-заставки.

После создания нового чата между нашим отправителем и целью указанное сообщение будет отправлено пользователю вместе со ссылкой на вложение в SharePoint.

После отправки первоначального сообщения целевой пользователь будет удалён из созданного группового чата. Это лишает отправителя возможности дальнейшей переписки с целью, но также убирает экран-заставку «Этот человек из-за пределов вашей организации» и значительно повышает вероятность успеха. Этот текущий обход был опубликован @pfiatde в одном из его многочисленных блогов о Teams и непреднамеренном поведении и интегрирован в TeamsPhisher Стивом Нельсоном (@stevesec128) и Алексом Мартиросяном (@almartiros) из DenSecure.

Режим эксплуатации

Запустите TeamsPhisher по-настоящему. Отправляйте фишинговые сообщения целям.

Команда:
alt text

Targets.txt:
alt text

Message.txt: alt text

Вывод TeamsPhisher:
alt text

Вид отправителя:
alt text

Вид цели:
alt text

Вложенный файл:
alt text

Режим предварительного просмотра

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

Вывод TeamsPhisher:
alt text

Вид отправителя:
alt text

Настройка и требования

TeamsPhisher требует, чтобы у пользователей была учётная запись Microsoft Business (в отличие от личной, например, @hotmail, @outlook и т.д.) с действующей лицензией на Teams и SharePoint.

Это означает, что вам понадобится арендатор AAD и как минимум один пользователь с соответствующей лицензией. На момент публикации в центре лицензирования AAD доступны некоторые бесплатные пробные лицензии, которые удовлетворяют требованиям этого инструмента.

Вам необходимо хотя бы один раз войти в личный SharePoint пользователя, от имени которого вы собираетесь отправлять сообщения, перед использованием учётной записи с TeamsPhisher. Это должно быть что-то вроде tenantname-my.sharepoint.com/personal/myusername_mytenantname_onmicrosoft_com или tenantname-my.sharepoint.com/personal/myusername_mytenantname_mycustomdomain_tld.

Что касается локальных требований, я рекомендую обновиться до последней версии Python3. Вам также понадобится библиотека аутентификации Microsoft:``` pip3 install msal

root@kitploit:~
# Использование```
usage: teamsphisher.py [-h] -u USERNAME -p PASSWORD -a ATTACHMENT -m MESSAGE (-e EMAIL | -l LIST) [--greeting GREETING] [--securelink] [--personalize]
                       [--preview] [--delay DELAY] [--nogreeting] [--log] [--sharepoint SHAREPOINT]

options:
  -h, --help            show this help message and exit
  -u USERNAME, --username USERNAME
                        Username for authentication
  -p PASSWORD, --password PASSWORD
                        Password for authentication
  -a ATTACHMENT, --attachment ATTACHMENT
                        Full path to the attachment to send to targets.
  -m MESSAGE, --message MESSAGE
                        A file containing a message to send with attached file.
  -e EMAIL, --targetemail EMAIL
                        Single target email address
  -s SHAREPOINT, --sharepoint SHAREPOINT
                        Manually specify sharepoint name (e.g. mytenant.sharepoint.com would be --sharepoint mytenant)
  -l LIST, --list LIST  Full path to a file containing target emails. One per line.
  --greeting GREETING   Override default greeting with a custom one. Use double quotes if including spaces!
  --securelink          Send link to file only viewable by the individual target recipient.
  --personalize         Try and use targets names in greeting when sending messages.
  --preview             Run in preview mode. See personalized names for targets and send test message to sender's Teams.
  --delay DELAY         Delay in [s] between each attempt. Default: 0
  --nogreeting          Do not use built in greeting or personalized names, only send message specified with --message
  --log                 Write TeamsPhisher output to logfile

Обязательные аргументы

Имя пользователя

Имя пользователя учетной записи Microsoft, с которой вы будете отправлять сообщения (например, [email protected])

Пароль

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

Вложение

Файл, который вы хотите отправить целевым пользователям. Он будет загружен в SharePoint отправляющей учетной записи, и ссылка будет отправлена через Teams.

Сообщение

Файл, содержащий текстовое сообщение, которое должно сопровождать вложение и отправляться целям.

Email / Список

Либо один целевой email (например, [email protected]), либо файл, содержащий список целевых email-адресов, по одному на строку.

Необязательные аргументы и возможности

Sharepoint

Вручную укажите имя сайта SharePoint для загрузки вложения. Это, скорее всего, потребуется, если клиент вашего отправителя использует пользовательское доменное имя (например, не соответствует соглашению xxx.onmicrosoft.com). Укажите только уникальное имя, например, если ваш сайт SharePoint — mytest.sharepoint.com, используйте --sharepoint mytest

Greeting

Переопределите стандартное приветствие TeamPhisher ("Hi, ") на пользовательское, которое будет добавлено к сообщению, указанному в --message. Например, "Good afternoon, " или "Sales team, "

Securelink

По умолчанию ссылка SharePoint, отправленная целям, может быть просмотрена любым, у кого есть ссылка; используйте --securelink, чтобы файл SharePoint был доступен для просмотра только тому получателю, которому он был отправлен. Может помочь защитить ваше вредоносное ПО от Blue team.

Personalize

TeamsPhisher попытается определить имя каждого целевого пользователя и использовать его с приветствием. Например, [email protected] получил бы сообщение, начинающееся с "Hi Tom, ". Это не идеально и зависит от формата целевых email-адресов; используйте --preview, чтобы проверить, подходит ли это для вашего списка целей.

Preview

TeamsPhisher будет работать в режиме предварительного просмотра. Он НЕ будет отправлять сообщения целевым пользователям, а вместо этого отобразит «понятное» имя, которое будет использоваться параметром --personalize. Кроме того, тестовое сообщение, представляющее то, что цели получили бы с текущими настройками, будет отправлено в Teams отправителя; войдите и посмотрите, как выглядит ваше сообщение, и при необходимости внесите изменения.

Delay

Укажите задержку в x секунд между сообщениями целям. Может помочь с потенциальными проблемами ограничения скорости.

Nogreeting

Отключает встроенное приветствие, используемое TeamsPhisher. Также отключает функцию --personalize. Используйте эту опцию, если вы включаете свое приветствие в сообщение, указанное в --message.

Log

Записывает вывод TeamsPhisher в файл журнала (будет записан в домашнюю папку пользователя).

Примеры```

python3 teamsphisher.py -u [email protected] -p 'xxxxxxxxxxxx' -l /root/targets.txt -a /root/attachment.zip -m /root/message.txt --log

root@kitploit:~
Эта команда получит токены доступа для учетной записи testuser и загрузит вложение '/root/attachment.zip' в Sharepoint пользователя testuser.  

Затем она создаст уникальный поток Teams для каждой цели, указанной в '/root/targets.txt', и отправит им сообщение, заданное в '/root/message.txt', а также ссылку на вложение в Sharepoint.  

Весь вывод терминала от TeamsPhisher будет записан в файл, который размещается в домашней директории пользователя.```
python3 teamsphisher.py -u [email protected] -p 'xxxxxxxxxxxx' -l /root/targets.txt -a /root/attachment.zip -m /root/message.txt --greeting "Good afternoon" --personalize --securelink

Эта команда извлечет токены доступа для учетной записи testuser и загрузит вложение '/root/attachment.zip' в Sharepoint пользователя testuser.

Затем будет создан уникальный поток Teams с каждой целью, указанной в файле '/root/targets.txt', и отправлено сообщение, указанное в '/root/message.txt', а также ссылка на вложение в Sharepoint.

Сообщение будет начинаться с приветствия "Good afternoon , ".

TeamsPhisher будет пытаться использовать "дружественные" имена в приветствии. Теперь приветствие будет "Good afternoon ,".

Каждая отправленная ссылка Sharepoint уникальна и действительна только для соответствующей цели.

Дополнительные возможности и комментарии

Перебор учетных записей

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

alt text

Учетные записи с MFA

Благодаря коду из проекта TeamsEnum, TeamsPhisher поддерживает вход с использованием учетных записей отправителя с MFA:

alt text

Безопасные ссылки Sharepoint

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

alt text

alt text

Глобальные переменные

Изменив TeamsPhisher.py, вы можете изменить несколько глобальных переменных для использования в последующих запусках:```

Global Options and Variables

Greeting: The greeting to use in messages sent to targets. Will be joined with the targets name if the --personalize flag is used

Examples: "Hi" "Good Morning" "Greetings"

Greeting = "Hi"

useragent: The user-agent string to use for web requests

useragent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)"

root@kitploit:~
## Персонализация и «дружественные» имена

Флаг --personalize пытается определить «дружественное» имя для каждой цели; он делает это, анализируя данные, возвращаемые функцией enumUser, и сначала проверяет поле "displayName".  

Если поле displayName содержит пробел (например, "Tom Jones"), TeamsPhisher разделяет строку по пробелу и берет первую часть как «дружественное» имя.

Если в поле displayName нет пробела (например, некоторые организации могут помещать UPN в поле displayName, как [email protected]), TeamsPhisher пытается разобрать сам UPN.

На примере UPN [email protected], TeamsPhisher разделяет по символу '@', затем в первой части разделяет по символу '.' и берет первую часть. В этом случае «дружественным» именем будет "Tom".

Это весь объем того, как TeamsPhisher пытается определить «дружественные» имена. Цели, такие как "[email protected]" и "[email protected]", НЕ будут иметь определенных «дружественных» имен, если их поля displayName не соответствуют описанному выше соглашению о разборе.

# Смягчение рисков

Организации могут снизить риск, связанный с этой уязвимостью, управляя параметрами внешнего доступа в Центре администрирования Microsoft Teams в разделе Пользователи -> Внешний доступ.

![alt text](https://assets.kitploit.com/production/public/readmes/6252/cc6c2bbf7e6c11997a47b0b38259fea96278543ae5477ed1367caf5a88479850.jpg)

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

![alt text](https://assets.kitploit.com/production/public/readmes/6252/dcaf730f7c522bfcf4e11800631f663550315079570778aee78784164e22aabe.jpg)

# Журнал изменений  
## v1.2
Объединяет пул-реквест от команды DenSecure, который включает работающий (по состоянию на 2/7/24) обход заставки внешнего пользователя.

К счастью, изменение рабочего процесса TeamsPhisher очень незначительное и легко интегрируется. После создания группового чата с целевым пользователем и отправки сообщения выполняется дополнительный запрос для удаления целевого пользователя из группового чата. В результате пользователь получает сообщение без заставки внешнего пользователя.  

Обновлен README с более актуальной информацией о технике, используемой в настоящее время TeamsPhisher.  

## v1.1.2
Исправлена ошибка, о которой сообщали пользователи при загрузке вложения в SharePoint; это было связано с соглашениями об именовании/переименовании, которые возникают, когда пользователи используют собственный домен со своими арендаторами.

Добавлена проверка, чтобы убедиться, что если пользователи используют домен, отличный от @domain.onmicrosoft.com, они также используют ключ -s для ручного указания своего сайта SharePoint во избежание проблем.

Обновлен раздел настройки, чтобы включить вход в SharePoint хотя бы один раз перед использованием TeamsPhisher, поскольку пользователь заметил, что отсутствие предварительного входа с учетной записью приводило к сбою TeamsPhisher.

Добавлен параметр &top=999 в веб-запрос getSenderInfo для увеличения количества извлекаемых пользователей на страницу / уменьшения количества запросов, необходимых для поиска нашего пользователя. 

### Обратное изменение, касающееся разбора символа '.' в именах пользователей при сборке URI SharePoint
В версии v1.1 было изменено то, как имена пользователей с символом '.' анализируются для создания необходимых URI SharePoint. Было несколько различных проблем, и я ошибочно определил это как причину одной из них. Это изменение было отменено. В результате имя пользователя, например [email protected], теперь будет иметь URI SharePoint, собранный как "tom_jones_mytest_onmicrosoft_com", а не "tom.jones_mytest_onmicrosoft_com".  

## v1.1.1
Незначительные исправления  

## v1.1
Было сделано несколько коммитов для решения различных мелких проблем без увеличения номера версии; извините за небрежность. 

v1.1 включает несколько изменений, направленных на решение некоторых распространенных проблем, с которыми сталкивались пользователи.

### Аргумент -s, --sharepoint
Этот необязательный аргумент был добавлен, чтобы пользователи могли вручную указать корневое имя своего SharePoint. Распространенная проблема возникала, когда пользователи меняли доменное имя своего арендатора на собственное; например, вместо имени пользователя [email protected] оно могло стать [email protected]. В исходной версии TeamsPhisher адрес SharePoint и необходимые пути URI собирались путем анализа имени участника-пользователя отправителя из его информации о пользователе. Когда домен арендатора изменяется на собственный, UPN пользователей меняются, чтобы отразить это. Однако адрес SharePoint арендатора всегда остается тем же, каким он был при первоначальном создании арендатора.

Мне не удалось найти хороший способ определить текущий адрес SharePoint для арендатора; это легко сделать с помощью Graph API, но внедрение Graph в этот инструмент потребовало бы от пользователей гораздо больше настроек для использования TeamsPhisher. Я выбрал наиболее простое решение — предоставить возможность вручную указать имя SharePoint.

### Улучшенный разбор адреса SharePoint и необходимого URI при НЕиспользовании ручного параметра
Поступило сообщение от пользователя, который НЕ использовал собственный домен со своим арендатором, но по-прежнему получал ошибку 404 не найдено в отношении SharePoint. Полагаю, это было связано с тем, что его имя пользователя содержало символ '.', например [email protected]. В предыдущей версии TeamsPhisher использовалась более простая функция поиска и замены для UPN пользователя с целью сборки необходимых URI SharePoint; в v1.1 теперь конкретно обрабатываются символы '.', которые нужно заменить, и оставляются другие '.' в поле имени пользователя нетронутыми.

### Специальные символы (например, 'ö') в теле сообщения больше не приводят к ошибке сервера
Это было очень простое исправление, на поиск которого ушло слишком много времени. Добавлена кодировка utf-8 в POST-запрос sendFile. Теперь в сообщениях можно использовать специальные символы.

### Небольшая очистка кода
Исправлено несколько комментариев и переупорядочены некоторые шаги в main, чтобы теперь проверять наличие необходимых файлов перед попыткой аутентификации.  

## v1.0 - Первоначальный выпуск

# Благодарности и признания 

1. Макс Корбридж (@CorbridgeMax) и Том Эллсон (@tde_sec) из JUMPSEC за [эту статью](https://labs.jumpsec.com/advisory-idor-in-microsoft-teams-allows-for-external-tenants-to-introduce-malware/). Особая благодарность Максу за его отзывчивость и готовность приватно обсудить свои исследования.

2. Андреа Сантезе (@Medu554) [за это исследование](https://posts.inthecyber.com/leveraging-microsoft-teams-for-initial-access-42beb07f12c4). Снова особая благодарность за его отзывчивость и готовность приватно обсудить свою работу.

3. Бастиан Канбах (@_bka_) из SSE за [TeamsEnum](https://github.com/sse-secure-systems/TeamsEnum). Этот проект послужил отправной точкой для получения токенов Bearer и аутентификации различными методами. Я использовал Graph API для этих целей, но его проект (и этот) использует обычные конечные точки, поэтому было здорово иметь кого-то, кто уже прошел через это и имел надежные функции для выполнения задачи. 

4. @pfiatde, который написал [серию статей о фишинге Teams](https://badoption.eu/blog/2024/01/12/teams5.html). Его блоги использовались в качестве справочника при первоначальной разработке TeamsPhisher, а текущая версия инструмента использует новый обход заставки из более поздних исследований, которые он опубликовал.  

5. Стив Нельсон (@stevesec128) и Алекс Мартиросян (@almartiros) из DenSecure за их обновление Teamsphisher (2/7/24), в котором интегрирован все еще работающий обход заставки от @pfiatde.  

6. [Этот сайт для генерации ASCII-текста](https://patorjk.com/software/taag/#p=display&f=Graffiti&t=Type%20Something%20)

7. [Этот сумасшедший проект для преобразования изображений в ASCII-арт](https://github.com/TheZoraiz/ascii-image-converter)
Скачать инструмент