CyberFlow Logo CyberFlow BLOG
Soc L1 Izleme Gorunurluk Sorgu

JSON Tabanlı DSL ile Derinlemesine Sorgulama Teknikleri

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

DSL, JSON formatı ile karmaşık sorguları etkili bir şekilde oluşturmanıza olanak tanır. Bu blogda, DSL'in temel ilkelerini keşfedin.

JSON Tabanlı DSL ile Derinlemesine Sorgulama Teknikleri

Siber güvenlik alanında, DSL (Domain Specific Language) kullanarak JSON tabanlı derin sorgulama tekniklerini öğrenin. Bu blog, ES DSL’in sunduğu esneklik ve gücü ele alıyor.

Giriş ve Konumlandırma

Siber güvenlik alanında veri analitiği ve sorgulama, karmaşık sistemlerin güvenliğini sağlamak ve tehditleri önceden belirlemek için kritik bir rol oynamaktadır. Özellikle büyük veri kümelerinin yoğunlukla kullanıldığı günümüzde, veri sorgulama teknikleri daha da önemli hale gelmiştir. Bu bağlamda, JSON Tabanlı Domain Specific Language (DSL) kullanarak derinlemesine sorgulama yapmak, siber güvenlik uzmanlarının iş süreçlerine etkin bir katkı sunmaktadır.

JSON Tabanlı DSL Nedir?

JSON Tabanlı DSL, Elasticsearch gibi veri analizi platformlarında kullanılan ve sorguların hiyerarşik yapılar halinde ifade edildiği bir yöntemdir. Sorgular, veri setlerinde derinlemesine arama ve filtreleme yapabilmek için JSON formatında yazılır. Bu yapı, doğal bir dil gibi gözüken ancak belirli bir alan için özelleştirilmiş komut setleri içerir. Özellikle karmaşık mantıksal sorguların kolay bir şekilde oluşturulması, bu yöntemin en büyük avantajlarından biridir.

Neden Önemlidir?

Siber güvenlik, yarı zamanlı tehditlerin tespit edilmesi ve engellenmesi gereken bir alan olduğu için, veri analizi ve sorgulama tekniklerine olan ihtiyaç her zamankinden daha kritik bir önem taşımaktadır. JSON Tabanlı DSL, özel olarak tasarlanmış sorgu yapısı sayesinde, analistlerin veri kümesinde belirli kriterlere göre detaylı sorgular yaparak potansiyel tehditleri daha hızlı tespit edebilmesine olanak tanır. Ayrıca, daha iyi performans ve sonuç kalitesi sağlamak için veri kümesindeki filtreleme ve eşleştirme mekanizmaları açısından büyük esneklik sunar.

Siber Güvenlik Alanında Kullanım Bağlamı

Siber güvenlik uzmanları, tehdit avı (threat hunting) ve penetrasyon testleri (pentesting) gibi süreçlerde verileri analiz ederken, belirli kriterlere göre titiz sorgulamalar yapmaları gerekmektedir. JSON Tabanlı DSL, bu kriterleri tanımlamak ve uygulamak için mükemmel bir araçtır. Karmaşık sorgu yapıları ile hem mantıksal ilişkiler kurmak hem de belirli verilerin sıkı bir şekilde filtrelenmesi sağlanabilir.

Örneğin, aşağıdaki kod parçası, belirli bir alanın 'failed' statüsünde olduğunu kontrol etmek için DSL kullanarak bir sorgu örneği sunmaktadır:

{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "status": "failed"
          }
        }
      ]
    }
  }
}

Bu örnekte görüldüğü üzere, "must" bloğu içindeki koşullar sorgunun doğru sonuç verebilmesi için zorunludur. Bu yapı, sorguya dahil edilen koşulları mantıksal bir çerçevede bir araya getirerek daha doğru sonuçlar elde edilmesini sağlar.

Tekniğe Hazırlık

Bu yazının ilerleyen bölümlerinde, JSON Tabanlı DSL'de yer alan çeşitli sorgu tekniklerine derinlemesine dalmak hedeflenmektedir. Özellikle sorgu bağlamları, mantıksal kapsayıcılar ve zorunlu koşullar gibi kavramlar etrafında şekillenen incelemeler, okuyucuların DSL kullanımını daha iyi anlamalarına yardımcı olacaktır. Böylece, okuyucular yalnızca teorik bilgilerin ötesine geçerek, gerçek yaşam senaryolarında bu bilgileri uygulayabilme becerisi kazanacaklardır.

Sonuç olarak, JSON Tabanlı DSL ile gerçekleştirilen derinlemesine sorgulama teknikleri, siber güvenlik alanında hem operasyonel etkinliği artırmakta hem de siber tehditlerle mücadelede analistlere önemli bir avantaj sunmaktadır. Bu bağlamda, teknik bilgilerin güçlendirileceği bir yolculuğa hazır olun.

Teknik Analiz ve Uygulama

Veritabanının Ham Dili

