mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['', 'src/windows-hardening/active-directory-methodology/ad-c
This commit is contained in:
parent
13f94d609e
commit
4777498737
@ -1,112 +1,122 @@
|
|||||||
# AD Certificates
|
# AD Sertifikaları
|
||||||
|
|
||||||
{{#include ../../../banners/hacktricks-training.md}}
|
{{#include ../../../banners/hacktricks-training.md}}
|
||||||
|
|
||||||
## Introduction
|
## Giriş
|
||||||
|
|
||||||
### Components of a Certificate
|
### Bir Sertifikanın Bileşenleri
|
||||||
|
|
||||||
- Sertifikanın **Sahibi**, sertifikanın sahibini belirtir.
|
- **Subject** sertifikanın sahibini belirtir.
|
||||||
- **Açık Anahtar**, sertifikayı gerçek sahibine bağlamak için özel bir anahtarla eşleştirilir.
|
- Bir **Public Key**, sertifikayı gerçek sahibine bağlamak için özel tutulan bir anahtar ile eşleştirilir.
|
||||||
- **Geçerlilik Süresi**, **NotBefore** ve **NotAfter** tarihleri ile tanımlanır ve sertifikanın etkin süresini işaret eder.
|
- **Validity Period**, **NotBefore** ve **NotAfter** tarihleriyle tanımlanır ve sertifikanın geçerli olduğu süreyi gösterir.
|
||||||
- Sertifikayı tanımlayan benzersiz bir **Seri Numarası**, Sertifika Otoritesi (CA) tarafından sağlanır.
|
- Her sertifikayı tanımlayan benzersiz bir **Serial Number**, Certificate Authority (CA) tarafından sağlanır.
|
||||||
- **Verici**, sertifikayı veren CA'yı ifade eder.
|
- **Issuer**, sertifikayı düzenleyen CA'yı ifade eder.
|
||||||
- **SubjectAlternativeName**, kimlik tanımlama esnekliğini artırarak konu için ek adlar sağlar.
|
- **SubjectAlternativeName** konu için ek isimlere izin vererek tanımlama esnekliğini artırır.
|
||||||
- **Temel Kısıtlamalar**, sertifikanın bir CA veya son varlık için olup olmadığını belirler ve kullanım kısıtlamalarını tanımlar.
|
- **Basic Constraints**, sertifikanın bir CA için mi yoksa bir uç varlık için mi olduğunu belirler ve kullanım kısıtlamalarını tanımlar.
|
||||||
- **Genişletilmiş Anahtar Kullanımları (EKU'lar)**, sertifikanın belirli amaçlarını, örneğin kod imzalama veya e-posta şifreleme gibi, Nesne Tanımlayıcıları (OID'ler) aracılığıyla belirler.
|
- **Extended Key Usages (EKUs)**, Object Identifier'lar (OIDs) aracılığıyla sertifikanın kod imzalama veya e-posta şifreleme gibi belirli amaçlarını belirtir.
|
||||||
- **İmza Algoritması**, sertifikayı imzalamak için kullanılan yöntemi belirtir.
|
- **Signature Algorithm**, sertifikanın imzalanma yöntemini belirtir.
|
||||||
- **İmza**, vericinin özel anahtarı ile oluşturulur ve sertifikanın doğruluğunu garanti eder.
|
- **Signature**, sertifikanın gerçekliğini garanti etmek için issuer'ın özel anahtarıyla oluşturulur.
|
||||||
|
|
||||||
### Special Considerations
|
### Özel Hususlar
|
||||||
|
|
||||||
- **Subject Alternative Names (SANs)**, bir sertifikanın birden fazla kimliğe uygulanabilirliğini genişletir, bu da birden fazla alan adı olan sunucular için kritik öneme sahiptir. Güvenli verilme süreçleri, saldırganların SAN spesifikasyonunu manipüle ederek kimlik taklit etme risklerini önlemek için hayati öneme sahiptir.
|
- **Subject Alternative Names (SANs)** bir sertifikanın birden çok kimliğe uygulanabilirliğini genişletir; çoklu alan adlarına sahip sunucular için kritiktir. SAN tanımının kötüye kullanılmasını önlemek için güvenli sertifika verme süreçleri çok önemlidir; aksi takdirde saldırganlar taklit riskine yol açabilir.
|
||||||
|
|
||||||
### Certificate Authorities (CAs) in Active Directory (AD)
|
### Active Directory (AD) İçindeki Certificate Authorities (CAs)
|
||||||
|
|
||||||
AD CS, AD ormanında CA sertifikalarını belirlenmiş konteynerler aracılığıyla tanır; her biri benzersiz roller üstlenir:
|
AD CS, bir AD ormanında CA sertifikalarını belirli konteynerler aracılığıyla tanır; her biri farklı rollere hizmet eder:
|
||||||
|
|
||||||
- **Sertifika Otoriteleri** konteyneri, güvenilir kök CA sertifikalarını tutar.
|
- **Certification Authorities** container, güvenilen root CA sertifikalarını tutar.
|
||||||
- **Kayıt Hizmetleri** konteyneri, Kurumsal CA'ları ve sertifika şablonlarını detaylandırır.
|
- **Enrolment Services** container, Enterprise CAs ve onların certificate templates bilgilerini içerir.
|
||||||
- **NTAuthCertificates** nesnesi, AD kimlik doğrulaması için yetkilendirilmiş CA sertifikalarını içerir.
|
- **NTAuthCertificates** objesi, AD kimlik doğrulaması için yetkilendirilmiş CA sertifikalarını içerir.
|
||||||
- **AIA (Otorite Bilgi Erişimi)** konteyneri, ara ve çapraz CA sertifikaları ile sertifika zinciri doğrulamasını kolaylaştırır.
|
- **AIA (Authority Information Access)** container, ara ve cross CA sertifikaları ile sertifika zinciri doğrulamasını kolaylaştırır.
|
||||||
|
|
||||||
### Certificate Acquisition: Client Certificate Request Flow
|
### Sertifika Edinimi: İstemci Sertifika İsteği Akışı
|
||||||
|
|
||||||
1. İstek süreci, istemcilerin bir Kurumsal CA bulmasıyla başlar.
|
1. Süreç, istemcilerin bir Enterprise CA bulmasıyla başlar.
|
||||||
2. Bir kamu-özel anahtar çifti oluşturulduktan sonra, bir kamu anahtarı ve diğer detayları içeren bir CSR oluşturulur.
|
2. Bir public-private anahtar çifti oluşturulduktan sonra bir CSR (Certificate Signing Request) oluşturulur; bu CSR içinde bir public key ve diğer bilgiler bulunur.
|
||||||
3. CA, mevcut sertifika şablonlarına karşı CSR'yi değerlendirir ve şablonun izinlerine dayanarak sertifikayı verir.
|
3. CA, CSR'yi mevcut certificate templates ile karşılaştırır ve şablonun izinlerine göre sertifikayı yayınlar.
|
||||||
4. Onaylandığında, CA sertifikayı özel anahtarı ile imzalar ve istemciye geri gönderir.
|
4. Onaylandıktan sonra CA, sertifikayı kendi özel anahtarıyla imzalar ve istemciye geri gönderir.
|
||||||
|
|
||||||
### Certificate Templates
|
### Certificate Templates
|
||||||
|
|
||||||
AD içinde tanımlanan bu şablonlar, sertifika vermek için ayarları ve izinleri belirler; izin verilen EKU'lar ve kayıt veya değişiklik hakları dahil, sertifika hizmetlerine erişimi yönetmek için kritik öneme sahiptir.
|
AD içinde tanımlanan bu şablonlar, hangi EKU'ların izinli olduğu, kayıt veya değişiklik hakları gibi sertifika yayınlama ayarları ve izinlerini belirler; bu, sertifika hizmetlerine erişimin yönetimi için kritiktir.
|
||||||
|
|
||||||
## Certificate Enrollment
|
## Sertifika Kaydı
|
||||||
|
|
||||||
Sertifikalar için kayıt süreci, bir yöneticinin **bir sertifika şablonu oluşturması** ile başlar; bu şablon daha sonra bir Kurumsal Sertifika Otoritesi (CA) tarafından **yayınlanır**. Bu, şablonu istemci kaydı için kullanılabilir hale getirir; bu adım, şablonun adını bir Active Directory nesnesinin `certificatetemplates` alanına ekleyerek gerçekleştirilir.
|
Sertifikalar için kayıt süreci, bir yönetici tarafından **bir certificate template oluşturulması** ile başlatılır; bu template daha sonra bir Enterprise Certificate Authority (CA) tarafından **yayınlanır**. Bu, template'in istemci kayıtları için kullanılabilir olmasını sağlar ve genellikle Active Directory nesnesinin `certificatetemplates` alanına şablonun adının eklenmesiyle gerçekleştirilir.
|
||||||
|
|
||||||
Bir istemcinin sertifika talep edebilmesi için, **kayıt hakları** verilmelidir. Bu haklar, sertifika şablonundaki güvenlik tanımlayıcıları ve Kurumsal CA'nın kendisi tarafından tanımlanır. Bir talebin başarılı olması için her iki konumda da izinler verilmelidir.
|
Bir istemcinin sertifika talep edebilmesi için **enrollment rights** verilmiş olmalıdır. Bu haklar, certificate template üzerindeki ve Enterprise CA'nin kendisindeki security descriptor'lar tarafından tanımlanır. Bir isteğin başarılı olması için izinlerin her iki yerde de verilmiş olması gerekir.
|
||||||
|
|
||||||
### Template Enrollment Rights
|
### Şablon Kayıt Hakları
|
||||||
|
|
||||||
Bu haklar, aşağıdaki gibi izinleri detaylandıran Erişim Kontrol Girişleri (ACE'ler) aracılığıyla belirtilir:
|
Bu haklar Access Control Entry (ACE) üzerinden belirtilir ve şu izinleri içerebilir:
|
||||||
|
|
||||||
- **Sertifika-Kayıt** ve **Sertifika-OtomatikKayıt** hakları, her biri belirli GUID'lerle ilişkilidir.
|
- **Certificate-Enrollment** ve **Certificate-AutoEnrollment** hakları, her biri belirli GUID'lerle ilişkilidir.
|
||||||
- **GenişletilmişHaklar**, tüm genişletilmiş izinlere izin verir.
|
- **ExtendedRights**, tüm genişletilmiş izinlere olanak tanır.
|
||||||
- **TamKontrol/GenişTüm**, şablon üzerinde tam kontrol sağlar.
|
- **FullControl/GenericAll**, şablon üzerinde tam kontrol sağlar.
|
||||||
|
|
||||||
### Enterprise CA Enrollment Rights
|
### Enterprise CA Kayıt Hakları
|
||||||
|
|
||||||
CA'nın hakları, Sertifika Otoritesi yönetim konsolu aracılığıyla erişilebilen güvenlik tanımlayıcısında belirtilmiştir. Bazı ayarlar, düşük ayrıcalıklı kullanıcıların uzaktan erişimine bile izin verebilir, bu da bir güvenlik endişesi olabilir.
|
CA'nın hakları, Certificate Authority yönetim konsolu aracılığıyla erişilebilen security descriptor'da belirtilir. Bazı ayarlar düşük ayrıcalıklı kullanıcılara uzaktan erişim izni verebilir; bu durum bir güvenlik endişesi oluşturabilir.
|
||||||
|
|
||||||
### Additional Issuance Controls
|
### Ek Yayınlama Kontrolleri
|
||||||
|
|
||||||
Bazı kontroller uygulanabilir, örneğin:
|
Bazı kontroller uygulanabilir, örneğin:
|
||||||
|
|
||||||
- **Yönetici Onayı**: Talepleri, bir sertifika yöneticisi tarafından onaylanana kadar beklemede tutar.
|
- **Manager Approval**: Talepleri bir certificate manager onaylayana kadar bekleyen durumda tutar.
|
||||||
- **Kayıt Temsilcileri ve Yetkili İmzalar**: Bir CSR üzerindeki gerekli imza sayısını ve gerekli Uygulama Politika OID'lerini belirtir.
|
- **Enrolment Agents and Authorized Signatures**: Bir CSR üzerinde gereken imza sayısını ve gerekli Application Policy OID'lerini belirtir.
|
||||||
|
|
||||||
### Methods to Request Certificates
|
### Sertifika İstem Yöntemleri
|
||||||
|
|
||||||
Sertifikalar aşağıdaki yöntemlerle talep edilebilir:
|
Sertifikalar şu yollarla istenebilir:
|
||||||
|
|
||||||
1. **Windows Client Certificate Enrollment Protocol** (MS-WCCE), DCOM arayüzlerini kullanarak.
|
1. **Windows Client Certificate Enrollment Protocol** (MS-WCCE), DCOM arayüzleri kullanılarak.
|
||||||
2. **ICertPassage Remote Protocol** (MS-ICPR), adlandırılmış borular veya TCP/IP aracılığıyla.
|
2. **ICertPassage Remote Protocol** (MS-ICPR), named pipes veya TCP/IP üzerinden.
|
||||||
3. **Sertifika kayıt web arayüzü**, Sertifika Otoritesi Web Kayıt rolü yüklü olduğunda.
|
3. Certificate Authority Web Enrollment rolü yüklü ise **certificate enrollment web interface** üzerinden.
|
||||||
4. **Sertifika Kayıt Servisi** (CES), Sertifika Kayıt Politikası (CEP) servisi ile birlikte.
|
4. **Certificate Enrollment Service** (CES), Certificate Enrollment Policy (CEP) servisi ile birlikte.
|
||||||
5. **Ağ Cihazı Kayıt Servisi** (NDES), ağ cihazları için, Basit Sertifika Kayıt Protokolü (SCEP) kullanarak.
|
5. Network cihazları için **Network Device Enrollment Service** (NDES) ve Simple Certificate Enrollment Protocol (SCEP) kullanılarak.
|
||||||
|
|
||||||
Windows kullanıcıları ayrıca GUI (`certmgr.msc` veya `certlm.msc`) veya komut satırı araçları (`certreq.exe` veya PowerShell'in `Get-Certificate` komutu) aracılığıyla sertifika talep edebilir.
|
Windows kullanıcıları ayrıca GUI (`certmgr.msc` veya `certlm.msc`) veya komut satırı araçları (`certreq.exe` veya PowerShell'in `Get-Certificate` komutu) aracılığıyla da sertifika talep edebilirler.
|
||||||
```bash
|
```bash
|
||||||
# Example of requesting a certificate using PowerShell
|
# Example of requesting a certificate using PowerShell
|
||||||
Get-Certificate -Template "User" -CertStoreLocation "cert:\\CurrentUser\\My"
|
Get-Certificate -Template "User" -CertStoreLocation "cert:\\CurrentUser\\My"
|
||||||
```
|
```
|
||||||
## Sertifika Kimlik Doğrulama
|
## Certificate Authentication
|
||||||
|
|
||||||
Active Directory (AD) sertifika kimlik doğrulamayı destekler, esasen **Kerberos** ve **Secure Channel (Schannel)** protokollerini kullanır.
|
Active Directory (AD), öncelikli olarak **Kerberos** ve **Secure Channel (Schannel)** protokollerini kullanarak sertifika kimlik doğrulamayı destekler.
|
||||||
|
|
||||||
### Kerberos Kimlik Doğrulama Süreci
|
### Kerberos Authentication Process
|
||||||
|
|
||||||
Kerberos kimlik doğrulama sürecinde, bir kullanıcının Ticket Granting Ticket (TGT) talebi, kullanıcının sertifikasının **özel anahtarı** ile imzalanır. Bu talep, alan denetleyicisi tarafından sertifikanın **geçerliliği**, **yolu** ve **iptal durumu** dahil olmak üzere birkaç doğrulamadan geçer. Doğrulamalar ayrıca sertifikanın güvenilir bir kaynaktan geldiğini doğrulamayı ve vericinin **NTAUTH sertifika deposu** içindeki varlığını onaylamayı içerir. Başarılı doğrulamalar, bir TGT'nin verilmesiyle sonuçlanır. AD'deki **`NTAuthCertificates`** nesnesi, şu adreste bulunur:
|
Kerberos kimlik doğrulama sürecinde, bir kullanıcının Ticket Granting Ticket (TGT) talebi, kullanıcının sertifikasının **özel anahtarı** ile imzalanır. Bu istek, domain controller tarafından sertifikanın **geçerliliği**, **yolu** ve **iptal durumu** dahil olmak üzere birkaç doğrulamadan geçer. Doğrulamalar ayrıca sertifikanın güvenilir bir kaynaktan geldiğinin ve düzenleyicinin **NTAUTH certificate store** içinde bulunduğunun teyit edilmesini içerir. Başarılı doğrulamalar TGT'nin verilmesiyle sonuçlanır. AD içindeki **`NTAuthCertificates`** nesnesi, şu konumda bulunur:
|
||||||
```bash
|
```bash
|
||||||
CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,DC=<domain>,DC=<com>
|
CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,DC=<domain>,DC=<com>
|
||||||
```
|
```
|
||||||
güvenilirliği sağlamak için merkezi bir öneme sahiptir.
|
Sertifika kimlik doğrulaması için güvenin kurulmasında merkezi öneme sahiptir.
|
||||||
|
|
||||||
### Güvenli Kanal (Schannel) Kimlik Doğrulaması
|
### Güvenli Kanal (Schannel) Kimlik Doğrulaması
|
||||||
|
|
||||||
Schannel, bir el sıkışma sırasında istemcinin, başarılı bir şekilde doğrulanırsa erişimi yetkilendiren bir sertifika sunduğu güvenli TLS/SSL bağlantılarını kolaylaştırır. Bir sertifikanın bir AD hesabına eşlenmesi, Kerberos’un **S4U2Self** fonksiyonu veya sertifikanın **Subject Alternative Name (SAN)** gibi diğer yöntemleri içerebilir.
|
Schannel, TLS/SSL bağlantılarını kolaylaştırır; el sıkışma sırasında istemci bir sertifika sunar ve bu sertifika başarıyla doğrulanırsa erişimi yetkilendirir. Bir sertifikanın bir AD hesabına eşlenmesi, diğer yöntemlerin yanı sıra Kerberos'un **S4U2Self** fonksiyonunu veya sertifikanın **Subject Alternative Name (SAN)** alanını içerebilir.
|
||||||
|
|
||||||
### AD Sertifika Hizmetleri Sayımı
|
### AD Sertifika Servislerinin Keşfi
|
||||||
|
|
||||||
AD'nin sertifika hizmetleri, **Enterprise Certificate Authorities (CAs)** ve bunların yapılandırmaları hakkında bilgi açığa çıkaran LDAP sorguları aracılığıyla sayılabilir. Bu, özel ayrıcalıklara sahip olmadan herhangi bir alan kimlik doğrulamalı kullanıcı tarafından erişilebilir. **[Certify](https://github.com/GhostPack/Certify)** ve **[Certipy](https://github.com/ly4k/Certipy)** gibi araçlar, AD CS ortamlarında sayım ve güvenlik açığı değerlendirmesi için kullanılır.
|
AD'nin sertifika servisleri LDAP sorguları aracılığıyla keşfedilebilir; bu, **Enterprise Certificate Authorities (CAs)** ve yapılandırmaları hakkında bilgi açığa çıkarır. Bu, özel ayrıcalıklara ihtiyaç duymadan etki alanı kimlik doğrulaması yapılmış herhangi bir kullanıcı tarafından erişilebilir. AD CS ortamlarında keşif ve zafiyet değerlendirmesi için **[Certify](https://github.com/GhostPack/Certify)** ve **[Certipy](https://github.com/ly4k/Certipy)** gibi araçlar kullanılır.
|
||||||
|
|
||||||
Bu araçları kullanmak için komutlar şunlardır:
|
Bu araçları kullanmak için komutlar şunlardır:
|
||||||
```bash
|
```bash
|
||||||
# Enumerate trusted root CA certificates and Enterprise CAs with Certify
|
# Enumerate trusted root CA certificates, Enterprise CAs and HTTP enrollment endpoints
|
||||||
Certify.exe cas
|
# Useful flags: /domain, /path, /hideAdmins, /showAllPermissions, /skipWebServiceChecks
|
||||||
# Identify vulnerable certificate templates with Certify
|
Certify.exe cas [/ca:SERVER\ca-name | /domain:domain.local | /path:CN=Configuration,DC=domain,DC=local] [/hideAdmins] [/showAllPermissions] [/skipWebServiceChecks]
|
||||||
Certify.exe find /vulnerable
|
|
||||||
|
# Identify vulnerable certificate templates and filter for common abuse cases
|
||||||
|
Certify.exe find
|
||||||
|
Certify.exe find /vulnerable [/currentuser]
|
||||||
|
Certify.exe find /enrolleeSuppliesSubject # ESC1 candidates (CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT)
|
||||||
|
Certify.exe find /clientauth # templates with client-auth EKU
|
||||||
|
Certify.exe find /showAllPermissions # include template ACLs in output
|
||||||
|
Certify.exe find /json /outfile:C:\Temp\adcs.json
|
||||||
|
|
||||||
|
# Enumerate PKI object ACLs (Enterprise PKI container, templates, OIDs) – useful for ESC4/ESC7 discovery
|
||||||
|
Certify.exe pkiobjects [/domain:domain.local] [/showAdmins]
|
||||||
|
|
||||||
# Use Certipy for enumeration and identifying vulnerable templates
|
# Use Certipy for enumeration and identifying vulnerable templates
|
||||||
certipy find -vulnerable -u john@corp.local -p Passw0rd -dc-ip 172.16.126.128
|
certipy find -vulnerable -u john@corp.local -p Passw0rd -dc-ip 172.16.126.128
|
||||||
@ -119,5 +129,7 @@ certutil -v -dstemplate
|
|||||||
|
|
||||||
- [https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf](https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf)
|
- [https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf](https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf)
|
||||||
- [https://comodosslstore.com/blog/what-is-ssl-tls-client-authentication-how-does-it-work.html](https://comodosslstore.com/blog/what-is-ssl-tls-client-authentication-how-does-it-work.html)
|
- [https://comodosslstore.com/blog/what-is-ssl-tls-client-authentication-how-does-it-work.html](https://comodosslstore.com/blog/what-is-ssl-tls-client-authentication-how-does-it-work.html)
|
||||||
|
- [GhostPack/Certify](https://github.com/GhostPack/Certify)
|
||||||
|
- [GhostPack/Rubeus](https://github.com/GhostPack/Rubeus)
|
||||||
|
|
||||||
{{#include ../../../banners/hacktricks-training.md}}
|
{{#include ../../../banners/hacktricks-training.md}}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user