CyberFlow Logo CyberFlow BLOG
Soc L2 Advanced Correlation Writing

Düzenli İfadeler (Regex) ile Karmaşık Loglarda IOC Ayıklama

✍️ Ahmet BİRKAN 📂 Soc L2 Advanced Correlation Writing

Karmaşık loglardan IOC ayıklamak için düzenli ifadelerin etkili kullanımını keşfedin. Regex ile siber güvenlikte fark yaratın.

Düzenli İfadeler (Regex) ile Karmaşık Loglarda IOC Ayıklama

Siber güvenlik alanında büyük veri yığınlarından IOC ayıklamak için Düzenli İfadeler (Regex) kullanımı kritik öneme sahiptir. Bu makalede, Regex ile log analizi yapmanın temel yöntemlerini öğreneceksiniz.

Giriş ve Konumlandırma

Düzenli İfadeler (Regex) ile Karmaşık Loglarda IOC Ayıklama

Siber güvenlik alanında, olay ve tehdit analizinde düzenli ifadeler (regex), karmaşık log kayıtlarından zararlı göstergeleri (IOC) ayıklamak adına son derece önemlidir. Birçok siber güvenlik uzmanı, büyük miktardaki veriyi incelemekte zorlanabilir ve bu noktada regex, aradıkları veriye ulaşmalarını sağlayan etkili bir araç olarak karşımıza çıkar. Bu yazının amacı, regex kavramını ve karmaşık log dosyalarındaki IOC ayıklama sürecini ele alarak, okuyucuları bu teknik konu hakkında bilgilendirmektir.

Regex (Düzenli İfadeler) Nedir?

Regex, belirli bir kurala ya da desene uyan verileri büyük veri yığınları içerisinde bulmak, ayıklamak ve analiz etmek için kullanılan bir sözdizimidir. Siber güvenlik uygulamalarında, log dosyalarında bulunan karmaşık verilerin içerisinden kritik bilgileri çekmek için yoğun şekilde kullanılır. Örneğin, bir log kaydında şüpheli bir IP adresini veya belirli bir hash değerini ayıklamak için regex yazmak, analistlerin hızlı ve etkili kararlar almalarına imkan tanır.

Neden Önemlidir?

Karmaşık log dosyaları, sistemlerin etkinliğini izlemek ve güvenlik olaylarını analiz etmek için kritik öneme sahiptir. Ancak, bu loglar genellikle büyük miktarda veri içerdiğinden, analistlerin hangi bilgilerin kritik olduğunu anlaması zorlayıcı olabilir. Bu aşamada regex, analistlerin istenen bilgileri (IOC) tanımlamalarına ve ayıklamalarına yardımcı olur. Örneğin, bir saldırının izlerini tespit etmek için log kayıtlarında belirli karakter dizilerini aramak üzere regex ifadeleri yazmak mümkündür.

Siber Güvenlik ve Pentest Bağlamında Regex Kullanımı

Siber güvenlik alanında, pentest (penetrasyon testi) uygulamaları sırasında elde edilen log verilerinin analizi büyük önem taşımaktadır. Loglar, sistemin zayıf noktalarını ve olası zararlı aktiviteleri ifşa edebilir. Regex kullanarak, pentesterler loglardan zararlı yazılım bağlantılarını, yetkisiz erişim girişimlerini veya tanımlanmış IOC'leri hızlı bir şekilde ayıklayabilir. Bu ise savunma mühendislerine, siber saldırılara karşı daha etkili savunmalar oluşturmaları için zaman kazandırır.

Teknik İçeriğe Hazırlık

Regex’i etkin kullanmak için belirli teknik bilgiler edinmek gerekir. Öncelikle, regex’in temel meta-karakterleri, kaçış karakterleri ve belirleyicileri hakkında bilgi sahibi olmalısınız. Örneğin, özel karakterlerin tam anlamıyla yakalanabilmesi için kaçış karakteri kullanmak önemlidir. Python programlama dilinde regex’in çalıştırılması ise re kütüphanesi üzerinden gerçekleştirilir. Aşağıda, Python ile regex kullanarak belirli bir hash değerini yakalamak için basit bir örnek verilmiştir:

