CyberFlow Logo CyberFlow BLOG
Soc L1 Izleme Gorunurluk Sorgu

KQL ile Veri Sorgulama: Temel Yapılar ve Pipe Operatörü

✍️ Ahmet BİRKAN 📂 Soc L1 Izleme Gorunurluk Sorgu

KQL ile büyük veri kümelerini hızlıca sorgulama becerilerinizi geliştirin. Eğitimimizde pipe operatörünün kullanımını öğrenin.

KQL ile Veri Sorgulama: Temel Yapılar ve Pipe Operatörü

Microsoft'un Kusto Query Language (KQL) ile verilerinizi daha etkili bir şekilde sorgulayın. Pipe operatörü ve tabular veri yapısı hakkında derin bilgiler edinin. Eğitimle birlikte KQL'i ustalıkla kullanmaya başlayın.

Giriş ve Konumlandırma

KQL (Kusto Query Language), büyük veri setlerinin hızlı bir şekilde sorgulanması ve analizi için tasarlanmış, Microsoft'un Azure ve Sentinel ekosistemlerinde kullanılan güçlü bir veri sorgulama dilidir. Geleneksel SQL ile karşılaştırıldığında, KQL'in temel farklarından biri, sorguların bir veri kaynağı üzerinden oluşturulması ve ardından bu verilerin filtrelenmesidir. Bu yaklaşım, veri manipülasyonunu ve sorguların yazılmasını daha sezgisel hale getirir.

Siber güvenlik bağlamında KQL, özellikle log analizi ve olay yanıt süreçlerinde kritik bir rol oynar. Örneğin, Azure Active Directory üzerinden gerçekleştirilen oturum açma hareketlerini sorgulamak için KQL kullanarak, güvenlik uzmanları potansiyel tehditleri hızlı bir şekilde tespit edebilir. KQL'in sağladığı esnek yapı sayesinde, güvenlik olaylarının detaylı bir incelemesi yapılabilir; bu da güvenlik açıklarını tespit etmek ve gerektiğinde müdahale etmek için önemli bir adımdır.

KQL’de sorgular genellikle bir tablo adı ile başlar ve yüksek performanslı Kusto Engine üzerinden çalıştırılır. Bu motor, sorguların arka planda hızlı bir şekilde işlenmesini sağlar. Sorgu yapısının temelini oluşturan "pipe" operatörü (|), bir sorgu bileşeninin çıktısını diğerine yönlendiren bir köprü işlevi görür. Böylelikle, karmaşık sorgular oluşturulabilir ve veri akışı daha etkili bir şekilde yönetilebilir.

KQL'in Temel Yapıları ve Kullanım Alanları

KQL’in sağladığı çeşitli işlevler, siber güvenlik uzmanlarının veri üzerinde daha fazla kontrol sahibi olmasına olanak tanır. Örneğin, sorgular içerisinde kullanılan where, project, ve take gibi operatörler, verinin belirli koşullara göre filtrelenmesini ve belirli sütunların sonucunun görüntülenmesini sağlar. Bu operatörler, verilerin analiz edilmesi ve görüntülenmesi aşamasında kullanıcıya büyük avantaj sunar.

signinlogs
| where Result == "Failure"
| project UserPrincipalName, Timestamp
| take 10

Yukarıdaki basit örnekte, oturum açma logları sorgulanmakta ve yalnızca başarısız oturum açma girişimleri filtrelenmektedir. Kullanıcı adı ve zaman damgası gibi belirli sütunlar görüntülenmekte ve sonuçlar 10 ile sınırlı tutulmaktadır.

Siber güvenlik alanında, bu tür sorgular aracılığıyla potansiyel tehditler ve güvenlik ihlalleri hakkında içgörüler elde edilmekte, sorunlara zamanında müdahale edilmesine yardımcı olmaktadır. Örneğin, bir sistemde artmış başarısız oturum açma girişimleri, hesabın izinsiz giriş denemelerine maruz kaldığı anlamına gelebilir. KQL sayesinde, bu tür durumların hızlı bir şekilde tespit edilmesi ve gerektiğinde proaktif önlemlerin alınması sağlanır.

KQL ile Güvenlik Olaylarına Müdahale

KQL’in yetenekleri, yalnızca veri sorgulamakla sınırlı kalmaz; aynı zamanda olay müdahale süreçlerinin geliştirilmesine de katkı sağlar. Kural tabanlı otomasyonlar ve anomali tespit sistemleri, KQL üzerinden yazılan sorgular ile tetiklenir. Örneğin, bir sistemde belirli bir süre içerisinde gerçekleşen olağandışı aktivitelerin tespit edilmesi, güvenlik analistlerinin harekete geçmesini gerektirir. KQL, bu tür durumların belirlenmesine yönelik sorguların oluşturulmasında son derece etkili bir araçtır.

