Administrator Account Enumeration (Misconfiguration)

Administrator Account Enumeration (Misconfiguration)

UAC Elevation Sırasında Bilgi Sızıntısı Windows User Account Control (UAC) mekanizması, sistem güvenliğinin kritik bir parçasıdır. Ancak varsayılan yapılandırmada, "Enumerate administrator accounts on elevation" ayarının etkin olması, saldırganların yönetici hesap bilgilerine erişmesine olanak tanır. Bu görünürde zararsız görünen özellik, aslında ciddi güvenlik riskleri barındırır ve hedefli saldırıların başlangıç noktası olabilir. Bu yazıda, bu kritik güvenlik açığını ve etkili çözüm yöntemlerini detaylı olarak inceleyeceğiz.

Administrator Account Enumeration Nedir?

Administrator Account Enumeration, Windows sistemlerinde UAC (User Account Control) elevation dialog'u gösterildiğinde, mevcut yönetici hesaplarının kullanıcıya görüntülenmesi özelliğidir. Bu özellik, kullanıcı deneyimini iyileştirmek amacıyla tasarlanmış olsa da, önemli güvenlik riskleri yaratmaktadır.

UAC Elevation Süreci

Normal Akış:

  1. Standart kullanıcı yönetici yetkisi gerektiren bir işlem başlatır
  2. UAC dialog'u açılır
  3. Administrator accounts enumeration etkinse:
    • Mevcut tüm yönetici hesapları listelenir
    • Kullanıcı dropdown'dan hesap seçer
    • Sadece parola girişi yeterli olur
  4. Administrator accounts enumeration devre dışıysa:
    • Boş username ve password alanları gösterilir
    • Hem kullanıcı adı hem de parola girilmeli

Güvenlik Farkı

Enumeration Etkinken:

Administrator hesapları görünür: ┌─────────────────────────────┐ │ Select Administrator: │ │ ▼ │ │ ▼ │ │ ▼ │ │ Password: │ └─────────────────────────────┘ 

Enumeration Devre Dışıyken:

Hiçbir hesap bilgisi görünmez: ┌─────────────────────────────┐ │ Username: │ │ Password: │ └─────────────────────────────┘ 

Güvenlik Riskleri ve Saldırı Senaryoları

1. Information Disclosure (Bilgi Sızıntısı)

Exposed Bilgiler:

  • Yönetici hesap isimleri: Domain ve local administrator accounts
  • Account naming conventions: Organizasyonun hesap adlandırma kuralları
  • Service accounts: Yönetici yetkisine sahip servis hesapları
  • Personal admin accounts: Kişisel yönetici hesapları

Risk Değerlendirmesi:

Risk = Bilgi Değeri × Erişim Kolaylığı × Kötüye Kullanım Potansiyeli Risk = Yüksek × Çok Kolay × Çok Yüksek = KRİTİK 

2. Targeted Brute Force Attacks

Saldırı Stratejisi:

  1. Reconnaissance Phase: UAC dialog'undan hesap bilgilerini toplama
  2. Target Selection: En değerli hedefleri belirleme
  3. Credential Attacks: Hedefli parola saldırıları
  4. Privilege Escalation: Başarılı giriş sonrası yetki yükseltme

Örnek Saldırı Akışı:

# 1. UAC dialog'undan toplanan bilgiler $targetAccounts = @( "Administrator", "john.admin", "backup.admin", "sql.service" ) # 2. Hedefli saldırı listesi oluşturma foreach ($account in $targetAccounts) { # Brute force attack implementation Invoke-BruteForce -Username $account -PasswordList $commonPasswords } 

3. Social Engineering Amplification

Enhanced Phishing:

  • Gerçek yönetici hesap isimlerini kullanarak daha inandırıcı phishing e-postaları
  • Spear phishing saldırılarında hedef kişilerin doğru yönetici rollerini bilme
  • Pretexting saldırılarında sahte IT desteği senaryoları

Business Email Compromise (BEC):

  • CEO fraud saldırılarında gerçek yönetici hesap isimlerini kullanma
  • Wire transfer fraud'larında yetki sahibi kişileri taklit etme

4. Lateral Movement Planning

Active Directory Reconnaissance:

  • Domain admin hesaplarını tespit etme
  • Privileged account discovery
  • Attack path planning

PowerShell Discovery Script Örneği:

# Saldırganın kullanabileceği discovery script function Get-PrivilegedAccounts { $adminAccounts = @() # UAC dialog'undan elde edilen hesapları doğrula foreach ($account in $enumeratedAccounts) { $user = Get-ADUser -Identity $account -Properties MemberOf if ($user.MemberOf -match "Domain Admins|Enterprise Admins|Administrators") { $adminAccounts += $user } } return $adminAccounts } 

Çözüm Yöntemleri

1. Group Policy (GPO) ile Yapılandırma

Adım 1: Group Policy Management Console

gpmc.msc 

Adım 2: Computer Configuration Ayarları

Yol: Computer Configuration → Administrative Templates → Windows Components → Credential User Interface

Adım 3: Policy Aktivasyonu

Policy Name: "Enumerate administrator accounts on elevation" Ayar: Disabled olarak işaretleyin

GPO Hierarchy:

Domain Policy ├── Computer Configuration │ └── Administrative Templates │ └── Windows Components │ └── Credential User Interface │ └── Enumerate administrator accounts on elevation: DISABLED 

2. Registry ile Manuel Yapılandırma

Registry Path:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\CredUI 

Registry Değeri:

  • Value Name: EnumerateAdministrators
  • Value Type: REG_DWORD
  • Value Data: 0 (Disabled)

PowerShell ile Uygulama:

# Registry anahtarını oluştur/güncelle $registryPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\CredUI" # Registry path'in var olup olmadığını kontrol et if (!(Test-Path $registryPath)) { New-Item -Path $registryPath -Force | Out-Null } # Enumeration'ı devre dışı bırak Set-ItemProperty -Path $registryPath -Name "EnumerateAdministrators" -Value 0 -Type DWord Write-Output "Administrator enumeration disabled successfully." 

Batch Script ile Toplu Uygulama:

@echo off echo Disabling administrator enumeration... reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\CredUI" /v EnumerateAdministrators /t REG_DWORD /d 0 /f if %errorlevel% == 0 ( echo Successfully disabled administrator enumeration. ) else ( echo Failed to disable administrator enumeration. ) pause 

3. PowerShell DSC (Desired State Configuration)

DSC Configuration:

Configuration DisableAdminEnumeration { param( ]$ComputerName = 'localhost' ) Node $ComputerName { Registry DisableAdminEnum { Key = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\CredUI' ValueName = 'EnumerateAdministrators' ValueData = '0' ValueType = 'Dword' Ensure = 'Present' } } } # Configuration'ı uygula DisableAdminEnumeration -ComputerName $env:COMPUTERNAME Start-DscConfiguration -Path .\DisableAdminEnumeration -Wait -Verbose 

Gelişmiş Güvenlik Stratejileri

1. Comprehensive UAC Hardening

UAC Güvenlik Ayarları:

# UAC prompt behavior for administrators Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "ConsentPromptBehaviorAdmin" -Value 2 # UAC prompt behavior for standard users Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "ConsentPromptBehaviorUser" -Value 3 # Secure desktop for UAC prompts Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "PromptOnSecureDesktop" -Value 1 # Enable installer detection Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "EnableInstallerDetection" -Value 1 

UAC Seviye Konfigürasyonu:

Seviye ConsentPromptBehaviorAdmin Açıklama
0 Never notify ❌ Güvensiz
1 Prompt for credentials ⚠️ Orta
2 Prompt for consent ✅ Güvenli
3 Prompt for credentials (secure desktop) ✅ Çok Güvenli

2. Credential Guard Entegrasyonu

Windows Defender Credential Guard:

# Credential Guard durumunu kontrol et Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard # Credential Guard aktivasyonu (UEFI ve TPM gerekli) bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device path="\Windows\System32\lsaiso.exe" 

3. Privileged Access Management (PAM)

Just-In-Time Administration:

# Geçici yönetici hesap oluşturma function New-TemporaryAdmin { param( $Username, $DurationMinutes = 60 ) $tempPassword = ::GeneratePassword(12, 2) $securePassword = ConvertTo-SecureString $tempPassword -AsPlainText -Force # Geçici hesap oluştur New-LocalUser -Name $Username -Password $securePassword -Description "Temporary admin - Auto-expires" Add-LocalGroupMember -Group "Administrators" -Member $Username # Otomatik silme job'ı oluştur $trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes($DurationMinutes) $action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-Command Remove-LocalUser -Name '$Username'" Register-ScheduledTask -TaskName "RemoveTempAdmin_$Username" -Trigger $trigger -Action $action Write-Output "Temporary admin '$Username' created. Password: $tempPassword" } 

Monitoring ve Detection

1. Event Log Analysis

UAC Related Event IDs:

Event ID 4648: Explicit credential use Event ID 4672: Special privileges assigned Event ID 4624: Successful logon with admin rights Event ID 5376: Credential Manager credentials were backed up 

PowerShell Monitoring Script:

# UAC elevation monitoring function Monitor-UACElevations { $events = Get-WinEvent -FilterHashtable @{ LogName = 'Security' ID = 4648, 4672 StartTime = (Get-Date).AddHours(-24) } $suspiciousEvents = $events | Where-Object { $_.Message -match "administrator|admin" -and $_.Properties.Value -notmatch "SYSTEM|NT AUTHORITY" } foreach ($event in $suspiciousEvents) { @{ TimeCreated = $event.TimeCreated SourceUser = $event.Properties.Value TargetUser = $event.Properties.Value ProcessName = $event.Properties.Value SourceIP = $event.Properties.Value } } } # Günlük rapor Monitor-UACElevations | Export-Csv -Path "UAC_Elevations_$(Get-Date -Format 'yyyyMMdd').csv" 

2. Advanced Threat Detection

Behavioral Analysis:

# Anormal elevation pattern detection function Detect-AnomalousElevations { $baseline = Import-Csv "baseline_elevations.csv" $current = Monitor-UACElevations # Frequency analysis $currentFreq = $current | Group-Object SourceUser | Select-Object Name, Count $baselineFreq = $baseline | Group-Object SourceUser | Select-Object Name, Count # Anomaly detection foreach ($user in $currentFreq) { $baselineCount = ($baselineFreq | Where-Object Name -eq $user.Name).Count if ($user.Count -gt ($baselineCount * 3)) { Write-Warning "Anomalous elevation activity detected for user: $($user.Name)" # Trigger alert or response } } } 

3. SIEM Integration

Splunk Query:

index=windows EventCode=4648 OR EventCode=4672 | eval admin_elevation=if(match(Message, "(?i)administrator|admin"), 1, 0) | where admin_elevation=1 | stats count by user, dest | where count > 10 | sort -count 

ELK Stack Detection Rule:

{ "query": { "bool": { "must": }}, {"wildcard": {"winlog.event_data.TargetUserName": "*admin*"}}, {"range": {"@timestamp": {"gte": "now-1h"}}} ] } }, "aggs": { "by_user": { "terms": { "field": "winlog.event_data.SubjectUserName", "size": 10 } } } } 

Compliance ve Audit

1. Compliance Framework Mapping

CIS Controls:

  • CIS Control 4: Controlled Use of Administrative Privileges
  • CIS Control 6: Maintenance, Monitoring and Analysis of Audit Logs

NIST Framework:

  • PR.AC-4: Access permissions and authorizations are managed
  • PR.AC-6: Identities are proofed and bound to credentials
  • DE.CM-1: The network is monitored to detect potential cybersecurity events

2. Automated Compliance Checking

PowerShell Compliance Script:

