Skip to content

redzeptech/logwatch-tr

Repository files navigation

LogWatch-TR 🛡️

LogWatch-TR, Windows Olay Günlükleri (EVTX) üzerinde Digital Forensics ve Threat Hunting odaklı hızlı triage analizi yapmanızı sağlayan açık kaynaklı bir güvenlik aracıdır. Adli bilişim uzmanları ve SOC ekipleri için tasarlanmış olan araç, binlerce log kaydını saniyeler içinde işleyerek tehdit göstergelerini tespit eder ve raporlar.


📋 Özet

LogWatch-TR, Windows ortamlarındaki olay günlüklerini analiz ederek:

  • Tehdit avcılığı (Threat Hunting): SigmaHQ kuralları ile bilinen saldırı örüntülerini tespit eder
  • Adli bilişim (Digital Forensics): Kronolojik zaman çizelgesi ve anomali analizi sunar
  • Gizlilik odaklı raporlama: Hassas verilerin otomatik maskelenmesi ile güvenli paylaşım sağlar

✨ Özellikler

Özellik Açıklama
🔍 SigmaHQ Entegrasyonu sigma_rules/ dizinindeki Sigma kuralları ile loglarda otomatik tehdit tespiti. PySigma ve özel motor desteği.
🔒 Otomatik Veri Maskeleme IP adresleri, kullanıcı adları, makine adları ve hassas yollar [MASKED_IP], ANONYMIZED_USER, ANONYMIZED_MACHINE ile anonimleştirilir.
📊 Raporlama HTML tabloları, zaman çizelgesi (timeline), pasta grafikleri ve PDF rapor çıktıları. Seviye bazlı renklendirme (Kritik/Yüksek/Orta).
Hızlı Analiz Multiprocessing ile paralel Sigma eşleştirme; binlerce log satırı saniyeler içinde işlenir.
📁 SQLite Veritabanı İşlenmiş loglar, anomali sonuçları ve uygulama logları kalıcı olarak saklanır.

🏗️ Teknik Mimari

LogWatch-TR modüler bir yapıda tasarlanmıştır:

┌─────────────────────────────────────────────────────────────────┐
│                     LogWatch-TR Mimarisi                         │
└─────────────────────────────────────────────────────────────────┘

  [EVTX / Log Kaynakları]
            │
            ▼
  ┌─────────────────────┐     ┌──────────────────────┐
  │   log_processor      │────►│   sigma_optimized     │
  │   (Orchestrator)     │     │   (Paralel eşleştirme)│
  └─────────┬───────────┘     └──────────┬───────────┘
            │                             │
            │     ┌───────────────────────┘
            │     │
            ▼     ▼
  ┌─────────────────────┐     ┌──────────────────────┐
  │   sigma_engine       │     │   sigma_pysigma      │
  │   (Özel motor)      │     │   (PySigma matcher)  │
  └─────────┬───────────┘     └──────────┬───────────┘
            │                             │
            └─────────────┬───────────────┘
                          │
                          ▼
            ┌─────────────────────────────┐
            │   sigma_rules/ (YAML)        │
            │   SigmaHQ Windows kuralları  │
            └─────────────────────────────┘
                          │
            ┌─────────────┼─────────────┐
            ▼             ▼             ▼
  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐
  │  timeline   │  │   masker     │  │   database   │
  │  (Zaman     │  │  (Maskeleme)│  │  (SQLite)   │
  │   çizelgesi)│  │             │  │             │
  └──────┬──────┘  └──────┬──────┘  └──────┬──────┘
         │                │                │
         ▼                ▼                ▼
  ┌─────────────────────────────────────────────┐
  │  Rapor Çıktıları: HTML, PDF, JSON, Grafik  │
  └─────────────────────────────────────────────┘

