Hoşgeldin Misafir

#STHM-Elastic Stack: Temel Bilgiler

CW-ommah

17 Ocak 2022
904 Mesaj
TIM Görevleri
1

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Allahın Rahmeti Ve Bereketi Üzerinize olsun
Selamun Aleyküm Dostlarım bu makalemizde hep beraber Elastic Stack nedir nasıl kullanılır arayüzü nasıldır ve ne için kullanılır bu gibi unsurlara değineceğiz

Elastic Stacak’e Genel Bakış
Elastic Stack (ELK), başlangıçta büyük miktarda veriyi depolamak, aramak ve görselleştirmek amacıyla geliştirilmiş bir açık kaynak çözümüdür. Kuruluşlar, uygulama performansını izlemek ve geniş veri kümeleri üzerinde arama yapmak için bu teknolojiyi kullanmaya başlamıştır.
Zamanla sunduğu özellikler, güvenlik operasyonları alanında da popüler hale gelmesini sağlamıştır. Günümüzde birçok SOC (Security Operations Center) ekibi, ELK’yi neredeyse bir SIEM çözümü gibi kullanmaktadır.
Elastic Stack, farklı açık kaynak bileşenlerin bir araya gelmesiyle oluşur. Bu bileşenler birlikte çalışarak:

  • Herhangi bir kaynaktan veriyi toplar,
  • Bu veriyi depolar ve aranabilir hale getirir,
  • Gerçek zamanlı görselleştirmelerle analistlere sunar.
Bu sayede Elastic Stack, hem performans izleme hem de güvenlik olaylarının analizinde güçlü bir araç olarak öne çıkar.
resim1.png

Elasticsearch

Elastic Stack’in ilk bileşeni olan Elasticsearch, JSON formatındaki belgeler için tam metin arama ve analiz motorudur. Verileri depolar, analiz eder ve korelasyon kurar. Ayrıca RESTful API desteği sayesinde kullanıcılar, verilerle etkileşim kurmak için güçlü ve esnek sorgular çalıştırabilir. Büyük veri kümeleri üzerinde hızlı arama yapabilmesi, onu hem performans izleme hem de güvenlik operasyonları için kritik hale getirir.

Logstash

Logstash, farklı kaynaklardan gelen verileri işleyen güçlü bir veri işleme motorudur. Gelen verileri alır, filtreler veya normalize eder ve ardından hedefe iletir. Bu hedef, Kibana arayüzü, Elasticsearch veritabanı, bir dosya veya belirli bir port olabiliresim2.pngr.
Bir Logstash yapılandırma dosyası üç ana bölümden oluşur:

  • Input (Girdi): Verinin hangi kaynaktan alınacağını tanımlar. Örneğin web sunucusu logları, sistem logları veya veritabanı kayıtları.
  • Filter (Filtre): Alınan verilerin nasıl işleneceğini belirtir. Burada logların normalize edilmesi, belirli alanların ayrıştırılması veya gereksiz bilgilerin temizlenmesi sağlanır.
  • Output (Çıktı): İşlenmiş verilerin nereye gönderileceğini belirler. Bu, Elasticsearch, Kibana, bir dosya veya dinleme portu olabilir.
Logstash, çok sayıda Input, Output ve Filter eklentisini (plugin) destekler. Bu esneklik sayesinde farklı veri kaynakları kolayca entegre edilebilir ve işlenmiş veriler gerçek zamanlı analiz için hazır hale gelir.

Beats

Beats, uç noktalara kurulan ve data-shipper (veri taşıyıcı) olarak çalışan hafif ajanlardır. Temel görevleri, uç noktalardan topladıkları verileri Elasticsearch’e aktarmaktır. Her Beat tek amaçlı bir ajan olarak tasarlanmıştır; yani belirli bir veri türünü toplar ve Elasticsearch’e gönderir. Bu yapı sayesinde farklı kaynaklardan gelen veriler kolayca merkezi bir noktada toplanır ve analiz edilebilir hale gelir.
En yaygın kullanılan Beats türleri şunlardır:

