Domain Admin / Tier-0 Admin Güvenlik Kontrolleri

Administrator / Domain Admin / Tier-0 ‘ın Kurumdan yada Görevinden Ayrılmasının Ardından Yapılması Gereken Güvenlik Kontrolleri

Tier-0 Privileged Account Offboarding & Compromise Assessment

Amaç: Kurumdan ayrılan Domain Admin / Tier-0 yöneticisinin bütün erişimlerini sonlandırmak, bildiği veya erişebildiği credential’ları güvenli hale getirmek ve Active Directory ortamında yetki/persistence bırakılmadığını doğrulamak.

Önemli ayrım:

Normal / planlı ayrılış: Credential rotation + access cleanup + audit.

Şüpheli ayrılış: Yukarıdakilere ek olarak kapsamlı compromise assessment.

Compromise / Golden Ticket şüphesi varsa krbtgt prosedürü ayrıca uygulanır.

A. Kimlik ve Erişimlerin Acil Kapatılması

1. Tüm kullanıcı ve yönetici hesaplarını tespit et

Normal kullanıcı hesabı

Domain Admin hesabı

Server Admin hesabı

Entra ID hesabı

Cloud-only admin hesabı

PAM/PIM hesabı

VPN hesabı

Backup/virtualization/network hesapları tespit edildi.

Get-ADUser -Filter ‘SamAccountName -like “*username*”‘ `
    -Properties Enabled,LastLogonDate,MemberOf,adminCount,whenCreated

2. Hesapları değiştirmeden önce forensic snapshot al

SID

ObjectGUID

DistinguishedName

Grup üyelikleri

adminCount

LastLogonDate

$User = Get-ADUser username `
    -Properties SID,ObjectGUID,MemberOf,adminCount,LastLogonDate,whenCreated

$User | Format-List *

Bu bilgileri audit dosyasına export etmek faydalıdır:

$User | Export-Clixml C:\Audit\username-before-offboarding.xml

3. Kullanıcının normal AD hesabını Disable et

Normal kullanıcı hesabı disable edilir.

Disable-ADAccount -Identity username

Kontrol:

Get-ADUser username -Properties Enabled |
Select SamAccountName,Enabled

4. Ayrı privileged/admin hesabını Disable et

Ayrı Domain Admin hesabı disable edilir.

Disable-ADAccount -Identity adm-username

5. Privileged grup üyeliklerini kaldır

Özellikle:

Domain Admins

Enterprise Admins

Schema Admins

Administrators

DNSAdmins

DHCP Administrators

Backup Operators

Server Operators

Account Operators

Group Policy Creator Owners

custom Tier-0 groups

kontrol edilmelidir.

Get-ADPrincipalGroupMembership adm-username |
Sort Name |
Select Name,GroupScope,GroupCategory

6. Nested privileged group membership kontrolü yap

Direkt üyelik kontrolü yeterli değildir.

$U = Get-ADUser adm-username

Get-ADGroup -LDAPFilter `
“(member:1.2.840.113556.1.4.1941:=$($U.DistinguishedName))” |
Select Name,DistinguishedName

Nested üyelik üzerinden kalan privileged erişim olmadığı doğrulanır.

7. Entra ID erişimini kapat ve session’ları revoke et

Hybrid/cloud ortam varsa:

Sign-in blocked.

Refresh token’lar revoke edildi.

Browser/cloud session’ları revoke edilir.

PIM assignment’ları kaldırılır.

Registered MFA/FIDO yöntemleri değerlendirilir.

Microsoft Graph:

Revoke-MgUserSignInSession -UserId user@volsys.com

8. Remote access yöntemlerini kapat

VPN

RADIUS/NPS

RD Gateway

Citrix

Azure Bastion

PAM jump server

PAW/SAW

third-party remote access

erişimleri kaldırılır.

B. Credential ve Secret Rotation

9. Ayrılan kişinin AD parolasını değiştir

Disable işleminden sonra savunma katmanı olarak parola da değiştirilebilir.

Normal hesap password rotated.

Admin hesabı password rotated.

10. Shared Domain Admin hesaplarını tespit et

Ayrılan kişinin bildiği shared privileged hesaplar bulunmalıdır.

Shared DA hesapları belirlenir.

Parolaları rotate edilr.

Hesap kimin adına kayıtlı değil; ayrılan kişi bu credential’ı biliyor muydu?

11. Built-in Administrator hesabını değerlendir

Built-in Administrator kullanılıyor mu?

Ayrılan kişi parolasını biliyor muydu?

  • Gerekiyorsa parola rotate edildi.

Get-ADUser -Identity Administrator `
    -Properties Enabled,LastLogonDate,PasswordLastSet