import re

# Örnek log verisi
log_data = "Saldırı tespit edildi. Hash: 5d41402abc4b2a76b9719d911017c592"
# MD5 hash deseni
hash_pattern = r"[a-f0-9]{32}"

# Deseni kontrol et
match = re.search(hash_pattern, log_data)
if match:
    print("Hash bulundu:", match.group())
else:
    print("Hash bulunamadı.")

Yukarıdaki örnekte, bir log verisi bir MD5 hash değerini içermektedir. re.search() fonksiyonu, verilen desene karşılık gelen ilk eşleşmeyi bulmak için kullanılmıştır.

Sonuç

Özetle, karmaşık loglardan IOC ayıklama işlemi, siber güvenlik uzmanları ve analistleri için kritik bir yetkinliktir. Düzenli ifadeler kullanarak, loglar içindeki önemli bilgilerin hızlı bir şekilde bulunması sağlanmakta, bu sayede siber tehditlerle mücadelede daha etkili stratejiler geliştirilebilmektedir. Bu yazıda sunulan temel bilgilerin ve örneklerin, okuyucuların regex konusunda daha derin bir anlayış kazanmasına yardımcı olması hedeflenmiştir. Gelecek bölümlerde regex’in daha karmaşık yanlarını ve uygulama örneklerini ele alacağız.

Teknik Analiz ve Uygulama

Regex (Düzenli İfadeler) Nedir?

Düzenli ifadeler (Regex), metinler içinde belirli bir kurala veya desene uyan verileri aramak ve ayıklamak için kullanılan bir tekniktir. Özellikle siber güvenlik alanında, log dosyalarında tehdit göstergelerini (IOC) tanımlamak ve analiz etmek için son derece yararlıdır. Karmaşık log içeriklerinde istediğimiz bilgileri daha hızlı ve etkili bir biçimde bulmamıza olanak tanır.

Temel Meta-Karakterler

Regex yazımında, belirli veri tiplerini yakalamak için özel semboller kullanılır. Örneğin:

  • \d: Sadece rakamlarla (0-9) eşleşir.
  • \w: Alfasayısal karakterlerle (harf, rakam ve alt tire) eşleşir.
  • \s: Boşluk karakterleriyle (boşluk, tab veya yeni satır) eşleşir.

Bu meta-karakterler, karmaşık desenler oluştururken oldukça kullanışlıdır.

IOC Ayıklama Amacı

Karmaşık loglardan IOC'ları ayıklamak için Regex'in kullanımı, zararlı aktiviteleri tespit etme ve önlem alma açısından kritik bir rol oynar. Örneğin, bir logfile’da IP adreslerini veya zararlı yazılım hash'lerini hızlı bir şekilde bulabiliriz. Böylece, bu verileri daha sonra analiz ve raporlama aşamalarında kullanabiliriz.

Python'da Regex Modülü

Python programlama dili, düzenli ifadeleri kullanmak için yerleşik bir re kütüphanesine sahiptir. Regex sorguları oluştururken ve çalıştırırken bu kütüphaneyi kullanmak kritik öneme sahiptir. Aşağıda, bu kütüphanenin kullanımına dair basit bir örnek verilmiştir:

import re

log = "Failed login attempt from 192.168.1.1 on 2023-10-23"
pattern = r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"  # IPv4 adrese uygun desen

ip_address = re.search(pattern, log)
if ip_address:
    print("IP Adresi bulundu:", ip_address.group())

Bu örnekte, bir log dosyasından IP adresini ayıklamak için bir düzenli ifade kullanılmıştır.

Python 're' Metotları

Python'daki re modülü, farklı amaçlarla kullanılabilen çeşitli metotlar sunar. Örneğin:

  • re.search(): Metnin tamamını tarar ve regex desenine uyan ilk eşleşmeyi döndürür.
  • re.findall(): Metin içerisindeki desene uyan tüm eşleşmeleri bulup analiste bir liste olarak verir.
  • re.sub(): Metin içerisinde desene uyan kısımları bulur ve bunları başka bir metinle değiştirir.

