Az - Unauthenticated Enum & Initial Entry

Підтримайте HackTricks

Azure Tenant

Перелічення орендаря

Існують публічні API Azure, які, знаючи домен орендаря, зловмисник може запитати, щоб отримати більше інформації про нього. Ви можете запитувати API безпосередньо або використовувати бібліотеку PowerShell AADInternals:

APIІнформаціяФункція AADInternals

login.microsoftonline.com/<domain>/.well-known/openid-configuration

Інформація про вхід, включаючи ідентифікатор орендаря

Get-AADIntTenantID -Domain <domain>

autodiscover-s.outlook.com/autodiscover/autodiscover.svc

Усі домени орендаря

Get-AADIntTenantDomains -Domain <domain>

login.microsoftonline.com/GetUserRealm.srf?login=<UserName>

Інформація про вхід орендаря, включаючи назву орендаря та домен тип аутентифікації. Якщо NameSpaceType - Managed, це означає, що використовується AzureAD.

Get-AADIntLoginInformation -UserName <UserName>

login.microsoftonline.com/common/GetCredentialType

Інформація про вхід, включаючи інформацію про одноразовий вхід на робочий стіл

Get-AADIntLoginInformation -UserName <UserName>

Ви можете запитати всю інформацію про орендаря Azure за допомогою лише однієї команди з бібліотеки AADInternals:

Invoke-AADIntReconAsOutsider -DomainName corp.onmicrosoft.com | Format-Table

Приклад виводу інформації про орендаря Azure:

Tenant brand:       Company Ltd
Tenant name:        company
Tenant id:          1937e3ab-38de-a735-a830-3075ea7e5b39
DesktopSSO enabled: True

Name                           DNS   MX    SPF  Type      STS
----                           ---   --    ---  ----      ---
company.com                   True  True  True  Federated sts.company.com
company.mail.onmicrosoft.com  True  True  True  Managed
company.onmicrosoft.com       True  True  True  Managed
int.company.com              False False False  Managed

Можливо спостерігати деталі про назву орендаря, ID та назву "бренду". Додатково відображено статус одноразового входу на робочий стіл (SSO), також відомий як Seamless SSO. При ввімкненні цієї функції спрощується визначення наявності (переліку) конкретного користувача в цільовій організації.

Крім того, виводяться назви всіх підтверджених доменів, пов'язаних з цільовим орендарем, разом із відповідними типами ідентичності. У випадку федеративних доменів також розкривається Повне Ім'я Домену (FQDN) використовувача ідентичності, зазвичай сервера ADFS. Стовпець "MX" вказує, чи маршрутизуються електронні листи до Exchange Online, тоді як стовпець "SPF" позначає перелік Exchange Online як відправника електронної пошти. Важливо зауважити, що поточна функція розвідки не аналізує заяви "include" у записах SPF, що може призвести до помилкових відмов.

Перелік користувачів

Можливо перевірити, чи існує ім'я користувача в межах орендаря. Це також стосується гостевих користувачів, ім'я яких має наступний формат:

<email>#EXT#@<tenant name>.onmicrosoft.com

Електронна пошта - це адреса електронної пошти користувача, де символ "@" замінено на підкреслення "_".

За допомогою AADInternals ви можете легко перевірити, чи існує користувач:

# Check does the user exist
Invoke-AADIntUserEnumerationAsOutsider -UserName "user@company.com"

Unauthenticated Enumeration and Initial Entry

Introduction

In this section, we will cover the techniques used to perform unauthenticated enumeration and gain initial access to Azure environments.

Unauthenticated Enumeration

Public Information Gathering

  • Azure Resource Manager (ARM) Endpoints: Enumerate Azure Resource Manager (ARM) endpoints to discover publicly accessible services and resources.

  • Azure Storage Accounts: Identify publicly accessible Azure storage accounts to potentially discover sensitive data.

  • Azure Blob Storage: Enumerate Azure Blob Storage containers to find exposed data that may contain sensitive information.

  • Azure App Services: Discover Azure App Services that might be misconfigured and expose sensitive data.

