Hacker Directory — Understand what you hack.Hacker Directory — Understand what you hack.
Öğrenmeye devam et
EN
İçindekiler15 bölüm · 82 ders
DERS 11.03DERİN TEKNİK İNCELEME

Kim kimin adına sertifika alabilir? CA/template izinleri, enrollment ve issuance kontrolleri.

Sertifika talebinde iki ayrı izin kapsamı vardır: CA üzerindeki Request Certificates ve template üzerindeki Enroll. AutoEnroll ise istemcinin otomatik talep sürecinde kullandığı ayrı bir haktır. Bu izinler, talebin onaylanacağını ya da verilen sertifikanın bir kullanıcı hesabı için kabul edileceğini göstermez. İsimlerin kaynağını, CA’nın işleme kurallarını ve sertifikayı kabul edecek sistemin koşullarını birlikte değerlendirmek gerekir.

1. Core Mechanism / Temel mekanizma

11.02 template'in ne tanımladığını gösterdi. Bu ders aynı nesneye yetkilendirme tarafından bakar: talebin hangi kapılardan geçtiğini, hangi bayrağın subject'i istemciye bıraktığını ve issuance kararının neden ayrı bir adım olduğunu ayırır.

Arabirimler ve belirtimler

  • Certificate template nesnesi: Configuration naming context altındaki Public Key Services alanında duran, kendi security descriptor'ına sahip bir directory nesnesidir; izinleri dosya izni gibi değil, AD ACL semantiğiyle okunur.
  • Certificate-Enrollment: CN Certificate-Enrollment, Display-Name Enroll, Rights-GUID 0e10c968-78fb-11d2-90d4-00c04f79dc55 olan ve PKI-Certificate-Template sınıfına uygulanan control access right'tır.
  • Certificate-AutoEnrollment: rightsGuid a05b8cc2-17bc-4802-a710-e7c15ab866a2 olan ikinci control access right'tır; Enroll ile aynı şey değildir ve ayrı ACE ile verilir.
  • msPKI-Enrollment-Flag, enrollment ve issuance davranışını belirleyen bit alanıdır. CT_FLAG_PEND_ALL_REQUESTS (0x00000002), olağan talepte CA’nın pending yanıtı vermesini ve sertifika üretmeden önce CA manager onayı beklemesini sağlar. MS-WCCE’de belgelenen, önceki onaya dayalı ve gerekli koşulları sağlayan yenileme yolunda CA bu flag’i dikkate almaz.
  • msPKI-Certificate-Name-Flag, istemci ve CA tarafında farklı işleme kurallarına sahiptir. MS-CRTD’ye göre CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT (0x00000001), istemciden talebe Subject; CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT_ALT_NAME (0x00010000) ise SAN bilgisi eklemesini ister. CA tarafındaki MS-WCCE kuralı ALT_NAME bitini tek başına kullanmaz; ENROLLEE_SUPPLIES_SUBJECT varsa talepteki Subject ve SAN bilgisini kullanır. İstemci flag’i, CA’nın hangi SAN’i vereceğini tek başına kanıtlamaz; CA genelindeki SAN ayarı da ayrıca incelenir.
  • CA enrollment yüzeyi: talebi karşılayan hizmet ve CA'ya ait security descriptor. Buradaki Request Certificates izni, AD'deki template nesnesinin Read/Enroll/AutoEnroll izinlerinden ayrıdır; template Enroll GUID'i CA düzeyindeki bu iznin karşılığı değildir.

CA izni ve template izinleri

Talebi kabul edebilen bir CA'ya ulaşmak, o CA'dan sertifika istemeye yetkili olmak ve seçilen template'i kullanabilmek ayrı koşullardır. CA'nın Security ayarındaki Request Certificates izni ile AD'deki template'in Read ve Enroll izinlerini ayrı incele. Varsayılan yapılandırmada CA izni Authenticated Users üzerinden sağlanabilir; bu yüzden ayrıca verilmemiş gibi görünmesi kontrolün olmadığı anlamına gelmez.

