Sigma Kuralları ile SIEM Ürünlerinde Tehdit Avı

Yayınlayan
Hüseyin Orçun KARATAŞ
Yayınlanma tarihi
26-02-2022
Okuma süresi
10 DK

Sigma Kuralları ile SIEM Ürünlerinde Tehdit Avı

Sigma Nedir?

Sigma ilgili Log olaylarını esnek ve kolay bir şekilde tanımlamaya yarayan imza formatıdır. Formatın tüm Loglara uygulanabilmesi, esnek ve yazması kolay olmasından dolayı yeni yeni popülerleşmeye başlamıştır.

Bu projenin amacı ise araştırmacı ve analistlerin algılama yöntemlerini tanımlayabilecekleri ve başkaları ile paylaşabilecekleri yapısal bir kural formatı oluşturabilmek. YARA kurallarına benzetebiliriz.

Bugün herkes analiz için Log verilerini toplar, bunları korale eder kuralları gerekli SIEM veya Log toplama ürünleri ile işler. Ancak YARA kuralları gibi çalışmaları başkaları ile paylaşabilecekleri açık bir format yoktur Sigma bize bu konuda destek sağlıyor.

Bu kurallar birçok platforma uygulanabilir. Aşağıda hangi platformları desteklediği yazmaktadır.

  • Splunk (Dashboard ve Plugin)
  • ElasticSearch Query Strings
  • ElasticSearch Query DSL
  • Kibana
  • Elastic X-Pack Watcher
  • Logpoint
  • Windows Defender Advanced Threat Protection (WDATP)
  • Azure Sentinel / Azure Log Analytics
  • ArcSight
  • QRadar
  • Qualys
  • RSA NetWitness
  • PowerShell
  • Grep with Perl-compatible regular expression desteği
Sigma Kural Yazımı

Projenin kullanımı ise oldukça kolay, Sigma yaml formatını kullandığı için yaml destekleyen bir derleyici ile çalışmamız gerekmekte bu kısımda YARA kural tanımlaması gibi yara uygulaması ile yapılmaz ayrıca bir derleyici gerektirir. Konunun devamında yaml plugini olan Webstorm derleyicisi üzerinden gideceğiz, siz dilerseniz VSCode veya Atom kullanabilirsiniz.

1. Aşağıdaki bağlantıdan repoyu indiriniz.

https://github.com/Neo23x0/sigma

2. Herhangi bir derleyici ile projeyi açıp içerisinde yer alan “rules” dizinine gelin. Bu kısımda örnek hazırlanmış kurallar mevcuttur bunların üzerinden düzenleme yapabilir veya sıfırdan kural yazabiliriz. Aşağıda kural yapısını anlatmaya başlayalım. Kural yapısını anlatırken ilk olarak örnek kurallardan birisini kullanacağım daha sonrasında kendi kuralımızı yazıp bunu Sigmac aracında işleyeceğiz. Sigmac aracını makalenin ilerleyen kısımlarında göreceğiz.

Aşağıda birkaç adet kural var bu kurallar üzerinde incelemelerimize başlayalım. Aşağıda görüldüğü üzere kural yapısı oldukça basit ve anlaşılır. Kural üzerindeki parametre ve aldıkları değerleri yakından inceleyelim. Anlatıma geçmeden önce aşağıdaki fotoğraflarda fark ettiğiniz üzere bir dallanma mevcut aynı parent-child ilişkisine benzetebiliriz.

  • Title: Kural başlığı.
  • Description: Kuralın ne işe yaradığı ile ilgili detaylı bilgi.
  • Author: Kuralı yazan kişi
  • Logsource: Kuralın nereden alındığı. Log kaynağını, platformu, uygulamayı ve algılama için gereken türü tanımlar.  Birden fazla alt parametre alabilir bunlar;
  • Category: Kuralın hangi kategoriye ait olduğu (webserver veya apt gibi)
  • Product:  Herhangi bir üründen alındıysa bu yazılabilir. (Apache, Windows, Unix gibi)
  • Service
  • Date: Kuralın oluşturulduğu tarih.
  • Level: Kuralın  kritiklik derecesi yazılmalıdır.
    • Low
    • Medium
    • High
    • Critical
  • Status: Kuralın durumunu belirtir üç farklı değer alır.
  • Stable: Kural, kararlı olarak kabul edilir ve platformlarda kullanılabilir.
  • Test: Çoğu işi bitmiş son testleri gerçekleştirilen kural
  • Experimental:  Daha hazırlık aşamasında kullanılması önerilmeyen kurallardır.
  • References: Kural içinde yer alan indikatörlerin, Sigma dilinden konuşacak olursak keywordlerin referansları bu kısma yazılabilir.

