![](https://www.infinitumit.com.tr/wp-content/uploads/2022/12/word-image-11143-1.png)
Sigma tarihçesi ve sigma nedir?
Sigma; Florian Roth ve Thomas Patzke tarafından ortak bir çalışmayla yapılmış, 2017 yılında Florian Roth tarafından piyasaya sürülmüştür. Elimizde bulunan log olaylarını kolay bir şekilde tanımlamamıza yardımcı olur. Kendine ait bir formatı vardır. Bu format sayesinde tüm loglara uygulanabilmesi sebebiyle popüler bir kural tanımı olmaktadır.
Tüm dünyadaki SOC’ler için mevcut olan SIEM veya merkezi günlük kaydı platformu için tek bir kullanım senaryosunun dönüştürülmesine ihtiyaç vardı. Neyse ki Sigma Kuralları, analistler için kuralları istedikleri platforma dönüştürmeleri için katı bir format görevi görmektedir. Projenin en büyük amacı; yeni saldırgan davranışları belirleyerek araştırmacılar ve istihbarat arasında tespit edilen davranışları paylaşmaktır.
Sigma kuralları SIEM çözümlerine özel bir arama sorgusu başlatabilir. Desteklediği çözümler aşağıda yer almaktadır:
· Splunk
· ElasticSearch Query Strings and DSL
· Kibana
· Microsoft Defender Advanced Threat Protection (MDATP)
· Azure Sentinel
· QRadar
· LogPoint
· Qualys
· RSA NetWitness
· LimaCharlie
· ArcSight
· PowerShell and Grep
Sigma kuralları YARA ve Snort kurallarına benzer. Snort ağ trafiği YARA ise dosyalar için neyi ifade ediyorsa Günlük loglar da Sigma için geçerlidir. Sigma aşağıdaki günlük türlerini destekler:
· Güvenlik duvarı logları
· Web uygulama logları
· Proxy/ VPN logları
· İşletim sistemi logları
Ø Olay günlükleri
Ø Denetim günlükleri
Ø Sysmon Etkinlikleri
! Sysmon bilgisayarımızda gerçekleşen işlemleri izlememizi sağlar. Şüpheli sayılabilecek davranışlar Sysmon tarafından algılanır ve Event loglara kaydedilir.
Sigma dosyasına ulaşmak için Github linki : https://github.com/SigmaHQ/sigma
Sigma Kural Yapısı
Sigma kurallarını oluştururken belirli başlıklar adı altında kural yazmamız gerekmektedir. Bu başlıklar aşağıdaki görselde belirtilmiştir:
· Title (Başlık): Kuralın adı yazılır.
· ID: Kuralın benzersiz olabilmesi için belirlenen UUID Değeri.
· Status (Durum): Kuralın durumunu belirtir (experimental, normal)
· Description (Açıklama): Kuralın neden yazıldığını açıklar.
· Author (Yazar): Kural yazan kişiye ait bilgiler içerir.
· Date (Tarih): Kuralın oluşturulma tarihi
· Modified (Modifiye): Kuralın değiştirildiği tarih, yapılan yeni değişiklikler
· Logsource: Kuralın nereden geldiğini, log kaynaklarını, bulunacağı platformu gibi bilgilerin yer aldığı kısımdır. Birden fazla alt parametre alabilir.
Ø Category: Kuralın hangi kategoriye ait olduğunu belirtir.
Ø Product: Bir üründen alındıysa belirtmek için yazılır (Apache, Windows gibi).
Ø Service: Hangi servisleri kullanarak kuralın oluşturulduğunu açıklar.
· Detection (Algılama): Kuralımızdaki göstergelerin tespiti ve araçlarda log üretilmesini sağlayan kısımdır.
Ø Keywords (Anahtar): Alarm üretilecek göstergelerin yani kuralın yazılma amacına uygun anahtar kelimeler bu kısımda tırnak işaretleri içerisinde gösterilir.
Ø Condition (Koşul): Kurala ait kullanılan koşul cümleleri burada yazılır.
· falsepositives: Hangi olayların veya durumların bu kuralı tetikleyerek yanlış pozitife yol açabileceğini açıklayan açıklama alanıdır.
· Level: Kuralın kritiklik derecesinin yazıldığı kısımdır.
YAML Formatı ve Visual Studio Nedir + Kurulumu Nasıl Yapılır?
YAML, veri serileştirme yapabilen genellikle dosya yapılandırmada kullanılan bir dildir. YAML, geniş veri tiplerine sahip olduğu için tüm programlama dillerinde ortak olarak kullanılabilmektedir. Kolay okunabilen,esnek ve geliştirilebilir yapısı sayesinde XML ve JSON gibi daha komplike dillere alternatif olarak kullanılması amaçlanmıştır.
Visual Studio Code, Microsoft tarafından Windows,MacOS ve Linux gibi işletim sistemleri için geliştirilmiş hata ayıklama, kod tamamlama ,gömülü GİT kontrolu gibi işlemleri yapabilen bir kaynak kod düzenleyicisidir.
Adım 1:Visual studio Code üzerinden YAML formatının etkinleştirilmesi işlemini gerçekleştiriyoruz.
Adım 2: Github hesabından indirmiş olduğumuz Sigma dosyasını uygulamaya entegre ediyoruz.
Adım 3: Entegre ettiğimiz Sigma dosyamızdan yazılmış olan kurallara erişim sağlamış bulunmaktayız.
Örnek Kural yazma
Sigma Kurallarının mantığını kavradıktan sonra örnek kural oluşturma işlemlerine geçiyoruz.
Örnek :Sitemap.xml Örneği
Bir sızma testi yapılırken ilk aşama bilgi toplama aşamasıdır. Bu aşamada hedef Url kısmının sonuna ‘/sitemap.xml’ eklediğimiz zaman web sitesinin bağlı olduğu URL hakkında ne zaman güncellendikleri, ne kadar önemli oldukları, URL’ in başka dillerde oluşturulup oluşturulmadığına dair çeşitli bilgiler verir. Bu yöntem bilgi toplama aşamasında önem taşımaktadır.
Yapmış olduğumuz bu örnekte Sitemap.xml ile sistemimizin URL kısmı taratıldığı zaman alert üretilmektedir. Bu sayede bilgi toplama aşamasında olan bir kullanıcı hakkında bilgi sahibi olmaktayız.
Sigmac Kullanımı +Örnek uygulama
Sigmac, oluşturduğumuz sigma kural yapısını test ederek platformlara uygun hale getiren bir tooldur.
Adım 1: HTTP,HTTPS ve FTP protokellerinden indirme işlemi yapan wget komutunu kullanarak github yolunu yazarak kali linux indirme işlemini gerçekleştiriyoruz.
Adım 2: Kali Linux’a indirdiğimiz master.zip dosyasını terminal üzerinden unzip komutu sayesinde zip dosyasından çıkmasını sağlıyoruz.
Adım 3: Sigma’nın bir toolu olan sigmac ile yazdığımız kuralları platformlara uygun şekilde dönüştürebiliriz. Aşağıdaki gibi gerekli olan python3 kullanarak sigmac kullanımına erişebiliriz.
Sigma kural dönüştürmenin birden fazla yöntemi bulunmaktadır. Biz burada iki farklı dönüştürme aracı göreceğiz.
Sigmac aracı ve Uncoder.IO sitesini kullanarak yazdığımız kuralları splunk formatına dönüşümünü gerçekleştirdik.
Tek Kural Dönüştürme
-t parametresi ile dönüştürülecek SIEM çözüm yani hedef çıktı formatı seçilir. -c parametresi ile yapılandırmasını ekledikten sonra kuralın yolunu belirtiyoruz.
- Low seviyesinde oluşturduğumuz sitemap.xml örneğinin sigmac aracını kullanarak dönüştürdüğümüz splunk formatı;
Aynı dönüştürme işlemini SOC Prime’ın SIEM dili dönüştürmesi için kullanılan ücretsiz bir araç olan Uncoder.IO üzerinden de gerçekleştiriyoruz.
Uncoder.IO çıktısı
- Kural Kümesi Dönüştürme
Kural kümesi dönüştürme işleminde backend hatalarının gösterilmemesi için -I parametresi kullanılır.Kural kümesini dönüştürme de yine kuralların olduğu klasörün yolu seçilerek, kuralların hepsini görebilmekteyiz.
- High ve Critical Kural Dönüştürme
Burada bir filtreleme işlemi gerçekleşmektedir. -f parametresini kullanarak ‘level≥ high’ şeklinde filtrelendiğinde seviyesi high ve üzeri olan kuralları gösterir.
Kaynakça
Sigma github kaynak : https://github.com/SigmaHQ/sigma
-https://fourcore.io/blogs/sigma-rules-open-source-threat-hunting-approach
-https://syedhasan010.medium.com/defenders-toolkit-102-sigma-rules-4a623acb2036
-https://blog.apnic.net/2021/10/20/sigma-a-generic-log-signature-format/
-https://medium.com/ax1al/exploring-sigma-rules-12e9f1bf2685
-https://www.systemconf.com/2021/03/21/what-is-sigma-threat-hunting-in-siem-products-with-sigma-rules-example-sigma-rules/
– https://www.nextron-systems.com/2018/02/10/write-sigma-rules/
-https://gaissecurity.com/blog/sigma-kurallari-ile-siem-urunlerinde-tehdit-avi/
– https://www.youtube.com/watch?v=HTCoQPSnIiU
-https://www.csoonline.com/article/3663691/sigma-rules-explained-when-and-how-to-use-them-to-log-events.html