JSON tabanlı Derinlemesine Sorgulama Dili (DSL), Elasticsearch ile veri etkileşiminin temelini oluşturur. Bu yapının ana prensibi, sorguların hiyerarşik bir obje olarak yapılandırılmasına dayanmaktadır. Elasticsearch'ün Query DSL'i, JSON formatında sorgu yazılmasına olanak tanırken, aynı zamanda sorguların daha okunabilir ve yönetilebilir bir şekilde tanımlanmasına olanak sağlar.

Örneğin, temel bir sorgu şu şekilde yapılandırılabilir:

{
  "query": {
    "match": {
      "field_name": "değer"
    }
  }
}

Bu yapıda query anahtarının altında bir match sorgusu tanımlanmıştır. Veritabanında belirtilen field_name alanında "değer" kelimesini içeren belgeleri bulmak için kullanılabilir.

Sonsuz Esneklik

Sorgularda sağlanan esneklik, DSL'in en önemli avantajlarından biridir. Sorguların karmaşıklığı arttıkça, esnek yapılar sayesinde bir dizi mantıksal koşulu bir araya getirmek de mümkündür. Özellikle KQL ile gerçekleştirilemeyen karmaşık sorgular, DSL'in sunduğu hiyerarşik mantık ile kolaylıkla oluşturulabilir.

Mantıksal Kapsayıcı

DSL’de, birden fazla mantıksal koşulu bir araya getirmek için kullanılan ana kapsayıcı bool sorgusudur. Bu yapı, birden fazla koşulu bir araya getirerek daha karmaşık sorgular oluşturmak için idealdir. bool sorgusunun nasıl yapılandırılacağına dair bir örnek:

{
  "query": {
    "bool": {
      "must": [
        { "match": { "status": "failed" } },
        { "range": { "timestamp": { "gte": "now-1d/d", "lt": "now/d" } } }
      ],
      "must_not": [
        { "term": { "is_verified": true } }
      ]
    }
  }
}

Yukarıdaki örnekte, must içerisine eklenen koşullarla, son 1 gün içerisinde durumu "failed" olan ve doğrulanmamış belgeler elde edilecektir.

Zorunlu Koşullar

must yapısı, belirtilen koşulların sonucunun doğru olması için zorunlu olan koşulları içermektedir. Bu koşullar, her eşleşmenin belgenin toplam alaka puanını doğrudan etkiler. Bu özellik, arama sonuçlarını daha hassas bir şekilde filtrelemeye olanak tanır. must kullanımına dair bir örnek sorgu:

{
  "query": {
    "bool": {
      "must": [
        { "term": { "status": "active" } },
        { "match": { "user_id": "12345" } }
      ]
    }
  }
}

Yukarıdaki kod, "user_id"si "12345" ve durumu "active" olan belgeleri döndürür.

Nokta Atışı DSL

Kesin eşleşme için kullanılan term sorgusu, belirli bir alanın tam değerini eşleştirmek amacıyla tasarlanmıştır. Belirtilen alandaki değer tam olarak eşleşirse, sonuçlar döndürülür. Örneğin, bir kullanıcı adı ile ilgili kesin bir sorgu şu şekilde oluşturulabilir:

{
  "query": {
    "term": {
      "username": "kullanici_adi"
    }
  }
}

Bu yapıda, belirtilen username alanında yalnızca "kullanici_adi" değerine tam olarak uyan belgeler dönecektir.

İleri Seviye DSL Kavramları

DSL ve JSON sorgu hiyerarşisindeki daha karmaşık ve ileri seviye kavramları öğrenmek, kullanıcıların arama performansını artırması ve istemciye daha doğru sonuçlar sunması için kritik öneme sahiptir. Örneğin, aggregations kullanarak bir veri kümesi üzerinde sıralama veya gruplama işlemleri gerçekleştirilebilir:

{
  "aggs": {
    "user_count": {
      "terms": {
        "field": "user_id"
      }
    }
  }
}

Bu sorgu, benzersiz kullanıcı kimliklerine göre belgeleri gruplandırarak her bir kullanıcının kaç belgesi olduğunu hesaplayacaktır.

Bu teknik analiz ile birlikte, JSON tabanlı DSL kullanımı daha iyi anlaşılacak ve uygulanabilir hale gelecektir. Kullanıcılar, yine DSL'in sunduğu esneklik ve hiyerarşik yapı ile karmaşık sorguları kolaylıkla oluşturabileceklerdir.

Risk, Yorumlama ve Savunma

Giriş

Siber güvenlik alanında, verilerin doğru bir şekilde analiz edilmesi, potansiyel tehditlerin zamanında tespit edilmesi ve etkili bir savunma stratejisi geliştirilmesi için kritik öneme sahiptir. Bu bağlamda, sorgulama teknikleri ve verilerin yorumlanması, güvenlik uzmanlarının karar verme süreçlerini doğrudan etkileyen faktörlerdir. JSON tabanlı Domain Specific Language (DSL) kullanarak derinlemesine sorgulama yaparken, karşılaşılabilecek riskler, yapılandırma hataları ve olası zafiyetler hakkında detaylı bilgi sağlamak esastır.

Elde Edilen Bulguların Değerlendirilmesi

