Bu nedenle farklı araçlardan faydalanarak, olası durumları simüle etme ve akabinde doğru reaksiyon gösterecek sistemler oluşturma konusunda bazı ekstra araçlara ihtiyaç duyuyor olmak normal kabul ediliyor. Güvenlik kapsamında baktığımızda örnek olarak Active Directory saldırılarının SIEM ile tespit edilmesi konusunu ele alabiliriz. Her saldırının halihazırda toplanmakta olan log kümeleri arasında nasıl tespit edilebileceğini ilk etapta bilemiyor olabiliriz. Çünkü log formatı değişebilir, logu toplayan ürün değişebilir. Özetle karşılaşılan logun diziliminden, kapsamına birçok değişiklik olabilir.
Bu kapsamda, nasıl bir yol izleyebileceğimize dair yol göstermesi amacıyla Active Directory’e hangi durumlarda saldırı yapıldığını, bu saldırıların nasıl tespit edilip önüne geçileceğini anlatmaya çalışıyor olacağız. Detection Lab ile kurmuş olduğumuz ortam sayesinde AD’ye saldırıları simüle edip, Splunk ile tespit ve monitör edeceğiz. Saldırı ve güvenlikten bahsetmeden önce Active Directory hakkında ön bilgi edinmemiz gerektiğini düşünüyorum. Active Directory nedir?
Active Directory (AD), Microsoft Windows Server üzerinde çalışan bir dizin hizmetidir. Ana işlevi, yöneticilerin izinleri yönetmesini ve ağ kaynaklarına erişimi kontrol etmesini sağlamaktır. Kullanıcı yönetiminin en önemli bileşenlerinin başında Active Directory yapısı gelmektedir. Kısaca Active Directory; ağ nesnelerini ve kullanıcı bilgilerini depolayan, bu bilgilere ulaşımı ve yönetilmesini kolaylaştıran bir servistir.
Microsoft Active Directory, bir kuruluştaki kullanıcılara, erişime ve uygulamalara yetki vermek için merkezi olduğundan, saldırganlar için doğrudan hedeftir. Bir siber saldırgan Active Directory sistemine erişebiliyorsa, potansiyel olarak bağlı tüm kullanıcı hesaplarına, veri tabanlarına, uygulamalara ve her türlü bilgiye erişebilir. Bu nedenle, özellikle erkenden farkına varılamayan saldırılar, kurtarmanın zor olabileceği durumlara yol açabilmektedir.
Saldırganların verileri ve kullanıcıları hedef aldığı bir dünyada ağ güvenliği üzerine kurulu bir savunma modelinin ötesine geçmemiz gerekmektedir. Bunun için Active Directory güvenliği önemlidir ve kuruluşlar bu noktada SIEM çözümlerinden destek almaktadır. SIEM çözümleri, tüm AD eylemlerinin yanı sıra, standartları karşılamaya yönelik raporların oluşturulmasını kolaylaştırır. SIEM ile güvenlik ihlallerini analiz edebilir, potansiyel saldırıları belirleyebilir ve önleyebiliriz.
Active Directory yönetim isteminin güvenliği ve sıkılaştırma işlemleri bilindiği gibi oldukça önemli ve kritiktir. Sistemin merkezine oturtulan bir yönetim sisteminde oluşacak bir zafiyetin veya yanlış yapılan bir konfigürasyonun istenmeyen sonuçlara neden olabilmesi oldukça mümkündür. Bu noktada 4 ana bileşenden oluşan (Client, DC, Forwarder ve Splunk) Detection Lab bizim için biçilmez bir kaftan durumundadır. Detection Lab, Windows Active Directory’yi hızlı bir şekilde çevrimiçi hale getirmenize olanak tanıyan, endpoint güvenlik araçları ve logger uygulamaları içeren bir Packer ve Vagrant komut dosyaları topluluğudur.
Detection Lab’ın Windows ortamına kurulumu için https://www.detectionlab.network/deployment/windowsvm/ linkinden yararlanabilirsiniz. Yine kurulumda karşılaşacağınız tüm sorunlar içinde “Troubleshooting” bölümü de bulunmaktadır.
Detection Lab ortamında atakların simüle edilmesinin ardından Splunk’ta kuracağımız App ve Add-onlar ile logları daha iyi monitör edip atakları Mitre ID lere göre kategorize edebileceğiz. Peki nedir bu App ve Add-on?
Splunk, big data ile ilgilenen ve çok sayıda makine loglarını analiz etmek için kullanılan harika bir log management ve SIEM ürünüdür. Her SIEM ürününün logları normalize ve kategorize etme işlemleri farklılık göstermektedir. Splunk’ta bu işlemi add-onlar gerçekleştirmektedir. Gelen raw datayı anlamlandırabilmek ve normalizasyonunu sağlamak için add-onlar kullanılmaktadır. Appler ise; anlamlandırılan datanın görselleştirilmesi, zenginleştirilmesi için kullanılır. Splunk üzerinde birçok ücretsiz App ve Add-on bulunmaktadır. AD saldırılarını da tespit edebilmek için ücretsiz olarak Splunkbase sitesinde yayınlanan “ThreatHunting” ve “Sysmon App for Splunk” uygulamalarından yararlanabiliriz. Yapacağımız demoda da bu 2 App’ten faydalanacağız.
Detection Lab ve Splunk App özelliklerinden bahsettikten sonra demoya başlayabiliriz. Demoda Atomic Red Team, Mimikatz, PurpleSharp gibi atak vektörlerini kullanacağız.
Detection Lab kurulumunun ardından ihtiyacımız olan DC, Client ve Splunk makinelerini ayağa kaldırabiliriz. Yukarıdaki linkte de görebileceğiniz gibi Detection Lab’daki makinelerin servisini çalıştırabilmek için “vagrant up logger”, “vagrant up dc” komutlarını kullanabilirsiniz. Herhangi bir makineyi kaldırmak ya da yeniden konfigüre etmek isterseniz de “vagrant destroy <makineismi>” komutundan yararlanabilirsiniz.
Saldırı simülasyonuna başlamadan önce DC üzerindeki Sysmon, PowerShell ve Windows loglarını Splunk’a aktarmamız için ajanı yani Universal Forwarder’ı sunucuya kuralım.
Windows loglarını toplarken önemli noktalardan birisi de tam olarak burası. Herhangi bir kategoriyi seçmezsek bir problem yaratmayacaktır. Yukarıdaki alanlardan loglarını toplayacağımız örneğin Security checkbox ı işaretlediğimiz zaman “etc > apps > Splunk Universal Forwarder” dosyası içerisinde “local” klasörü içerisine inputs.conf oluşur ve içerisine konfigürasyon bilgileri yazılır. Splunk ajanı servisi çalıştığında ilk olarak “local” klasörünü kontrol eder. Bu nedenle local altındaki inputs.conf ayarları önemlidir. Yukarıda logların toplanacağı kategoriler seçildikten sonra kurulum tamamlanır. Konfigüre edebilmek için “$SPLUNKHOME > etc > apps > SplunkUniversalForwarder > local > inputs.conf” dosyası açılır.
Hali hazırda kurulumda “Security, Application, System ve ForwardedEvents” seçtiğimiz için inputs.conf bu şekilde oluşur. Splunk index mantığı ile logları search ve store ettiği için yalnızca inputs.conf içerisine “index” tanımı yapılmalıdır. Splunk’ta windows loglarını “wineventlog” indexi ile aratmak istediğimiz için tüm kategoriler altına “index=wineventlog” yazılmalıdır. Aksi takdirde loglar Splunk default indexi olan “main” indexine gidecektir.
Kurulum esnasında yalnızca belirli kategoriler bulunmaktadır. Fakat event viewer üzerinde okunabilecek bir sürü log dosyası bulunur. Event Viewar’daki logların okunacağı örneğin Sysmon için dosya yolu “Microsoft > Windows > Sysmon” dur. Bu dosyadaki logların okunması için “WinEventLog” etiketi içerisine o dosya yolu verilmelidir.
Forwarder restart işleminin ardından “index=wineventlog” search ü ile windows loglarını görüntüleyebilirsiniz. Tabi bu işlemlerin hemen öncesinde logların normalizasyon ve kategorizasyonu için Windows Add-On indirilmelidir.
Hedef sunucudaki PowerShell, Sysmon ve Windows loglarını bu şekilde Splunk’a aktardıktan sonra AD ataklarını hızlıca görüntüleyip müdahale edebileceğimiz app’leri indirebiliriz.
Tüm bu adımları gerçekleştirdikten sonra artık AD saldırılarını simüle etmeye başlayabiliriz. Splunk real-time olarak Active Directory ve kullanıcıları izlemektedir.
Atomic Red Team, Mitre ATT&CK Framework’e uygun olarak geliştirilmiş saldırı testleri yapmanıza olanak sağlayan, açık kaynak geliştirilen bir yazılımdır. Her bir test belirli bir tekniği uygulamak için tasarlanmıştır. Atomic Red Team bu sayede mavi takım üyelerinin savunmalarını, geniş bir yelpazeye yayılan saldırılara karşı derhal test etmeye başlaması için oldukça uygun bir ortam sağlamaktadır.
Atomic Red Team içerisinde yüzlerce teknik bulunmaktadır. Bu tekniklerden T1033(System Owner/User Discovery), T1136(Create Account), T1074(Data Staged), T1086(PowerShell) taktiklerini kullanacağız.
Detection Lab içerisinde gelen “Tools” klasörü içerisinde Atomic Red Team teknikleri yer almaktadır. Bu dosya pathi üzerinde powershell uygulamasını çalıştırıp powershell modülü ve atomic pathi import etmemiz gerekmektedir.
“Import-Module “C:\Tools\AtomicRedTeam\invoke-atomicredteam\Invoke-AtomicRedTeam.psd1” -Force
$PSDefaultParameterValues = @{“Invoke-AtomicTest:PathToAtomicsFolder”=”C:\Tools\AtomicRedTeam\atomics”}”
Modülü bir kez import etmemiz yeterlidir. Import işleminin ardından tüm taktikleri aynı anda çalıştırabileceğimiz gibi taktik id si vererek de çalıştırabiliriz.
“Invoke-AtomicTest T1033 –TestNumbers 1,2(1,2 burada imzalı ikili proxy yürütme anlamına gelmektedir)” komutunu kullanarak T1033 taktik simülasyonunu gerçekleştirebiliriz. Komutun başarılı bir şekilde çalıştığını çıktılar üzerinden anlayabiliriz. Bu taktik ID Mitre Framework içerisinde “Discovery” kategorisiyle eşleşmektedir. Active Directory’deki kullanıcılar için aslında bir keşif gerçekleştirmiş olduk. Bu keşif çıktısında da domain üzerindeki tüm kullanıcıların ticketları dahil olmak üzere görebilmekteyiz. Bu taktiği bir de Splunk üzerinde analiz edelim.
Splunk ara yüzünde “ThreatHunting” App ini açtığımız zaman sol tarafta görüldüğü gibi taktiğini simüle ettiğimiz Mitre ID yi görebilmekteyiz. Splunk, gelen loglar içerisinde hızlıca analizini gerçekleştirip, saldırının T1033 Mitre ID si ile eşleştiğini göstermektedir. Logu detaylıca inceleyelim.
ThreatHunting’in keşfi yakalamasının ardından bu Mitre ID ile bir search gerçekleştirelim. Search sonucuna baktığımız zaman, simüle etmek için yazmış olduğumuz “Invoke-AtomicTest T1033 –TestNumbers 1,2” komutunu Splunk yakalamıştır. Bu logu da hızlıca analiz edip ThreatHunting app’i içerisinde kategorilendirip bizlere göstermektedir.
Bir başka taktik ile devam edelim.
T1074 taktiği Mitre Framework içerisinde Collection kategorisinde yer almaktadır. Data Staged olarak da bilinen taktik; toplanan verilerin exfiltrasyon işleminden önce merkezi bir konumda veya lokal sistemdeki dizinlerde hazırlanması anlamına gelmektedir. Taktiği yine aynı komutla çalıştırdıktan sonra data’ların “Discovery.bat” scripti içerisinde olduğu uyarısı ile karşılaşmaktayız. Splunk’ta bu durumu inceleyelim.
Yine ThreatHunting appine göz attığımız zaman, “T1074” Mitre tekniğini gözlemleyebilmekteyiz. Saldırı “Collection” olarak kategorilendirilmiştir. Tekniğin üzerine tıkladığımız zaman Splunk, yakaladığı logu detaylı olarak gösterebilmektedir.
ThreatHunting’in “Drilldowns” sekmesine yönlenip logu incelediğimizde komutu çalıştıran kişinin “vagrant” user’ı olduğu ve “Powershell” pathinde çalıştığı tespit edilmiştir. Bu tür saldırıları dashboard üzerinden görüntüleyebileceğimiz gibi hızlıca müdahale için alarmlarda oluşturulabilir.
PurpleSharp, Windows Active Directory ortamlarında saldırgan tekniklerini yürüten C# ile yazılmış açık kaynaklı bir saldırı aracıdır. PurpleSharp, Mitre ATT&CK framework’ünden yararlanır ve saldırı yaşam döngüsü boyunca farklı teknikler yürütür.
Atak simülasyonlarına PurpleSharp ile devam edelim.
PurpleSharp’ta saldırı simülasyonları için playbook’lar kullanılır. Playbook’lar içerisinde teknik id’ler bulunmaktadır. Bu teknikleri isteğinize göre düzenleyebilir, ekleyip, çıkarabilirsiniz. Ayrıca github üzerinden hazır playbook’lar indirebilirsiniz. Örneğin; https://github.com/mvelazc0/PurpleSharp/tree/master/PurpleSharp/Simulations
Bu link üzerinden indirdiğim “variations.pb” dosyasını purplesharp klasörüne ekledim. Bu playbook içerisinde T1136 teknik bulunmaktadır. Bu mitre id, saldırganların hedef sistemlere erişimi sürdürmek için hesap oluşturma adımlarını göstermektedir. Yeterli bir erişim düzeyiyle, bu tür hesapların oluşturulması, sistemde konuşlandırılacak kalıcı uzaktan erişim araçları gerektirmeyen ikincil kimlik bilgili erişim oluşturmak için kullanılır.
Saldırıyı PurpleSharp.exe içerisinde “/pb .\variations.pb” komutu ile başlatabiliriz. Atağın tamamlanmasının ardından Splunk’ta neler olmuş bir bakalım.
Playbook çalışmasının ardından ThreatHunting 37 Persistence logu yakalamıştır. T1136 Mitre Id’li tekniğin Persistence kategorisinde olduğunu görebilmekteyiz. Logun detayına bakacak olursak;
“process_command_line” field’ı içerisinde playbook çalıştıktan sonra kullanılan komutları görebiliriz. Burada birçok kullanıcı oluşturma işlemleri ve kullanıcıya şifre atama işlemleri tespit edilmiştir. Splunk bu noktada logu yakalamış ve doğru Mitre ID ye göre kategorilendirmiştir.
Son olarak Mimikatz aracını kullanalım. Ele geçirilmiş bir windows sistem üzerinde mimikatz komutlarıyla sistem üzerindeki kullanıcı parolaları sistem hafızasından alınabilir.
Yukarıdaki komutlar kullanılarak açık bir şekilde kullanıcıların şifresi dump edilebilir. Mimikatz yalnızca ele geçirilmiş windows sistemlerde kullanılmaz. Başarılı bir şekilde şifreleri aldıktan sonra Splunk’ı inceleyebiliriz.
Bu defa Sysmon App’i içerisinde mimikatz aracını tespit edebilmek için gerçekleştirdiğimiz search sonucunda çok detaylı bir şekilde mimikatz hareketlerini görebilmekteyiz. Bu şekilde yakalanan atak sonrasında hızlı şekilde kullanıcıya müdahale edilebilir, gerekli aksiyonlar alınabilir.
Sonuç olarak elimizdeki Splunk yapısında doğru aksiyonları alabilmek ya da hangi durum için hangi kuralları set etmemiz gerektiğini belirleyebilmek için bahsettiğimiz attack similasyon araçlarından yararlanabilir ve olası bir anomali gerçekleşmesi halinde bizi nasıl log türlerinin bekleyeceğini görebiliriz. Bu sayede oluşması beklenen logun röntgenini önden elde edebildiğimiz için nasıl tespit edeceğimiz ya da farklı event’lerle ilişkilendirip nasıl korelasyonlar konfigüre edebileceğimiz konusunda bir yol haritası oluşturmamız kolaylaşacaktır.
Tüm ürünlerde olduğu gibi her birinin kendine özgü kabiliyetleri ve işlevsellik düzeyleri olduğundan söz edebiliriz evet ama burada önemli olan ürünü daha işlevsel hale getirebilmek için başka araçlar kullanabiliyor muyuz? Ürün buna izin veriyor mu? Gibi bazı durumları sorgulamak. Splunk bu bağlamda kullanıcının yanında. Kendi kabiliyetlerini beyan edip, hangi konularda geliştirilebilir aksiyonlara paydaş olacağını da bu tarz app’ler eşliğinde bizlere sunuyor.
Bu blog boyunca bazı atakları simüle ederek, faydayı görünür hale getirmeye çalıştık. Çeşitlendirilebilir, geliştirilebilir ve özelleştirilebilir birçok özellik barındıran Threat Hunting ve Sysmon’ App’ini tecrübe etmenizi öneririz.
-