Initial Entry

Exploiting Misconfigurations

  • Weak Access Controls: Exploit weak access controls on Azure services to gain unauthorized access.

  • Default Credentials: Attempt to log in using default credentials for Azure services.

  • Insecure Configurations: Identify insecure configurations in Azure services that can be exploited to gain initial access.

  • Vulnerabilities: Exploit known vulnerabilities in Azure services to gain unauthorized access.

By leveraging the techniques mentioned above, an attacker can perform unauthenticated enumeration and gain initial access to Azure environments.

UserName         Exists
--------         ------
user@company.com True

Ви також можете використовувати текстовий файл, що містить одну адресу електронної пошти на рядок:

user@company.com
user2@company.com
admin@company.com
admin2@company.com
external.user_gmail.com#EXT#@company.onmicrosoft.com
external.user_outlook.com#EXT#@company.onmicrosoft.com
# Invoke user enumeration
Get-Content .\users.txt | Invoke-AADIntUserEnumerationAsOutsider -Method Normal

Є три різні методи переліку для вибору:

МетодОпис

Звичайний

Це стосується API GetCredentialType, згаданого вище. Метод за замовчуванням.

Вхід

Цей метод намагається увійти як користувач. Примітка: запити будуть зареєстровані в журналі входів.

Автовхід

Цей метод намагається увійти як користувач через кінцеву точку автовходу. Запити не реєструються в журналі входів! Таким чином, працює добре також для атак методом "полив пароля" та "грубої сили".

Після виявлення дійсних імен користувачів ви можете отримати інформацію про користувача за допомогою:

Get-AADIntLoginInformation -UserName root@corp.onmicrosoft.com

Скрипт o365creeper також дозволяє вам виявити, чи є електронна пошта дійсною.

# Put in emails.txt emails such as:
# - root@corp.onmicrosoft.com
python.exe .\o365creeper\o365creeper.py -f .\emails.txt -o validemails.txt

Перелік користувачів через Microsoft Teams

Ще одним джерелом інформації є Microsoft Teams.

API Microsoft Teams дозволяє шукати користувачів. Зокрема, точки доступу "пошук користувача" externalsearchv3 та searchUsers можуть бути використані для отримання загальної інформації про облікові записи користувачів, які зареєстровані в Teams.

Залежно від відповіді API можливо відрізнити неіснуючих користувачів від існуючих користувачів, які мають дійсну підписку на Teams.

Сценарій TeamsEnum може бути використаний для перевірки заданого набору імен користувачів у API Teams.

python3 TeamsEnum.py -a password -u <username> -f inputlist.txt -o teamsenum-output.json

Unauthenticated Enumeration and Initial Entry

Introduction

In this section, we will cover the techniques used to perform unauthenticated enumeration and gain initial access to Azure environments. Unauthenticated enumeration involves gathering information without the need for valid credentials, which can help identify potential entry points for further exploitation.

Tools and Techniques

  1. Public Information Gathering: Utilize search engines, public repositories, and other open sources to gather information about the target Azure environment.

  2. Subdomain Enumeration: Use tools like Sublist3r or Amass to discover subdomains associated with the target Azure environment.

  3. Service Enumeration: Identify exposed services and ports using tools like Nmap or Masscan to understand the attack surface.

  4. Vulnerability Scanning: Conduct vulnerability scans using tools like Nessus or OpenVAS to identify potential security weaknesses.

  5. Exploitation: Once vulnerabilities are identified, exploit them using appropriate tools and techniques to gain initial access.

Recommendations

  • Regularly monitor and secure public information related to your Azure environment to prevent unauthorized access.

  • Conduct periodic vulnerability assessments to identify and address security issues proactively.

  • Implement strong access controls and authentication mechanisms to protect against unauthorized entry.

By following these techniques and recommendations, you can enhance the security posture of your Azure environment and mitigate potential risks.

