Sigma Kural Yapısı
Uzun aradan sonra tekrar yazmaya devam :) Bu yazımda sigma kural yapısı ve splunk, qradar gibi siem sistemlerinde kullanmanız için nasıl dönüştürebileceğinizden bahsedeceğim.
LinkedIn ve Twitter üzerinden bana ulaşabilirsiniz.
Sigma için Siem teknolojilerindeki log formatlarınıza dönüştürürken arada köprü olacak bir imza formatıdır diyebiliriz. Sigma, ağ trafiğini ve dosyaları incelerken kullandığımız ortak araçlar gibi logları incelerken de bir altyapı oluşturması için Florian Roth & Thomas Patzke tarafından yazılmıştır.
Sigma log dosyaları için oluşturulan ortak formattır, Snort’un ağ trafiği ve YARA’nın dosyalar için kullanıldığı gibi. Yara nedir derseniz kısaca şuraya, snort için de önceki yazıma bakabilirsiniz.
Ağ trafiğini incelerken ;
Tam PCAP, Metadata, IDS, NetFlow
Tespit etme:
• Tehdit verileri eşleşmesi
• Protokol / metadata anormallik tespiti
• IDS imzaları ( Snort-Suricata) kulla
Dosya analizi yaparken ;
Dosya sınıflandırma, analizi ve simülasyon
Tespit etme:
• AV İmzaları / Machine Learning tabanlı algılama
• Statik & Dinamik Analiz
• YARA imzaları kullanırız.
Log analizi yaparken siemleri ve sigmayı kullanabiliriz. Sigma kural biçimi çok esnektir, yazması kolaydır ve hemen her türlü log turune uygulanabilir. Splunk, Qradar, Elastic vb…
Kural Formatı
Düz metin YAML dosyasıdır. Zorunlu alanlar ve isteğe bağlı alanlar olarak ikiye ayırabiliriz, toplam 4 ana bölumden oluşur.
- Metadata ( title, status, description, references, tags ) den oluşur.
- Log Source ( category, type, brand, product, service ..)
- Detection ( search identifier , list of Selectors )
- Condition ( Seçici eşleşmesi için mantık — Selectors match )
Title ve Log source örneği, kırmızı alanlar asıl gerekli olanlar. Title alanında durumunu, tanımını, referansları belirtebilirsiniz. Log source alanında urun( windows, symantec ), kategorisi (proxy, firewall) , servisi (SSH, powershell ) vb tanımları yapabilirsiniz.
Condition alanında kural eşleşmesi için mantık belirtilir, Detection alanında ilgilenilen öğeleri içeren nesneler yazılır. Loglardaki search identifier temsil eden bir dizi arama kimliğidir.
Title
Kuralın tespit etmesi gerekenleri içermesi gereken kural için kısa bir başlık (en fazla 256 karakter).
Sigma kuralları id özelliğinde global olarak benzersiz bir tanımlayıcı ile tanımlanmalıdır. Bu amaçla rastgele oluşturulan UUID’ler (sürüm 4) önerilir, ancak zorunlu değildir. Bunun bir örneği:
id: 929a690e-bef0-4204-a928-ef5e620d6fcc
Status : Kuralın durumunu bildirir:
Description : Kuralın ve tespit edilebilecek kötü amaçlı etkinliğin kısa bir açıklaması (maks. 65,535 karakter)
License : SPDX Kimliği spesifikasyonuna göre kuralın lisansı.
Author: Kuralın yazarı
References : Kuralın türetildiği kaynak
Log Source
Bu bölümde, detection uygulanacağı logları açıklanmaktadır. Log kaynağını, platformu, uygulamayı ve algılamada gerekli olan türü açıklar.
Category: Güvenlik duvarları veya web sunucusu günlükleri gibi belirli bir ürün grubu tarafından yazılan tüm günlük dosyalarını seçmek için kullanılır. Otomatik dönüşüm, anahtar kelimeyi birden çok endeks için seçici olarak kullanır.
Product : Belirli bir ürünün tüm günlük çıktılarını seçmek için kullanılır.
Service :Product kısmının alt alanlarını belirtmek için kullanılır.
- category — firewall, web, antivirus
- product — windows, apache, check point fw1
- service — sshd, applocker
Detection
Search-Identifier , iki farklı veri yapısından oluşabilen bir tanım — listeler ve haritalar.
List :Listeler, tam günlük iletisine uygulanan ve mantıksal ‘VEYA’ ile bağlantılı dizeler içerir.
detection:
keywords:
-'rm *bash_history'
-'echo "" > *bash_history'
Maps: Haritalar, logda bir alan ve değer bir dize veya tamsayı değeri olduğu anahtar / değer çiftlerinden oluşur. Harita listeleri mantıksal bir ‘VEYA’ ile birleştirilir. Bir haritanın tüm öğeleri mantıklı bir ‘VE’ ile birleştirilir.
detection:
selection:
- record_type: 'TXT'
answer:
-'*IEX*'
-'*Invoke-Expression*'
condition: selection
Timeframe:Gün, saat, dakika, saniye için tipik kısaltmaları kullanan göreli bir zaman dilimi tanımı.
Condition
Alanında kural eşleşmesi için mantık belirtilir, and or pipe count max avg vb
condition: selection
-selection | count(dst_port) by src_ip > 10
-selection | count(dst_ip) by src_ip > 10
Sigma kuralının nasıl yazılacağına dair aşağıdaki bağlantıdan erişim sağlayabilirsiniz.
Uncoder.IO, SOC Analistlerine, Tehdit Avcılarına ve SIEM Mühendislerine yardımcı olmak için SIEM e özel kaydedilmiş aramalar, filtreler, sorgular, API istekleri, korelasyon ve Sigma kurallarının online çevirmenizi sağlayan bir araçtır. Aşağıda örnek olarak seçtiğim sigma kuralını dönüştürelim.
Sol alanda sigma kuralını yazdıktan sonra sağ alanda Qradar, Splunk veya Arcsight tercih ederek istediğimiz log turune çeviriyoruz.
Aşağıdaki gibi log turlerine dönüştürebilirsiniz.
Dikkat edilmesi gereken noktalar, log source type larınızı seçmeniz ayrıca payload olarak aratacağından performans kriterini değerlendirmeniz gerekecektir.
Referanslar:
https://www.sans.org/cyber-security-summit/archives/file/summit-archive-1544043890.pdf