Exploring Infinite Possibilities on FrontEnd 🚀
Burak Sağlık
Search...

Sun Sep 27 2026

Scareware Nedir? Malvertishing ve Sahte Uyarılardan Korunma Rehberi

Scareware Nedir? Malvertishing ve Sahte Uyarılardan Korunma Rehberi

🎯 Giriş: Neden Bu Konu Önemli?

Merhaba! 👋
Bugün birlikte siber güvenliğin gizli tehlikeleri üzerine sohbet edeceğiz.
Hepimiz günlük hayatımızda telefon, tablet, laptop — kısacası her an çevrimiçiyiz.
Peki, bu bağlantı bize ne kadar güvenli geliyor?

🎬 Küçük bir hikayeyle başlayalım

  • Amcam yeni aldığınız MacBook’unu açtı, bir video izlemeye başladı.
  • Plötzlich ekran dondu, “Sistem tespit etti: Virüs!” mesajı geldi.
  • Panikle tıkladı, bir indirme başlatıldı ve bilgisayar kilitlendi.
  • Sonuç: fidye yazılımı (ransomware) bulaşmıştı, dosyaları şifreliydi.

Bu senaryo yalnızca filmlerde değil, gerçek hayatta her gün tekrar ediyor.

🔎 İki temel terimi tanıyalım

Terim Ne anlama gelir? Neden önemli?
Scareware “Sistemde virüs var!” diye korkutup tıklatmaya çalışan sahte uyarılar. Kullanıcıyı panik içine sokar, kötü amaçlı yazılım indirir.
Malvertising Zararlı reklamlar aracılığıyla yayılan kötü amaçlı kodlar. Güvenilir sitelerde bile gizlice bulaşabilir.

Kısaca: Her ikisi de güven duygumuzu sömürerek cihazımızı ele geçirmeye çalışır. 🎭

📌 Bu yazıda ne öğreneceksiniz?

  • Scareware ve malvertising’in nasıl tanınır?
  • Günlük alışkanlıklarımızla korunma yolları nelerdir?
  • Basit araçlarla (tarayıcı eklentileri, DNS ayarları) ilk hat savunması nasıl kurulur?
  • Gerçek dünyadan örnek senaryolar ve pratik ipuçları.

Hazırsan derinlemesine inceleyelim ve dijital hayatımızı biraz daha güvenli hale getirelim! 🚀


🔁 Sahte Sistem Uyarısı Sayfalarının Anatomisi

Hadi bir sahte sistem uyarısı sayfasının içine girelim ve bu sayfaların nasıl çalıştığını adım adım inceleyelim. Amaç: saldırganın oyun kitabını anlamak ki, kullanıcılarınızı (ve kendinizi) koruyabilelim 🛡️


🎯 Temel Mantık: Kullanıcıyı "Kilitli" Bir Duruma Sokmak

Sahte uyarı sayfalarının tek bir hedefi var: kullanıcının panik yapıp düşünmeden hareket etmesini sağlamak. Bunu üç ana unsuru birleştirerek başarırlar:

Unsur Ne İşe Yarar?
Tam ekran modal Tarayıcıyı kapatma, sekme değiştirme, ESC tuşu → hepsi engellenir (veya öyle sanılır)
Sayaç (countdown) "Süre dolunca sistem kilitlenecek / veriler silinecek" psikolojisi kurar ⏱️
Sesli uyarı + sahte destek numarası Duygusal baskıyı zirveye taşır, "acil yardım" çağrısı yapar 📞

🛠 Kod Parçacığı: Tam Ekran Modal + Sayaç + Ses

Aşağıda eğitim amaçlı, sadeleştirilmiş bir örnek var. Gerçek saldırılar çok daha obfuscate (karmaşıklaştırılmış) olsa da, iskelet bu şekildedir:

<!DOCTYPE html>
<html lang="tr">
<head>
  <meta charset="UTF-8">
  <title>Sistem Uyarısı</title>
  <style>
    /* Modal tam ekranı kaplar, kullanıcıyı "hapseder" */
    .overlay {
      position: fixed;
      inset: 0;
      background: rgba(0, 0, 0, 0.95);
      color: #fff;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      z-index: 999999; /* Diğer her şeyin üstünde */
      font-family: system-ui, sans-serif;
    }
    .warning-box {
      background: #b71c1c;
      padding: 2rem;
      border-radius: 8px;
      text-align: center;
      max-width: 90%;
      box-shadow: 0 0 30px rgba(255, 0, 0, 0.6);
    }
    h1 { font-size: 1.8rem; margin-bottom: 0.5rem; }
    .timer { font-size: 3rem; font-weight: bold; color: #ffeb3b; margin: 1rem 0; }
    .phone { font-size: 1.3rem; color: #fff; background: #1565c0; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; display: inline-block; margin-top: 1rem; }
    .phone:hover { background: #1e88e5; }
  </style>
</head>
<body>
  <div class="overlay" id="overlay">
    <div class="warning-box" role="alertdialog" aria-labelledby="alert-title" aria-describedby="alert-desc">
      <h1 id="alert-title">⚠️ KRİTİK GÜVENLİK UYARISI</h1>
      <p id="alert-desc">Bilgisayarınızda şüpheli bir faaliyet tespit edildi. Sistem güvenliğiniz tehlikede.</p>
      <div class="timer" id="timer">05:00</div>
      <p>Süre dolunca sisteminiz kalıcı olarak kilitlenecektir.</p>
      <a href="tel:+908501234567" class="phone" id="support-phone">📞 Destek Hatını Ara: +90 850 123 45 67</a>
    </div>
  </div>

  <script>
    // ---------- 1. SESLİ UYARI (Web Audio API) ----------
    function playAlarm() {
      const ctx = new (window.AudioContext || window.webkitAudioContext)();
      const oscillator = ctx.createOscillator();
      const gainNode = ctx.createGain();

      oscillator.type = 'square';      // Keskin, rahatsız edici ton
      oscillator.frequency.value = 880; // La5 notası
      gainNode.gain.value = 0.3;       // Ses seviyesi

      oscillator.connect(gainNode);
      gainNode.connect(ctx.destination);

      oscillator.start();
      // 500ms sonra sessize al, sonra tekrar et (döngü)
      setTimeout(() => oscillator.stop(), 500);
    }

    // Her 1.5 saniyede bir alarm çal
    const alarmInterval = setInterval(playAlarm, 1500);

    // ---------- 2. SAYAC (COUNTDOWN) ----------
    let seconds = 300; // 5 dakika
    const timerEl = document.getElementById('timer');

    function updateTimer() {
      const m = Math.floor(seconds / 60).toString().padStart(2, '0');
      const s = (seconds % 60).toString().padStart(2, '0');
      timerEl.textContent = `${m}:${s}`;

      if (seconds <= 0) {
        clearInterval(timerInterval);
        clearInterval(alarmInterval);
        // ---------- 3. YÖNLENDİRME (setTimeout ile) ----------
        // Sayaç biterse sahte "destek" sayfasına veya indirme sayfasına atar
        window.location.href = 'https://sahte-destek-sitesi.com/cozum.html';
      }
      seconds--;
    }

    const timerInterval = setInterval(updateTimer, 1000);
    updateTimer(); // İlk anında göster

    // ---------- 4. KULLANICI KAÇIŞINI ENGELLEME (Bazı Tarayıcılarda İşe Yarar) ----------
    // ESC, F11, Ctrl+W, Alt+F4 gibi tuşları yakalamaya çalışır
    document.addEventListener('keydown', (e) => {
      if (e.key === 'Escape' || e.key === 'F11' || (e.ctrlKey && e.key === 'w') || (e.altKey && e.key === 'F4')) {
        e.preventDefault();
        e.stopPropagation();
        playAlarm(); // Kaçmaya çalışınca alarmı tetikle
      }
    }, true);

    // Sağ tık menüsünü devre dışı bırak
    document.addEventListener('contextmenu', e => e.preventDefault());

    // Tarayıcıyı tam ekrana zorla (Kullanıcı izni gerektirir, genelde reddedilir ama denenir)
    if (document.documentElement.requestFullscreen) {
      document.documentElement.requestFullscreen().catch(() => {});
    }
  </script>
</body>
</html>

🔍 Kodun Parçalarını Tek Tek Anlayalım

1️⃣ Tam Ekran Modal (.overlay)

  • position: fixed; inset: 0; → Sayfanın tamamen üzerine oturur
  • z-index: 999999 → Diğer her elementin (hatta devtools bile) üzerinde kalmaya çalışır
  • role="alertdialog" + aria-* → Erişilebilirlik (accessibility) attributes kullanıcıyı kandırmak için hileli şekilde kullanılır — ekran okuyucular "kritik uyarı" der

2️⃣ Web Audio API ile Alarm Sesi (playAlarm)

  • AudioContext → Tarayıcının düşük gecikmeli ses motoru
  • OscillatorNode.type = 'square' → Kare dalga = çok rahatsız edici, "sistem hatası" hissi verir
  • setInterval(playAlarm, 1500) → Ses tekrar tekrar çalar, kullanıcı sustur butonunu arar (bulamaz)

💡 Gerçek hayatta: Saldırganlar AudioContext başlatmak için kullanıcı etkileşimi (tıklama, tuş basma) gerektirdiğini bilirler. Bu yüzden sayfa yüklendiğinde document.body.onclick = () => { ctx.resume(); ... } gibi bir tetikleyici koyarlar.

3️⃣ Sayaç (Countdown) + setTimeout Yönlendirmesi

  • setInterval(updateTimer, 1000) → Her saniye günceller, kullanıcı zamanın gözü önünde biterken izler
  • Sayaç 0 olduğunda clearInterval → alarm durur, sonra window.location.href ile yönlendirme
  • Bu yönlendirme genelde: sahte "Microsoft/Desteği" sayfası, uzaktan erişim yazılımı indirme linki (AnyDesk, TeamViewer, RustDesk) veya ödeme sayfası olur

4️⃣ Kaçış Yollarını Engelleme (Keydown + Contextmenu)

  • keydown listener true (capture phase) ile eklenir → en önce biz yakalarız
  • e.preventDefault() + e.stopPropagation() → Tarayıcının varsayılan davranışını (ESC ile fullscreen çıkış, Ctrl+W ile sekme kapatma) iptal etmeye çalışır
  • contextmenu engelleme → Sağ tık "İncele" / "Kaynak Göster" menüsünü gizler

❗ Not: Modern tarayıcılar (Chrome, Firefox, Edge) bu engellemeleri tamamen respected etmez. Örneğin ESC tuşu her zaman fullscreen'den çıkışı zorunlu kılar. Ama kullanıcı bunu bilmez — panik anında "çıkamıyorum" der.


🧠 Sosyal Mühendislik Hileleri: Neden İşe Yarar?

Teknik Psikolojik Etki
Kırmızı arka plan + uyarı ikonu Tehlike algısını anında tetikler (beyinde amigdala harekete geçer)
Geri sayım (05:00 → 00:00) "Zaman kaybediyorum, hemen bir şey yapmalıyım" aciliyeti yaratır ⏱️
Sesli alarm Görselden bağımsız olarak işitme duyusunu da istila eder, odaklanmayı bozar 🔊
Sahte destek numarası (0850 / 0800) "Resmi destek" hissiyatı verir, kullanıcı arar → saldırgan "teknisyen" olur 📞
Sistem kilitlenme tehdidi Kayıp averzyonu (loss aversion) — "verilerim gider" korkusu mantığı baskılar

✅ Bu Bilgiyi Nasıl Kullanırız?

  1. Kullanıcılarınızı eğitin: "Tarayıcı bir sayfada sizi hapsederse: Ctrl+Shift+Q (Chrome) / Ctrl+Alt+Delete → Görev Yöneticisi ile tarayıcıyı kill edin."
  2. Güvenlik yazılımı / DNS filtresi: Bilinen sahte destek domainlerini (ör. *support*.xyz, *tech-help*.top) bloklayın.
  3. Kurumsal tarayıcı politikaları: Fullscreen API iznini kısıtlayın, AudioContext otomatik başlatmayı engelleyin.
  4. Phishing simülasyonu: Bu tür sayfaları güvenli ortamda kullanıcılarınıza gösterin — "Bunu görürsen ne yaparsın?" deyin.

🎯 Özet: Anatomisi 4 Adımda

  1. Tam ekran modal → Görsel işgal 🖥️
  2. Sayaç + Alarm → Zaman baskısı + işitsel stres ⏱️🔊
  3. Sahte telefon / bağlantı → Güven kurup çağrıya yönlendirme 📞
  4. Kaçış engelleme denemeleri → Kullanıcının kontrol kaybı hissi 🔒

Unutmayın: Bu sayfaların hiçbiri sisteminize bulaşmamıştır. Sadece bir tarayıcı sekmesidir. Sekmeyi kill edince biter. Bu basit gerçeği hatırlatmak, kullanıcınızı kurtarır. 🛡️


Hazırsan bir sonraki bölümde: Bu sayfaların nasıl dağıtıldığını (malvertising, SEO poisoning, push bildirimi) ve ağ seviyesinde nasıl tespit edileceğini konuşalım. 🚀


❗️ Google Ads Ağı Üzerinden Dağıtım Süreci

Hazırsan bu kısmı adım adım inceleyelim 🎯

1️⃣ Hesap Kurulumu – Sahte Kimliklerle Hızlı Başlangıç

  • Yeni Google hesapları açılıyor (genellikle geçici e‑posta + telefon doğrulama atlanır)
  • Fatura bilgileri sahte şirketler veya hırsız kredi kartları ile dolduruluyor
  • Reklam hesabı “Yeni Müşteri” promosyon kodu ile ilk 300 $ hediye alınıyor → maliyet sıfırlanıyor

2️⃣ Anahtar Kelime Hedefleme – “Düşük Rekabet, Yüksek Dönüşüm”

  • Uzun kuyruklu (long‑tail) kelimeler seçiliyor:
    • “ucuz iPhone 13 satın al”
    • “hızlı kargo ile oyun konsolu”
  • Negatif anahtar kelimeler eklenmiyor → gereksiz tıklamalar bütçeyi tüketmiyor (sahte tıklamalar zaten botlardan geliyor)

3️⃣ Coğrafi Hedefleme – Saldırı Yüzeyini Daraltma

  • Yalnızca hedef ülke/şehir seçiliyor (ör. Türkiye, İstanbul)
  • IP aralıkları ve VPN çıkış noktaları hariç tutulmuyor → bot trafiği rahatça geliyor

4️⃣ Reklam Uzantıları – Güven Veren Detaylar

Uzantı Türü Ne Sağlıyor? Sahte Kullanım
Sitelink Ek sayfa linkleri Sahte “İndirim”, “Garanti” sayfalarına yönlendirme
Callout Kısa avantajlar “%100 Orijinal”, “Hızlı Teslimat”
Structured Snippet Kategori listesi “Markalar: Apple, Samsung” (gerçek stok yok)
Location Fiziksel adres Sahte mağaza adresi / boş bir ofis

Ne oluyor burada?
Uzantılar reklamı daha profesyonel gösteriyor, kullanıcı “güvenli” hissedip tıklıyor 🎣

5️⃣ Onay Sürecinin Zafiyetleri – “İnsan Gözü” Atlanıyor

  • Otomatik onay (Policy Compliance) çoğu reklamı dakikalar içinde geçiriyor
  • Manuel inceleme sadece şüpheli şablonlar (ör. “ücretsiz”, “kazanın”) tetikleniyor
  • Sahte hesaplar “normal” görünen metinler kullanıyor → red edilmiyor ✅

6️⃣ Raporlama Mekanizmasının Gecikmeleri – Veri Kaçışı

  • Günlük raporlar 24‑48 saat gecikiyor → anomali erken fark edilmiyor
  • Click‑through‑rate (CTR) ve Conversion verileri bot trafiği ile şişiriliyor
  • Google Ads Dashboard’da “Invalid clicks” filtresi varsayılan kapalı → raporlarda gerçek maliyet gizleniyor ⛔

7️⃣ Pratik Özet – Ne Yapmalıyız?

  • Hesap doğrulama: Müşteri kimliği, fatura adresi, telefon iki faktörlü kontrol
  • Anahtar kelime denetimi: Uzun kuyruklu kelimeleri negatif listeye al, bot tespiti için “click‑pattern” analizi
  • Coğrafi filtre: Bilinen VPN/IP aralıklarını exclude et
  • Uzantı doğrulaması: Sitelink/Callout URL’lerini manuel kontrol et
  • Onay akışı: “Yüksek riskli” kategorilerde manuel onay zorunlu kıl
  • Raporlama: Gerçek zamanlı invalid‑click raporu, otomatik uyarı (e‑mail/Slack)

Sonuç: Sahtekarlar Google Ads’in hızlı onay ve gecikmeli raporlama zayıflıklarını birleştirerek düşük maliyetle büyük trafik yakalıyor. Bizim tarafımızdan proaktif doğrulama ve gerçek zamanlı izleme bu zinciri kırmak için en etkili yollar 🚀


🛠 Tehlike Sinyalleri: Kullanıcının Dikkat Etmesi Gerekenler

Hazırsan bu kırmızı bayrakları tek tek inceleyelim. Her biri tek başına bir şey ifade etmez ama birkaç tanesi bir arada çıktığında "dur, bir saniye" demenin vakti gelmiştir 🛑


1️⃣ URL Yapısı: İlk Bakışta Çarpıcıysa Dur

Ne oluyor? Saldırganlar genellikle meşru siteleri taklit eden, ama ufak farklar taşıyan URL'ler kullanır.

Kontrol listesi:

  • ✅ Alan adı (domain) tam olarak bilinen siteyle eşleşiyor mu? (google.com vs goog1e.com, paypal.com vs paypal-security.com)
  • ✅ Alt alan adı (subdomain) kurgulanmamış mı? (security.google.com.attacker.com — aslında attacker.com!)
  • ✅ Protokol https:// mi? (http:// görürsen hemen çık)
  • ✅ URL'de gereksiz uzunluk veya anlamsız parametreler var mı? (?redirect=..., ?token=...)

💡 İpucu: Adres çubuğuna tıkla, tam URL'i gör. Bazı tarayıcılar kısaltır.


2️⃣ Sertifika Bilgileri: Kilit Sembolü Yeterli Değil

Ne oluyor? Kilit ikonu 🔒 sadece "bağlantı şifreli" der, "site güvenli" demaz.

Kontrol listesi:

  • ✅ Kilit ikonuna tıkla → Sertifika detaylarını aç
  • ✅ "Verilen" (Issued to) alanı site sahibiyle eşleşiyor mu?
  • ✅ Geçerlilik tarihleri geçerli mi? (Süresi dolmuş sertifika = risk)
  • ✅ Kendi imzalı (self-signed) sertifika mı? (Tarayıcı uyarır, "Gelişmiş" → "Yine de git" deme!)

⚠️ Unutma: Let's Encrypt ücretsiz sertifika verir. Saldırgan da alabilir. Sertifika kimlik kanıtı değil, sadece şifreleme kanıtıdır.


3️⃣ Tarayıcı Adres Çubuğu Kilidi: Sahte Kilitler Var

Ne oluyor? Bazı phishing siteleri, adres çubuğunun içine kilit emojisi koyar veya favicon olarak kullanır.

Kontrol listesi:

  • ✅ Kilit tarayıcı chrome'unda (adres çubuğu solunda/sağında) mi, yoksa sayfa içeriğinde mi?
  • ✅ Mobilde: Adres çubuğu kaydırınca kaybolur, kilit de kaybolmalı. Sayfa içinde sabit duruyorsa → sahte
  • ✅ Tarayıcı menüsü (⋮ veya ⋯) → "Site bilgileri" / "Bağlantı güvenli" kontrol et

🧠 Eğlence notu: Bazı siteler favicon olarak 🔒 koyar. Tarayıcının kendi kilidi parlak/renklidir, sayfa içi kilit düz resimdir.


4️⃣ Beklenmeyen Tam Ekran Modu: "Kapanma Tuşu Nerede?"

Ne oluyor? Kötü niyetli siteler requestFullscreen() API'sini kullanıp, sahte bir tarayıcı arayüzü çizer. Sen sanırsın tarayıcındasın, aslında sayfa içindesin.

Kontrol listesi:

  • ✅ F11 bas → gerçek tam ekran açılıyor mu? (Sayfa içi sahte tam ekran F11'e tepki vermez)
  • ✅ Esc bas → Çıkıyor mu? (Çıkmıyorsa şüpheli)
  • ✅ Adres çubuğu, sekme çubuğu, uzantı ikonları görünüyor mu?
  • ✅ Mobilde: Durum çubuğu (saat, pil, sinyal) görünüyor mu?

🛠 Test et: Şu an bu sayfada F11 bas, farkı hisset. Sonra Esc ile çık.


5️⃣ Sesli Uyarılar ve Bildirimler: "Bilgisayarınız Tehlikede!"

Ne oluyor? AudioContext API'si ile tarayıcıdan ses çalınır. "Virüs bulundu", "Microsoft desteği arayın" gibi robot sesleriyle panik yaratılır.

Kontrol listesi:

  • ✅ Asla sesli uyarı veren bir siteden numara arama
  • ✅ Tarayıcı bildirim izni sormuş mu? (İzin vermediysen ve bildirim geliyorsa → sistem bildirimi değildir, sayfa içi HTML'dir)
  • ✅ Gerçek virüs uyarıları tarayıcıdan değil, antivirüs yazılımından / işletim sisteminden gelir

⛔ Kural: Tarayıcı hiçbir zaman "bilgisayarınızda virüs var" diye sesli uyarı vermez. Veren sitedir, tarayıcı değildir.


6️⃣ Aciliyet Yaratma Dili: "Şimdi Hareket Etmezsen..."

Ne oluyor? Sosyal mühendisliğin en eski numarası: Zaman baskısı + Korku = Mantık kapatılır.

Kontrol listesi:

  • ✅ "Son 10 dakika", "Hesabınız kapanacak", "Bugün son gün" ifadeleri var mı?
  • ✅ Para transferi, kod gönderme, şifre verme isteniyor mu "güvenlik için"?
  • ✅ Yetkili kurum (banka, polis, BT) adına mı geliyor? (Resmi kurum asla şifre/OTP istemez)

🎯 Mantra: "Aciliyet = Tuzağıdır." Derin nefes al, 5 dakika bekle, resmi kanaldan kontrol et.


📋 Özet: "Anlık Kontrol" Kartını Cüzdanına At

Kontrol Noktası Nasıl Bakılır? Kırmızı Bayrak
URL Adres çubuğuna tıkla, tamını oku Yazım hatası, gereksiz subdomain, http://
Sertifika Kilit → Sertifika detayı Kime verildi? Geçerli mi? Kendi imzalı mı?
Kilit Pozisyonu Tarayıcı chrome'unda mı, sayfa içinde mi? Sayfa içindeyse → sahte
Tam Ekran F11 / Esc testi Çıkmıyorsa → hile
Ses / Bildirim Tarayıcı izni var mı? İzinsiz bildirim / robot sesi = phishing
Dil "Hemen yap", "Son şans", "Para/Şifre" Aciliyet + hassas istek = dur

Son söz: Bu listeyi ezberlemek zorunda değilsin. Alışkanlık yap. Her "şüpheli" hissettiğin an bir tık, bir bak, bir nefes al. Zamanla bu kontrol reflexin olur 🧠✨


Sonraki bölümde bu sinyalleri otomatik tespit eden araçları (tarayıcı eklentileri, güvenlik eklentileri, kurumsal çözümler) inceleyeceğiz. Hazır mısın? 🚀


🛠 Pratik Önleme 1: DNS Filtreleme ile Engelleme

DNS filtreleme, en basit ve en etkili ilk savunma hattımız. Mantığı şu: kullanıcı (veya zararlı bir script) api.evil-corp.com adresini çözmeye çalışırken, DNS sunucumuz "Böyle bir domain yok" diye cevap verirse, bağlantı asla kurulamaz 🚫

Yani trafiği ağ seviyesinde, hiçbir proxy veya agent kurmadan kesiyoruz. Şirket ağında, ev laboratuarında veya CI/CD pipeline'ında — her yerde çalışır.


🎯 Hangi araçları kullanabiliriz?

Araç Avantajı Nerede Parlar?
NextDNS Bulut tabanlı, loglama ve analytics harika, CLI + API var Küçük ekipler, uzak takımlar, hızlı kurulum
Pi-hole Kendi sunucunda çalışır, tam kontrol, Gravity listeleri Homelab, ofis ağı, air-gapped ortamlar
Cloudflare Gateway Zero Trust entegrasyonu, ücretsiz tier cömert Cloudflare ekosistemi içindeyseniz

Ben NextDNS ile başlayıp, sonra Pi-hole'a da bir göz atalım — ikisi de CLI ile otomate edilebilir ✅


⚡ NextDNS: 3 dakikada kurulum ve blocklist ekleme

Önce CLI'ı kurup, profilimize özel bir blocklist ekleyelim. Şirketimizde "yasağı domain listesi" tutuyorsak (ör. blocklist.txt), bunu otomatik olarak NextDNS'e push edebiliriz.

# 1️⃣ nextdns-cli kurulumu (macOS / Linux)
curl -sSL https://nextdns.io/install.sh | bash

# 2️⃣ Profilinize bağlanın (API key gerektirir)
nextdns login -config <PROFIL_ID>

# 3️⃣ DNS'i sistemde etkinleştirin (systemd-resolved / NetworkManager ile uyumlu)
sudo nextdns install \
  -config <PROFIL_ID> \
  -listen 127.0.0.1:53 \
  -report-client-info \
  -auto-activate

# 4️⃣ Kendi blocklist dosyanızı ekleyin (her satır bir domain)
# Örnek blocklist.txt:
# malware.example.com
# c2.badactor.net
# tracking.evilcorp.io

nextdns blocklist add -config <PROFIL_ID> -name "Company Blocklist" -file ./blocklist.txt

# 5️⃣ Değişiklikleri anında uygulayın
nextdns reload -config <PROFIL_ID>

Bu sayede ne oluyor?

  • nextdns install → Sistemin DNS'ini NextDNS'e yönlendirir, şifreli DoH/DoT kullanır 🔐
  • blocklist add → Kendi listemizi özel bir kategori olarak ekler, loglarda "Company Blocklist" olarak görünür 📋
  • reload → Cache'i temizler, yeni kurallar anında devreye girer ⚡

💡 İpucu: CI/CD pipeline'ınıza blocklist.txt güncelleme adımı ekleyin. Her commit'te nextdns blocklist add çalıştırıp reload yaparsanız, liste her zaman güncel kalır.


🏠 Pi-hole: Gravity güncelleme ve özel listeler

Pi-hole kullanıyorsanız, Gravity veritabanı blok listelerinin birleşimidir. Kendi listelerinizi /etc/pihole/custom.list dosyasına ekler, sonra Gravity'i yeniden oluşturursunuz.

# 1️⃣ Özel blocklist dosyasını Pi-hole'a kopyalayın
sudo cp ./blocklist.txt /etc/pihole/custom.list

# 2️⃣ Gravity'i yeniden derleyin (tüm listeleri indirip birleştirir)
sudo pihole -g

# 3️⃣ Veya dahaverbose çıktı ile:
pihole -g --verbose

Nasıl çalışıyor?

  • pihole -g → Tüm upstream blocklistleri (StevenBlack, OISD, vb.) + custom.list indirilir, SQLite DB'sine (gravity.db) yazılır 🗃
  • DNS sorguları bu DB'ye karşı kontrol edilir, eşleşirse 0.0.0.0 / :: döner ❌
  • Web arayüzünden Query Log'a bakarsanız, hangi kural tetiklenmiş görebilirsiniz 🔍

🛠 Hangi yöntemi seçmelisiniz?

Senaryo Öneri
Hızlıca başla, merkezi loglama istiyorsun NextDNS (CLI + Dashboard) ✅
Ağın tam kontrolü sizde olsun, internet yok Pi-hole (lokal, air-gapped uyumlu) 🏠
Zero Trust / SASE stratejiniz var Cloudflare Gateway (WARP client ile) ☁️

Ben genellikle hibrit kullanıyorum: ofiste Pi-hole, uzak çalışanlarda NextDNS. İkisi de aynı blocklist.txt kaynağından beslenir — tek kaynak, çoklu dağıtım 🎯


⚠️ Küçük ama önemli notlar

  • DoH/DoT bypass riski: Tarayıcılar veya uygulamalar kendi DNS'lerini kullanabilir. Ağ seviyesinde (firewall/router) UDP/TCP 53 ve DoH portlarını (443, 853) sadece izinli DNS sunucularına sınırlayın 🔒
  • False positive olursa: nextdns allowlist add veya Pi-hole'da Whitelist ile çözün 🛡
  • Log tutma süresi: NextDNS ücretsiz planda 24 saat, Pro'da 30 gün. Pi-hole'da siz karar verin (disk alanına göre) 💾

Hazırsanız bir sonraki bölümde egress firewall kurallarıyla DNS dışı trafiği de nasıl kilitleyeceğimize bakalım 🚀


🛠 Pratik Önleme 2: Tarayıcı İzolasyonu ve Güvenli Ayarlar

Tarayıcı, saldırganın en sevdiği "giriş kapısı" olabilir 🚪. İyi haber: Chrome, Edge ve Firefox hepsi zaten güçlü izolasyon mekanizmaları sunuyor — sadece açıp yapılandırmak kalıyor. Hadi nasıl kilitleyeceğimize bakalım 🔒.

Neden tarayıcı izolasyonu? 🎯

  • Site Isolation (Site İzolasyonu): Her site ayrı bir süreçte çalışır. Bir tab kaçırılsa bile diğerleri (bankacılık, e-posta) etkilenmez.
  • Uzantı kontrolü: Kötü niyetli veya gereksiz uzantılar veri sızıntısı yapamaz.
  • Pop-up engelleme: Phishing sayfaları, reklam yazılımları ve istenmeyen yönlendirmeler önlenir.

Küçük hatırlatma: Kurumsanız Enterprise Policy (GPO/Intune/MDM) ile merkezi dağıtın. Kullanıcı profilinde yaparsanız sadece o profil etkilenir.


Chrome / Edge (Chromium tabanlı) — Enterprise Policy ile kilitleme 🛡

JSON formatında bir policy dosyası hazırlayıp dağıtmak en temiz yöntem. İşte minimum güvenli başlangıç seti:

{
  "SitePerProcess": true,
  "PopupsAllowedForUrls": [],
  "ExtensionInstallBlocklist": ["*"],
  "ExtensionInstallAllowlist": [
    "extension_id_1",
    "extension_id_2"
  ],
  "BlockThirdPartyCookies": true,
  "SafeBrowsingProtectionLevel": 2
}

Ne oluyor burada? 👇

Policy Ne işe yarar?
SitePerProcess: true Site İzolasyonu'nu zorunlu kılar — her origin ayrı renderer süreç alır 🧱
PopupsAllowedForUrls: [] Hiçbir site pop-up açamaz. Boş dizi = "hiçbiri" ⛔
ExtensionInstallBlocklist: ["*"] Varsayılan: tüm uzantılar engelli. Sizin beyaz listenizdeki hariç 🚫
ExtensionInstallAllowlist Sadece onayladığınız uzantı ID'leri yüklenebilir ✅
BlockThirdPartyCookies: true Üçüncü taraf çerezler engellenir — takip azalır 🍪
SafeBrowsingProtectionLevel: 2 Geliştirilmiş Koruma modu (real-time URL kontrolü) 🔍

İpucu: ExtensionInstallAllowlist boş bırakırsanız hiçbir uzantı yüklenemez. Kullanıcılarınız şikayet ederse gerekli ID'leri ekleyin.

Nasıl dağıtırsınız?

  • Windows: HKLM\Software\Policies\Google\Chrome (veya Edge için Microsoft\Edge) altına registry değerleri yazın veya ADMX şablonlarını GPO'ya ekleyin.
  • Intune / MDM: "Configuration profiles" → "Templates" → "Chrome/Edge settings" → JSON yapıştırın.
  • Linux/macOS: /etc/opt/chrome/policies/managed/ (veya ~/Library/Managed Preferences/) altına policy.json bırakın.

Firefox — Enterprise Policies (policies.json) 🦊

Firefox da policies.json ile aynı mantıkta yönetiliyor. Örnek:

{
  "policies": {
    "DisableAddonInstallation": true,
    "InstallAddonsPermission": {
      "allow": ["extension-id@mozilla.org"]
    },
    "PopupBlocking": {
      "allow": [],
      "default": true
    },
    "TrackingProtection": {
      "Value": "strict"
    },
    "Cookies": {
      "Behavior": "reject-third-party"
    }
  }
}

Kısa özet 📋:

  • DisableAddonInstallation: true → Uzantı kurulumu tamamen kapalı.
  • InstallAddonsPermission.allow → İstisna listesi.
  • PopupBlocking.default: true + allow: [] → Pop-up'lar tamamen engelli.
  • TrackingProtection: strict → Gizlilik modu "Katı" seviyesinde.
  • Cookies.Behavior: reject-third-party → Üçüncü taraf çerezler reddedilir.

Dosya yeri:

  • Windows: C:\Program Files\Mozilla Firefox\distribution\policies.json
  • Linux: /etc/firefox/policies/policies.json
  • macOS: /Library/Managed Preferences/org.mozilla.firefox.plist (veya policies.json yanına)

Kullanıcı profili seviyesinde (policy yoksa ne yaparız?) 👤

Kurumsal politika yoksa, kullanıcı kendi profili için şunları yapabilir:

Tarayıcı Ayar yolu Ne yapmalı?
Chrome/Edge chrome://settings/content → Pop-ups and redirects "Don't allow sites to send pop-ups or use redirects" seçili ✅
chrome://settings/cookies "Block third-party cookies" ✅
chrome://extensions → Developer mode kapalı Bilinmeyen uzantıları sil 🗑
Firefox about:preferences#privacy → Enhanced Tracking Protection "Strict" seçin 🔒
about:preferences#privacy → Permissions → Block pop-up windows İşaretli ✅
about:addons → Uzantıları gözden geçirin Gereksizleri kaldırın

Pro tip: chrome://flags/#enable-site-per-process (Chrome/Edge) veya about:config → fission.autostart = true (Firefox) ile Site Isolation'ı manuel de aktif edebilirsiniz. Ama policy ile yaparsanız kullanıcı kapatılamaz 😉.


Özet kontrol listesi ✅

  • Site Isolation / SitePerProcess aktif mi?
  • Pop-up'lar global engelli mi? (PopupsAllowedForUrls: [])
  • Uzantı listesi beyaz liste (allowlist) mi? Engelli mi?
  • Üçüncü taraf çerezler engelleniyor mu?
  • Safe Browsing / Tracking Protection "Strict" / "Enhanced" mi?
  • Politikalar merkezi dağıtılıyor mu (GPO/Intune/MDM)?

Hepsi yeşil ise 🎉 — tarayıcınız artık "sandbox içinde sandbox" seviyesinde. Sıradaki bölümde bu izolasyonu ağ seviyesinde nasıl pekiştireceğimize bakacağız 🌐.


🛠 Olay Müdahale: Amcanın Mac'i Kilitlendiğinde Ne Yapmalı?

Hala "Mac'im kilitlendi, ne yapayım?" diye panik içindeysen sakın korkma. Amcanın (veya herhangi bir kullanıcının) Mac'i kilitlendiğinde — özellikle şüpheli bir popup, sahte destek uyarısı ya da "sistem kilitlendi" mesajı geldiyse — sakin bir kafayla şu adımları sırasıyla uygula. Benim de başıma geldi, işe yaradı 😅


1️⃣ Güç düğmesine basılı tutarak zorla kapat

Mac tamamen donduysa, Power (Touch ID) tuşuna 10–15 saniye basılı tut. Ekran karanar, fanlar susar. Bu "hard shutdown" — veri kaybı riski var ama kilitli ekrandan kurtulmanın tek yolu bazen bu.

⚠️ Dosyalarını kaydetme şansın yoksa bu adım zorunlu.


2️⃣ Güvenli Mod (Safe Mode) ile aç

Mac'i tekrar açarken Shift tuşuna basılı tut, Apple logosu gelince bırak. "Safe Boot" yazısı çıkmalı. Bu mod:

  • Sadece Apple'nin kendi kernel extension'larını yükler
  • Login Items / LaunchAgents'ı atlar
  • Disk kontrolü yapar

Ne işe yarar? Şüpheli yazılım (örneğin sahte "System Optimizer" veya "Mac Cleaner") bu modda çalışmaz. Temizlik yapmanın en iyi şansı bu.


3️⃣ Şüpheli profilleri ve LaunchAgent'ları temizle

Güvenli Modda açtıysan, şimdi terminali aç (Cmd + Space → Terminal) ve şüpheli servisleri tara:

sudo launchctl list | grep -i suspect

Ne oluyor burada? launchctl list çalışan her launch daemon/agent'ı listeler. grep -i suspect ile "suspect", "fake", "malware", "cleaner" gibi anahtar kelimeleri filtreler. Çıktıda garip bir servis görürsen (ör. com.fake.maccleaner), hemen sil.

LaunchAgent dosyalarını da temizle:

rm -rf ~/Library/LaunchAgents/com.fake.*

🛑 rm -rf dikkatli kullan! Sadece com.fake.* pattern'ini hedefliyorsun — kendi scriptlerin varsa yanlış silme.

Profil kontrolü de unutma:
Sistem Ayarları → Gizlilik ve Güvenlik → Profiller yolundan tanımadığın profilleri sil. Genelde "MDM" veya "Yönetim Profili" ismiyle gelir.


4️⃣ Keychain'den şifreleri değiştir

Kilit ekranı sahte bir "Apple Destek" sayfasıysa ve amca şifresini girdiyse, Keychain'de saklı her şifre kompromite olmuş olabilir.

  1. Keychain Access uygulamasını aç
  2. Üst menüden Dosya → "login" Anahtarlığını Kilitle → sonra Kilidini Aç (yeni şifre isteyecek)
  3. Veya terminalden nuclear option:
    security delete-generic-password -a "$USER" -s "herhangi-bir-servis"
    
    Ama pratikte: Keychain'i sıfırla (Keychain Access → Ayarlar → "Varsayılan Anahtarlığı Sıfırla"), sonra tüm kritik şifreleri (Apple ID, e-posta, banka, SSH key'leri) değiştir.

5️⃣ Malwarebytes veya Objective-See araçlarıyla tarama

Güvenli Modda olsan bile, kalıntı dosyalar olabilir. İki ücretsiz ve güvenilir seçenek:

Araç Ne İşe Yarar?
Malwarebytes for Mac Adware, PUP, trojan taraması — ücretsiz sürüm yeterli
Objective-See Tools (KnockKnock, BlockBlock, LuLu) Persistence mekanizmalarını, şüpheli network bağlantılarını, kernel extension'ları görselleştirir

Malwarebytes CLI ile hızlı tarama:

/Applications/Malwarebytes.app/Contents/MacOS/Malwarebytes --scan

✅ Tarama bittiğinde "Quarantine" edilenleri sil, raporu kaydet.

Objective-See önerisi: KnockKnock ile "Persistence" sekmesinden LaunchAgents, LaunchDaemons, Login Items, Kernel Extensions listesini al — şüpheli her şeyi VirusTotal butonuyla kontrol et.


6️⃣ Google Ads ve Sahte Site raporlama formlarına bildirim gönder

Bu adım teknik değil, ama kritik. Amcayı kandıran sahte "Apple Destek" sayfası muhtemelen Google Ads üzerinden servis ediliyordu.

Neden önemli? Bu URL'ler engellenirse, diğer amcalar/kullanıcılar da kurtarılır. 2 dakikanı al, rapor et 🙏


🎯 Özet: Ne yaptık?

Adım Ne Sağladı?
Zorla kapatma Donanım seviyesinde reset, kilit ekranından kurtulma
Güvenli Mod Şüpheli yazılımları devre dışı bırakma
LaunchAgent/Profil temizliği Persistence (kalıcılık) mekaniklarını kırmak
Keychain sıfırlama Çalınan oturum anahtarlarını geçersiz kılma
Malware/Objective-See taraması Kalan zararlı dosyaları ve persistence noktalarını bulma
Sahte site raporu Başkalarının da düşmemesi için upstream engelleme

Son söz: Mac kilitlendiğinde asla ekrandaki numarayı arama, asla uzaktan erişim izni verme. Apple hiçbir zaman "bilgisayarınız kilitlendi, şimdi arayın" popup'ı çıkmaz. Bu 6 adım, amcanın Mac'ini temizler — ve senin de geceni kurtarır 😄

Hazırsan bir sonraki bölüme: "Gelecekte Nasıl Önlenir?" — MDM, UEM, ve kullanıcı eğitimi konusuna geçebiliriz.


🎁 Bonus Tavsiye: Gelecekte Korunmak İçin Alışkanlıklar

Hadi işin ötesine geçelim. Güvenlik bir ürün değil, bir süreç. Küçük alışkanlıklar birikince dev bir kale oluşur 🏰

Günlük rutinine ekleyecek 5 basit alışkanlık

  • 🔄 Yazılımı her zaman güncel tut — İşletim sistemi, tarayıcı, eklentiler… "Güncelleme var" uyarısı gelince "Yarın" demez, şimdi tıkla.
  • 🔐 Şifre yöneticisi kullan — Tek bir master şifre, onlarca benzersiz, karmaşık şifre. Hafızanı rahatlat, güvenliğini artır.
  • 📱 İki faktörlü kimlik doğrulama (2FA) aç — Mümkün her yerde. SMS yerine authenticator uygulaması tercih et (daha güvenli).
  • 🛑 Reklam engelleyici uzantısı kur — Sadece rahatsızlık değil, kötü amaçlı script'lerden de korur. uBlock Origin gibi hafif, açık kaynaklı seçenekler iş görür.
  • 🔍 Periyodik DNS log'larına göz at — Haftada bir olsun, router veya Pi-hole loglarına bak. "Neden bu domain'e gitti?" diye düşündürürse araştır.

Küçük adımlar, büyük koruma. Bugün başladığın her alışkanlık, yarın başını ağrıtmayacak bir yatırımdır 💪


Bu içerik tamamen yapay zeka destekli otomasyon sistemi ile üretilmiştir.

Burak Sağlık

Burak Saglik

©2024 Desing and Developed by @Burak Sağlık

All rights reserved