Somut bir örnek: NDES hizmet hesabının template üzerinde Read ve Enroll izinleri var, fakat CA'da etkin Request Certificates izni yok. Template izinleri bu eksikliği gidermez. Tersine, CA'da Request Certificates verilmesi de her template için Enroll vermez. Talebin hangi hesap adına yürüdüğünü ve iki yerdeki etkin izinlerini birlikte değerlendir.

Template üzerindeki Enroll bir control access right'tır: ACE, CR access mask'iyle birlikte ObjectType alanında Enroll GUID'ini taşır. Read bu hakkı sağlamaz. AutoEnroll de ayrı bir haktır ve istemcinin otomatik enrollment davranışında kullanılır; CA'nın template üzerinde yaptığı Enroll kontrolünü atlatmaz. İzinler sağlandıktan sonra issuance koşulları ayrıca değerlendirilir.

Request Certificates
  CA Security

Read / Enroll
  AD certificate template ACL

AutoEnroll
  Template ACL; istemci otomasyonu

Onay / pending
  CA issuance koşulu; izin değil

Subject'i kim yazıyor?

Template isimlerin kaynağını iki yönden belirler. CA, Subject ve SAN değerlerini template ayarlarına göre requester’ın directory nesnesinden oluşturabilir. İstemciye de request’e isim alanlarını koyması söylenebilir. MS-CRTD, istemci tarafını tarif eder: CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT, istemciden Subject; CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT_ALT_NAME ise SAN bilgisi ister.

İstemci ile CA kurallarını ayrı oku. MS-WCCE’ye göre CA, CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT_ALT_NAME bitini tek başına kullanmaz. CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT varsa request’teki Subject ve SAN bilgisini kullanır. Dolayısıyla istemcinin SAN göndermesi, CA’nın onu verilen certificate’e kopyaladığını kanıtlamaz. Flag ile CA’nın gerçek issuance davranışını birlikte incele. Ayrıca CA genelindeki EDITF_ATTRIBUTESUBJECTALTNAME2 ayarını ayrı kaydet: açıksa template’in Supply in the request ayarından bağımsız bir SAN talep yolu bulunabilir. Bu, bir sertifikanın gerçekten verildiği veya bir hesaba eşlendiği anlamına gelmez.

Kimlik açısından sonuç, gerçekten verilen certificate’e ve onu kabul eden verifier’a bağlıdır. CA’nın requester’ın gönderdiği isimleri kullandığı bir template’te geniş Enroll yetkisi, kimlik materyali üretimi açısından önemlidir. Certificate’in daha sonra hangi amaçta ve hangi hesap için kabul edildiği ise ayrı karardır.

Issuance ayrı bir karardır

Enroll, requester’ın template üzerinden talepte bulunabilmesini sağlar; certificate’in hemen verileceği anlamına gelmez. Olağan request için CT_FLAG_PEND_ALL_REQUESTS, CA’nın pending dönmesini ve certificate vermeden önce bir CA manager’ın onayını beklemesini gerektirir.

Pending, template ACL’ini değiştiren bir izin değildir; ayrı issuance kararıdır. Tek başına güvenlik garantisi de değildir. Belgelenmiş bir renewal istisnası vardır: önceki onayın doğrulanması için gereken koşullar sağlandığında CA, CT_FLAG_PEND_ALL_REQUESTS’i dikkate almaz. Bu yüzden flag’i her request için değişmez bir onay koşulu saymadan önce renewal bağlamını incele.