resim3.png
  • Filebeat: Log dosyalarını toplar ve Elasticsearch’e gönderir. Web sunucusu logları, uygulama logları gibi dosya tabanlı kayıtlar için kullanılır.
  • Metricbeat: Sistem ve servislerden metrik verilerini toplar. CPU kullanımı, bellek durumu, disk ve ağ istatistikleri gibi performans ölçümleri sağlar.
  • Packetbeat: Ağ paketlerini yakalar ve analiz eder. Ağ trafiği üzerinden geçen protokolleri (HTTP, MySQL, DNS vb.) görünür hale getirir.
  • Winlogbeat: Windows Event Log verilerini toplar. Kullanıcı aktiviteleri, kimlik doğrulama girişimleri ve sistem olayları için kritik bir kaynaktır.
  • Auditbeat: Güvenlik odaklıdır; dosya bütünlüğü, kullanıcı aktiviteleri ve sistem çağrılarını izler.
  • Heartbeat: Servislerin ve uygulamaların çalışırlığını (uptime) izler. Bir uygulamanın veya servisin erişilebilir olup olmadığını kontrol eder.
  • Journalbeat: Linux sistemlerinde journal loglarını toplar.
Bu Beats ajanları sayesinde Elastic Stack, uç noktalardan gelen farklı veri türlerini gerçek zamanlı olarak toplayabilir ve güvenlik operasyonları için güçlü bir görünürlük sağlar.

Kibana

Kibana Elasticsearch ile entegre çalışan web tabanlı bir veri görselleştirme aracıdır. Gerçek zamanlı veri akışlarını analiz etmek, incelemek ve görselleştirmek için kullanılır. Kullanıcılara farklı görselleştirmeler ve paneller (dashboard) oluşturma imkânı sunarak verilerin daha anlaşılır ve görünür hale gelmesini sağlar. Bu sayede analistler, karmaşık veri kümelerini kolayca yorumlayabilir ve güvenlik operasyonlarında hızlı aksiyon alabilir.

Birlikte Nasıl Çalışırlar?:
Elastic Stack’in tüm bileşenlerini öğrendikten sonra, bunların nasıl birlikte çalıştığını adım adım inceleyelim:

  1. Beats uç noktalardan verileri toplar.
    • Örneğin, Winlogbeat Windows Event Log verilerini toplar.
    • Packetbeat ise ağ trafiği akışlarını yakalar.
  2. Logstash, Beats’ten, portlardan veya dosyalardan gelen verileri alır. Bu verileri ayrıştırır (parsing) ve normalize ederek alan-değer çiftlerine dönüştürür. Ardından işlenmiş verileri Elasticsearch’e gönderir.
  3. Elasticsearch, verilerin depolandığı ve analiz edildiği veritabanı gibi çalışır. Kullanıcılar burada veriler üzerinde arama yapabilir, korelasyon kurabilir ve analiz gerçekleştirebilir.
  4. Kibana, Elasticsearch’te depolanan verileri görselleştirmekten sorumludur. Veriler, Kibana sayesinde grafiklere, zaman çizelgelerine, infografiklere ve özel panellere dönüştürülebilir. Bu görselleştirmeler, analistlere ağın ve sistemlerin durumunu daha net bir şekilde gösterir.

resim4.png
Splunkı Keşfedelim
Bu yazımızdan sonra ise dostlarım genel olarak Splunkın kendi içindeki arayüzü keşifedeceğiz


Discover’i Keşifedelim

bu kısım dostlarım SOC analislerinin genel olarak vakitlerinin çoğunluğu harcadığı yerdir.Bu sekmede, alınan Loglar, arama çubuğu, filtreleme ve daha fazlasını gösterir
resim5.png

1)Logs: Her satır, gerçekleşen bir olayla ilgili bilgileri içeren tek bir log kaydını gösterir. Bu log, olayın detaylarını alan-değer çiftleri halinde barındırır ve analistler için anlamlı hale gelir.

2)Fields Pane: Arayüzün sol panelinde, loglardan ayrıştırılmış alanların listesi bulunur. Kullanıcı, herhangi bir alanı seçerek filtreye ekleyebilir veya aramadan çıkarabilir. Bu özellik, aramaları daha esnek ve odaklı hale getirir.

3)Index Pattern: Her log türü farklı bir index pattern altında saklanır. Kullanıcı, ihtiyaç duyduğu logları görmek için ilgili index pattern’i seçmelidir. Örneğin, VPN loglarını incelemek için VPN loglarının tutulduğu index pattern seçilir.