sigma_kurallari_ile_tehdit_avi_2

Şimdi geldik önemli kısımlara çünkü şu anki anlatacağım parametreler kuralın ana hattını oluşturmakta. SIEM  ve Log yönetim ürünlerine eklendiğinde gerekli alertin dönmesini sağlayan kısmı inceleyeceğiz. Yine bazı alt parametreler almakta bunları da detaylı bir şekilde tanımlayalım.

  • Detection:  Kuralımızdaki indikatörlerin tespiti ve araçlarda log üretilebilmesini sağlayan alan burasıdır. Alt parametreler alır.
  • Keywords: Alert üretilecek indikatörler yani  kuralın yazılma amacı olan durumun belirleyici, karakteristik özellikleri olan anahtar kelimelerdir.

Keywordler görüldüğü üzere tırnak işaretleri içerisine yazılmaktadır. Her keyword tek satırda liste olarak yazılır burada her bir satırın arasında aslında mantıksal bir OR ifadesi vardır.  Anlaşılması açısından aşağıdaki kuralda bunu inceleyelim.

Aşağıdaki kuralda iki farklı keyword vardır bunları anlamlandıracak olursak;

“ 'EvilService' OR(veya) 'svchost.exe -n evil'  eşleşmesinde alert üret “ şeklinde bir anlamlandırma yapabiliriz.

detection:

keywords:

– EVILSERVICE

– svchost.exe -n evil

  • Selection: Bu kısım mantıksal AND ifadesini kullanmak için oluşturduğumuz yapıdır. Burada anahtar kelimelerin dışında hangi üründe hangi sürümde gibi birçok bilgiyi işin içine katabiliriz. Aşağıda örnek ile anlamlandırma yapacağız.

“Security Log kaydında AND(ve) Event ID değeri 517 OR(veya) 1102 olan  eşleşmeleri ara” şeklinde anlamlandırabiliriz.

detection:

selection:

– EventLog: Security

EventID:

– 517

– 1102

Yukarıda görüldüğü üzere Security log kaydını işin içine kattık ve bu Log kaydında 517 ve 1102 numaralı EventID yi aramasını istedik.

Bu kısımda bir parantez açmakta yarar var keyword ve selection parametrelerini kural içerisinde istediğiniz kadar kullanabilirsiniz. Ancak bu kullandığınız parametreleri condition içersinde amacınıza uygun olarak yazmanız gerekmektedir.

  • Condition : Kuralın  platformlar üzerinde nasıl işleneceği ile ilgilenen kısımdır oldukça önemli ve karmaşık alandır.  Kuralınızdaki indikatörleri hangi parametre ile tanımladıysanız bunu yazmanız en temel yöntemdir. Detaylı bir şekilde aşağıda inceleyeceğiz.
  • Mantıksal  AND/OR

“keywords1 or keywords2” veya “keywords1 and keywords2 “   Birden fazla tanımladığınız keyword parametresinin ya ikisinin birden gözükmesi gerektiğini yada ikisinden birinin gözükmesi gerektiğini söylemek için kullanılır.

“all of keywords”: Listelenen herhangi bir öğenin varsayılan davranışı yerine listedeki tüm anahtar kelimelerin görünmesi gerektiği anlamına gelir.

