LDAP Detailed Analysis

LDAP Detailed Analysis yazımızda sizlere Active Directory yapısına gelen LDAP query’lerin detaylarını nasıl görebiliriz bunu anlatacağım. Bu yazıda gelen LDAP Sorguların hangi ip ler üzerinden ve ne şekilde geldiklerini göreceğiz.

İlk olarak detaylı loglamamız için Registry ayarımızı yapmamız gerekmektedir. Burada önemli ortamda birden çok Domain Controller varsa tüm DC lerde açmanız gerekmektedir. Sorgular spesific olarak belirli sunucuya gidiyor olabilir. Bunu da GPO üzerinden dağıtabilirsiniz.

Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics --- 15 Field Engineering değerini 5 olarak değiştirmekteyiz.

Powershell komutu ile de güncelleyebilirsiniz.

Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\NTDS\Diagnostics' -Name '15 Field Engineering' -Value "5"
LDAP Detailed Analysis  Field Engineering

Geldik ikinci konumuza Expensive ve Inefficient durumlarına. Pahalı ve Yetersiz sorguları belirleyebiliriz. Pahalı sorguları örnek olarak 50 olarak belirledim. Ve sorgu sonucunda 50 den fazla obje dönüşü varsa bu bizim için bir pahalı sorgudur. Yetersiz sorgu ise en küçük değer olarak düşebilirsiniz. En düşük dönüş sayısını 20 olarak belirledik. 20 aşağısındaki queryler loglama yapmaz. Eğer tüm sorguyu görmek isterseniz Expensive 1 olarak belirleyebilirsiniz. Sonuç olarak her türlü query loglayabilirsiniz. Bu değerleri ortamınızdaki objeye göre belirlemekte fayda var.

LDAP Detailed Analysis  Threshold
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\NTDS\Parameters' -Name 'Expensive Search Results Threshold' -Value "10000"
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\NTDS\Parameters' -Name 'Inefficient Search Results Threshold' -Value 100"

Diğer bir değerimiz ise search time parametresidir. Optional olarak querlerin ne kadar zaman sürdüğünü belirlemektir. Örnek olarak 50 değeri girildiğinde 50 ms üstündeki sorgular loglanır. İsteğe bağlıdır. Ben örneğimde search time sizlere göstermek için paylaştım tamamen opsiyoneldir. Zaman veya sorgu sonucuna göre loglama yapabilirsiniz.

Registry değeri değiştirildikten sonra Directory service loglarında 1644 eventid logların geldiğini görmekteyiz.

Buradaki return entries kısmı sonucunun count değeridir. Güzel bir örnekle göstermek istemekteyim. Tüm objelere ldap query atmaktayım. Sonucum 1649 olarak gözükmektedir. Ortam biraz küçük :). Loglandığını görmekteyiz.

$ldapFilter = "(objectClass=*)"
$searcher = New-Object System.DirectoryServices.DirectorySearcher
$searcher.Filter = $ldapFilter
$searchResults = $searcher.FindAll()

foreach ($result in $searchResults) {
    # Access result properties like $result.Properties["propertyName"]
    Write-Host "DN: $($result.Properties["distinguishedName"])"
}

$searcher.Dispose()

Domain Admins kullanıcılarına LDAP Sorgusu atmaktayım. Toplamda 3 adet domain kullanıcım var ve loglanmadığını ayarladığınız değerlerden dolayı olduğunu göreceksiniz.

$ldapFilter = "(&(objectClass=user)(memberOf=CN=Domain Admins,CN=Users,DC=koray,DC=intra))"
$searcher = New-Object System.DirectoryServices.DirectorySearcher
$searcher.Filter = $ldapFilter
$searchResults = $searcher.FindAll()

foreach ($result in $searchResults) {
    # Access result properties like $result.Properties["propertyName"]
    Write-Host "DN: $($result.Properties["distinguishedName"])"
}

$searcher.Dispose()

Set LDAP MaxPageSize

Konuyu biraz daha detaylaştırıp ek bilgi vermek istiyorum. LDAP query limitlerini nerden ayarladığımızı göstermek istiyorum.

CN=Default Query Policy,CN=Query-Policies,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=koray,DC=intra
LDAPAdminLimits-MaxPageSize ile değiştirebilirsiniz.
LDAP Limits

Değiştirmenin diğer bir yolu ise NTDSUTIL dir.

Ayrıca tüm parametreleri görmek için show values kullanabilirsiniz.

LDAP Detailed Analysis Set MaxPage

Son olarak LDAP Detailed Analysis yazımızda gelelim bu logları toplamaya 1644 loglarını filtrelerek toplamak gerekir. Sonrasında tüm detaylara sahip olacaksınız. Loglamayı açtıktan sonra bence biraz süre vermekte fayda var. Bu konuda sizlere güzel bir tool paylaşacağım. Bu konuda Microsoft’un paylaştığı 1644 Event Read yazısını inceleyiniz. Aynı zamanda github üzerinde detaylı olarak csv file oluşturma ve analiz oluşturma ps1 dosyalarını bulabileceksiniz.

Diğer yazılarımı aşağıdaki kategorilerden inceleyebilirsiniz.