4)Search Bar: Kullanıcıların sorgu eklediği ve filtre uyguladığı alandır. Burada yazılan sorgular, sonuçları daraltarak daha spesifik analiz yapılmasını sağlar. Bir sonraki adımda, sorgularla nasıl arama yapılacağını öğreneceğiz.

5)Time Filter: Sonuçlar belirli bir zaman aralığına göre daraltılabilir. Bu özellik, olayların zaman çizelgesini anlamak için kritik öneme sahiptir.

6)Time Interval: Bu grafik, olayların zaman içindeki dağılımını gösterir. Belirli aralıklarla kaç olay gerçekleştiğini görselleştirerek trendleri ortaya çıkarır.

7)TOP Bar: Bu üst çubuk, aramaları kaydetme, kaydedilmiş aramaları açma, paylaşma veya yeni bir arama kaydetme gibi çeşitli seçenekler içerir.

8)Discover Tab: Kibana’nın ham verileri keşfetmek, aramak ve analiz etmek için kullanılan ana çalışma alanıdır. Analistler burada logları detaylı şekilde inceleyebilir.

9)Add Filter:Belirli alanlara filtre uygulayarak sonuçlar daraltılabilir. Bu yöntem, tüm sorguyu manuel olarak yazmak yerine daha hızlı ve pratik bir çözüm sunar.


Index Pattern

resim6.pngKibana’da verileri görüntüleyebilmek için varsayılan olarak bir index pattern tanımlanması gerekir. Index pattern, Kibana’ya Elasticsearch içerisinde hangi verileri incelemek istediğimizi söyler. Her index pattern, belirli alanların özelliklerini tanımlar ve tek bir index pattern birden fazla indeksi işaret edebilir.
Her log kaynağının kendine özgü bir yapısı vardır. Bu nedenle loglar Elasticsearch’e alındığında (ingest edildiğinde), önce normalize edilerek ilgili alan-değer çiftlerine dönüştürülür ve veri kaynağına özel bir index pattern oluşturulur. Bu yapı, farklı kaynaklardan gelen verilerin tutarlı bir şekilde analiz edilmesini sağlar.
laboratuvar ortamında vpn_connections adlı index pattern’i inceleyeceğiz. Bu pattern, VPN loglarını içerir ve kullanıcıların VPN bağlantı aktivitelerini analiz etmeye imkân tanıyacaktır bizlere dostlarım.


Discover tab

içerisindeki sol panel, mevcut loglardan ayrıştırılmış ve normalize edilmiş alanların (fields) listesini gösteresim7.pngrir. Bu panel, logların hangi alanlara sahip olduğunu görmeyi kolaylaştırır ve analistlere veriler üzerinde daha esnek bir kontrol sağlar.
Herhangi bir alan üzerine tıkladığınızda, Kibana size o alan için en sık görülen ilk 5 değer ve bu değerlerin yüzdesel dağılımını gösterir. Bu bilgiler, hangi değerlerin öne çıktığını anlamak ve loglarda trendleri yakalamak için oldukça faydalıdır.
Bu değerler aynı zamanda filtreleme için kullanılabilir:

  • + butonuna tıklamak seçilen değeri içeren logları filtreleyerek yalnızca ilgili sonuçları gösterir.
  • - butonuna tıklamak ise tam tersine, bu değeri içermeyen logları filtreleyerek sonuçları daraltır.

Add Filter

Kibana’da, sol panelde listelenen alanlara doğrudan filtre uygulayabiliriz. Bunun için arama çubuğunun altındaki Add filter seçeneğine tıklamak yeterlidir. Bu özellik, belirli alanlara odaklanarak sonuçları daraltmamıza ve daha hedefli analizler yapmamıza imkân tanır.
Filtre ekleme süreci şu şekilde işler:

  • Add filter seçeneğine tıkladığınızda, sol paneldeki alanlardan birini seçebilirsiniz.
  • Seçilen alan için belirli bir değer tanımlayarak yalnızca bu değeri içeren logları görüntüleyebilirsiniz.
  • Alternatif olarak, belirli bir değeri hariç tutarak bu değeri içermeyen logları listeleyebilirsiniz.
Bu yöntem, karmaşık sorgular yazmaya gerek kalmadan hızlı ve pratik bir şekilde sonuçları daraltmayı sağlar. Özellikle büyük veri kümeleri üzerinde çalışırken, filtreler analistlere daha odaklı bir görünürlük sunar bizlere dostlarım.
resim8.png