“1 of keywords”: Keyword parametresi içindeki anahtar kelimelerden bir tanesinin geçmesi yeterlidir.

“1 of them”: Parametreden bağımsız olarak tanımlanmış herhangi bir indikatörden bir tanesinin gözükmesi gerektiği anlamına gelir.

“all of them”:Tanımlanmış indikatörlerin hepsinin gözükmesi gerektiğini belirtir.

“selection1 and (keywords1 or keywords2)”: Selection1 parametresi altındaki indikatörlerin ve keyword1 veya keyword2 parametresinden birisinin içindeki indikatörlerin görülmesi gerektiğini belirtir.

Aşağıdaki resimde kuralın yazım şekli verilmiştir.

sigma_kurallari_ile_tehdit_avi_2

Sigma ile Kendi Kuralımızı Oluşturalım
1.Sigma ile Robots.txt Ziyaret Tespiti

İlk kuralımız oldukça basit olsun örneğin Apache üzerinde çalışan bir web hizmetimiz olduğunu var sayalım burada robots.txt sayfasına girildiği zaman alert üretilmesini istiyoruz. Konunun anlaşılması açısından böyle bir örnek verdim, robots.txt botlar tarafından ziyaret edildiği için FalsePositive üretecektir.

sigma_kurallari_ile_tehdit_avi_4

Yukarıda görüldüğü üzere tanımlamamızı yaptık. Burada tekrar belirtmekte yarar var önemli olan Detection alanıdır, bu alan kuralımızın etkinliğini belirleyecektir.     ,

2. WordPress Sistemlerde xmlrpc Zafiyetinin Tespiti

Bu zafiyetimiz güncel wordpress sistemlerde aktif olan zafiyetlerden biridir. Xmlrpc.php sayfası sadece post isteklerini kabul eden bir sayfadır. Eğer manipülasyon yapılarak post isteği gönderilirse belli parametreler ile zafiyete uğratılabilir. Aşağıda zafiyetin kuralı eklenmiştir.

sigma_kurallari_ile_tehdit_avi_5

Kuralımızı yazdığımıza göre bunu sigmac ile splunk için dönüştürüp kullanabiliriz.

sigma_kurallari_ile_tehdit_avi_6

Sigmac İle Kuralı Dönüştürme

Tools dizini içerisinde yer alan Sigmac uygulaması ile yazdığımız kuralları kullanılacak platforma uygun şekilde dönüştürür. Kullanım için Python3 gereklidir. Uygulamayı kontrol etmek için aşağıdaki komutu çalıştırmanız yeterlidir. Araç repodan indirdiğiniz dosya içeriğinde bulunan tools dizini içerisindedir.

Python3 sigmac –h

sigma_kurallari_ile_tehdit_avi_7

Kuralı dönüştürmenin birden fazla yolu vardır aşağıda bunları detaylı olarak işleyeceğiz.

Tek Kuralı Dönüştürmek

-t parametresi ile çevrilecek hedef platform seçilir.

Sigmac – t splunk  -r rules/web/web_webshell_keyword.yml

Kural Setini Dönüştürmek

Çevirme işlemi sırasında backend tarafındaki hataları göstermemesini istiyor isek -I parametresi kullanabiliriz. –r parametresi ile çevrilecek kuralın yolunu recursive olarak belirtebiliriz.

Sigmac  – I – t splunk  -r rules/web/

Custom Config ile Kural Dönüştürmek

-c parametresi ile config dosyamızın yolunu belirtebiliriz. Burada parantez açmakta yarar var genelde kurallar config dosyası belirtmeden çalışmamakta bu yüzden tools dizini içerisindeki config dosyalarını dönüştürme aşamasında kullanabilirsiniz.

sigmac -t splunk -c config/splunk-windows-all.yml  ../rules/web/web_webshell_keyword.yml

Genel Config Dosyası ile Kural Dönüştürmek