Sonuç olarak, KQL kullanarak gerçekleştirilen veri sorgulamaları, siber güvenlik uzmanlarına ve analistlere güvenlik tehditlerini anlama, değerlendirme ve müdahale etme konusunda önemli avantajlar sağlamaktadır. Bu gelişmiş sorgulama dili, yüksek veri hacimlerinin yönetilmesi ve analiz edilmesi noktasında, siber güvenlik stratejilerinin temel yapı taşlarından biri haline gelmektedir.

Teknik Analiz ve Uygulama

Microsoft'un Güçlü Dili

Kusto Query Language (KQL), Microsoft Azure ve Sentinel ekosistemlerinde büyük veri setlerini hızlı ve etkin bir biçimde sorgulamak ve analiz etmek için oluşturulmuş bir dildir. KQL, SQL benzeri bir yapıya sahip olmasına rağmen bazı önemli farklılıklar taşır. Özellikle, sorgularda önce hangi verinin seçileceği değil, hangi havuzdan veri çekileceği belirtilir. Bu özellik, sorguların okunmasını ve yazılmasını daha basit hale getirir.

Önce Veri Kaynağı

KQL sorguları her zaman bir tablo adı ile başlar. Örneğin, Azure AD (Entra ID) üzerindeki oturum açma hareketlerini incelemek istiyorsak, sorgu genellikle signinlogs tablosu ile başlar:

signinlogs

Bu, oturum açma kayıtlarının tutulduğu ana tabloyu belirtir ve verinin üzerinde çalışılacağı temel kaynağı belirler.

Sorgu Komutları

KQL'de veriyi analiz etmek ve sorgulamak için çeşitli komutlar ve operatörler kullanılır. Temel olarak, veriyi süzmek, filtrelemek ve sınırlamak için kullanılan bazı önemli operatörler şunlardır:

  • where: Belirli bir koşula göre veriyi süzer. Örneğin:

    signinlogs | where ResultType == "0"
    

    Bu sorgu, başarıyla gerçekleşen oturum açma işlemlerini getirir.

  • project: Sadece belirli sütunları göstermek için kullanılır. Örneğin:

    signinlogs | project UserPrincipalName, ResultType
    

    Bu sorgu, yalnızca kullanıcı adı ve sonuç türü sütunlarını gösterir.

  • take / limit: Dönüş sonucu sayısını kısıtlamak için kullanılır:

    signinlogs | take 10
    

    Bu sorgu, sadece ilk 10 kaydı sonuç olarak döndürür.

Giriş Kayıtları

Her KQL sorgusu bir akış oluşturur. Bu akış, sonuçların çeşitli işlemlerden geçirilerek analiz edilmesini sağlar. pipe operatörü (|), bir satırdaki işlemin sonucunu alt satıra girdi olarak gönderir. Örneğin, belirli bir tarih aralığında sorgulama yapmak için pipe operatörünü kullanabiliriz:

signinlogs 
| where TimeGenerated between(datetime(2023-01-01) .. datetime(2023-01-31))

Bu sorgu, Ocak 2023 tarihinde gerçekleşen tüm oturum açma işlemlerini filtreler.

Veri Transferi

KQL'de veri transferi, pipe operatörü ile gerçekleştirilir. Bu, her komutun sonucunun bir sonraki komuta aktarılmasını sağlar. Örneğin, örnek bir veri akışı içindeki bir sorgu şu şekilde olabilir:

signinlogs 
| where ResultType == "0"
| project UserPrincipalName, TimeGenerated
| take 10

Bu örnekte, ilk olarak oturum açma sonuçları filtrelenmiş, ardından belirli sütunlar projelenmiş ve en son olarak ilk 10 kayıt sınırlandırılmıştır.

Akışın Anahtarı

KQL'deki pipe operatörü, akışın temel taşını oluşturur. Bir sorgu boru hattı (pipeline) oluştururken, operatörler ve komutlar arasında dikey çizgi sembolü (|) kullanılır. Her yeni komut, bir önceki komuttan ayırır ve veri aktarımını sağlar. Bu yapılandırma, KQL'in ne kadar esnek ve güçlü bir dil olduğunu gösterir.

Örneğin:

signinlogs
| where TimeGenerated > ago(7d)
| summarize count() by UserPrincipalName
| order by count_ desc
| take 5

Bu sorgu, son 7 günde yapılmış olan oturum açma işlemlerini inceleyerek, en çok kullanılan kullanıcı adlarını belirleyecektir. Sonuç, kullanıcı adı ve o kullanıcıya ait oturum açma sayısıyla sıralanacaktır.

Sonuç

KQL, büyük veri kümesine dayanarak etkili sorgulamaların ve analizlerin gerçekleştirilmesini sağlayan bir dildir. Tablo yapısı ve pipe operatörü sayesinde karmaşık veri akışları oluşturulabilir. Temel operatörlerle birlikte, KQL'in esnekliğini ve gücünü keşfetmek, veri analistleri ve güvenlik uzmanları için kritik bir beceridir. KQL hakkında daha fazla bilgi edinmek, veri sorgulama yeteneklerinizi geliştirebilir ve güvenlik analizlerinizi optimize edebilir.

Risk, Yorumlama ve Savunma

Güvenlik Anlamında Elde Edilen Bulguların Yorumlanması

KQL (Kusto Query Language), büyük veri kümeleri üzerinde hızlı ve etkili analiz yapmak için kullanılan güçlü bir dildir. Bu dil sayesinde, elde edilen log verileri üzerinden güvenlik durumunu değerlendirmek ve anlamlı sonuçlar çıkarmak mümkündür. Örneğin, Azure Active Directory (Azure AD) oturum açma günlükleri kullanılarak, hangi kullanıcıların kimlik bilgilerini hangi zaman dilimlerinde kullandığına dair bilgileri analiz edebiliriz. Bu günlüklerin analizi, potansiyel bir siber saldırıyı veya yetkisiz erişimi tespit etme açısından kritik öneme sahiptir.

signinlogs
| where ResultType != "0" // Başarısız oturum açma girişimleri
| project UserPrincipalName, TimeGenerated, ResultType
| order by TimeGenerated desc

Yukarıdaki sorgu, başarısız oturum açma girişimlerini listeleyerek, hangi kullanıcıların saldırıya uğramış olabileceğine dair veri sağlar. Kullanıcıların davranışlarına dair bilgi sahibi olmak, risk değerlendirmesi için elzemdir.

Yanlış Yapılandırma veya Zafiyetin Etkisi

Yanlış yapılandırma veya güvenlik zafiyetleri, siber riskleri önemli ölçüde artırabilir. Örneğin, özellikle çok faktörlü kimlik doğrulama (MFA) gibi kritik güvenlik uygulamalarının devre dışı bırakılması durumunda, kullanıcı hesapları daha kolay hedef haline gelir. KQL, bu tür zafiyetleri tespit etmek için uygun ölçüm yolları sunar.

SigninLogs
| summarize FailedLogins = count() by UserPrincipalName, TimeGenerated
| where FailedLogins > 5

Yukarıda gösterilen sorgu, belirli bir zaman diliminde 5'ten fazla başarısız oturum açma girişimi olan kullanıcıları tespit eder. Bu veri, kullanıcıların potansiyel olarak hedef alınabileceğine dair bir uyarıdır.

Sızan Veri ve Topoloji

Sızan verilerin analizi, her türlü güvenlik ihlalinin incelenmesinde kritik öneme sahiptir. Sızmış bilgiler, genellikle kullanıcı kimlik bilgileri, finansal veriler veya diğer hassas bilgiler olabilir. KQL ile bu tür verileri analiz etmek, hangi tür verilerin tehdit altında olduğunu anlamaya yardımcı olur.

DataBreaches
| project BreachDate, RecordsAffected, BreachType
| summarize TotalAffected = sum(RecordsAffected) by BreachType

Bu sorgu, her bir veri ihlalinin türüne göre etkilenen toplam kayıt sayısını gösterir. Trend analizi yaparak, belirli veri türlerinin daha sık hedef alındığını tespit edebiliriz. Bu, güvenlik stratejilerini belirlerken faydalı bir başlangıç noktasıdır.

Profesyonel Önlemler ve Hardening Önerileri

Güvenlik ihlallerini önlemek için birkaç profesyonel önlem uygulanabilir. Bunlar arasında;

  • Güçlü Kimlik Doğrulama Yöntemleri: Çok faktörlü kimlik doğrulama uygulayın.
  • Güvenlik Eğitimi: Tüm çalışanlar için periyodik güvenlik bilinci eğitimleri düzenleyin.
  • Sistem Güncellemeleri: Yazılım ve sistemlerin düzenli olarak güncellenmesini sağlayın.
  • Ağ Segmentasyonu: Ağ kaynaklarını segmentlere ayırarak, kritik verilerin sadece yetkili kullanıcılar tarafından erişilebilir olmasını sağlayın.

Hardening stratejileri, işletmelerin güvenliğini artırmak için kritik öneme sahiptir. Sistemlerin ve uygulamaların güvenliğini sağlamak, olası saldırı yüzeylerini azaltır ve ihlal riskini minimize eder.

Sonuç Özeti

KQL, güvenlik analizleri için etkili bir araçtır. Elde edilen bulgular, güvenlik tehdidi oluşturan durumları belirlemek ve düzeltmek için önemli bir temel oluşturur. Yanlış yapılandırmalar ve zafiyetler, siber riskleri artırabilir ve sızan veri gibi durumlar, güvenlik stratejilerinin gözden geçirilmesini gerektirir. Doğru önlemler ve sistem için uygun hardening uygulamaları ile bu riskler minimize edilebilir.