Time Filter(Zaman Filtresi)

Time Filter, logları belirli bir zaman aralığına göre filtrelememizi sağlar. Bu özellik, olayların zaman çizelgesini anlamak ve belirli dönemlerde gerçekleşen aktiviteleri incelemek için kritik öneme sahiptir.resim9.png
Kibana’daki zaman filtresi oldukça esnektir ve birçok seçenek sunar:

  • Önceden Tanımlı Aralıklar: Son 15 dakika, son 24 saat, son 7 gün gibi hazır seçenekler.
  • Mutlak Zaman Aralığı: Kullanıcı, başlangıç ve bitiş tarihini manuel olarak belirleyebilir.
  • Göreceli Zaman Aralığı: “Şu andan itibaren son X dakika/saat/gün” gibi dinamik aralıklar seçilebilir.
  • Olayların Zaman Çizelgesi: Filtre uygulandığında, yalnızca seçilen zaman aralığına ait loglar görüntülenir ve analiz daha odaklı hale gelir.
Bu özellik sayesinde analistler, belirli bir saldırı girişiminin veya sistem hatasının tam olarak hangi zaman diliminde gerçekleştiğini kolayca tespit edebilir.

Timeline(Zaman Çizergesi)

Timeline bölmünde ise dostlarıım belirli bir tarih veya zaman aralığında gerçekleşen olayların sayısını genel bir bakışla gösterir. Bu panel, olayların zaman içindeki dağılımını görselleştirerek analistlerin trendleri ve yoğunluk noktalarını kolayca fark etmesini sağlar.
Kullanıcı, zaman çizelgesinde yer alan çubuklardan (bar) birini seçerek yalnızca o döneme ait logları görüntüleyebilir. Böylece belirli bir zaman diliminde gerçekleşen aktiviteler daha odaklı bir şekilde incelenebiliriz.

resim10.png

Create Table

Varsayılan olarak loglar ham (raw) formda görüntülenir. Bu görünüm, tüm detayları içerdiği için bazen gereksiz gürültü (noise) oluşturabilir. Daha anlamlı ve düzenli bir analiz için, herhangi bir log üzerine tıklayarak önemli alanları seçebilir ve yalnızca bu alanları gösteren bir tablo oluşturabilirsiniz.
Bu yöntem sayesinde:

  • İlgili alanlar ön plana çıkarılır.
  • Gereksiz detaylar filtrelenerek gürültü azaltılır.
  • Veriler daha okunabilir, sunulabilir ve anlamlı hale gelir.
Sonuç olarak, tablo görünümü analistlere daha net bir bakış açısı sunar ve logların içindeki kritik bilgilerin kolayca fark edilmesini sağlar.
resim11.png

KQL’ye Genel Bakış:

Aramalarımızı gerçekleştirmek için dostlarım bu arama çubuğunun içinde kullanabileceğimiz özel bir dil var. KQL (Kibana Sorgu Dili) , Elasticsearch'te alınan günlükleri/belgeleri aramak için kullanılan bir arama sorgusu dilidir.
resim12.png
KQL dili ile loglaro iki farklı şekilde arayabiliriz
  • Metin tabanlı arama(free text search)
  • Alan tabanlı arama(KQL dilini kullanmak)

Free Text Search

Metin tabanlı arama kullanıcıların loglar içerisinde yalnızca metin bazlı arama yapmasına imkân tanır. Bu yöntemle belirli bir kelime veya ifade arandığında, hangi alanda geçtiğine bakılmaksızın tüm loglarda bu terimi içeren kayıtlar listelenir.
Örneğin, arama çubuğuna security yazıldığında, bu terimi içeren tüm belgeler sonuç olarak döner. Aynı şekilde, United States ifadesini aradığımızda, alan veya konum fark etmeksizin bu ifadeyi içeren tüm loglar listelenir.
Bu örnekte yapılan arama sonucunda toplam 2304 kayıt (hits) bulundu. Bu sayı, aranan terimin loglarda ne kadar yaygın olduğunu gösterir ve analistlere ilgili olayların kapsamı hakkında hızlı bir fikir verir.

resim13.png
Eğerki sadece United terimini ararsak bize sonuçları göstermeyebilir
resim14.png
Herhangi bir sonuç gelmedi çünkü KQL sadece bu kelimeyi arıyor ama eğerki biz bunun sonuna joker karakteri yani “*” koyarsak eğer bu sefer başı sadece United olan sonuçları karşımıza çıkaracaktır buna joker karakteri diyoruz
Arama Sorgusu: United*

resim15.png

Mantıksal operatörler(AND/OR/NOT)

KQL (Kibana Query Language), kullanıcıların arama sorgularında mantıksal operatörler kullanmasına imkân tanır. Bu operatörler sayesinde sorgular daha esnek hale gelir ve loglar üzerinde daha hedefli aramalar yapılabilir.

AND Operator

resim16.pngAND operatörü, sorguda belirtilen tüm terimlerin loglarda bulunmasını şart koşar. Yani yalnızca her iki terimi de içeren kayıtlar sonuç olarak döner.
Örnek: Arama sorgusu:
Kod:
"United States" AND "Virginia"

OR Operator

OR operatörü, sorguda belirtilen terimlerden herhangi birini içeren logları döndürür. Yani, en az bir terimin geçtiği kayıtlar sonuç olarak listelenir. Bu yöntem, daha geniş kapsamlı aramalar yapmak için kullanılır.

Örnek: Arama sorgusu:
Kod:
"United States" OR "England"
resim17.png

NOT Operator

NOT operatörü, arama sonuçlarından belirli bir terimi hariç tutmak için kullanılır. Bu sayede, istenmeyen değerler veya alanlar sorgu sonuçlarından çıkarılarak daha odaklı bir analiz yapılabilir.
Örnek: Arama sorgusu:
Kod:
"United States" AND NOT ("Florida")
resim18.png

Field-based Search

Field-based search, loglarda belirli bir alan (field) ve bu alana karşılık gelen değeri (value) aramamızı sağlar. Bu arama yöntemi özel bir sözdizimi kullanır:
Kod
Kod:
Field : Value
Burada alan adı ile değer arasında iki nokta üst üste (colon) bulunur. Bu yapı sayesinde sorgular daha hedefli hale gelir ve yalnızca belirli kriterlere uyan loglar listelenir.
Örnek:
Kod
Kod:
Source_ip : 238.163.231.224 AND UserName : Suleman
Bu sorgu, Source_ip alanında 238.163.231.224 değerini ve aynı zamanda UserName alanında Suleman değerini içeren tüm logları döndürür. Yani yalnızca her iki koşulu da sağlayan kayıtlar sonuç olarak listelenir.
Bu yöntem, analistlere daha odaklı bir görünürlük sağlar ve büyük veri kümeleri içerisinde belirli kullanıcı aktivitelerini veya IP adreslerini hızlıca tespit etmeye yardımcı olur.

resiim19.png

Görselleştirmeler Oluşturma
Kibana’da verileri farklı görselleştirme biçimlerinde sunmamıza olanak tanır. Bu sayede ham loglar yalnızca metin olarak değil, daha anlaşılır ve görsel açıdan zengin bir şekilde analiz edilebiliriz dostlarım
Kullanıcılar bu sekme üzerinden çeşitli görselleştirmeler oluşturabilir:

  • Tables (Tablolar): Belirli alanları seçerek verileri düzenli ve okunabilir bir tablo halinde gösterebilir.
  • Pie Charts (Pasta Grafikler): Alanların yüzdesel dağılımını görselleştirerek hangi değerlerin öne çıktığını kolayca fark ettirir.
  • Bar Charts (Çubuk Grafikler): Belirli kategorilerdeki olayların sayısını karşılaştırmak için kullanılır.
  • Line Charts / Time Series (Çizgi Grafikler): Olayların zaman içindeki trendlerini ve yoğunluk noktalarını gösterir.
Bu görselleştirmeler, verilerin daha sunulabilir, anlamlı ve odaklı hale gelmesini sağlar. Özellikle güvenlik operasyonlarında, olayların dağılımını ve trendlerini görselleştirmek analistlerin hızlı karar almasına yardımcı olur.
resim20.pngresim21.png
Daha sonrasında ise dostlarım bu yaptığımız tabloları kaydedip daha sonra tekrar kullanabiliriz

resim22.png

Okuduğunuz için Teşekkür ederim

CW-Ommah...
Bug Researchers Tim Sundu.

 
Son düzenleme: