Korelasyon Senaryoları – Bölüm I

Kavramlar ve Derecelendirme (Skorlama)

Soğuk bir kış akşamında siber güvenlik dünyasında hızla yayılan korelasyonlar hakkında 6-7 bölümlük bir blog serisi hazırlayalım dedik. Çayımızın da sıcak ve taze olduğunu da belirteyim. Yazıyı okumaya başlamadan siz de çayınızı alın yudumlayın ve SIEM (Security Information & Event Management) dünyasına dalalım ne var ne yok :)) . Firewall, switch, AP, AD ilgilenen arkadaşların SIEM ile dirsek teması log toplama aşamasında log format, SIEM ip ve SIEM port ayarlamadan öteye geçmiyordu. Ve bu ayarlama süresi de oldukça kısadır zaten bu arkadaşlarında SIEM ile alakalı araştırma yapmak için fazla zamanları yoktur. Bu blog serimizde SIEM olayını kitabın tam ortasında konuşacağız. Direkt taze, canlı ve girişik senaryolar konuşacağız. Sizin de varsa senaryolarınız yorum kısmına yazarsanız bilgiyi paylaştırdıkça çoğaltmış olacağız.

Korelasyon senaryolarından bahsetmeden önce SIEM ürünlerinde kullanılan tanımlardan bahsetmek istiyorum. Aşağıdaki tanımlamalardan sonra bir sonraki blog yazımız ile devam edeceğiz.

Korelasyon sistemi, tanım ve motor olmak üzere başlıca iki ana parçadan oluşur. Tanım da olaylar arasındaki ilişkilerin belirlenebilmesi için gerekli bağıntılar, kurallar, kategoriler, şartlar vb. elemanlar içerir. Motor kısmında ise olaylar (event, log) teker teker incelenip, tanım kısmında verilen kuralları sağlayan olaylar ve olaylar kümesinin var olup olmadığı tespit edilir. Eğer olaylar arasında bu tanımlara uygun bir ilişki tespit edilmişse uyarı ve alarmlar üretilecektir. Motor olayları çok daha hızlı işlemek için belleği (in-memory) kullanır. Korelasyon kuralı ile eşleşen kayıtları hafızaya gönderip hesaplamalar başlatılır. Ayrıca sistem çevrimdışı (offline) çalışmayı da desteklemektedir. Yeni yazılan bir kuralın geçmiş veriler içerisinde gerçekleşip gerçekleşmediği sorgular ile kontrol edilir. Bu özelliği Geçmişe Yönelik İlişkilendirme (Tarihsel Korelasyon) olarak da adlandırılır. Sistem bu özellikleri sağlayabilmek için pasif olarak çalışır, yani aktif sistemlerin çalışmasını etkilemez, onları yavaşlatmaz veya bozmaz. Olaylar arasındaki ilişkilerin tespiti çok fazla olayın hafızada tutulmasına gerek duyabileceğinden, sistemin hafıza ve işlemci gereksinimleri kontrol altında tutulmalıdır.

Tanım sistemi aşağıda verilen parçalardan oluşmaktadır.

Korelasyon (İlişki, bağıntı)
Kural
Hiyerarşik Yapı
Kategori
Grup
Ayarlar
Skorlama (Risk Hesaplama) – Karar Mekanizması
Kod Tablosu (Aktif Listeler)
Aksiyonlar

Korelasyon

Her bir tanım korelasyon kuralı olarak anılır. Korelasyon birbiriyle ilişkili kuralları barındırır ancak diğer korelasyon tanımları ile arasında bir ilişki yoktur. Korelasyonun kendisi alarm üretmez, çünkü asıl alarm üreten ona bağlı kurallardan herhangi biri olmaktadır. Alanları ID, adı, durum, öncelik, tipi şartlar vb. olacaktır.

Öncelik 1-5 arasındadır. 5 en yüksek değerdir. Korelasyon da tanımlanan ilişki kullanıcı için ne kadar önemli ise öncelik değeri o kadar yüksek olmalıdır. Öncelik değeri ayarlanarak bir korelasyonun alarm üretme potansiyeli artırılıp azaltılabilir.

Korelasyon tipi olarak normal ve hızlı olmak üzere iki değer kullanılmaktadır. Normal korelasyonda her bir olay ayrı ayrı dikkate alınıp yeni bir korelasyon örneği (instance) olup olmadığı incelenir. Hızlı korelasyonda ise bir korelasyon örneği (instance) başladığında sonradan gelen olaylar o örneğin devamı kabul edilir, o örnek kapatılana kadar başka korelasyon örnekleri başlatılmaz. Bu yöntem port taraması tespiti gibi çok sayıda (binlerce) olayın ardarda gerçekleşmesinin gerektiği durumlarda kullanılır. Aksi halde binlerce olay binlerce korelasyon örneği açacak, hem hafıza kullanımı üstel olarak artacak hem de işlemci kullanımı artacaktır.

Korelasyonda tüm alt kurallar için geçerli olmak üzere olayların elenmesinde yardımcı olacak şartlar girilebilmektedir.

Kural

Korelasyon tanımları hiyerarşik bir kural topluluğundan oluşmaktadır. Her tanım daima tek bir kural (initial rule) ile başlamaktadır. İlk kuralın altında ve / veya dalları şeklinde N seviye alt kural tanımlanabilmektedir. Tek bir olay ilk kuralın şartlarını yerine getirirse o korelasyonun bir örneği açılıp hafızada tutulacak, daha sonra gelen olayların sonraki kuralları sağlayıp sağlayamadığı kontrol edilecektir. Alanları ID, adı, güvenilirlik, olay sayısı, süre aşımı, negatif kural mı, kaynak ip, kaynak port, hedef ip, hedef port, plugin ID, plugin SID, kategori ID, yeni olay başlatma, farklı değerleri say, şartlar vb. şeklinde olacaktır.

Hiyerarşik Yapı


Şekil 1 - Korelasyon Kural Ağacı

Güvenilirlik 1-10 arasında bir değerdir (10 en yüksek değerdir). Güvenilirlik bir kuralın istenen ilişkinin gerçekten var olup olmadığının derecesini gösteren bir değerdir. Yani 1 oluşan sonuca güvenilemeyeceğini, 10 ise sonucun tam güvenilir olduğunu gösterir. Ayrıca güvenilirlik seçenekleri arasında 1,2,...,10 olduğu gibi +1,+2,…,+9 şeklinde değerler de vardır. Tam rakamlar o kural gerçekleştiğinde korelasyonun güvenilirliğini verilen değer yapmaktadır. Artı ile başlayan seçeneklerde ise korelasyonun güvenilirliği önceki değere eklenmektedir. (En fazla 10’a yükseltebilir). Böylece her alt kural sağlandığında güvenilirlik artmış olmakta ve hedeflenen sonuca gitgide yaklaşılmaktadır.

Olay sayısı ve süre aşımı kaç tane olayın ne kadar süre (sn) içinde gerçekleşmesi beklendiğini  göstermektedir.

Negatif kural” istenen olayın gerçekleşmemesi halinde kuralın doğrulanması durumudur. Yani istenen bir olay belirli bir süre içinde gerçekleşmezse kural sağlanmış olur. Örnekle açıklamak gerekirse bir sistem kapandıktan 5 dakika sonra sistemin tekrar açıldığına dair bir olay gerçekleşmezse alarm üretilmesinin istenmesi gibi. 

Kurallar statik olarak kaynak ip/port, hedef ip/port, plugin ID ve plugin SID alanlarını kullanmaktadır. Bunlar dışındaki olaylara ilişkin alanlar şart olarak verilebilmektedir. Genel olarak Plugin ID olayın kaynağını Plugin SID olayın tipini belirtmektedir. Kaynak ip/port, hedef ip/port, plugin ID, plugin SID, kategori ID için “ANY” değeri seçilebilmektedir. Bu değer herhangi bir değer olabilir, dikkate alma anlamına gelmektedir. Ayrıca kaynak ip/port, hedef ip/port için virgülle ayrılmış birden fazla değer girilebileceği gibi önceki kuralları sağlayan ip ve port bilgilerinin aynısını kullan gibi seçenekler de olabilir.

Kategori ID, plugin ID ve plugin SID’ler arasında ilişkiyi tutan bir tablo sunmaktadır. Böylece her bir plugin için ayrı ayrı korelasyon kuralları yazılmasına gerek olmadan, farklı olay kaynaklarını içeren ortak kurallar yazılabilmektedir.

Yeni olay başlatma” seçeneği, eğer bir olay herhangi bir kuralı sağlıyorsa, o olayın başka kuralları sağlayıp sağlamadığı kontrol edilmeyecektir anlamı taşır. Bu sistemin daha hızlı çalışmasını sağlayacaktır. Ancak bazı durumlarda olaylar arasındaki ilişkilerin gözden kaçmasına sebep olabilir. Bu duruma dikkat edilmelidir.

Farklı değerleri say” seçeneği, örnek olarak port taramalarında vb. ilişkilerin tespitinde kullanılmak üzere her portu değil de birbirinden farklı portları dikkate alan bir özelliktir. Kaynak ip/port, hedef ip/port için geçerli olmaktadır.

Sabit alanlar ve diğer olaylara bağlı alanlar üzerinde şartlar girilebilmektedir.

Kategori

Plugin ID (olay kaynağı) ve Plugin SID (olay tipi) alanları arasındaki ilişki tutulur. Kuralda bu kategori kullanılır. Böylece bir kuralın hangi olay kaynakları üzerinde çalışacağı daha esnek belirlenmiş olur. Kategoriler farklı sunucular üzerindeki aynı türdeki olayları birlikte inceleme şansı verir. Örnek bir kategori yapısı aşağıdaki verilmiştir.

Plugin ID
Plugin SID 
100
1401
100
1402
101
ANY
103
1402
Tablo 1 - Korelasyon Kategorisi

Grup

Korelasyon tanımlarını hiyerarşik bir düzende tutmak için gruplama yapılabilmektedir. Aynı tip korelasyon tanımları ve kategori tanımları gruplanabilmektedir.

Ayarlar

Ayarlarda korelasyonun çalışıp çalışmayacağı, minimum risk seviyesi (ilerde açıklanacak) ve saklanacak log (olay, kayıt) sayısı yer almaktadır. Kurallar işlenirken hesaplanan risk seviyesi burada verilen risk seviyesine eşit ve yüksek ise alarm üretilmektedir. Alarm üretildiğinde kuralı tetikleyen olayların kaç tanesinin saklanacağı da burada belirlenmektedir. Tüm olaylar saklanmamaktadır, çünkü bazı kuralların tetiklenmesi için binlerce olay gerekebilir.


Şekil 2 - Korelasyon Ayarları

Motor(Engine)

Tanımda verilen kurallar çalıştıran, eğer istenen kural (lar) sağlanmışsa uyarı / alarm üreten, kaydeden veya aksiyon tanımlarını tetikleyen parçadır. Motorun çalışma şekli ve teknolojisi CRYPTTECH'e ait bir teknolojidir ve hakları korunmuştur. Bu motor, CRYPTOSIM sistemi ile entegre çalışabildiği gibi ayrı bir serviste ya da sunucuda çalışabilmektedir. Dağıtık mimarideki senaryolarda birden fazla korelasyon motoru çalışıp kuyruklama mekanizması olarak Kafka konularından (topic) akan veriyi çekip işleyip hesaplama yapabilmektedir.

Uyarı ve Olay Yönetim Sistemi

Olayların işlenmesi sonucunda, korelasyon kuralları örnekleri belirli risk seviyesini aşarsa alarmlar üretilecek.  Bu risk seviyesi aşağıdaki gibi hesaplanacaktır. İlgili bildirimler, mail, sms, snmp olarak iletilebilir. Alarmlar CRYPTOSIM üzerindeki yerel olay yönetim sistemine bilet açılabilir. Bu bilet/görevlerin takibi ve atamaları sistem kullanıcıları tarafından yapılabilir. 

Skorlama (Risk Hesaplama) – Karar Mekanizması

Risk üç parametreyle hesaplanır. Bunlar korelasyon önceliği (priority), kural güvenilirliği (reliability), varlık değeri (asset value). Öncelik 1 ie 5 arasındadır,  güvenilirlik 1 ile 10 arasında ve varlık değeri 1 ile 5 arasında bir değerdir (5 ve 10 en yüksek değerdir).  Risk aşağıdaki gibi hesaplanır:

      Öncelik  X  Güvenilirlik  X  Varlık Değeri
Risk  =  ------------------------------------------------------------------------
25

Varlıklar için değer kullanılmayacaksa en yüksek değer olan 5 değeri alınır. Sonuç 1 ile 10 arasında bir risk değeridir. Risk değeri istenen bir değerden itibaren alarm üretmek için kullanılır. Bu değer mantıksal olarak 5 olabilir. Hesaplanan risk, Ayarlar > Sunucu Konfigurasyon > Korelasyon kısmında Minimum Risk Alarm Seviyesi olarak belirlenen bu değeri aştığında alarm üretilir.

İlerleyen bölümlerimizde Şekil 3'te görseldeki gibi çeşitli korelasyona senaryoları paylaşarak SIEM ürünümüz SIEM 1 gibi çevik ve hızlı hale getirmeyi konuşacağız.

Şekil 3 - Genel SIEM görünümü

Ve böylelikle SIEM'e ait tanımları yaparak korelasyonlar için temelleri oluşturduk. Bir sonraki kış akşamında yeni yazımla görüşmek dileğiyle.

Fatih ÜNLÜ
@SOC

Yorumlar

Bu blogdaki popüler yayınlar

1. Geleneksel Stajyer CTF Soru ve Cevapları

B*-Tree (BTree, BPlusTree) Veri Yapısı ile Veri İndeksleme

2. Geleneksel Stajyer CTF Soru ve Cevapları - 2017