Aşağıdaki kod, re.findall() metodunun nasıl kullanıldığını gösterir:

import re

log_data = "User accessed from 192.168.0.1 and 10.0.0.2"
pattern = r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"

ip_addresses = re.findall(pattern, log_data)
print("Tespit edilen IP adresleri:", ip_addresses)

Sınır ve Miktar Belirleyiciler

Regex'te sınır ve miktar belirleyiciler, eşleşmelerin daha hassas bir şekilde tanımlanmasına olanak sağlar. Örneğin, süslü parantezler {} kullanılarak belirli bir karakterin tam olarak kaç kez tekrar etmesi gerektiği belirtilebilir. \d{3} ifadesi, tam olarak üç rakamla eşleşir.

Kaçış (Escape) Karakteri

Regex'te bazı karakterler özel anlamlar taşır. Bu karakterleri bir metin içerisinde olduğu gibi kullanmak için önüne bir kaçış karakteri (\) eklenir. Örneğin, bir nokta . karakteri, herhangi bir karakteri ifade eder. Eğer bir gerçek nokta kullanmak isterseniz, bunu şu şekilde yazmalısınız: \.

Hash Formatları ve Desenleri

Karmaşık loglarda sıklıkla karşılaşılan hash türleri için de regex kullanılabilir. Örneğin, MD5, SHA-1 ve SHA-256 için uygun desenler aşağıdaki gibi tanımlanabilir:

  • MD5: ^[A-Fa-f0-9]{32}$
  • SHA-1: ^[A-Fa-f0-9]{40}$
  • SHA-256: ^[A-Fa-f0-9]{64}$

Bu desenler, loglardan belirtilen formatta hash'leri ayıklamak için kullanılabilir ve zararlı yazılımların tanımlanmasında etkili bir yöntemdir.

SOAR İçinde Regex Kullanımı

Security Orchestration, Automation and Response (SOAR) platformlarında regex kullanımı, otomatikleştirilmiş yanıt süreçlerinde fayda sağlar. Örneğin, e-posta gövdesindeki şüpheli bağlantıları tespit etmek için regex kullanılabilir.

Hatalı Pozitif (False Positive) Riski

Gevşek yazılmış regex kuralları, loglardaki meşru verileri yanlış bir şekilde yanlışlıkla tanıyabilir. Örneğin, bir yazılım versiyon numarası 1.2.3.4 yanlışlıkla bir IP adresi olarak tespit edilebilir. Bu durum, analiz sürecinde hatalı pozitif alarmlara yol açabilir.

Sonuç olarak, düzenli ifadeler karmaşık loglardan IOC'ları ayıklama süreçlerinde kritik bir rol oynamaktadır. Doğru kullanıldıklarında, siber güvenlik analistlerine sürekli olarak artan veri yığınları içerisinde hızlı ve etkili bir bilgi bulma yeteneği sağlar. Bu anlamda, regex bilgisi ve uygulaması analistlerin temel yetkinliklerinden biri olmalıdır.

Risk, Yorumlama ve Savunma

Giriş

Siber güvenlik, sürekli değişen tehdit manzarasıyla birlikte dinamik bir alan olarak ön plana çıkmaktadır. Siber saldırılara karşı etkili bir şekilde savunma yapabilmek için özellikle log analizinde düzenli ifadelerin (Regex) doğru bir şekilde kullanılması kritik öneme sahiptir. Bu bölümde elde edilen bulguların güvenlik anlamı, yanlış yapılandırmalar ya da zafiyetlerin etkileri, ve gerekli önlemler üzerinde durulacaktır.

Elde Edilen Bulguların Güvenlik Anlamı

Karmaşık loglardan IOC (Indicator of Compromise) ayıklamak, siber güvenlik uzmanlarının temel görevlerinden biridir. Regex kullanarak elde edilen bulgular, sızan verilere, sistem topolojisine ve hizmet tespitine dair önemli ipuçları sağlar. Örneğin, bir logda kullanıcı adları, IP adresleri veya hash değerleri gibi kritik bilgilerin düzenli ifadelerle ayıklanması, potansiyel bir saldırının izlerini sürmek için elzemdir.