Ana bileşenler:

  • log_processor: Log akışını yönetir, Sigma kontrol noktasını tetikler
  • sigma_engine / sigma_pysigma: Sigma kurallarını parse eder ve loglarla eşleştirir
  • sigma_optimized: Multiprocessing ile büyük veri setlerinde hızlı tarama
  • timeline: Çok kaynaklı logları kronolojik sıraya dizer, HTML/JSON export
  • masker: Hassas verileri rapor öncesi anonimleştirir
  • database: SQLite ile kalıcı depolama

🚀 Kurulum

Gereksinimler

  • Windows 10/11 (64-bit)
  • Python 3.10+ (kaynak koddan çalıştırıyorsanız)

Hazır Dağıtım (Windows)

  1. LogWatch-TR_v1.0.0_windows_x64 klasörünü indirin
  2. evtx_triage.exe dosyasını çalıştırın
  3. Sigma kuralları sigma_rules/ dizininde hazır gelir

Kaynak Koddan Kurulum

# Depoyu klonlayın
git clone https://github.com/<kullanici>/LogWatch-TR.git
cd LogWatch-TR

# Bağımlılıkları yükleyin
pip install -r requirements.txt

# Sigma kurallarını güncelleyin (isteğe bağlı)
python update_sigma.py

📖 Kullanım Örnekleri

Ana Uygulama

# Windows paketinde
evtx_triage.exe

# Kaynak koddan
python forensics_demo.py

Zaman Çizelgesi ve Rapor

from timeline import build_timeline, timeline_to_html, timeline_to_json

# Çok kaynaklı loglardan zaman çizelgesi oluştur
log_sources = {
    "Security": [{"EventID": 4624, "TimeCreated": "...", "Computer": "WS01"}, ...],
    "Sysmon": [{"EventID": 1, "UtcTime": "...", "Image": "cmd.exe"}, ...],
}
events = build_timeline(log_sources)

# HTML çıktı (maskeleme ile)
timeline_to_html(events, "timeline.html", masking=True)

# JSON çıktı
timeline_to_json(events, "timeline.json", masking=True)

Rapor Dışa Aktarma (HTML/PDF)

from report_export import ReportExporter, export_results

results = [
    {"severity": "critical", "description": "Başarısız oturum açma", "event_id": "4625", ...},
    {"severity": "high", "description": "Şüpheli PowerShell", "event_id": "4688", ...},
]

# Tek seferde HTML ve PDF
export_results(results, html_path="rapor.html", pdf_path="rapor.pdf", title="LogWatch-TR Analiz Raporu")

Sigma Tehdit Avcılığı

from log_processor import process_logs
from sigma_optimized import SIGMA_SEVERITY_FIELD

# Logları Sigma kontrol noktası ile işle
process_logs(all_logs, run_sigma_checkpoint=True, use_parallel=True)

# KRİTİK işaretli logları filtrele
critical = [log for log in all_logs if log.get(SIGMA_SEVERITY_FIELD) == "KRİTİK"]

🔒 Maskeleme ve Gizlilik

Rapor çıktılarında hassas veriler otomatik maskelenir:

Ham Veri Maskelenmiş Çıktı
192.168.1.100 [MASKED_IP]
Administrator ANONYMIZED_USER
WORKSTATION01 ANONYMIZED_MACHINE
C:\Users\admin\secret.txt [MASKED_PATH]

masking=True parametresi timeline_to_html, timeline_to_json ve logs_to_pie_chart_html fonksiyonlarında kullanılabilir.


📜 Lisans

Bu proje MIT License altında lisanslanmıştır.
Geliştirici: Recep Şenel


🤝 Katkıda Bulunma

  1. Bu depoyu çatallayın (Fork)
  2. Yeni bir özellik dalı oluşturun (git checkout -b feature/yeni-ozellik)
  3. Değişikliklerinizi commit edin (git commit -m 'feat: yeni özellik eklendi')
  4. Dalınızı push edin (git push origin feature/yeni-ozellik)
  5. Pull Request açın