function Test-AdminEnumerationCompliance { $complianceResult = @{ 'Computer' = $env:COMPUTERNAME 'PolicyConfigured' = $false 'RegistryConfigured' = $false 'OverallCompliant' = $false 'LastChecked' = Get-Date } # Registry kontrolü try { $regValue = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\CredUI" -Name "EnumerateAdministrators" -ErrorAction Stop if ($regValue.EnumerateAdministrators -eq 0) { $complianceResult.RegistryConfigured = $true } } catch { Write-Warning "Registry key not found or not configured" } # GPO kontrolü $gpoResult = gpresult /r | Select-String "Enumerate administrator accounts" if ($gpoResult) { $complianceResult.PolicyConfigured = $true } # Genel compliance durumu $complianceResult.OverallCompliant = $complianceResult.RegistryConfigured return $complianceResult } # Bulk compliance check $computers = Get-ADComputer -Filter * | Select-Object -ExpandProperty Name $complianceReport = foreach ($computer in $computers) { Invoke-Command -ComputerName $computer -ScriptBlock ${function:Test-AdminEnumerationCompliance} -ErrorAction Continue } $complianceReport | Export-Csv -Path "AdminEnumeration_Compliance_$(Get-Date -Format 'yyyyMMdd').csv" 

3. Continuous Monitoring

Schedule Task for Regular Checks:

$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File C:\Scripts\AdminEnumCompliance.ps1" $trigger = New-ScheduledTaskTrigger -Daily -At "09:00AM" $settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries Register-ScheduledTask -TaskName "AdminEnumerationComplianceCheck" -Action $action -Trigger $trigger -Settings $settings 

User Experience Considerations

1. Training ve Awareness

IT Staff Training:

  • UAC dialog'larında username/password girme prosedürü
  • Güvenli credential management practices
  • Phishing awareness eğitimi

End User Education:

Yeni UAC Davranışı Eğitimi: 1. UAC dialog'u açıldığında hesap listesi görünmeyecek 2. Hem kullanıcı adı hem de parola girilmeli 3. Eğer yönetici hesabınızı hatırlamıyorsanız IT desteği arayın 4. Asla başkasının yönetici bilgilerini kullanmayın 

2. Help Desk Process Optimization

Standard Operating Procedure:

# Help desk için automated admin verification function Verify-AdminRequest { param( $RequestedUser, $RequestingUser ) # Employee verification $employee = Get-ADUser -Identity $RequestingUser -Properties Department, Manager # Admin account validation $adminAccount = Get-ADUser -Identity $RequestedUser -Properties MemberOf # Approval workflow if ($adminAccount.MemberOf -match "Domain Admins") { # Requires manager approval Send-ApprovalRequest -Manager $employee.Manager -Request "Admin access for $RequestingUser" } } 

Sonuç ve Öneriler

Administrator account enumeration özelliğinin devre dışı bırakılması, sistem güvenliğini önemli ölçüde artıran kritik bir güvenlik yapılandırmasıdır. Bu değişiklik, saldırganların reconnaissance aşamasında elde edebileceği değerli bilgileri gizleyerek, hedefli saldırıları zorlaştırır.

Kritik Uygulama Adımları:

  1. Mevcut enumeration durumunu kontrol edin
  2. GPO ile enumeration'ı devre dışı bırakın
  3. Registry ayarlarını doğrulayın
  4. Monitoring sistemini kurun
  5. IT staff'ı eğitin
  6. Compliance kontrollerini otomatikleştirin

Hızlı Kontrol Listesi:

  • ✅ "Enumerate administrator accounts on elevation" disabled mı?
  • ✅ Registry değeri 0 olarak ayarlandı mı?
  • ✅ GPO tüm bilgisayarlara uygulandı mı?
  • ✅ UAC genel hardening tamamlandı mı?
  • ✅ Event log monitoring aktif mi?
  • ✅ Help desk süreçleri güncellendi mi?

Ek Güvenlik Önerileri:

  • Privileged Access Management (PAM) çözümü değerlendirin
  • Just-In-Time Administration modelini benimseyin
  • Multi-factor authentication zorunluluğu getirin
  • Regular security assessments gerçekleştirin
  • Behavioral analytics araçları kullanın

Bu yapılandırmayı uygulayarak, Windows UAC sisteminin güvenlik açığını kapatır ve saldırganların reconnaissance sürecini zorlaştırarak, genel sistem güvenliğinizi önemli ölçüde artırırsınız. Özellikle yönetici hesap bilgilerinin korunması, privilege escalation saldırılarının önlenmesi açısından kritik önem taşımaktadır.