12. Emergency / Break-Glass credential’ları rotate et

Kişinin erişimi varsa:

AD emergency account

Entra emergency access account

PAM break-glass

virtualization emergency account

backup emergency account

credential’ları değiştirilir.

Rotation sonrası hesapların gerçekten çalıştığı doğrulanmalıdır.

13. DSRM password’lerini değerlendir

Ayrılan administrator DC kurmuşsa veya DSRM password’ünü biliyor olabilecek durumdaysa:

Tüm DC’lerin DSRM credential risk değerlendirmesi yapılır.

Gerekiyorsa DSRM password’leri rotate edilir.

Local DC:

ntdsutil
set dsrm password
reset password on server null
q
q

Remote DC:

ntdsutil
set dsrm password
reset password on server DC02.domain.local
q
q

14. Windows LAPS password rotation gerçekleştir

Ayrılan kişi Tier-0/member server local admin parolalarını görmüş olabilecekse:

Reset-LapsPassword

Remote olarak kontrollü şekilde uygulanabilir.

DC dışındaki Tier-0 sistemlerde LAPS password’leri rotate edilir.

İlgili LAPS audit logları kontrol edilir.

15. Service account parolalarını gözden geçir

Ayrılan kişinin bildiği:

SQL service accounts

scheduled task accounts

monitoring accounts

backup accounts

application pool accounts

middleware accounts

tespit edilip parolaları kontrollü şekilde rotate edilir.

Önce dependency analizi yapılmalıdır.

16. gMSA / dMSA erişimlerini kontrol et

gMSA parolasını kullanıcı normal şekilde bilmez; fakat kimlerin managed password retrieve edebildiği kontrol edilmelidir.

Get-ADServiceAccount -Filter * `
    -Properties PrincipalsAllowedToRetrieveManagedPassword |
Select Name,PrincipalsAllowedToRetrieveManagedPassword

Ayrılan kullanıcı veya kontrol ettiği grup listede bulunmuyor.

17. Non-AD secret’ları rotate et

API keys

application secrets

SSH keys

automation credentials

PowerShell stored credentials

DevOps secrets

password vault entries

certificates/private keys

değerlendirilir.

18. Backup / virtualization / storage / network credential’larını değiştir

Özellikle:

Veeam / Commvault / Rubrik / Cohesity

VMware vCenter / ESXi

Hyper-V / SCVMM

SAN/storage

firewall

switch/router

load balancer

DNS/IPAM

yönetim credential’ları kontrol edilir.

C. Active Directory Privilege Kontrolleri

19. Built-in privileged grupların tamamını audit et

$Groups = @(
    “Domain Admins”,
    “Enterprise Admins”,
    “Schema Admins”,
    “Administrators”,
    “DNSAdmins”,
    “Group Policy Creator Owners”,
    “Backup Operators”,
    “Server Operators”,
    “Account Operators”
)

foreach ($G in $Groups) {
    try {
        Get-ADGroupMember $G -Recursive |
        Select @{N=”Group”;E={$G}},Name,SamAccountName,ObjectClass
    } catch {}
}

  • Beklenmeyen hesap kontrol edilir.

20. Custom Tier-0 grupları kontrol et

Örneğin:

AD Admins

Infrastructure Admins

Server Admins

PKI Admins

Virtualization Admins

Backup Admins

IAM Admins

Custom privileged group’lar incelenir.

Ayrılan kişinin doğrudan/nested üyelikleri kaldırılır. (varsa)

21. adminCount=1 hesaplarını incele

Get-ADUser -LDAPFilter “(adminCount=1)” `
    -Properties adminCount,Enabled,LastLogonDate |
Select Name,SamAccountName,Enabled,LastLogonDate

Not: adminCount=1, hesabın halen Domain Admin olduğu anlamına gelmez. Geçmişte protected group üyesi olmuş hesaplarda kalabilir.

Liste gerçek privileged membership ile karşılaştırılır.

22. AdminSDHolder ACL’ini kontrol et

$DN = (Get-ADDomain).DistinguishedName
$AdminSDHolder = “CN=AdminSDHolder,CN=System,$DN”

(Get-Acl “AD:\$AdminSDHolder”).Access |
Format-Table IdentityReference,ActiveDirectoryRights,AccessControlType,IsInherited

Özellikle:

  • GenericAll
  • GenericWrite
  • WriteDACL
  • WriteOwner
  • ExtendedRight

hakları incelenmelidir.

23. Domain Root ACL’ini kontrol et

$DN = (Get-ADDomain).DistinguishedName

(Get-Acl “AD:\$DN”).Access |
Format-Table IdentityReference,ActiveDirectoryRights,AccessControlType,IsInherited

Ayrılan kullanıcı SID’si kontrol edilir.

Bilinmeyen privileged trustee kontrol edilir.

24. OU delegation ACL’lerini tarat

Get-ADOrganizationalUnit -Filter * | ForEach-Object {

$OU = $_

(Get-Acl “AD:\$($OU.DistinguishedName)”).Access |
    Select @{N=”OU”;E={$OU.DistinguishedName}},
           IdentityReference,
           ActiveDirectoryRights,
           AccessControlType,
           IsInherited
}

Özellikle:

  • GenericAll
  • WriteDACL
  • WriteOwner
  • CreateChild
  • DeleteChild
  • Reset Password
  • WriteProperty

haklarına bakılmalıdır.

25. GPO permission’larını kontrol et

Import-Module GroupPolicy

Get-GPO -All | ForEach-Object {
    $GPO = $_

Get-GPPermission -Guid $GPO.Id -All |
    Select @{N=”GPO”;E={$GPO.DisplayName}},
           Trustee,
           Permission
}

26. DNS administrative privilege’lerini kontrol et

Get-ADGroupMember “DNSAdmins” -Recursive

Ayrıca:

DNSAdmins üyeliği

DNS server management

AD-integrated DNS zone ACL

DNS server configuration

kontrol edilir.

27. AD CS / PKI yetkilerini kontrol et

CA Administrators

Certificate Managers

Certificate Template ACL

Enrollment Agent

Autoenrollment rights

private key access

kontrol edilir.

Varsa ayrılan kişiye ait authentication sertifikaları revoke edilmelidir.

28. Trust değişikliklerini kontrol et

Get-ADTrust -Filter * |
Select Name,Direction,TrustType,ForestTransitive,SelectiveAuthentication

Beklenmeyen yeni trust yok.

Trust özelliklerinde şüpheli değişiklik yok.

29. Kerberos delegation yapılandırmalarını kontrol et

Unconstrained Delegation

Get-ADComputer -Filter {TrustedForDelegation -eq $true} `
    -Properties TrustedForDelegation |
Select Name,TrustedForDelegation

Constrained Delegation

Get-ADObject `
    -LDAPFilter “(msDS-AllowedToDelegateTo=*)” `
    -Properties msDS-AllowedToDelegateTo |
Select Name,ObjectClass,msDS-AllowedToDelegateTo

Beklenmeyen delegation bulunmadı.

30. RBCD kontrolü yap

Get-ADObject `
    -LDAPFilter “(msDS-AllowedToActOnBehalfOfOtherIdentity=*)” `
    -Properties msDS-AllowedToActOnBehalfOfOtherIdentity |
Select Name,ObjectClass,DistinguishedName,
       msDS-AllowedToActOnBehalfOfOtherIdentity

Beklenmeyen RBCD tanımı bulunmadı.

D. AD Persistence Kontrolleri

31. Shadow Credentials kontrolü yap

Get-ADObject `
    -LDAPFilter “(msDS-KeyCredentialLink=*)” `
    -Properties msDS-KeyCredentialLink |
Select Name,ObjectClass,DistinguishedName,msDS-KeyCredentialLink

Özellikle:

Domain Admin hesapları

Enterprise Admin hesapları

Tier-0 service accounts

DC computer accounts

incelenmelidir.

Beklenmeyen msDS-KeyCredentialLink bulunmadı.

32. SIDHistory kontrolü yap

Get-ADUser -Filter * -Properties SIDHistory |
Where-Object {$_.SIDHistory.Count -gt 0} |
Select SamAccountName,SID,SIDHistory

Beklenmeyen SIDHistory kontrol edilir.

33. User account SPN’lerini kontrol et

Get-ADUser -Filter * -Properties ServicePrincipalName |
Where-Object {$_.ServicePrincipalName.Count -gt 0} |
Select SamAccountName,Enabled,ServicePrincipalName

Beklenmeyen SPN atanmış kullanıcı kontrol edilir.

34. Son dönemde oluşturulmuş kullanıcıları incele

$Since = (Get-Date).AddDays(-90)

Get-ADUser -Filter * -Properties whenCreated,Created,Enabled |
Where-Object {$_.whenCreated -ge $Since} |
Sort whenCreated -Descending |
Select Name,SamAccountName,Enabled,whenCreated

Şüpheli kullanıcı hesabı kontrol edilir.

35. Son dönemde oluşturulan group’ları incele

Get-ADGroup -Filter * -Properties whenCreated |
Where-Object {$_.whenCreated -ge $Since} |
Sort whenCreated -Descending |
Select Name,GroupScope,GroupCategory,whenCreated

Şüpheli privileged group kontrol edilir.

36. Son dönemde oluşturulan computer account’ları incele

Get-ADComputer -Filter * -Properties whenCreated,Enabled |
Where-Object {$_.whenCreated -ge $Since} |
Sort whenCreated -Descending |
Select Name,Enabled,whenCreated

Beklenmeyen computer account kontrol edilir.

37. Domain Controller Scheduled Task’lerini kontrol et

Get-ScheduledTask |
Select TaskPath,TaskName,State,
       @{N=”RunAs”;E={$_.Principal.UserId}}

Özellikle:

  • PowerShell
  • cmd
  • script
  • UNC path
  • unusual account

ile çalışan görevler incelenmelidir.

38. Domain Controller servislerini kontrol et

Get-CimInstance Win32_Service |
Select Name,DisplayName,State,StartMode,StartName,PathName |
Sort StartName

Şüpheli service account bulunmadı.

Şüpheli executable/script path bulunmadı.

39. SYSVOL ve NETLOGON değişikliklerini kontrol et

Get-ChildItem “\\domain.local\SYSVOL” -Recurse -File |
Sort LastWriteTime -Descending |
Select FullName,Length,LastWriteTime -First 200

Aynı kontrol:

\\volsys.com\NETLOGON

üzerinde de yapılmalıdır.

Özellikle:

  • .ps1
  • .bat
  • .cmd
  • .vbs
  • .exe
  • .dll
  • .xml

dosyaları incelenmelidir.

40. GPO içeriğinde persistence kontrolü yap

Kontrol edilecek alanlar:

  • Startup Scripts
  • Shutdown Scripts
  • Logon Scripts
  • Logoff Scripts
  • Scheduled Tasks
  • Services
  • Registry
  • Local Users and Groups
  • Restricted Groups
  • User Rights Assignment
  • PowerShell scripts

GPO raporu:

Get-GPOReport -All -ReportType Html `
    -Path C:\Audit\All-GPO-Report.html

E. Security Log / Forensic Kontroller

41. Ayrılan hesabın son logon aktivitelerini incele

Özellikle:

4624 – Successful logon
4625 – Failed logon
4648 – Logon using explicit credentials
4672 – Special privileges assigned

Örnek:

$Since = (Get-Date).AddDays(-30)

Get-WinEvent -FilterHashtable @{
    LogName   = ‘Security’
    ID        = 4624,4648,4672
    StartTime = $Since
}

Ayrılış sonrası authentication aktivitesi kontrol edilir.

42. User account management event’lerini incele

Özellikle:

4720 – User created
4722 – User enabled
4723 – Password change attempted
4724 – Password reset
4725 – User disabled
4726 – User deleted
4738 – User changed

Ayrılan administrator’ın gerçekleştirdiği şüpheli hesap değişikliği kontrol edilir.

43. Privileged group membership event’lerini incele

Kontrol:

4728 – Member added to global security group
4729 – Member removed
4732 – Member added to local security group
4733 – Member removed
4756 – Member added to universal security group
4757 – Member removed

Get-WinEvent -FilterHashtable @{
    LogName   = “Security”
    ID        = 4728,4729,4732,4733,4756,4757
    StartTime = $Since
}

Şüpheli privileged group membership değişikliği bulunmadı.

44. Active Directory object modification event’lerini incele

Özellikle:

5136 – Directory Service Object Modified

Kontrol edilmesi gereken attribute’lar arasında:

  • nTSecurityDescriptor
  • member
  • servicePrincipalName
  • msDS-KeyCredentialLink
  • msDS-AllowedToDelegateTo
  • msDS-AllowedToActOnBehalfOfOtherIdentity
  • userAccountControl

bulunur.

  • Şüpheli 5136 değişikliği bulunmadı.

45. Object creation / movement / deletion event’lerini incele

5137 – Directory Service Object Created
5139 – Directory Service Object Moved
5141 – Directory Service Object Deleted

Ayrılan admin tarafından oluşturulan şüpheli obje kontrol edilir.

46. Scheduled Task / Service creation event’lerini incele

Özellikle:

4698 – Scheduled Task created
4699 – Scheduled Task deleted
4702 – Scheduled Task updated
7045 – Service installed

DC/Tier-0 sistemlerde şüpheli task/service creation kontrol edilir.

47. Certificate Services aktivitelerini incele