Durum ve veri akışı

  1. İstemci kullanılabilir template’i bulur ve onu issue edecek enterprise CA’ya talep gönderir. Talepte kullanılan hesabın CA düzeyindeki Request Certificates izni ayrıca gerekir.
  2. CA template'i belirler ve talepteki hesabın template security descriptor üzerindeki Enroll iznini kontrol eder. CA düzeyindeki izin, template Enroll yerine geçmez; Enroll yoksa talep reddedilir.
  3. AutoEnroll, istemcinin otomatik enrollment için kullandığı ayrı bir izindir. Otomasyonu başlatabilir; CA talebi aldığında Enroll iznini yine kontrol eder.
  4. Name-Flag’in istemci talebini ve CA’nın isimleri işlemesini nasıl etkilediğini ayır. ALT_NAME bitinin tek başına template üzerinden CA kabulünü göstermediğini ve CA genelindeki SAN ayarının ayrı bir kontrol olduğunu unutma.
  5. Olağan request’te CT_FLAG_PEND_ALL_REQUESTS, CA’nın pending dönmesini ve manager approval beklemesini gerektirir. Önceki onaya dayanan, gerekli koşulları sağlayan renewal bunun istisnasıdır.

2. Exploitation / İstismar

Broken trust assumption

Örnek, template ACL’lerini okuyabilen sıradan bir kullanıcı veya makine hesabının savunma açısından değerlendirilmesidir. Talep, CA ve template izinleri ayrı kapsamlar olarak ele alınır; gerçek bir enrollment girişimi veya erişim sonucu gözlenmemiştir.

Technical prerequisites

  • Talepte kullanılan hesabın CA üzerinde Request Certificates, template üzerinde Read ve Enroll izinleri olmalıdır. AutoEnroll istemcinin otomatik enrollment davranışı için ayrıca incelenir; CA veya template izinlerinin yerine geçmez.
  • Template ve CA kuralları birlikte incelenmelidir: istemcinin gönderdiği isim bilgisi ile CA’nın sertifikaya aldığı bilgi aynı varsayılmaz. SAN’in kaynağı değerlendirilirken CA genelindeki ayar ayrıca okunur.
  • Üretilen sertifikanın amaç ve hesap eşleme koşulları, onu kabul edecek sistemde ayrıca doğrulanmalıdır; issuance bu kabulün kanıtı değildir.
  • Olağan issuance yolundaki onay koşulu, önceki onaya dayalı yenileme istisnasından ayrı değerlendirilmelidir.

Exploitation mechanism / İstismar mekanizması

Enroll, belirli bir template üzerinden talepte bulunma hakkıdır; sertifikadaki kimliği seçme veya onu başka bir sistemde kabul ettirme hakkı değildir. Savunma incelemesinde izin kapsamını, isim bilgisinin kaynağını, CA’nın talebi nasıl işlediğini, issuance onayını ve verifier’ın kabul koşullarını ayrı kaydet. Aynı izin listesi bu koşullar değiştiğinde farklı risk taşır. AutoEnroll de ayrı değerlendirilir: istemci otomasyonunu etkiler, CA’nın Enroll denetimini kaldırmaz.

İzin kümesi neden tek başına yeterli bir risk ölçüsü değildir

Enroll listesindeki hesapları saymak tek başına risk değerlendirmesi değildir. Subject ve SAN’i kimin sağladığı, CA’nın bunları nasıl işlediği, onay gerekip gerekmediği ve sertifikanın nerede kabul edildiği sonucu değiştirir.

Template security descriptor’ını, Name-Flag değerlerini ve CA genelindeki SAN ayarını birlikte incele. Her birinin hangi kararı etkilediğini kaydet; istemcinin talebe yazdığı alanı, CA’nın ürettiği sertifikanın içeriğiyle aynı sayma.

AutoEnroll ve Enroll farklı kararları etkiler

AutoEnroll, istemcinin kullanıcı etkileşimi olmadan otomatik talep oluşturmasında kullanılan ayrı bir haktır. Gönderilen talepte CA’nın denetlediği Enroll hakkının yerine geçmez. Otomatik talebin kapsamını AutoEnroll ACE’sinden, template kullanım yetkisini Enroll ACE’sinden oku.

Örnekte yalnız AutoEnroll verilmiş, Enroll verilmemişse otomasyon izni eksik Enroll koşulunu tamamlamaz. Hakkın verilmesi, başarılı bir talep veya dağıtımın gözlendiği anlamına da gelmez.

3. Defense & Detection / Savunma ve tespit

Telemetry scope

  • CA Security ayarlarından Request Certificates için etkin izinleri ayrı kaydet. Her template'in security descriptor'ında Read kapsamını ve Enroll/AutoEnroll ACE'lerini incele; iki control access right'ı ObjectType GUID'ine göre ayır. CA ACL ile template ACL tek izin listesi değildir.
  • msPKI-Certificate-Name-Flag değerlerini kaydet. ENROLLEE_SUPPLIES_SUBJECT ile ALT_NAME bitinin istemci ve CA tarafındaki anlamlarını ayrı değerlendir. İlgili CA’da EDITF_ATTRIBUTESUBJECTALTNAME2 durumunu da incele; template ayarı bu CA genelindeki kontrolün yerine geçmez.
  • CA’nın talepteki isim bilgisini kullandığı profillerde, olağan talepler için CT_FLAG_PEND_ALL_REQUESTS durumunu ve çıktının nerede kimlik doğrulamada kabul edildiğini birlikte değerlendir. Önceki onaya dayalı yenileme istisnasını ayrı kaydet.
  • 5136 için Audit Directory Service Changes ve işlemi karşılayan object SACL; 4662 için ise Audit Directory Service Access ve işlemi karşılayan object SACL gerekir. DC’deki success/failure kapsamını, nesneyi ve işlemi birlikte kontrol et; bu iki alt kategoriyi aynı ayar sayma.

Events and relevant fields

  • 5136 · A directory service object was modified; template nesnesi değişiklikleri ancak uygun SACL ve Audit Directory Service Changes yapılandırmasıyla görünür.
  • 4662 · An operation was performed on an object. AD nesnesi üzerindeki işlem kaydı, Audit Directory Service Access kapsamına ve işlemi karşılayan object SACL’e bağlıdır. Her ortamda varsayılan olarak oluşmaz; yokluğu kullanım olmadığını göstermez.

Önceliği izin sayısına göre belirleme

Önceliği ACE sayısına göre değil, CA’nın üretebildiği kimlik materyaline ve onu kabul eden sistemlere göre belirle. İsimlerin kaynağı, CA genelindeki SAN ayarı, template izni, onay koşulu ve sertifikanın kullanım amacı birlikte incelenmelidir.

Aynı disiplin AutoEnroll için de geçerlidir. İki hakkı ayrı kolonlarda raporlamak, 'sertifika alabilir' şeklindeki tek bayraklı özetin sakladığı farkı görünür kılar.

Detection logic · XPath

*[System[(EventID=5136)]]

Query assumptions

  • Sorgu yalnız directory object modification olay zarfını seçer; değişen nesnenin bir certificate template olup olmadığı olay içeriğinden ayrıca okunmalıdır.
  • Kayıt üretimi ilgili nesnedeki SACL'e ve Audit Directory Service Changes alt kategorisinin açık olmasına bağlıdır; bu ders bu yapılandırmanın mevcut olduğunu varsaymaz.

False positives

  • Planlı template bakımı, yeni bir uygulamanın devreye alınması veya izin düzeltmeleri aynı olayı üretir; olayın varlığı kötücül değişiklik anlamına gelmez.
  • Olayın yokluğu güvenlik kanıtı değildir: SACL yoksa tehlikeli bir ACL değişikliği de kayıt üretmez.