import re

log_data = "Failed login attempt from IP: 192.168.1.10"
pattern = r"IP: (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})"
result = re.search(pattern, log_data)

if result:
    print(f"Detected IP Address: {result.group(1)}")

Yukarıdaki kod, bir logdan IP adresini ayıklamak için kullanılan basit bir Regex örneğidir. Elde edilen IP adresi, potansiyel bir tehdit kaynağı olarak daha fazla analize tabi tutulabilir.

Yanlış Yapılandırma veya Zafiyetler

Yanlış yapılandırmalar veya sistemdeki zafiyetler, siber saldırılara açık kapılar bırakabilir. Örneğin, bir hizmetin gereğinden fazla yetkilendirilmesi ya da güncellenmemiş bir yazılım, saldırganların yararlanabileceği zayıf noktalar oluşturur. Regex ile bu tür hataları tespit etmek, güvenlik yapılandırmalarında kritik bir rol oynamaktadır.

Bir örnek vermek gerekirse, yanlış yazılmış bir Regex kuralı, meşru bir yazılım versiyonunu veya kullanıcı bilgilerini IP adresi olarak yanlış yorumlayabilir. Bu tür hatalar, yanlış pozitif (False Positive) alarmlar oluşturabilir ve güvenlik ekiplerini yanıltabilir. Bu nedenle, Regex yazarken dikkatli olmak ve doğru meta-karakterleri tanımlamak önemlidir.

Sızan Veri, Topoloji ve Servis Tespiti

Sızan veriler, bir siber saldırının ne denli etkili olduğunu gösteren kritik göstergelerdir. Regex ile elde edilen sonuçlar; IP, domain veya hash gibi öğeleri ortaya çıkararak saldırının boyutunu anlamamıza yardımcı olur. Örneğin, bir zararlı yazılım analizi sırasında belirli bir hash değeri kullanarak, sistemdeki tehlikeli dosyaları tespit edebiliriz.

hash_data = "Detected Hash: 5d41402abc4b2a76b9719d911017c592"
hash_pattern = r"[a-fA-F0-9]{32}"  # MD5 formatı
hash_result = re.search(hash_pattern, hash_data)

if hash_result:
    print(f"Detected MD5 Hash: {hash_result.group()}")

Yukarıdaki örnek, belirli bir log kaydında MD5 hash formatına uygun veriyi nasıl ayıklayabileceğinizi gösterir. Elde edilen hash, ileri düzey analizlerde kullanılabilir.

Profesyonel Önlemler ve Hardening Önerileri

Siber güvenlik alanında etkili bir savunma stratejisi oluşturmak için birkaç temel önlem almak gereklidir. Bunlar arasında, sistemlerinizin düzenli olarak güncellenmesi, güvenlik yazılımlarının sürekli güncel tutulması ve kullanıcıların yetkilendirilmesinde dikkat edilmesi gereken noktalar yer alır.

Ayrıca, asgari yetkilendirme prensibi (Principle of Least Privilege) uygulamak, her kullanıcıya ihtiyaç duyduğu en düşük yetkilerin verilmesi anlamına gelir. Regex kullanırken, ayıklanan verilerin doğruluğunu arttırmak için hatalı pozitiflerin önüne geçmek adına daha kesin kurallar geliştirmek gerekmektedir.

Sonuç

Karmaşık loglarda IOC ayıklama tekniği, düzenli ifadelerin (Regex) kullanımıyla oldukça etkili bir hale getirilebilir. Elde edilen verilerin güvenlik anlamını yorumlamak, yanlış yapılandırmaları tespit etmek ve profesyonel önlemler almak, siber güvenlik tehditleriyle karşılaşma riskini azaltacaktır. Bu bağlamda, Regex’in kullanımı siber güvenlik uzmanlarının iş akışında önemli bir yer tutmakta ve etkinliklerini artırmaktadır.