[-] user1@domain - Target user not found. Either the user does not exist, is not Teams-enrolled or is configured to not appear in search results (personal accounts only)
[+] user2@domain - User2 | Company (Away, Mobile)
[+] user3@domain - User3 | Company (Available, Desktop)

Крім того, можливо отримати інформацію про доступність існуючих користувачів, таку як наступне:

  • Доступний

  • Відсутній

  • Не турбувати

  • Зайнятий

  • Не в мережі

Якщо налаштовано повідомлення про відсутність в офісі, також можливо отримати це повідомлення за допомогою TeamsEnum. Якщо був вказаний вихідний файл, повідомлення про відсутність в офісі автоматично зберігаються у файлі JSON:

jq . teamsenum-output.json

Неаутентифіковане виведення та початковий вхід

Цей скрипт використовується для отримання базової інформації про Azure, такої як інформація про підписку, групи ресурсів, ресурси та інші дані, без необхідності аутентифікації. Це може бути корисно для попереднього аналізу атаки або для отримання вихідної точки для подальшого тестування.

{
"email": "user2@domain",
"exists": true,
"info": [
{
"tenantId": "[REDACTED]",
"isShortProfile": false,
"accountEnabled": true,
"featureSettings": {
"coExistenceMode": "TeamsOnly"
},
"userPrincipalName": "user2@domain",
"givenName": "user2@domain",
"surname": "",
"email": "user2@domain",
"tenantName": "Company",
"displayName": "User2",
"type": "Federated",
"mri": "8:orgid:[REDACTED]",
"objectId": "[REDACTED]"
}
],
"presence": [
{
"mri": "8:orgid:[REDACTED]",
"presence": {
"sourceNetwork": "Federated",
"calendarData": {
"outOfOfficeNote": {
"message": "Dear sender. I am out of the office until March 23rd with limited access to my email. I will respond after my return.Kind regards, User2",
"publishTime": "2023-03-15T21:44:42.0649385Z",
"expiry": "2023-04-05T14:00:00Z"
},
"isOutOfOffice": true
},
"capabilities": [
"Audio",
"Video"
],
"availability": "Away",
"activity": "Away",
"deviceType": "Mobile"
},
"etagMatch": false,
"etag": "[REDACTED]",
"status": 20000
}
]
}

Azure Сервіси

Знаючи домени арендатора Azure, на які він використовує, час спробувати знайти відкриті Azure сервіси.

Ви можете використати метод з MicroBust для досягнення цієї мети. Ця функція буде шукати базове ім'я домену (і кілька перестановок) в кількох доменах сервісів Azure:

Import-Module .\MicroBurst\MicroBurst.psm1 -Verbose
Invoke-EnumerateAzureSubDomains -Base corp -Verbose

Відкрите сховище

Ви можете виявити відкрите сховище за допомогою такого інструменту, як InvokeEnumerateAzureBlobs.ps1, який використовує файл Microburst/Misc/permitations.txt для генерації перестановок (дуже просто) для спроби знайти відкриті облікові записи сховищ.

Import-Module .\MicroBurst\MicroBurst.psm1
Invoke-EnumerateAzureBlobs -Base corp
[...]
https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list
[...]

# Access https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list
# Check: <Name>ssh_info.json</Name>
# Access then https://corpcommon.blob.core.windows.net/secrets/ssh_info.json

SAS URLs

URL спільного доступу (SAS) - це URL, який надає доступ до певної частини облікового запису сховища (може бути повним контейнером, файлом...) з певними специфічними дозволами (читання, запис...) до ресурсів. Якщо ви знайдете витік, ви зможете отримати доступ до конфіденційної інформації, вони виглядають так (це для доступу до контейнера, якщо це було просто надання доступу до файлу, шлях URL також буде містити цей файл):

https://<storage_account_name>.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D

Використовуйте Storage Explorer для доступу до даних

Компрометація облікових даних

Рибальство

Парольне розпилення / Брутфорс

Az - Password Spraying

Посилання

Підтримайте HackTricks

Last updated