Takip etmenizi önemle tavsiye ettiğim The Dfir Report sitesinde yazılan olay müdahale raporları oldukça öğretici ögeler içermekte. İlgili raporları okurken sıklıkla gördüğüm adFind.exe aracının saldırganlar tarafından AD (Active Directory) ortamının keşfi için kullanılmasının da dikkat çekici bir husus olduğunu düşünüyorum. Bu noktada, hem adFind hem de SharpHound araçlarının ağda oluşturdukları gürültülerin nasıl tespit edilebileceğine dair birşeyler karalamaya karar verdim. Daha önce bu alanda çalışma fırsatınız olmadıysa aşağıda yer alan bazı kavramları özetlediğim “AD Ortamında Sysmon, Command Line Process Auditing, Powershell Logging ile Processal önem arz etmekte Takibi” konulu yazıyı okumanızı tavsiye ederim.
Giriş kısmının bu bölümündeyse derinlemesine defans (Sayfa 199) ve zero trust (Sayfa 4-5) kavramlarına da kısaca değinelim. Firewall, IPS, IDS, EDR, antimalware vd. güvenlik çözümleri savunma halkalarının sadece birkaçı. Saldırı istemciye kadar düştükten sonra oluşan loglar saldırıların tespiti noktasında önemli. Bu noktada sadece saldırı önleme tespit sistemlerine (prevention) bağlı kalıp, tespiti (detection) önemsememek günün sonunda yoğun bir mutsuzluğa sebebiyet verebilir. Dolayısıyla savunmayı güçlendirmekle birlikte, saldırı gerçekleştikten sonra tespit etme konusu da oldukça ve oldukça önem arz eden bir konu. Derinlemesine savunma ve zero trust ile ilgili detaylara bu paragrafta verdiğim bağlantılardan erişebilirsiniz.
Yazıya devam edelim. Adı geçen keşif araçlarının tespiti noktasında aşağıdaki temel güvenlik ayarlarının bir kısmını aşağıda sıralayabiliriz:
1- İstemciler ve sunucular için ayrı GPO’ların (Domain Controller, Member Servers (Server 2012, 2016 2019 alt kırılımlarıyla, Clients (Windows 7, 8, 10 alt kırılımlarıyla) oluşturulması ve ilgili logların toplanması,
2- Powershell’in detaylı tüm loglarının toplanması (Event ID4103, 4104, 4105 ve 4106),
3- GPO ayarlarında Commandline process auditing ayarının açılması (EventID 4688),
4- İstemci ve sunucularda Sysmon ile rafine edilmiş logların toplanması,
5- LAPS benzeri uygulamalarla yerel yönetici parolarının aynı olmasının önüne geçilmesi,
6- 389 (LDAP) ve 3268 (Global Catalog) portları kapsamında oluşan cleartext trafiğin takibi (LDAPS: 636, Global Catalog Secure 3269)
Yazı kapsamında kullanılan test ortamının bileşenleri (DetectionLab) :

Pek kısa olmayan giriş bölümünden sonra yazının başlığında yer alan araçları incelemeye başlayarak yazıya devam edelim.
1- adFind.exe
AD ortamındaki objelerin keşfi için kullanılan adFind.exe uygulamasının antivirus / antimalware çözümleri tarafından keşif oranı 18/69. Farklı üreticiler tarafından bahse konu uygulama genellikle “Riskware” kategorisi kapsamında değerlendirilmiş.

Logları oluşturmak ve AD ortamındaki keşif işlemleri için domain listesini, policyleri, AD trust bilgilerini vd. toplamak için istemci tarafında çalıştırılmak üzere aşağıdaki .bat dosyasını oluşturalım ve çalıştıralım.

İlgili .bat dosyasını çalıştırdıktan sonra adFind uygulamasının gönderdiği LDAP (389) sorgusuna dair detayları aşağıdaki ekran alıntısından inceleyelim. İnceleme sonrasında çalıştırılabilir bir dosyadan (bat, ps1, exe vd. LDAP, LDAPS, Global Catalog) sorgularının tespitinin tehdit avcılığı noktasında fayda sağlayacağını dikkate alalım.

adFind uygulaması çalıştıktan sonra paketlerin cleartext protokolleri kullanması nedeniyle ilgili paket içeriğinden detayları incelemek mümkün. Bu noktada, cleartext kullanan protokollerin ağda oluşturduğu paketler özellikle dikkatimizi çekmeli.

İlgili uygulamanın kullandığı dll dosyaları tamamı ile Microsoft imzalı dlllerden oluşması da dikkat çekici…

adFind aracı çalıştıktan sonra sistemde oluşan logları toplamda dört başlıkta kategorilendirmek mümkün. Bu kategorileri, Windows Security, Sysmon ve Powershell logları olarak sınıflandırabiliriz.

Oluşan logları inceleyelim:
- Windows Security 4673: A privileged service was called.
- Windows Security 4688: A new process has been created.
- Windows Security 4689: A process has exited.
- Powershell 4103: Powershell module logging.
- Powershell 800: Powershell pipeline execution policy for command line.
- Sysmon 1: Process creation.
- Sysmon 11: File create.

İlgili loglar incelendiğinde “Company: http://www.joeware.net” ibaresi tespit için dikkat çekmekte.

Ghidra ile ilgili exe dosyasını açtıktan sonra “joeware” stringini arattığımızda, ilgili exe dosyasının bolca “joeware” stringini kullandığını görmekteyiz. Adı geçen aracın tespiti için bu hususuda göz önünde bulunduralım.

EventID 4673 logunda yer alan “SeProfileSingleProcessPrivilege” bilgisini de tespit kuralları için kullanmak olası (Bol miktarda false positive alarm oluşacağı hususu da dikkate alınarak…)

Powershell EventID 800 içinde geçen “value” değerlerinde yer alan parametreleri de tespit için kullanmak mümkün. Powershell 800 loglarında yer alan detaylar:

Son olarak Elastic Security‘nin tespit kuralını aşağıya ekleyelim.

2- BloodHound –> SharpHound
adFind aracından daha detaylı görsel raporlar oluşturan BloodHound aracı Domain ortamındaki yetkili hesap bilgilerinin ele geçirilmesi noktasında oldukça faydalı keşif raporları oluşturmakta. Yazı kapsamında domain ortamındaki bilgilerin elde edilmesi için kullanılan Bloodhound aracına detaylı raporları sağlayan SharpHound aracını inceleyerek yazıya devam edelim.
SharpHound AV’ler tarafından tespit oranı (39/70)

SharpHound aracının kullandığı parametleri inceleyelim. Bahse konu aracın kullandığı parametreler SIEM’de yazılacak tespit kuralları için detayları içermekte. (-c, -d, –computerfile, –zipfilename vd.)

SharpHound aracını default ayarlarda çalıştıralım.

SharpHound ile oluşturulan raporu BloodHound’a attığımızda domain admine gidilen yolda çekilecek çilenin yolunu görmek mümkün.

SharpHound aracı da adFind aracına benzer şekilde LDAP:389 üzerinden cleartext sorgu göndermekte.

Cleartext paket içeriği

SharpHound aracının izlerini Sysmon, Windows Security ve Powershell loglarıyla tespit etmek mümkün.

Oluşan loglar:
- Sysmon EventID 1: Process creation,
- Sysmon EventID 7: Image loaded,
- Sysmon EventID 10: Process access,
- Sysmon EventID 11: File create,
- Sysmon EventID 13: Registry event (Set),
- Sysmon EventID 15: File create stream hash,
- Windows EventID 4688: A new process has been created.
- Windows EventID 4689: A process has exited.
- Windows EventID 4799: A security-enabled local group membership was enumerated
- Windows EventID 4648: A logon was attempted using explicit credentials
- Powershell 4103: Powershell module logging.
- Powershell 800: Powershell pipeline execution policy for command line.

Powershell EventID: 800 içinde Company bölümünde geçen SpecterOps ibaresi dikkat çekici.

Ghidra ile SharpHound.exe’yi açtığımızda SpecterOps geçen stringlere dair ekran görüntüsü:

Sysmon logları (EventID: 10) içinde yer alan CallTrace bölümü ve içinde yer alan dll’lere ait log:

EventID: 4648 logu içinde yer alan “A logon was attempted using explicit credentials” bölümü de tehditlerin tespiti noktasında önem arz eden logların bir diğeri.

Faydalı olması dileğiyle…
Kaynaklar:
- https://thedfirreport.com/category/adfind/
- https://docs.microsoft.com/en-us/sysinternals/downloads/sysmon
- https://techcommunity.microsoft.com/t5/itops-talk-blog/step-by-step-guide-how-to-configure-microsoft-local/ba-p/2806185
- https://detectionlab.network/
- https://doi.org/10.6028/NIST.SP.800-53r5
- https://doi.org/10.6028/NIST.SP.800-207
- https://www.elastic.co/guide/en/security/current/adfind-command-activity.html
- https://github.com/BloodHoundAD/SharpHound
- https://www.joeware.net/freetools/tools/adfind/index.htm