JSON tabanlı DSL, karmaşık veri setlerinin işlenmesi ve analiz edilmesi için güçlü bir araçtır. Örneğin, bir siber saldırı sonrasında elde edilen log verilerini incelemek için DSL’in sunduğu sorgulama yeteneklerinden faydalanabiliriz. Elasticsearch üzerinde sorgulama yaparken, verinin aranan kriterlere ne kadar uyduğunu (relevance score) hesaplayan Query Context ve veri puanlamadan bağımsız olarak sadece "bu veriye uyuyor mu?" diye bakan Filter Context gibi farklı sorgu bağlamlarını kullanarak, elde edilen bulguların güvenlik anlamını ortaya koyabiliriz.

Aşağıda, bir sorgulama örneği ile bulguların yorumlanmasını açıklamaya çalışalım:

{
  "query": {
    "bool": {
      "must": [
        { "match": { "status": "failed" } },
        { "term": { "source_ip": "192.168.1.1" } }
      ]
    }
  }
}

Bu sorgu, "failed" statüsüne sahip ve belirli bir IP adresinden gelen tüm kayıtları çıkarmaktadır. "Must" bloğu içindeki koşulların her biri, belgenin toplam alaka puanını doğrudan etkiler. Eğer benzeri bir sorgu sonucunda çok sayıda "failed" kaydı varsa, bu durum potansiyel bir güvenlik tehdidinin varlığına işaret edebilir.

Yanlış Yapılandırma ve Zafiyet Analizi

JSON tabanlı DSL kullanırken, yanlış yapılandırmalar veya veri akışı zafiyetleri ciddi sonuçlar doğurabilir. Örneğin, gereksiz açık portlar veya yanlış yapılandırılmış firewall kuralları, potansiyel saldırı yüzeylerini artırarak sistemin savunmasız kalmasına yol açabilir.

Bir sızma testinde elde edilen bulguların değerlendirilmesi sırasında, aşağıdaki gibi DSL sorguları kullanılarak yanlış yapılandırmalar tespit edilebilir:

{
  "query": {
    "bool": {
      "must_not": {
        "exists": {
          "field": "firewall_rule"
        }
      }
    }
  }
}

Bu sorgu, firewall kuralı olmayan kayıtları aramakta ve sızma testinde tespit edilen zafiyetlerin analizi için kritik bir veri sağlamaktadır.

Sızan Veri, Topoloji ve Servis Tespiti

Sızan verilerin analizi, siber güvenlikte kritik bir yer tutar. DSL’in sunduğu sorgulama yetenekleri sayesinde, kimlik bilgilere, kredi kartı bilgilerine veya diğer hassas verilere ulaşma riski olan tüm kayıtlar tespit edilebilir. Örneğin,

{
  "query": {
    "bool": {
      "must": [
        { "match": { "data_type": "sensitive" } },
        { "range": { "timestamp": { "gte": "now-1d/d", "lt": "now/d" } } }
      ]
    }
  }
}

Bu sorgu, son 24 saat içinde sızan hassas verileri hedef alarak analizi kolaylaştırır.

Topolojinin tespiti de kritik bir öneme sahiptir. Ağ mimarisinin yanlış yapılandırılması veya güvenlik açıklarının varlığı, bir saldırgan için büyük fırsatlar sunabilir. Bu bağlamda, servis tespiti ve gereksiz açıkların kapatılması, düşmanların sistem üzerinde daha fazla kontrol kazanmasını önlemek için gereklidir.

Profesyonel Önlemler ve Hardening Önerileri

Sibernetik saldırılara karşı alınacak önlemler arasında aşağıdaki öneriler yer almaktadır:

  1. Güçlü Erişim Kontrolleri: Kullanıcı erişim politikalarını güncelleyerek, yalnızca yetkili kişilerin kritik sistemlere erişmesini sağlayın.

  2. Güncel Yazılımlar: Tüm yazılımların güncel tutulması, bilinen zafiyetlerin kapatılmasını sağlar.

  3. Ağ Segmentasyonu: Ağın bölümlere ayrılması, saldırıların etkisini sınırlamaya yardımcı olabilir.

  4. Otomatik İzleme ve Alarm Sistemleri: Anormallikleri tespit etme ve hızlı bir yanıt verme mekanizmalarını entegre edin.

  5. Veri Şifrelemesi: Hassas veri iletimi ve depolanmasında şifreleme uygulamaları kullanarak bilgilerin korunmasını sağlamak.

Sonuç

JSON tabanlı DSL kullanarak gerçekleştirilen derinlemesine sorgulama teknikleri, siber güvenlik alanında önemli bir role sahiptir. Yanlış yapılandırmalar, zafiyetler ve sızan verilerin analizi, veri güvenliğinin sağlanması için kritik öneme sahiptir. Bu bağlamda, etkili savunma stratejileri geliştirmek ve gerekli önlemleri almak, siber tehditlere karşı korunmayı sağlayacak en etkili yoldur. Uygulanan önlemler ve yapılan analizler sonucunda tüm güvenlik süreçlerinin sürekli iyileştirilmesi önem arz etmektedir.