Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

ThreatClock — Ransomware Erken Uyarı ve Risk Skorlama Sistemi

Uludağ Üniversitesi — Yönetim Bilişim Sistemleri (YBS) Python ile Veri Bilimi — Dönem Sonu Projesi Sertaç Özdemir (Öğrenci No: 132530113)

Ransomware saldırılarının tatil dönemleri, Bitcoin piyasa dinamikleri ve güvenlik açığı (CVE) yoğunluğu ile ilişkisini makine öğrenmesiyle modelleyen bir siber tehdit istihbarat sistemi. Proje, beş farklı veri kaynağını Apache Kafka / Spark / HDFS / Hive üzerinde birleştirir, açıklanabilir bir model üretir ve sonuçları IBM Cost of a Data Breach 2024 raporu temelinde finansal bir simülasyona dönüştürür.


🎯 Temel Araştırma Sorusu

Ransomware saldırıları belirli takvim, piyasa ve tehdit koşullarında daha mı sık ve maliyetli oluyor? Bu risk finansal olarak nasıl ölçülmeli ve kurumlar nasıl proaktif olarak uyarılmalıdır?


🏗️ Mimari

4 Veri Kaynağı (entegre)
   │
   ▼
Apache Kafka (3 topic: ransomware / btc / cve)
   │
   ▼
Spark Connect (ETL + özellik mühendisliği)
   │
   ▼
HDFS (/threatclock/raw, Parquet)
   │
   ▼
Hive (threatclock.* tabloları, SQL ile sorgulanabilir)
   │
   ▼
GradientBoosting Modeli + REST API

Not (ölçeklenebilirlik): Mevcut analiz tablosu (1.435 gün) tek makinede işlenebilir; Big Data mimarisi, üretimde günde milyonlarca ham olay akışını işleyecek ölçeklenebilirliği prototiplemek için kurulmuştur.


📊 Veri Kaynakları

Dört veri kaynağı ETL ile günlük çözünürlükte birleştirilip modele entegre edilmiştir. NewsAPI/TextBlob duygu verisi toplanmış ancak (yalnızca 21 günlük kapsam taşıdığı ve medya sinyali zaten GDELT'in news_cyber_index sütununda mevcut olduğu için) nihai modele dahil edilmemiştir — bu, lift testi bulgusuyla da tutarlıdır.

Kaynak Kayıt Durum Erişim
Ransomware.live API PRO 16.299 olay ✅ Modele entegre https://www.ransomware.live
Yahoo Finance (BTC-USD) 1.827 gün ✅ Modele entegre https://finance.yahoo.com/quote/BTC-USD
NVD CVE API v2.0 31.706 CVE ✅ Modele entegre https://nvd.nist.gov/developers/vulnerabilities
GDELT Doc API v2 1.825 gün ✅ Modele entegre https://www.gdeltproject.org
NewsAPI + TextBlob 338 haber Toplandı, entegre edilmedi https://newsapi.org

Tüm ham veri setleri data/ klasöründedir (6 CSV dosyası, toplam < 100 MB). Lab ortamının internet kısıtı nedeniyle veriler kendi makinede indirilip JupyterHub'a CSV olarak yüklenmiştir.


🤖 Model Evrimi: v1 → v2

Kuşak AUC-ROC Hedef Tanımı Özellikler Değerlendirme
v1 (naif) 0.7761 Global medyan Eşzamanlı (T₀) Yüksek AUC ama zaman enflasyonu + look-ahead
v2 (erken uyarı) 0.6461 Rolling baseline (90g) Gecikmeli (lag-1) Dürüst AUC, gerçek öngörü

v2 neden daha iyi bir modeldir? v1'in yüksek skoru iki "bedava" ayrımdan geliyordu: (1) zaman enflasyonu (saldırı sayısı 2020→2024 arası 20 kat arttığından etiket "hangi yıldayız"ı kodluyordu), (2) eşzamanlı tespit (bugünü bugünün verisiyle tahmin). v2 bunları kaldırarak gerçek bir erken uyarı sistemine dönüştü — model artık yalnızca dünün verisiyle bugünü tahmin ediyor.


🔑 Öne Çıkan Bulgular

  • Zaman enflasyonu çözüldü: Rolling baseline ile yıllık yüksek-risk oranı dengelendi (2021–2024 hepsi ~%50).
  • Erken uyarının temeli takvim: Out-of-sample testte en sağlam öngörücü is_weekend — hafta içi risk %64.4 iken hafta sonu %13.6. Ransomware grupları mesai saatlerinde saldırıyor.
  • Overfitting tespiti: BTC momentum eğitimde baskın ağırlığa sahip ama 2024'e genellemyor (permutation importance ile saptandı).
  • Finansal değer: Granüler sektör-ağırlıklı (16 sektör, IBM 2024) reaktif yıllık maliyet $922.7M; %30 risk azaltmayla ~$277M tasarruf potansiyeli (duyarlılık bandı: $92M–$461M).

📁 Repo Yapısı

threatclock/
├── README.md
├── ThreatClock_Yonetici_Ozeti.pdf    # Yönetici özeti raporu
├── notebook/
│   └── ThreatClock.ipynb             # Tüm kod (EDA → model → finansal → REST API)
└── data/                             # 6 ham veri seti (< 100 MB)
    ├── ransomware_data.csv
    ├── btc_data.csv
    ├── cve_data.csv
    ├── gdelt_data.csv
    ├── news_data.csv
    └── news_sentiment.csv

Not: Eğitilen model, REST API ve grafik üretimi ayrı dosyalar olarak değil, tek bir uçtan uca notebook (notebook/ThreatClock.ipynb) içinde yer alır. Notebook çalıştırıldığında modeller diske kaydedilir ve built-in http.server tabanlı API son hücrede tanımlanır.


⚙️ Kurulum ve Çalıştırma

# Bağımlılıklar
pip install pyspark==3.5.8 scikit-learn==1.8.0 pandas==3.0.2 \
            kafka-python numpy matplotlib seaborn shap textblob

# Notebook'u çalıştır (Restart & Run All ile yukarıdan aşağıya)
jupyter notebook notebook/ThreatClock.ipynb

Lab notu: Lab ortamı shap (TreeExplainer) içerir; v3 modelinin global ve lokal açıklaması gerçek Shapley değerleriyle üretilmiştir (lineer yaklaşıklık değil). lime, flask, fastapi ve prophet kurulu olmadığından REST API için Python built-in http.server tercih edilmiştir. Notebook, lab'ın Big Data altyapısına (Spark Connect, Kafka, HDFS, Hive) bağlanacak şekilde yapılandırılmıştır.


⚠️ Üretim Yol Haritası

  • Mimari: Gerçek zamanlı uyarı için son halka Hive (batch) değil, Spark Structured Streaming / edge inference API olmalı.
  • Güvenlik: Pickle (CWE-502) yerine ONNX/skops gibi güvenli serileştirme kullanılmalı.
  • XAI: Lokal waterfall (lineer yaklaşıklık) yerine TreeSHAP entegre edilmeli.
  • Eşik: İki katmanlı eşik (Katman 1: otomatik log; Katman 2: analist eskalasyonu), üretimde boşta analist sayısına göre dinamik olmalı.

📄 Lisans

Akademik proje — yalnızca eğitim amaçlıdır. Veri kaynakları kendi lisans koşullarına tabidir.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages