
Перебор пользователей и брутфорс паролей на Azure, ADFS, OWA, O365, Teams и сбор email-адресов в LinkedIn
Этот проект изначально был написан для изучения Golang и исследования различных методов, с которыми я сталкивался при пентесте, для перечисления или брутфорса пользователей, и объединения их в одном инструменте. Если обнаружите ошибки, не стесняйтесь создавать issue, и я постараюсь их исправить или улучшить инструмент.
Ничего нового, но существующие техники собраны в одном инструменте.
Скриншоты ниже не актуальны, а параметры командной строки изменились
Рекомендуемый модуль — o365 для перечисления пользователей и перебора/распыления паролей (bruteforce / spray). Можно получить дополнительную информацию, чтобы избежать блокировки учётной записи, узнать, что пароль верен, но истёк, включена MFA и т.д.
Этот модуль следует использовать для получения списка адресов электронной почты перед их проверкой через модуль перечисления пользователей. Компания будет найдена в Linkedin, и все сотрудники, работающие в этих компаниях, будут возвращены в указанном формате.
Обратите внимание, что ни один профиль не будет просмотрен, поэтому пользователь не получит никаких уведомлений.
Требуется сессионный cookie-файл Linkedin: li_at и JSESSIONID.

Этот модуль следует использовать для получения списка адресов электронной почты перед их проверкой через модуль перечисления пользователей.
Название компании будет найдено в Google и Bing с помощью дорка для поиска сотрудников компании (site:linkedin.com/in+"%s"). Заголовки результатов будут обработаны для вывода адресов электронной почты в указанном формате.

Модуль Azure доступен только для перечисления пользователей в арендаторе. Запрос аутентификации выполняется на https://autologon.microsoftazuread-sso.com, подробный ответ показывает, существует ли учётная запись, требуется ли MFA, заблокирована ли учётная запись и т.д.

Модуль ADFS доступен только для брутфорса или распыления пароля. Запрос аутентификации отправляется на https://<target>/adfs/ls/idpinitiatedsignon.aspx?client-request-id=<randomGUID>&pullStatus=0. Сообщение об ошибке может сообщить, истёк ли срок действия пароля.

Этот модуль позволяет перечислять пользователей и перебирать/распылять пароли.
Доступно несколько режимов: office, oauth2 и onedrive (ещё не реализован). Рекомендуется режим office, так как аутентификация не выполняется. Oauth2 может получить дополнительную информацию через код ошибки AADSTS (включена MFA, заблокированная учётная запись, отключённая учётная запись).

Как и при перечислении пользователей, доступны два режима: oauth2 и autodiscover (ещё не реализован). Oauth2 — рекомендуемый режим, он позволяет получить много информации благодаря коду ошибки AADSTS.

Этот модуль позволяет перечислять пользователей и перебирать/распылять пароли. В настоящее время поддерживается аутентификация NTLM и Basic.
Перечисление выполняется с помощью запросов аутентификации. Аутентификация для несуществующего пользователя будет длиться дольше, чем для существующего. Сначала вычисляется среднее время отклика для несуществующего пользователя, затем сравнивается время отклика для каждого запроса аутентификации.

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

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

SMTP-серверы могут быть уязвимы к уязвимости перечисления пользователей. Три различных техники позволяют перечислить пользователей: ключевые слова RCPT TO, VRFY и EXPN. Этот модуль находит MX-запись для указанного домена и по умолчанию тестирует все три метода для поиска действительных пользователей.
