THREAT HUNTING SÜREÇLERİNDE SİGMA KURALLARI
Sigma Nedir?
Sigma, dosyalar için YARA’ya veya ağ analizi için Snort’a benzer olarak, logları analiz etmek için kural yazılmasını sağlayan açık kaynaklı bir framework’tür.
- Snort → Network Traffic
- YARA → Files
- Sigma → Logs
şeklinde akılda kalıcı olabilmektedir. SIEM’ler, analiz, scripting vb. için bir veri kaynağı niteliğindedir. Ortak kaynak olarak:
- Firewall
- Operation System
- Proxy
- Web Server
örnek olarak verilebilir. Tespit etme konusunda ise:
- Web Access
- Authentication
- Process Execution
- Windows Events
- Network Events örnek olarak verilebilir.
Sigma kuralları, YAML formatında önceden tanımlanmış bir syntax kullanılarak yazılır ve daha sonra (sigmac veya online dönüştürücü kullanılarak) kuruluşta kullanılan hedef SIEM veya platforma uyan bir formata dönüştürülür. Desteklenen hedefler olarak:
- Splunk (Dashboard ve Plugin)
- ElasticSearch Query Strings, Query DSL
- Kibana
- Logpoint
- Qradar
- ArcSight
- PowerShell
- Windows Defender Advanced Threat Protection (WDATP) vb. platformlar tarafından desteklenmektedir.
Sigma kuralları, farklı log türlerini analiz etmeyi ve belirli eylem veya tehdidin tespitini kolaylaştıran güçlü bir araçtır. Kullanımı iki şekilde olabilir:
1-) Şüpheli Etkinliğin / Olayın Tanımlanması ve Uyarının Bildirilmesi
Sigma rules, SIEM’lere entegre edilebilir ve farklı olayları direkt algılayabilir, böylece daha fazla hasar görmeden onları tespit etmeye ve durdurmaya yardımcı olur.
2-) Tehdit Avcılığı
Sigma kuralları, tehdit avcılığı süreçlerinde kullanılabilir. Belirli bir saldırı veya tehdidin (örneğin APT Grupları) ne zaman ve hangi teknikler ile hedef aldığını tespit etme konusunda kurallar kullanılabilir.
Eski loglar üzerinden Sigma kuralları uygulanarak ihlal durumlarının olup olmadığı kontrol edilebilir (depolanan loglar üzerinden).
Normal olarak bir ihlal durumunun tespit süresi uzun bir süreçtir. Fakat bu kurallar sayesinde şüpheli etkinliklerin tespiti ve analiz yapılarak olay yanıt sürecinde daha hızlı aksiyomlar alınabilir.
Tehdit Avcılığı İçin Sigma Kurallarının Kullanımı
Sigma, logların analizi konusunda evrensel bir işaret dilidir ve tehdidin tespiti konusunda kurallar yazmanıza izin verir. Sigma kurallarının esnekliği, kural herhangi bir SIEM ve günlük kaynağı için derlenebildiğinden diğer bireyler tarafından oluşturulan detect kurallarını kullanmayı ve bunları kendi localinizde kullanmaya imkan sağlar.
Öncelikle bir tespit kuralını oluşturmak kolay bir iş değildir. Bunun temel sebepleri ise:
1. Öncelikle tehdidin mevcut örnekler üzerinden bir analizi ele alınarak ya da bunları teknik raporlarda ve tehdit istihbaratı kaynaklarından bulunarak tehdidi tespit edebilmede kullanılabilecek parametre veya ibarelerin bulunması gerekmektedir.
2. Diğer bir sebep ise false positive alertleri tetiklemeyen ve tehditlerin göz ardı edilmemesini önlemek için fazla katı olmayan uygun bir kural dizimi gerekmektedir. Algılama kuralları Pyramid of Pain olarak bilinen bir piramit üzerinden incelenebilmektedir. Buradaki düşüncede, saldırı göstergelerini, bu göstergeler tespitinde ve güvenlik ürünleri tarafından engellenmesiyle saldırgan tarafında bir “acı” skalası olarak artan bir şekilde ilerlemektedir.
Burada zarar derecesine göre güvenlik ekiplerinin göstergeleri belirleme süresi değişmektedir. Örnek olarak, bir dosyanın hash değerinin tespit edilmesi kolaydır fakat bu hash değeri bitlerinin tehdit aktörleri tarafından değiştirilmesi ile zorlaşmaktadır. Fakat iyi bilinmesi gereken konulardan birisi ise tehdit aktörleri için tehdidin davranışını değiştirmek ve tespit edilebilirliğini düzenlemek de bir o kadar zordur.
Sigma İle Kural Yazımı
Sigma’nın kullanımı oldukça kolaydır. Çünkü Sigma, yine yukarıda belirttiğimiz gibi YAML formatını kullanmaktadır ve bunu destekleyen bir derleyici ile çalışılmalıdır. Derleyici olarak VSCode, Atom, Sublime Text veya Webstorm kullanılabilmektedir. Repoyu aşağıdaki linkten indirebilirsiniz.
Link: https://github.com/Neo23x0/sigma
İndirilen proje içerisindeki rules dizinindeki örnek kurallara giderek burada düzenlemeler ve tekrardan kural yazımları yapılabilir. Kural yapısını inceleke için repo içerisindeki rules kısmından çektiğimiz bir kural üzerinden ilgili parametrelerini açıklamaya başlayalım.
– Title and Logsource:
Burada kural hakkındaki durum, açıklama ve referans gibi bilgiler bir title içerisinde belirtilir. Logsource alanında ise ürün (windows, unix, apache, zeek vs.), kategori (firewall, proxy, web server, apt), servis (SSH, PowerShell) vb gibi veriler tanımlanabilir.
– Description: Kuralın neler yaptığı, nasıl çalıştığı hakkında ayrıntılı bilgi içerir.
– Condition: Burada kuralın entegre edilecek olan platform üzerine nasıl işleneceğinin belirtildiği kısımdır.
Diğer parametrelerin açıklamaları da aşağıdaki gibidir:
– Author: Kuralı yazan kişi bilgisi
– Category: Yukarıda da belirtildiği gibi kuralın ait olduğu kategori bilgisi (apt gibi)
– Product: Hangi üründen alındıysa o ürün bilgisi (windows gibi)
– Date: Kuralın oluşturulma tarihi
– Level: Oluşturulan kuralın kritiklik seviye bilgisi (low, medium, high, critical)
– Status: Kuralın durumunu belirtir ve üç farklı değer alır.
– Stable: Kural kararlı olarak kabul edilir ve platformlar arasında kullanılabilir.
– Test: Çoğu işi bitmiş, son testleri yapılmış kural bilgisi
– Experimental: Hazırlık aşamasında kullanılması önerilmeyen kural
– References: Keywordlerin referansları ve kural hakkındaki referans bilgisi bu bölüme yazılabilir. Bunlar blog makaleleri, teknik makaleler, sunumlar ve hatta tweetler olabilir.
– Metadata: Başlık, durum, açıklama, referanslar ve etiketlerden oluşur.
Temel kural formatı ise aşağıdaki görseldeki gibidir:
Ayrıca bu kuralları farklı platformlar için derlenmesi tool veya online tool ile yapılabilir.
1-) Tool olarak python ile yazılmış olan “sigmac” aracı ile yapılabilmektedir. Kurulumu gayet basittir.
Link: https://github.com/SigmaHQ/sigma/tree/master/tools
2-) Diğer bir seçenek olarak ise Uncoder.ıo tool’u kullanılabilir. Bu tool aracılığı ile sigma kuralının farklı SIEM’ler ile entegrasyonu rahatça yapılabilmektedir.
Link: https://uncoder.io/
Örnek olarak aşağıdaki görselde belirtildiği gibi yukarıda incelediğimiz sigma kuralının Qradar formatına dönüşümü görülmektedir.
Kaynakça:
https://github.com/SigmaHQ/sigma
https://gaissecurity.com/blog/sigma-kurallari-ile-siem-urunlerinde-tehdit-avi/
https://www.intezer.com/blog/threat-hunting/intro-to-sigma-rules/
https://www.intezer.com/blog/threat-hunting/threat-hunting-sigma-detection-rules/
https://oguzcanpamuk.medium.com/sigma-ile-tehdit-avc%C4%B1l%C4%B1%C4%9F%C4%B1-5f91246e459f
https://www.youtube.com/watch?v=ULT4Eb1_Wes
https://www.youtube.com/watch?v=tLKaP_q7-oY