Hardening

  • Enroll ve AutoEnroll haklarını geniş yerleşik gruplara değil, amaçla sınırlı ve gözden geçirilebilir gruplara ver.
  • İstemcinin kimlik alanlarını sağladığı template’leri amaçla sınırla. Template Name-Flag değerleri ile CA genelindeki EDITF_ATTRIBUTESUBJECTALTNAME2 ayarını ayrı değerlendir. CA ayarında değişiklik planlamadan önce ona bağlı issuance süreçlerinin etkisini incele; yalnız template’i sınırlandırmanın bütün SAN giriş yollarını kapattığını varsayma.
  • Yüksek etkili template'lerde issuance için ayrı onay adımı (CT_FLAG_PEND_ALL_REQUESTS) kullan ve onayı enrollment yetkisinden farklı bir rolde tut. Önceki onaylı yenileme istisnasını da değerlendir.
  • CA Security üzerindeki Request Certificates izinlerini ve template security descriptor’larını ayrı baseline’larla karşılaştır. Geniş grup izinlerinin nereden geldiğini ve talep yolunda hangi hesabın kullanıldığını kaydet; tek seferlik denetimle yetinme.

Örnekler üzerinde oku / Read the examples

ÖRNEĞİ BİRLİKTE OKUYALIM

EĞİTİM İÇİN HAZIRLANDI

Hangi kayıt erişim, hangisi audit veya integrity kuralı?

Certificate template nesnesi · Enroll ve AutoEnroll control access ACE'leri (SDDL)

01
Authenticated UsersA · Read Property, List Children, List Object, READ_CONTROL

İzin veren kayıt. Maske trustee’ye yönelik allow/deny kaydının kapsamıdır. İstek, token, sıra ve nesne türü incelenmeden effective access sonucu çıkarılmaz.

02
S-1-5-21-1835020781-2103267434-1139111218-1142OA · Control Access · Enroll · 0e10c968-78fb-11d2-90d4-00c04f79dc55

Nesneye özgü izin kaydı. Maske trustee’ye yönelik allow/deny kaydının kapsamıdır. İstek, token, sıra ve nesne türü incelenmeden effective access sonucu çıkarılmaz. ObjectType GUID bu kaydı Enroll control access right’ına sınırlar; aynı trustee’ye ait diğer ACE veya Enroll/AutoEnroll hakkının yerine geçmez. GUID eşleşmesi effective access ya da CA issuance sonucu değildir.

03
S-1-5-21-1835020781-2103267434-1139111218-1142OA · Control Access · AutoEnroll · a05b8cc2-17bc-4802-a710-e7c15ab866a2

Nesneye özgü izin kaydı. Maske trustee’ye yönelik allow/deny kaydının kapsamıdır. İstek, token, sıra ve nesne türü incelenmeden effective access sonucu çıkarılmaz. ObjectType GUID bu kaydı AutoEnroll control access right’ına sınırlar; aynı trustee’ye ait diğer ACE veya Enroll/AutoEnroll hakkının yerine geçmez. GUID eşleşmesi effective access ya da CA issuance sonucu değildir.

04
Domain AdminsA · Generic All

İzin veren kayıt. Maske trustee’ye yönelik allow/deny kaydının kapsamıdır. İstek, token, sıra ve nesne türü incelenmeden effective access sonucu çıkarılmaz.

Buradan çıkaracağın fikir

Bir kuralı okumak ile “bu kişi kesin erişebilir” demek farklıdır. Erişim isteği, token, ACE sırası ve nesne türüyle birlikte değerlendirme gerekir.

Bu görünüm SDDL’deki kuralları açıklar; Windows’un erişim kararını çalıştırmaz. SACL audit ve mandatory label kurallarını taşır; izin veren DACL’in yerine geçmez.

Bu örneğin kapsamı

Sentetik SDDL'dir; gerçek ortamdan alınmamıştır ve varsayılan template izinlerini temsil etme iddiası taşımaz. İki OA ACE'si CR (control access) mask'i ve ObjectType alanında yayımlanmış Enroll/AutoEnroll GUID'lerini taşır. Parser yapıyı çözümler; CA request authorization, autoenrollment davranışı veya erişim kararı hesaplamaz. Bu örnek yalnız template ACL kapsamındadır; CA üzerindeki Request Certificates iznini içermez ve onun etkin sonucunu göstermez.

