Az - Unauthenticated Enum & Initial Entry

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки 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"

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

Виявлення

  1. Пошук публічних ресурсів Azure Використовуйте site:*.azurewebsites.net у Google для пошуку публічних веб-сайтів Azure.

  2. Знайдіть відкриті контейнери Azure Blob Використовуйте site:*.blob.core.windows.net у Google для пошуку відкритих контейнерів Azure Blob.

  3. Шукайте відкриті бази даних Azure Використовуйте site:*.database.windows.net у Google для пошуку відкритих баз даних Azure.

Початковий вхід

  1. Спробуйте використати слабкі паролі Використовуйте списки зі слабкими паролями для спроб входу.

  2. Використання вразливостей Використовуйте відомі вразливості для отримання доступу.

  3. Перехоплення токенів Спробуйте перехопити токени для автентифікації та отримання доступу.

  4. Використання слабкої конфігурації Шукайте можливості використання слабкої конфігурації для входу.

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

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

Виявлення

  1. Пошук публічних ресурсів Azure Використовуйте azurerm_resource_group та azurerm_resources для виявлення публічних ресурсів Azure.

  2. Виявлення відкритих бакетів Azure Blob Storage Використовуйте azurerm_storage_account та azurerm_storage_blob для виявлення відкритих бакетів Azure Blob Storage.

  3. Виявлення відкритих контейнерів Azure Container Registry Використовуйте azurerm_container_registry для виявлення відкритих контейнерів Azure Container Registry.

Початковий вхід

  1. Використання доступу до Azure Blob Storage Використовуйте azurerm_storage_blob для завантаження шкідливого вмісту або виконання атак в контексті Azure Blob Storage.

  2. Використання доступу до Azure Container Registry Використовуйте azurerm_container_registry для завантаження шкідливих образів або виконання атак в контексті Azure Container Registry.

[-] 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

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

Виявлення

  1. Пошук публічних Blob Containers Використовуйте azcopy для переліку доступних Blob Containers:

    azcopy list "https://<storage_account>.blob.core.windows.net/" --recursive=false
  2. Пошук публічних Blob Files Використовуйте azcopy для переліку доступних Blob Files:

    azcopy list "https://<storage_account>.blob.core.windows.net/<container_name>/" --recursive=false
  3. Пошук публічних Blob Files з певним розширенням Використовуйте azcopy для пошуку Blob Files з певним розширенням:

    azcopy list "https://<storage_account>.blob.core.windows.net/<container_name>/" --recursive=true --include="*.extension"
  4. Пошук публічних Blob Files з певним розміром Використовуйте azcopy для пошуку Blob Files з певним розміром:

    azcopy list "https://<storage_account>.blob.core.windows.net/<container_name>/" --recursive=true --size-range=SIZE
  5. Пошук публічних Blob Files з певною датою створення Використовуйте azcopy для пошуку Blob Files з певною датою створення:

    azcopy list "https://<storage_account>.blob.core.windows.net/<container_name>/" --recursive=true --include="*.<date>"

Початковий вхід

  1. Завантаження файлів на Blob Container Використовуйте azcopy для завантаження файлів на Blob Container:

    azcopy copy "path/to/local/file" "https://<storage_account>.blob.core.windows.net/<container_name>/path/in/container/"
  2. Завантаження файлів на Blob Container з певними налаштуваннями Використовуйте azcopy для завантаження файлів на Blob Container з певними налаштуваннями:

    azcopy copy "path/to/local/file" "https://<storage_account>.blob.core.windows.net/<container_name>/path/in/container/" --recursive=true --include="*.extension"
{
"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 Services

Знаючи домени арендатора 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

Поділений підпис доступу (SAS) URL - це 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 для доступу до даних

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

Рибальство

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

pageAz - Password Spraying

Посилання

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated