Domain/User Keşfi ve Tespiti

Domain/User Keşfi ve Tespiti

Domain/User Keşfi ve Tespiti

Domain Keşfi
Active Directory (AD) etki alanı keşfi, siber saldırı yaşam döngüsünde çok önemli bir aşamayı temsil eder. Bu aşamada saldırganlar hedef ortam hakkında bilgi toplamaya çalışarak ortamın mimarisini, ağ topolojisini, güvenlik önlemlerini ve olası güvenlik açıklarını anlamaya çalışır.

Saldırganlar AD etki alanı keşfi yaparken Domain Controller’lar, kullanıcı hesapları, gruplar, trust ilişkileri, organizasyonel birimler (OU’lar), grup politikaları ve diğer hayati nesneler gibi önemli bileşenleri tanımlamaya odaklanır. Saldırganlar AD ortamı hakkında bilgi edinerek potansiyel olarak yüksek değerli hedefleri belirleyebilir, ayrıcalıklarını artırabilir ve ağ içinde yanal hareket gerçekleştirebilir.

Native Windows Executables Kullanarak Kullanıcı/Domain Keşfi
Bir saldırganın Domain Administrators listesini elde etmek için net group komutunu çalıştırması AD etki alanı keşfine bir örnektir.

Domain keşfi için kullanılan yaygın yerel araçlar/komutlar şunlardır:

  • whoami /all
  • wmic computersystem get domain
  • net user /domain
  • net group “Domain Admins” /domain
  • arp -a
  • nltest /domain_trusts

BloodHound/SharpHound Kullanarak Kullanıcı/Domain Keşfi

BloodHound, Active Directory (AD) ortamını analiz etmek için oluşturulmuş açık kaynaklı bir domain keşif aracıdır. Saldırganlar tarafından bir kuruluşun AD altyapısındaki saldırı yollarını ve potansiyel güvenlik risklerini ayırt etmek için sıklıkla kullanılır. BloodHound, AD domainindeki güven ilişkilerini, izinleri ve grup üyeliklerini ortaya çıkarmak için, grafik teorisinden ve ilişki mappinginden yararlanır.

Sharphound, BloodHound için bir C# veri toplayıcısıdır.

BloodHound toplayıcısı(Sharphound), domain hakkında bilgi toplamak amacıyla Domain Controller’a yönelik çok sayıda LDAP sorgusu yürütür.

Ancak, LDAP sorgularını izlemek zor olabilir. Varsayılan olarak, Windows Olay Günlüğü bunları kaydetmez. Windows’un sunabileceği en iyi seçenek, LDAP performance monitoring log (LDAP performans izleme günlüğü) olan Event 1644'ü kullanmaktır. Etkinleştirilmiş olsa bile, BloodHound beklenen olayların çoğunu oluşturmayabilir.

Daha güvenilir bir yaklaşım ise Windows ETW provider Microsoft-Windows-LDAP-Client’ı kullanmaktır. SilkETW & SilkService, ETW’nin karmaşıklıklarını basitleştirmek için tasarlanmış, araştırma ve iç gözlem için erişilebilir bir arayüz sağlayan ETW için çok yönlü C# wrappers’tır. SilkService, Windows Event Log’a gönderimi destekleyerek logların incelenmesini kolaylaştırır. Bir başka kullanışlı özellik de şüpheli LDAP sorgularını avlamak için Yara kurallarını kullanma yeteneğidir.

Buna ek olarak, Microsoft’un ATP ekibi keşif araçları tarafından sıklıkla kullanılan LDAP filtrelerinin bir listesini derlemiştir.

Splunk ile Kullanıcı/Domain Recon’u Algılama

Native Windows Executables’ı Hedefleyerek Keşif Algılama
title: Reconnaissance Process Detection via Native Windows Executables
id: 9563698c-4660-420e-9624-16be804c20e7
status: experimental
description: Detects suspicious process creations indicative of reconnaissance activities via Native Windows Executables.
author: Emirhan KISA
date: 2024/04/01
tags:  
  - attack.reconnaissance
  - attack.t1087
logsource:
  category: process_creation
  product: windows
  service: sysmon
detection:
  selection:
    EventID: 1
    Image|endwith:
      - "arp.exe"
      - "chcp.com"
      - "ipconfig.com"
      - "net.exe"
      - "net1.exe"
      - "nltest.exe"
      - "ping.exe"
      - "systeminfo.exe"
      - "whoami.exe"
  selection2:
    EventID: 1
    Image|contains:
      - "cmd.exe"
      - "powershell.exe"
    CommandLine|contains:
      - "arp"
      - "chcp"
      - "ipconfig"
      - "net"
      - "net1"
      - "nltest"
      - "ping"
      - "systeminfo"
      - "whoami"
    
  condition: (selection or (selection2)) and count(Image) > 3 #"count(Image) > 3" isteneni vermeyebilir.
falsepositives:
  - Unknown
level: low
index=main source="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventID=1
| search process_name IN (arp.exe,chcp.com,ipconfig.exe,net.exe,net1.exe,nltest.exe,ping.exe,systeminfo.exe,whoami.exe) OR (process_name IN (cmd.exe,powershell.exe) AND process IN (*arp*,*chcp*,*ipconfig*,*net*,*net1*,*nltest*,*ping*,*systeminfo*,*whoami*))
| stats values(process) as process, min(_time) as _time by parent_process, parent_process_id, dest, user
| where mvcount(process) > 3

SPL’i incelersek:

  • Arama, kaynağın Sysmon olayları için XML biçimli Windows Olay Günlüğü olan XmlWinEventLog:Microsoft-Windows-Sysmon/Operational olduğu ana dizinden olayları seçerek başlar.
  • Sysmon’da Olay Kimliği 1, yeni oluşturulan işlemlerle ilgili verileri günlüğe kaydeden Process Creation olaylarına karşılık gelir.
  • Arama daha sonra olayları yalnızca process_name alanının belirli işlem adları listesinden biri olduğu (ör. arp.exe, chcp.com, ipconfig.exe, vb.) veya process_name alanının cmd.exe veya powershell.exe olduğu ve işlem alanının belirli alt dizeler içerdiği olayları içerecek şekilde filtreler. Command Prompt veya PowerShell oturumundan çalıştırıldığı olayları arar.
  • stats komutu, parent_process, parent_process_id, dest ve user alanlarına dayalı olarak olayları toplamak için kullanılır. Bu alanların her bir benzersiz kombinasyonu için arama aşağıdaki istatistikleri hesaplar
  • where komutu, sonuçları yalnızca işlem alanı sayısının 3'ten büyük olduğu durumları içerecek şekilde filtrelemek için kullanılır. Bu adım, aynı ana süreç tarafından birden fazla sürecin (üçten fazla) yürütüldüğü örnekleri arar.
BloodHound’u Hedef Alarak Keşif Algılama
index=main source="WinEventLog:SilkService-Log"
| spath input=Message
| rename XmlEventData.* as *
| table _time, ComputerName, ProcessName, ProcessId, DistinguishedName, SearchFilter
| sort 0 _time
| search SearchFilter="*(samAccountType=*)*"
| stats min(_time) as minTime, max(_time) as maxTime, count, values(SearchFilter) as SearchFilter by ComputerName, ProcessName, ProcessId
| where count > 10
| convert ctime(maxTime)

SPL’i incelersek:

  • Arama, kaynağın WinEventLog:SilkService-Log olduğu ana dizinden olayları seçerek başlar.
  • Spath komutu, muhtemelen XML veya JSON gibi yapılandırılmış veriler içeren Message alanından, alanları ayıklamak için kullanılır. Spath komutu, veri yapısına göre alanları otomatik olarak tanımlar ve çıkarır.
  • Yeniden adlandır komutu, XmlEventData. ile başlayan alanları XmlEventData. öneki olmadan eşdeğer alan adlarıyla yeniden adlandırmak için kullanılır. Bu, aramanın sonraki aşamalarında alanlara daha kolay başvurmak için yapılır.
  • Table komutu, sonuçları sütunlarla birlikte tablo biçiminde görüntülemek için kullanılır: _time, ComputerName, ProcessName, ProcessId, DistinguishedName ve SearchFilter. Tablo komutu çıktıda yalnızca bu alanları içerir.
  • sort komutu, sonuçları _time alanına göre artan sırada (en eskiden en yeniye) sıralamak için kullanılır. 0 bağımsız değişkeni, sıralanacak sonuç sayısında bir sınır olmadığı anlamına gelir.
  • Search komutu, sonuçları yalnızca SearchFilter alanının *(samAccountType=*)* dizesini içerdiği olayları içerecek şekilde filtrelemek için kullanılır. Bu adım, belirli bir filtre koşuluna sahip LDAP sorgularıyla ilgili olayları arar.
  • Olayları ComputerName, ProcessName ve ProcessId alanlarına göre toplamak için stats komutu kullanılır. Bu alanların her benzersiz kombinasyonu için arama aşağıdaki istatistikleri hesaplar.
  • Where komutu, sonuçları yalnızca count alanının 10'dan büyük olduğu durumları içerecek şekilde filtrelemek için kullanılır. Bu adım, aynı bilgisayarda aynı işlemin belirtilen filtre koşuluyla ondan fazla arama sorgusu yaptığı örnekleri arar.
  • convert komutu maxTime alanını Unix zaman damgası biçiminden insan tarafından okunabilir biçime (ctime) dönüştürmek için kullanılır.

Okuduğunuz için teşekkürler.