Ham kaydı aç · SDDL
O:DAG:DAD:P(A;;RPLCLORC;;;AU)(OA;;CR;0e10c968-78fb-11d2-90d4-00c04f79dc55;;S-1-5-21-1835020781-2103267434-1139111218-1142)(OA;;CR;a05b8cc2-17bc-4802-a710-e7c15ab866a2;;S-1-5-21-1835020781-2103267434-1139111218-1142)(A;;GA;;;DA)

İki yanlış kanı / Two reality checks

Sanılan: Template üzerinde read izni olan herkes zaten enroll edebilir; ayrı bir hak yoktur.
Gerçekte: Enroll, GUID’i 0e10c968-78fb-11d2-90d4-00c04f79dc55 olan ayrı bir control access right’tır. AutoEnroll’ün GUID’i ve istemci tarafındaki görevi farklıdır; Read bu hakları vermez. CA talebi işlerken Enroll’ü ayrıca denetler. İsimlerin nasıl işlendiği de izinlerden ayrı bir konudur: istemci kuralları, CA’nın template işleme kuralları ve CA genelindeki SAN ayarı birlikte okunmalıdır.
Sanılan: Enroll hakkı verildiyse sertifika anında üretilir; başka bir kapı kalmaz.
Gerçekte: Template Enroll tek başına yeterli değildir: talepteki hesabın CA düzeyindeki Request Certificates izni de gerekir. Bu izinler talebin anında issue edileceğini söylemez. Olağan taleplerde CT_FLAG_PEND_ALL_REQUESTS, CA manager onayını bekleyen pending yanıtı üretir; MS-WCCE'deki önceki onaylı yenileme istisnası ayrıca değerlendirilir.

SIRA SENDE

Bu hikâyeyi sen çöz.

Bilgiyi hatırlamaktan bir adım ileri: koşulu değiştir, kanıtı oku, kararın nedenini anlat.

1 / 3 · SONUCU TAHMİN ET

Tunahan’ın template üzerinde AutoEnroll hakkı var ama Enroll yok. AutoEnroll bu eksikliği giderir mi?

Bir cevap seç

Bir ipucu

İstemci otomasyonu ile CA’nın authorization kontrolünü ayır.

Cevabın gerekçesini oku

Hayır; CA request işlerken Enroll’ü yine kontrol eder.

AutoEnroll otomatik süreçte kullanılan ayrı haktır, Enroll bypass değildir.

2 / 3 · KANITI OKU

Bu kartta talebin izin eksikliği hangi scope’ta?

Sentetik etkin izin incelemesi.
Requester / Talep hesabı
IYELABS\tunahan
Template Read / İzin
Allowed
Template Enroll / İzin
Allowed
CA01 Request Certificates / İzin
Not allowed
Bir cevap seç

Bir ipucu

CA security descriptor ile template descriptor ayrı nesnelerdir.

Cevabın gerekçesini oku

CA01 üzerindeki Request Certificates scope’unda.

Template Read/Enroll, CA izninin yerine geçmez; ters yönde de geçmez.

3 / 3 · KENDİN ANLAT

Request’te SAN bulunması neden issued certificate’te aynı SAN bulunduğunu kanıtlamaz?

Bir ipucu

Client flag’i, CA name-processing kuralı ve CA-wide ayarı ayır.

Cevabın gerekçesini oku

İstemci SAN gönderebilir; ALT_NAME bitinin tek başına olması CA’nın bunu kabul ettiğini göstermez. Template’in CA işleme kuralları, ayrı CA-wide SAN ayarı ve gerçekten verilen certificate birlikte incelenir.

  • İstemcinin gönderdiği alanla CA’nın ürettiği alanı ayırdım.
  • Gerçek issued certificate ve CA/template koşullarının incelenmesi gerektiğini belirttim.

Açıklaman otomatik puanlanmaz. Kontrol noktalarını kendi cevabınla karşılaştır.

Bu pratikler öğrenme amaçlıdır; sertifika sınavının puanını etkilemez.

Kaynaklar / Sources