AD CS kullanılıyorsa:

Son dönemde issued authentication certificate’ları kontrol edildi.

Enrollment Agent aktiviteleri kontrol edildi.

Ayrılan administrator’a verilen sertifikalar belirlendi.

Gerekli sertifikalar revoke edildi.

Template ACL değişiklikleri incelendi.

Certificate Services auditing aktifse ilgili CA audit event’leri SIEM üzerinden incelenmelidir.

F. Hybrid / Cloud ve Tier-0 Sistemleri

48. Entra / PIM / Cloud audit gerçekleştir

Kontrol:

  • Sign-in logs
  • Audit logs
  • Role assignment
  • PIM eligible assignment
  • PIM activation
  • Conditional Access changes
  • Authentication method changes
  • Enterprise application changes
  • App registration secrets
  • Service principal permissions
  • Ayrılış öncesi şüpheli cloud privilege değişikliği bulunmadı.
  • Ayrılış sonrasında login yok.

49. Defender for Identity / SIEM üzerinde geçmiş aktiviteyi araştır

Tercihen son:

30–90 gün

incelenmelidir.

Aranacak göstergeler:

  • privilege escalation
  • lateral movement
  • DC access
  • DCSync benzeri davranış
  • credential reconnaissance
  • abnormal LDAP queries
  • suspicious replication requests
  • unusual service creation
  • new admin accounts
  • security group changes
  • Ayrılan hesabın SID’si SIEM’de aratıldı.
  • Admin hesabı UPN/SamAccountName aratıldı.
  • Kullanılan PAW/jump server IP’leri incelendi.
  • Kritik alert bulunmadı veya investigation tamamlandı.

G. Kapanış ve Compromise Kararı

50. Final security closure gerçekleştir

Aşağıdakiler tamamlanmadan offboarding ticket kapatılmamalıdır:

AD accounts disabled.

Privileged memberships removed.

Nested memberships checked.

Entra sessions revoked.

VPN/PAM access removed.

Shared credentials rotated.

DSRM evaluated.

LAPS passwords evaluated/rotated.

Service account credentials reviewed.

Backup/virtualization credentials reviewed.

Domain ACL reviewed.

OU delegation reviewed.

AdminSDHolder reviewed.

GPO permissions reviewed.AD CS reviewed.

Kerberos delegation reviewed.

RBCD reviewed.

Shadow Credentials reviewed.

SIDHistory reviewed.

SYSVOL reviewed.

Scheduled Tasks reviewed.

Services reviewed.

Security logs reviewed.

SIEM/MDI investigation completed.

Evidence archived.

Security owner approval obtained.

Compromise / Golden Ticket şüphesi varsa

Şunlardan biri varsa farklı değerlendirilir:

Domain Controller compromise

NTDS.dit erişimi/çalınması

DCSync abuse

krbtgt hash exposure

Golden Ticket bulgusu

Domain Admin credential compromise ile DC tam kontrolü

incident response ekibinin domain compromise kararı

Bu durumda kontrollü bir krbtgt** double-reset** prosedürü uygulanabilir.

KRBTGT Reset #1

Replication tamamen tamamlanmalıdır.

repadmin /replsummary
repadmin /showrepl *

Bekleme

Minimum bekleme süresi:

Ortamdaki Maximum lifetime for user/service ticket değerinden daha uzun olmalıdır.

Microsoft default Kerberos ticket lifetime için 10 saat üzerinden prosedürü tarif eder.

KRBTGT Reset #2

İkinci reset yapılır ve tekrar tüm DC’lere replication doğrulanır.

Bu işlem normal offboarding prosedürünün parçası değildir; incident-response işlemidir.

Önerilen Risk Sınıflandırması

DurumSeviyeYapılacak İşlem
Planlı ve güvenilir ayrılışLOWStandart Tier-0 offboarding
Beklenmedik ayrılışMEDIUMOffboarding + 30 günlük audit
Anlaşmazlıklı/hostile ayrılışHIGHOffboarding + 90 günlük compromise assessment
Credential theft şüphesiCRITICALIncident Response
DC compromise şüphesiCRITICALForest compromise prosedürü
NTDS.dit / krbtgt hash exposureCRITICALKRBTGT double-reset + IR

Offboarding Sonrası AD Health Check

Değişiklikler tamamlandıktan sonra:

dcdiag /e /c /v

repadmin /replsummary

repadmin /showrepl *

Get-ADReplicationFailure -Target * -Scope Forest

Get-ADDomainController -Filter * |
Select HostName,Site,IPv4Address,OperatingSystem