Aktif Dizin Nesnelerine Ait Denetimler İçin Temel Kontroller – 1: Kullanıcı Hesapları

0
2161
views
Etki alanı kurumlar için oldukça kritiktir, bu sebeple güvenliğinin korunması için bazı önlemlerin alınması gereklidir. Bir yazı dizisinin ilki olan bu yazıda, Aktif Dizin üzerindeki kullanıcı hesabı nesnelerinin güvenliği için gerekli kontrol maddeleri incelenecektir.

 

Pentist: Sızma Testleri ve Bilgi Güvenliği Danışmanlık Hizmetleri

 

A) Giriş

Etki alanı (Domain), bir grup bilgisayarın bir araya gelmesiyle oluşan belli kurallar ve prosedürlerle bir merkezden yönetilen mantıksal bir yapıdır. Orta ve büyük ölçekli bütün kurumlarda sistemlerin neredeyse tamamı Microsoft etki alanı yapısıyla direk olarak yönetilirler veya etki alanındaki nesneler (sistem yöneticilerinin hesabı vs) tarafından dolaylı olarak yönetilirler.

Güvenilir yapılandırılmamış bir etki alanına karşı yapılabilecek bir zafiyet kurum için oldukça büyük sorunlara sebep olabilir. Etki alanı ortamında gerçekleşebilecek saldırıların genel metodolojisi için kaynaklardaki Siberportal [0] yazısı incelenebilir.

Etki alanı güvenliğini sağlamak ve kurum etki alanındaki sistemlere (Windows istemci ve sunuculara) karşı yapılabilecek saldırılar için alınması gereken temel önlemler “Windows İşletim Sistemi Sıkılaştırmalarına Yönelik Temel Kontrol Maddeleri” yazı serilerinde [1 – 6] özetlenmişti. Bu yazıda ise etki alanındaki nesnelerin yönetildiği dizin hizmeti olan Aktif Dizin üzerindeki kullanıcı hesabı denetimleri incelenecektir. Kontrol maddelerinde belirtilen sıkılatırmaların toplu ve otomatik olarak nasıl tespit edileceği ile ilgili internet üzerinde – başta Powershell olmak üzere – bir çok betik bulunabilir. Ayrıca aşağıdaki maddeleri ve çok daha fazlasını gerçekleştirebilen – ücretli veya ücretsiz –  otomatik denetim araçları da kullanılabilir.

 

B) Ön Bilgilendirmeler

  • Denetim sonucunda gerçekleştirilmesi gereken işlemler kurum politikasında belirtilmelidir. Örneğin, uzun süre oturum açmayan kullanıcı hesapları tespit edildikten sonra bu hesaplar belli bir süre boyunca devre dışı bırakılabilir ve bir süre sonra da tamamen silinebilir. Benzer olarak tespit edilen nesnelerin ne zaman, hangi kullanıcı tarafından oluşturulduğu da incelenebilir.
  • Farklı bir etki alanı üzerinde bir işlem yapabilmek için DNS ayarları yapıldıktan sonra, aşağıdakine benzer komutlar kullanılarak denetimlerin yapılması gerekir.
  • Yazı içerisinde geçen bazı kavramlar aşağıdaki gibi sıralanabilir.
    • Sürekli personel haricindeki kullanıcılar: Danışmanlar, stajyerler, denetçiler
    • Gerçek kişiye ait olmayan hesaplar: Servis, uygulama hesapları
    • İzinde olan personel: Yıllık izinde olan, ücretsiz izne çıkan personel

 

C) Kullanıcı Hesapları Yönetimi İle İlgili Temel Zorluklar

Kurumlarda kullanıcı hesaplarının yönetimi karmaşık bir konu olabilmektedir. Başlıca zorluklar aşağıdaki gibi sıralanabilir.

  • Birçok kurumda bir kullanıcı hesabı oluşturulurken standart bir parola ile oluşturulurlar. Bu parola o hesabın sahibi olan kullanıcı tarafından ilk oturumda değiştirilmesi gerekmektedir. Ancak bu parola değiştirilmeyebilmektedir.
  • Personellere verilen hesaplar ortak olarak kullanılabilmektedir. Ortak hesap kullanımı özellikle yardım masası veya teknik destek gibi vardiyalı çalışan bölümlerde sık karşılaşılabilen durumlardandır.
  • Gerçek kişiye ait olmayan (veya olan) hesapların parolaları sona ermeyecek şekilde ve/veya kendileri tarafından değiştirilemeyecek şekilde ayarlanmış olabilir. Kurum politikasına uygun olacak şekilde kurum içerisinde bir parola politikası oluşturulmalı ve uygulanmalıdır. Parola politikasında parola değiştirme süresi için uygun bir değer verilmelidir.
  • Bir kullanıcı oluşturulduğunda varsayılan olarak “Users” adlı verilen konteynır altında oluşmaktadır. Bir konteynır içerisindeki nesnelere varsayılan grup ilkeleri uygulandığı için “Users” altında kullanıcı hesabının bulunması kontrol eksiliğine sebep olmaktadır. Etki alanına yeni eklenen kullanıcı hesapları üzerindeki denetimleri arttırmak için ve etki alanına eklenen ancak henüz faal olmayan nesneleri daha iyi takip edebilmek için; bu hesapların sıkılaştırılmış bir OU altında oluşturulması tavsiye edilmektedir. Bu amaçla “redirusr” aracı da kullanılabilir. Kullanıcı hesabı ile işlem yapıldıktan ve grup ilkesi alındıktan sonra ilgili OU altına eklenmesi güvenliği arttırmaktadır.
  • Kullanıcı hesaplarına ait bir çok bilgi, herhangi bir kullanıcı tarafından elde edilebilmektedir. Kullanıcı hesaplarının “attribute”larında gereksiz bilgiler unutulmuş olabilir. Bunun yanında, kullanıcıyı tanımlayıcı temel bilgiler de eksik bırakılmış olabilir.
  • Kullanıcı hesaplarına gereğinden fazla yetki verilmiş olabilir.

 

D) Kullanıcı Hesabı Yönetimi İle İlgili Denetim Maddeleri

Aktif Dizin içerisindeki kullanıcı hesaplarının güvenliği için denetlenebilecek temel kontrol maddeleri aşağıdaki gibi sıralanabilir.

 

D.1) Kullanıcı Hesabı Yönetimi

Tehdit: Merkezi kimlik yönetimi uygulanmaması yetkisiz kişilerin sisteme erişimine sebep olabilir.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • İşten ayrılmış olan kullanıcı hesaplarının tespit edilebilmesi sağlanmalıdır.
  • Yetkilendirme işlemleri için kullanıcıdan bağımsız tasarımların kullanılması [7 – 8] güvenliği arttırmaktadır.
  • Kurum içinde kullanıcı hesapları için isimlendirme standardı oluşturulmalıdır.
    • Sicil numarasının kullanılması (36146), personelin ad ve soyadının farklı şekillerde kullanılması (remzi.karadayioglu, rkaradayioglu, r.karadayioglu, karadayioglu.remzi,…) gibi bir standart olarak belirlenmelidir.
    • Aynı isim ve soyisme, iki ve daha fazla isme veya soy isme sahip personel için de standart oluşturulmalıdır.
    • Gerçek kişiye ait olmayan hesaplar ayrıştırılabilmelidir.
    • Sürekli personel haricindeki kullanıcılar için oluşturulan kullanıcı hesapları ayrıştırılabilmelidir. Stajyerlerin “s-” ile başlaması gibi bir yöntem kullanılabilir.
  • Sürekli personel haricindeki kullanıcı hesapları süreli bir şekilde oluşturulmalıdır.
  • Sürekli personel haricindeki kullanıcı hesapları için özel yapısal birimler (OU) oluşturulmalı ve bu OU altındaki nesnelere sıkılaştırılmış grup ilkelerinin uygulanmalıdır.
  • İzinde olan personelin hesapları için özel kurallar belirlenebilir.

 

Tehdit: Kurum içerisinde ortak kullanıcı hesabı kullanılması yapılan işlemlerin takibini zorlaştırır.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • Kurum içinde kullanıcı hesapları için isimlendirme standardı oluşturulmalı ve gerçek kişiye ait olmayan hesaplar kullanılmamalıdır.
  • İzleme araçları ile (özellikle aynı anda) birden fazla yerde oturumu açık olan kullanıcılar sorgulanmalıdır.
  • Bilgi güvenliği farkındalığı sağlanmalı ve sorumluluklar belirtilmelidir.

 

Tehdit: “Users” konteynırında bulunan kullanıcı hesapları, etki alanında varsayılan olarak yetkilendirilmiş olur.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • “Users” konteynırında bulunan kullanıcı hesaplarının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Get-ADUser -Filter * -SearchBase “OU=Users,DC=DomainName,DC=local” | Select-object DistinguishedName,Name,UserPrincipalName

  • “redirusr” kullanımını doğrulayabilmek için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

(((Get-ADObject -Identity (Get-ADRootDSE).defaultNamingContext -Properties wellKnownObjects).wellKnownObjects | ? {$_ -like “B:32:A9D1CA15768811D1ADED00C04FD8D5CD:*”}) -split ‘:’)[3]

 

Tehdit: Kullanıcı hesaplarına ait “attribute”ler üzerindeki bilgilerin fazla olması bilgi ifşasına veya eksik olması yönetimsel zorluklara sebep olur.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • Kurum politikası ile belirlenmiş tanımlamalar her kullanıcı hesabında bulunmalı, standart tanımları bulunmayan kullanıcı hesapları tespit edilmelidir.
  • Kullanıcı hesaplarında gereksiz (bilgi ifşasına sebep olabilecek) bilgiler silinmelidir.
  • Telefon numarası, departman bilgisi, Manager, Location,… gibi belli bir “attribute” değeri olmayan kullanıcı hesaplarının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Get-ADUser -LDAPFilter ‘(!(telephoneNumber=*))’| Select sAMAccountName, givenName

Get-ADUser -filter { Department -notlike “*” } | Select Name,samaccountname

  • Kimlik bilgisi yazılabilecek belli bir “attribute” değeri olmayan kullanıcı hesaplarının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Get-AdUser -Filter * -Properties * | Select-Object samaccountname, description, UnixUserPassword, UserPassword, unicodePwd, msSFU30Name, msSFU30Password, os400-password

Get-ADObject -LDAPFilter ‘(|(UserPassword=*)(UnixUserPassword=*)(unicodePwd=*)(msSFU30Password=*))’ -ResultPageSize $PageSize -Properties *
Get-ADUser -Filter {userPassword -like “*”} | FT Name

 

D.2) Hesap Yetkilendirme

Tehdit: Kullanıcı hesaplarına gereksiz yetkilerin verilmesi bilgi güvenliği temel prensiplerine aykırıdır.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • Kullanıcı hesaplarına sadece ihtiyacı olan yetkiler verilmelidir.
  • Kullanıcıların üye oldukları grupların yetkileri incelenmelidir.
  • Kullanıcılara bilgisayarlarda yerel yönetici yetkileri verilmemelidir.

 

Tehdit: Kritik kullanıcı hesaplarının yönetimi için gereksiz yetkilendirme yapılması bilgi güvenliği temel prensiplerine aykırıdır.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • Kritik kullanıcı nesneleri için yetki devirleri incelenmelidir. Örneğin kritik kullanıcı hesaplarına ait parola değerini sıfırlama yetkisi verilen kişiler, kritik sistemlerin bulunduğu OU’ya basılan GPO’yu yöneten kullanıcı hesapları,… incelenmelidir. Kullanıcı bazlı yetki incelenmesi ile ilgili ayrıntılı bilgi için kaynaklardaki Netwrix bağlantısı incelenebilir.

 

Tehdit: Dizin servisi (Directory Service) replikasyonu yetkisine sahip kullanıcılar Domain Controller üzerindeki nesnelerin parola özetlerini elde edebilir.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • Dizin servisi replikasyon yetkisi sadece ihtiyacı olan nesnelere verilmelidir. Bu yetkiler aşağıdaki gibi listelenebilir.
    • Replicating Directory Changes (DS-Replication-Get-Changes)
    • Replicating Directory Changes All (DS-Replication-Get-Changes-All)
    • Replicating Directory Changes in Filtered Set (required in some environments)
  • Dizin Servisi replikasyonu yetkilerine sahip kullanıcı hesaplarının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

dsacls “dc=CurrentDomainName,dc=local” | Select-String “Replicating Directory Changes”

 

Tehdit: Etki alanı üzerinde kritik yetkileri olan kullanıcı hesaplarının yetkileri devredilebilmesi saldırı yüzeyini arttırmaktadır.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • Yetkileri devredilemeyen kullanıcı hesaplarının (“Account is sensitive and cannot be delegated”) listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Get-AdUser -Properties AccountNotDelegated -Filter “ObjectClass -eq ‘user'” | Where-Object {$_.AccountNotDelegated } | Select Name, SamAccountName

Get-ADUser -Filter “*” -Properties AccountNotDelegated | Where-Object {$_.AccountNotDelegated -eq $false}

Get-ADUser -Filter {(AdminCount -eq 1) -and (AccountNotDelegated -eq $false) -and (SamAccountName -ne “krbtgt”)} | FL Name,SamAccountName

 

Tehdit: Etki alanı üzerinde kritik yetkileri olan kullanıcı hesaplarına ait kimlik bilgilerinin çalınabilmesi saldırı yüzeyini arttırmaktadır.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • Kimlik doğrulaması için Kerberos kullanımına zorlanan grup üyelerinin listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Get-AdGroupMember -Identity “Protected Users”

 

 

Tehdit: Etki alanı üzerinde herhangi bir gruba üye olmayan kullanıcıların bulunması kontrol eksikliğine sebep olabilir.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • Hiç bir gruba üye olmayan kullanıcı hesaplarının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Get-ADUser -LdapFilter “(!memberOf=*)” -Properties memberOf | Select-Object SamAccountName, MemberOf

 

Tehdit: Dial-in bağlantı hakkı olan kullanıcılar kontrol eksikliğine sebep olur.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • (SSL VPN yerine) Dial-in bağlantı hakkı olan kullanıcı hesaplarının listelenmesi için gerekli Powershell ve batch sorguları aşağıdaki gibi gerçekleştirilebilir:

dsquery * -Filter “(&(objectCatgegory=person)(objectClass=user)(msNPAllowDialin=TRUE))”

Get-ADUser -LDAPFilter “(&(objectCategory=person)(objectClass=user)(msNPAllowDialin=TRUE))”

 

Tehdit: Etki alanına makine ekleyebilme hakkı olan kullanıcılar kontrol eksikliğine sebep olur.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • Etki alanına makine dahil etme adedi 0 ayarlanmalıdır.
    • ADSI Edit > Default naming context > Domain Name > Properties > Attribute Editor Tab
      • ms-DS-MachineAccountQuota: 0
  • “Add workstations to domain” (SeMachineAccountPrivilege) hakkı olan kullanıcı hesaplarının listelenmesi için gerekli grup ilkesinin kontrolü aşağıdaki gibi gerçekleştirilebilir:
    • Computer Configuration –> Windows Settings –> Security Settings –> User Rights Assignment
      • Add workstations to domain: “Yardım Masası” grubu

 

D.3) Kullanıcı Hesaplarının Durumları

Tehdit: Kurum içerisinde uzun bir süre oturum açmayan (etkin olmayan – stale) kullanıcılar kontrol eksikliğine sebep olur.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • Uzun süredir (2 ay gibi) oturum açmamış olan kullanıcı hesaplarının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Search-ADAccount -UsersOnly -AccountInactive -TimeSpan 60 | select Enabled,DistinguishedName,Name,LastLogonDate | Format-Table

Get-ADUser -Filter * -Properties “LastLogonDate” | sort-object -property lastlogondate -descending | Format-Table -property name, lastlogondate, Enabled,DistinguishedName -AutoSize

Get-ADUser -Filter {enabled -eq $true} -Properties LastLogonTimeStamp | Select-Object Name,@{Name=”Stamp”; Expression={[DateTime]::FromFileTime($_.lastLogonTimestamp).ToString(‘yyyy-MM-dd_hh:mm:ss’)}}

dsquery user -inactive 8 -limit 0

  • Hiç oturum açmamış olan kullanıcı hesaplarının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Get-ADUser -Filter {(lastlogontimestamp -notlike “*”) -and (enabled -eq $true)} | Select Name,DistinguishedName

Get-ADUser -ldapfilter ‘(&(!lastlogontimestamp=*)(!useraccountcontrol:1.2.840.113556.1.4.803:=2))’ | Select Name,DistinguishedName

 

Tehdit: Süresi geçmiş olan (expire) kullanıcı hesapları kontrol eksikliğine sebep olur.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • Süresi dolmayan kullanıcı hesaplarının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Get-ADUser -Filter {AccountExpirationDate -eq null} -Properties AccountExpirationDate | Select sAMAccountName, Enabled

  • Kullanıcı hesaplarının süresi dolma sürelerinin listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Search-ADAccount -AccountExpired -UsersOnly -ResultPageSize 2000 -resultSetSize $null | Select-Object Name, SamAccountName, DistinguishedName

  • Sona ermiş kullanıcı hesaplarının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Get-ADUser -Filter * -Properties Name, Enabled, AccountExpirationDate, LastLogonDate | ? {($_.AccountExpirationDate -NE $NULL -AND $_.AccountExpirationDate -LT (Get-Date)) }

 

Tehdit: Kilitlenmiş (locked) kullanıcı hesapları kontrol eksikliğine sebep olur.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • Bu hesaplar üzerinde yapılan işlemler ve bu hesaplar ile yapılan işlemler izlenmelidir.
  • Kilitli olan kullanıcı hesaplarının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Search-ADAccount -LockedOut -UsersOnly -ResultPageSize 2000 -resultSetSize $null | Select-Object Name, SamAccountName, DistinguishedName

 

Tehdit: Devre dışı olan (disabled) kullanıcı hesapları kontrol eksikliğine sebep olur.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • Bu hesaplar üzerinde yapılan işlemler ve bu hesaplar ile yapılan işlemler izlenmelidir.
  • Devre dışı olan kullanıcı hesaplarının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Search-ADAccount –AccountDisabled –UsersOnly –ResultPageSize 2000 –ResultSetSize $null | Select-Object SamAccountName, DistinguishedName

Get-ADUser -Filter {Enabled -eq $false}

 

 

D.4) Parola Güvenliği

Mevcut parola poliitkası için net aracı kullanılabilir.

net accounts

 

Tehdit: Parolasını değişmesi gereken ancak henüz değiştirmemiş olan kullanıcı hesapları kontrol eksikliğine sebep olur.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • Uzun süredir (6 ay gibi) parolasını değiştirmemiş olan kullanıcı hesaplarının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Get-ADUser -filter * -properties passwordlastset, passwordneverexpires |ft Name, passwordlastset, Passwordneverexpires

Get-ADUser -Filter {PasswordLastSet -lt (get-date).adddays(-180)} -Properties PasswordLastSet

Get-ADUser -Filter * -Properties PasswordLastSet, PasswordNeverExpires | Where-Object {$_.PasswordLastSet -lt ((Get-Date).AddDays(-180))} | Select-Object Name,PasswordLastSet,PasswordNeverExpires

 

  • Parolasını değiştirmemiş olan kullanıcı hesaplarının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Get-ADUser -LDAPFilter “(pwdLastSet=0)” | Select SamAccountName,distinguishedName

 

Tehdit: Parola politikasında belirlenen süre boyunca parolasını değiştirmeyen kullanıcı hesapları kontrol eksikliğine sebep olur.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • Parola değiştirme süresi geçmiş olan kullanıcı hesaplarının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Get-ADUser -filter {Enabled -eq $True -and PasswordNeverExpires -eq $False} –Properties “DisplayName”, “msDS-UserPasswordExpiryTimeComputed” |
Select-Object -Property “Displayname”,@{Name=”ExpiryDate”;Expression={[datetime]::FromFileTime($_.”msDS-UserPasswordExpiryTimeComputed”)}}

 

Tehdit: Parolasını değiştiremeyenkullanıcı hesapları (“User cannot change password”) kontrol eksikliğine sebep olur.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • Parolasını değiştiremeyen kullanıcı hesaplarının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Get-ADUser -Filter ‘useraccountcontrol -band 64’ -Properties useraccountcontrol

 

Tehdit: Parolası sona ermeyen kullanıcı hesapları saldırı yüzeyini arttırır.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • Parolası sona ermeyen kullanıcı hesaplarının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

wmic useraccount where PasswordExpires=’False’ get Name,FullName

Get-ADUser -Filter ‘PasswordNeverExpires -eq $true’ | select name

Get-ADUser -Filter ‘useraccountcontrol -band 65536’ -Properties useraccountcontrol

Search-ADAccount -PasswordNeverExpires | Where {$_. enabled} | Select-Property Name,DistinguishedName

Get-ADUser -Filter * -Properties Name, PasswordNeverExpires | where { $_.PasswordNeverExpires -eq “true” } | Select-Object SamAccountName,Name,Enabled

 

Tehdit: Parolası boş olan kullanıcı hesapları saldırı yüzeyini arttırır.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • Parolası olmayan kullanıcı hesaplarının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Get-ADUser -Filter * -SearchBase “OU=someOU,DC=your,DC=domain” | ForEach { $_.SamAccountName (new-object directoryservices.directoryentry “”, (“domain\” + $_.SamAccountName), “”).psbase.name -ne $null Write-Host “” }

  • Parolası olmayan kullanıcı hesaplarının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Get-ADUser -Filter ‘useraccountcontrol -band 32’ -Properties useraccountcontrol

Get-ADUser -LDAPFilter “(&(objectClass=user)(objectCategory=person)(userAccountControl:1.2.840.113556.1.4.803:=544))”

Get-ADUser -Filter {PasswordNotRequired -eq $true}

Get-ADUser -Filter * -Properties PasswordNotRequired | Where-Object {$_.PasswordNotRequired -eq $true}

 

Tehdit: Parola bilgisi güvenilir olarak saklanmayan hesaplar için açık metin parola elde edilebilir.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • Parolası tersine çevrilebilir şekilde ayarlanan (ENCRYPTED_TEXT_PWD_ALLOWED) kullanıcı hesaplarının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Get-ADUser -Filter ‘useraccountcontrol -band 128’ -Properties useraccountcontrol

Get-ADUser -Filter ‘AllowReversiblePasswordEncryption -eq “True”‘

Get-ADObject -ldapfilter “(userAccountControl:1.2.840.113556.1.4.803:=128)” |  Where-Object {$_.ObjectClass -eq “user”}

  • Parolası DES ile şifrelenmiş (USE_DES_KEY_ONLY) kullanıcı hesaplarının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Get-ADUser -Filter ‘useraccountcontrol -band 2097152’ -Properties useraccountcontrol

 

Tehdit: Bilet bilgisi güvenilir olarak saklanmayan hesaplar için açık metin parola elde edilebilir.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • TGT verisi RC4 ile şifrelenmiş kullanıcı hesaplarının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Get-ADUser -Filter ‘msDS-SupportedEncryptionTypes -band 4’ -Properties SamAccountName,Name,Enabled,msDS-SupportedEncryptionTypes

 

Tehdit: Aynı parolayı kullanan hesaplar ortak olarak kullanılıyor olabilir.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • Domain Controller üzerinde (NTDS.dit) kayıtlı olan parola özetleri analiz edilerek, aynı parola özetine sahip olan kullanıcı hesapları tespit edilmelidir.

 

D.5) Gerçek Kişiye Ait Olmayan Hesaplar

Tehdit: Gerçek kişiye ait olmayan hesaplar saldırılar için bir giriş noktası oluşturabilir.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • Gerçek kişiye ait olmayan hesaplar tespit edilmelidir. Servis hesaplarının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

setspn.exe -q */*

Get-ADUser -Filter {serviceprincipalname -like “*”} -Properties serviceprincipalname |
Select-Object -Property DistinguishedName, Enabled, Name, ObjectClass, @{name=”serviceprincipalname”; expression={$_.serviceprincipalname -join “,”}}

Get-ADObject -Filter {serviceprincipalname -like “*”} -Properties serviceprincipalname | Format-Table

  • Bu hesaplara etki alanı ve işletim sistemi seviyesinde en az yetki verilmelidir.
  • Bu hesaplar tüm gruplardan çıkarılmalıdır.
  • Bu hesaplar ile yetki devri yapılamamalıdır. Bu amaçla “Account is sensitive and cannot be delegated” olarak ayarlanmalıdır.
  • Bu hesaplar üzerindeki yetkiler kontrol edilmelidir.
  • Gerçek kişiye ait olmayan hesaplar, (eğer uygulama destekliyorsa) GMSA (Group Managed Service Account) olarak ayarlanmalıdır. GMSA hesaplarının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Get-ADServiceAccount -Filter *

  • Bu hesapların parolaları sadece yetkili kişiler tarafından okunabilmelidir.

Get-ADServiceAccount -Filter {Name -eq ‘Service_Name_ABC’} -Prop * | Select Name, DNSHostname, MemberOf, PrincipalsAllowedToRetrieveManagedPassword, ServicePrincipalNames, msDS-ManagedPasswordInterval

  • Gerçek kişiye ait olmayan hesapların GMSA olarak tanımlanamayacağı durumlarda (hesabın tanımlanacağı bilgisayarın farklı bir domainde olması gibi nedenler ile) standart bir kullanıcı hesabı kullanılacaksa, aşağıdaki şartlar sağlanmalıdır.
    • Bu hesap  ile etkileşimli oturum açılamamalıdır. Bu amaçla, belirli kullanıcı hakların ataması (Computer Configuration\Windows Settings\Security Settings\Local Policies\User Rights Assignment) gerçekleştirilmelidir: Log on as a service (SeServiceLogonRight), Deny access to this computer from the network (SeDenyNetworkLogonRight), Deny log on locally (SeDenyInteractiveLogonRight), Deny logon as a batch job (SeDenyBatchLogonRight), Deny log on through Remote Desktop Services (SeDenyRemoteInteractiveLogonRight)
    • Kullanıcı parolası sadece etki alanındaki yetkili kullanıcılar tarafından değiştirilebilmelidir. Bu amaçla “User cannot change password” olarak belirlenmelidir.
    • Fine Grained Password Policy gibi bir yöntem ile bu hesaba ait parolanın karmaşık verilmesine (en az 25 karakter gibi) zorlanmalı ve parolanın değişeceği tarihi en az yılda bir olarak ayarlanmalıdır.
    • Bu hesaba ait parola bir kasada (vault) saklanmalıdır.
  • Gerçek kişiye ait olmayan hesaplar izlenmeli ve bir anormallik (kaba kuvvet saldırısı, oturum açma denemesi, normalde işlem yapmaması gereken zaman ve makinede işlem yapması veya yapmaya çalışması, görevi haricinde bir işlem yapması…) durumunda gerekli aksiyonların alınması için loglarının ilişkilendirilmesi

 

Tehdit: Kerberos ile kimlik doğrulamada AS-REP adımı zorunlu olmayan (“Do Not Require Kerberos Pre-authentication” olarak belirlenen) kullanıcı hesapları kimlik doğrulaması olmadan servis bileti alınmasına sebep olur.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • DoesNotRequirePreAuth ayarı etkin (Kerberos PreAuthentication devre dışı) olan kullanıcı hesaplarının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Get-Aduser -filter * -properties DoNotRequirePreAuth | where {$_.DoesNotRequirePreAuth -eq “True” -and $_.Enabled -eq “True”} | select Name

Get-ADObject -SearchBase “DC=CurrentDomainName,DC=local” -SearchScope SubTree -ldapfilter {(&(objectCategory=person)(userAccountControl:1.2.840.113556.1.4.803:=4194304))} -Server $server -properties *

Get-ADUser -Filter ‘useraccountcontrol -band 4194304’ -Properties useraccountcontrol

Tehdit: Etki alanı üzerinde yetki devri için güvenilir olarak tanımlanan kullanıcı hesaplarının güvenilir olarak yönetilmemesi durumunda bu hesabın TGT verisi iletilmez.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • Tüm ortamda yetki devri için güvenilecek şekilde tanımlanan kullanıcı hesaplarının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Get-ADUser -Filter ‘useraccountcontrol -band 524288’ -Properties useraccountcontrol | FT Name

Get-Aduser -Filter * -Properties TrustedForDelegation | where {$_.TrustedForDelegation -eq “True” -and $_.Enabled -eq “True”} | FT Name

Get-ADObject -filter { (UserAccountControl -BAND 0x0080000) -AND (ObjectClass -eq ‘user’) -OR (msDS-AllowedToDelegateTo -like ‘*’) } -Properties Name, ObjectClass, PrimaryGroupID, UserAccountControl, ServicePrincipalName, msDS-AllowedToDelegateTo

 

  • Kısıtlı ortamda yetki devri için güvenilecek şekilde tanımlanan kullanıcı hesaplarının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Get-ADUser -Filter ‘useraccountcontrol -band 16777216’ -Properties useraccountcontrol | FT Name

Get-Aduser -Filter * -Properties TrustedtoAuthforDelegation | where {$_.TrustedForDelegation -eq “True” -and $_.Enabled -eq “True”} | FT Name

Get-ADObject -filter { (UserAccountControl -BAND 0x0010000) -AND (ObjectClass -eq ‘user’) -OR (msDS-AllowedToDelegateTo -like ‘*’) } -Properties Name,ObjectClass,PrimaryGroupID,UserAccountControl,ServicePrincipalName,msDS-AllowedToDelegateTo

 

Tehdit: Etki alanı üzerinde KRBTGT hesabının ele geçirilmiş olması (Golden Ticket saldırısının gerçekleştirilmiş olması) ve periyodik olarak değiştirilmiyor olması tüm etki alanını tehlikeye atabilir.

Öneri: Belirtilen kontrol maddesi için, temel öneriler aşağıdaki gibi sıralanabilir.

  • KRBTGT hesabının parolasının en son değiştirme zamanının listelenmesi için gerekli Powershell sorguları aşağıdaki gibi gerçekleştirilebilir:

Get-ADUser -Identity krbtgt -Properties PasswordLastSet | ft Name, PasswordLastSet

 

 

Sonuç

Kurum etki alanının (ve dolayısıyla kurumun) güvenliği için sunucu ve istemci sıkılaştırmalarına ek olarak, saldırı yüzeyini daraltmak için belli aralıklarla risk analizleri ve kontroller gerçekleştirilmelidir. Bu yazıda Aktif Dizin üzerindeki kullanıcı hesaplarının denetlenmesi için gerekli olan temel kontrol maddeleri üzerinde durulmuştur.

Bu yazıda bahsi geçen kontrol maddeleri kurum tarafından belli periyotlarla gözden geçirilmesi, ek kontrol maddeleri ile desteklenmesi, otomatikleştirilmesi için betikler (Powershell gibi bir betik dili kullanılarak) hazırlanması veya otomatik olarak bu işlemleri gerçekleştirebilen araçlarla denetimlerin gerçekleştirilmesi, denetim raporu sonucuna göre gerekli iyileştirmelerin kurum politikasına uygun olarak gerçekleştirilmesi, gerçekleştirilen işlemlerin dokümante edilmesi tavsiye edilmektedir.

 

Kaynaklar:

[0] https://www.siberportal.org/red-team/microsoft-domain-environment-penetration-tests/kurumsal-aglarda-etki-alani-sizma-testi-metodolojisi/
[1] https://www.siberportal.org/blue-team/securing-windows-operating-system/windows-isletim-sistemi-sikilastirmalarina-yonelik-temel-kontrol-maddeleri-1/
[2] https://www.siberportal.org/blue-team/securing-windows-operating-system/windows-isletim-sistemi-sikilastirmalarina-yonelik-temel-kontrol-maddeleri-2/
[3] https://www.siberportal.org/blue-team/securing-windows-operating-system/windows-isletim-sistemi-sikilastirmalarina-yonelik-temel-kontrol-maddeleri-3/
[4] https://www.siberportal.org/blue-team/securing-windows-operating-system/windows-isletim-sistemi-sikilastirmalarina-yonelik-temel-kontrol-maddeleri-4/
[5] https://www.siberportal.org/blue-team/securing-windows-operating-system/windows-isletim-sistemi-sikilastirmalarina-yonelik-temel-kontrol-maddeleri-5/
[6] https://www.siberportal.org/blue-team/securing-windows-operating-system/windows-isletim-sistemi-sikilastirmalarina-yonelik-temel-kontrol-maddeleri-6/
[7] http://itfreetraining.com/70-640/agdlp/
[8] http://itfreetraining.com/70-640/agudlp/
https://www.netwrix.com/how_to_get_ad_user_permissions_report.html
https://forestall.io/blog/tr/active-directory-tr/servis-hesaplarinin-guvenligi/

 

 

Pentist: Sızma Testleri ve Bilgi Güvenliği Danışmanlık Hizmetleri

CEVAP VER

Yorumunuzu giriniz
İsminizi giriniz

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.