Aşağıdaki komutu açıklayacak olursak,  dönüştürülecek hedef olarak ElasticSearch seçilmiş(-t es-qs) daha sonrasında config  dosyası belirtirken genel kullanım sağlayan sysmon config dosyası seçilmiş ve Windows için process_creation kuralının dönüştürülmesi hedeflenmiştir.

sigmac -t es-qs -c tools/config/generic/sysmon.yml -r rules/windows/process_creation

Sigma ile SIEM Ürünlerinde Tehdit Avı adlı makalemizin ilk serisi bu şekilde bir sonraki seride detaylı dönüştürme işlemleri ve SIEM ürünlerine bu kuralların uygulanmasını göreceğiz.

Hüseyin Orçun KARATAŞ

Diğer Blog Yazıları_

Sosyal Medya Kullanımının Riskleri
Sosyal Medya Kullanımının Riskleri
Infraskope Server ve Özellikleri
Infraskope Server ve Özellikleri
Kritik Sunucular Üzerindeki Aktivitelerin Loglanması
Kritik Sunucular Üzerindeki Aktivitelerin Loglanması
Kurumlarda Ağ Güvenlik Stratejileri
Kurumlarda Ağ Güvenlik Stratejileri
WPA-WPA2 Güvenlik Standartlarına Yönelik Saldırı: KRACK (KEY-REINSTALLATION-ATTACK)
WPA-WPA2 Güvenlik Standartlarına Yönelik Saldırı: KRACK (KEY-REINSTALLATION-ATTACK)
Log Yönetiminde Ajanlı/Ajansız Çözümler
Log Yönetiminde Ajanlı/Ajansız Çözümler
Herkesin aklındaki soru: Yapay Zeka Nedir?
Herkesin aklındaki soru: Yapay Zeka Nedir?
Discovery of DLL Hijack on Trend Micro AntiVirus+ | CVE-2018-18333
Discovery of DLL Hijack on Trend Micro AntiVirus+ | CVE-2018-18333
Web Cache Poisoning
Web Cache Poisoning
XML EXTERNAL ENTITY INJECTION AND OOB (OUT-OF-BAND) DATA RETRIEVAL
XML EXTERNAL ENTITY INJECTION AND OOB (OUT-OF-BAND) DATA RETRIEVAL
ARP Poisoning
ARP Poisoning
Cross-Site Request Forgery (CSRF) Zafiyeti
Cross-Site Request Forgery (CSRF) Zafiyeti
SSRF (Server Side Request Forgery)
SSRF (Server Side Request Forgery)
BlueBorne
BlueBorne
Server Side Template Injection Nedir?
Server Side Template Injection Nedir?
Linux Restricted Shell Atlatma Teknikleri
Linux Restricted Shell Atlatma Teknikleri
Discovery of Sandbox Escape on Comodo Container(Antivirus&Firewall)
Discovery of Sandbox Escape on Comodo Container(Antivirus&Firewall)
SDR-Sharp Kullanımı
SDR-Sharp Kullanımı
Log Yönetimi | Log Management | Veritabanı Log | Siem
Log Yönetimi | Log Management | Veritabanı Log | Siem
Cyber Kill Chain, Bir Siber Saldırının Yaşam Döngüsü
Cyber Kill Chain, Bir Siber Saldırının Yaşam Döngüsü
Phishing Nedir?
Phishing Nedir?
“GOLD” Affix Phishing Attack
“GOLD” Affix Phishing Attack
Sızma Testi ve Ödül Avcılığı Hizmetleri
Sızma Testi ve Ödül Avcılığı Hizmetleri
Güvenilir Olarak CAPTCHA Yapılandırılması
Güvenilir Olarak CAPTCHA Yapılandırılması
Basit Kriptolojiden Günümüze Evrilişi
Basit Kriptolojiden Günümüze Evrilişi
Dosya Sistem Analizinin Önemi
Dosya Sistem Analizinin Önemi
HTTP Request Smuggling (HTTP İstek Kaçakcılığı) Nedir?
HTTP Request Smuggling (HTTP İstek Kaçakcılığı) Nedir?
KVKK Kapsamında Veri Keşfi Maskeleme ve Şifreleme
KVKK Kapsamında Veri Keşfi Maskeleme ve Şifreleme
Sosyal Medya Kullanımının Riskleri
Sosyal Medya Kullanımının Riskleri
Sızma (Penetrasyon) Testi Nedir?
Sızma (Penetrasyon) Testi Nedir?
Start Up Kültürü
Start Up Kültürü
Sigma Kuralları ile SIEM Ürünlerinde Tehdit Avı
Sigma Kuralları ile SIEM Ürünlerinde Tehdit Avı
Kritik Altyapılar ve SCADA Güvenliği
Kritik Altyapılar ve SCADA Güvenliği
Zararlı Yazılım Analiz Teknikleri
Zararlı Yazılım Analiz Teknikleri
Uzaktan Çalışma Modellerinde Siber Güvenlik Riskleri
Uzaktan Çalışma Modellerinde Siber Güvenlik Riskleri
Pandemi Sürecinde Siber Güvenlik Riskleri
Pandemi Sürecinde Siber Güvenlik Riskleri
SOC Nedir ve SOC Merkezleri Nasıl Çalışır?
SOC Nedir ve SOC Merkezleri Nasıl Çalışır?
PHISHING Hakkında Her şey
PHISHING Hakkında Her şey
Sosyal Mühendislik Nedir?
Sosyal Mühendislik Nedir?
Siber Hijyen
Siber Hijyen
Adli Bilişim (Digital Forensic) Nedir?
Adli Bilişim (Digital Forensic) Nedir?
DHCP Spoofing Saldırısı Nedir, Nasıl Yapılır?
DHCP Spoofing Saldırısı Nedir, Nasıl Yapılır?
FAIL2BAN İLE SSH BRUTE FORCE SALDIRILARINI ÖNLEME
FAIL2BAN İLE SSH BRUTE FORCE SALDIRILARINI ÖNLEME
BULK EXTRACTOR ARACIYLA DİSK İNCELEME
BULK EXTRACTOR ARACIYLA DİSK İNCELEME
SolarWinds Vaka Analizi
SolarWinds Vaka Analizi
Frida ile SSL Pinning Bypass
Frida ile SSL Pinning Bypass
COOKİE Nedir? Nasıl Çalışır?
COOKİE Nedir? Nasıl Çalışır?
Bilgi Güvenliği Test ve Değerlendirmeleri Teknik Kılavuzu
Bilgi Güvenliği Test ve Değerlendirmeleri Teknik Kılavuzu
Dridex Bankacılık Trojanı Teknik Analiz Raporu (TR)
Dridex Bankacılık Trojanı Teknik Analiz Raporu (TR)
Adwind Rat Technical Analysis Report (ENG)
Adwind Rat Technical Analysis Report (ENG)
SOC Nedir, Firmalar İçin Neden Önemlidir?
SOC Nedir, Firmalar İçin Neden Önemlidir?
Blockchain Nedir?
Blockchain Nedir?
İşlemcilerin Koruma Mekanizması ve Koruma Mekanizmasının Atlatılması
İşlemcilerin Koruma Mekanizması ve Koruma Mekanizmasının Atlatılması
Active Directory Güvenlik İpuçları
Active Directory Güvenlik İpuçları
Nisan 2022 Siber Güvenlik Bülteni
Nisan 2022 Siber Güvenlik Bülteni
Mavi Takım Üyeleri İçin Windows Core Process
Mavi Takım Üyeleri İçin Windows Core Process
Kişiler İçin Bilgi Güvenliği Rehberi
Kişiler İçin Bilgi Güvenliği Rehberi
DDoS Nedir?
DDoS Nedir?
C Dilinde Dosya Yönlendirmeleri (IO Redirection)
C Dilinde Dosya Yönlendirmeleri (IO Redirection)