İçeriğe geç
Sedat Özdemir
Yazılar

mfa-fatigue

İnsan Faktörünü 'Patch'lemek: Sosyal Mühendislikte Zafiyet Taraması

Bir sistemi kırmak için her zaman zero-day gerekmez. Bazen sadece doğru soruyu, doğru kişiye sormak yeterlidir. Sosyal mühendisliğin teknik ve psikolojik anatomisine dalıyoruz.

Sedat Özdemir
· 3 dk okuma

Bir Subject: Action Required: Your password expires in 2 hours başlığı altındaki o zararsız görünen hxxps[:]//login.testCompany-support[.]com linkine tıklandığı an, tüm o milyon dolarlık firewall ve EDR yatırımı birer süs eşyasına dönüşür. Payload'un belleğe inmesi değil, o farenin sol tuşuna basılmasıdır asıl exploit. Sahada gördüğümüz en büyük yanılgı, sosyal mühendisliği sadece 'insan kandırmak' sanmak. Oysa bu, insan psikolojisindeki mantıksal hataları (logical bugs) sömüren, titizlikle planlanmış bir 'wetware' atağıdır.

OSINT: Hedefin Dijital Röntgenini Çekmek

Red Team operasyonlarında bir hedefe girmeden önce yaptığımız ilk iş, hedefi 'stalk'lamaktan çok daha fazlası olan OSINT (Open Source Intelligence) sürecidir. Saldırgan, kurumun teknoloji yığınını (tech stack), çalışan hiyerarşisini ve hatta kullanılan VPN çözümünü LinkedIn veya GitHub üzerinden kolayca tespit edebilir.

Örneğin, bir yazılımcının GitHub'da paylaştığı zararsız bir kod parçasındaki yorum satırı (// TODO: internal API endpoint changed to api-dev.testCompany.local), bize iç ağ yapısı hakkında altın değerinde bilgi verir. Veya bir çalışanın 'out of office' (ofis dışı) maili, saldırgana en zayıf anın ne zaman olduğunu söyler. Sosyal mühendislikte teknik hazırlık, saldırının %80'idir.

Phishing'in Ötesi: Smishing, Vishing ve MFA Fatigue

Klasik phishing artık 'old school' kalmaya başladı. Artık daha sofistike yöntemler devrede. Özellikle MFA Fatigue (MFA Yorgunluğu) saldırıları son dönemin favorisi. Senaryo basit ama etkili: Saldırgan, kurbanın parolasını bir şekilde (credential stuffing veya phishing ile) ele geçirir. Ardından gece saat 03:00'te kurbanın telefonuna arka arkaya onlarca Push bildirimi gönderir.

# Pseudo-code for a basic push bombing script
import requests
import time

def flood_mfa_push(user_id):
    while True:
        # Triggering a push notification via the internal identity provider's API
        response = requests.post("hxxps[:]//auth.example.com/api/v1/trigger-push", json={"user": user_id})
        if response.status_code == 200:
            print(f"[+] Push sent to {user_id}. Waiting for the 'fatigue' to kick in...")
        time.sleep(1) # Send every second to maximize annoyance

Uykusunun en derin yerinde telefonu titreyen kurban, bu 'hatayı' durdurmak için 'Onayla' (Approve) butonuna bastığı anda kapı sonuna kadar açılır. Bu bir yazılım hatası değil, bir 'kullanıcı deneyimi' (UX) açığıdır.

Punycode ve Görünmez Tehlike

Bir alan adının (domain) ne kadar güvenilir göründüğü, o domainin gerçekten o olduğu anlamına gelmez. Punycode saldırılarıyla, tarayıcının karakter setlerini nasıl render ettiğini kullanarak insanları kandırmak çocuk oyuncağı.

Örneğin:

  • Gerçek: testCompany.com
  • Sahte: testCοmpany.com (Buradaki 'ο' harfi aslında Yunanca 'Omicron' karakteridir - xn--testcmpany-58a.com)

Kullanıcı adres çubuğuna baktığında her şeyin yolunda olduğunu düşünür. SSL sertifikası (Let's Encrypt sağ olsun) bile yeşil yanabilir. İşte bu yüzden sadece 'kilit simgesine bak' demek, kullanıcıya yanlış bir güvenlik algısı aşılamaktır.

Sosyal Mühendislikte 'Pretexting' (Ön Metin Oluşturma)

Saldırganın büründüğü kimlik, başarısının anahtarıdır. Red Team olarak biz, 'IT Destek Birimi' kılığına girmekten çok daha spesifik rolleri tercih ederiz. 'Yeni işe alınan dış kaynak (outsource) sistem yöneticisi' veya 'Denetim firmasından gelen güvenlik uzmanı' gibi roller, insanların otoriteye olan saygısını ve yardım etme içgüdüsünü sömürür.

Fiziksel sızma (Physical Intrusion) senaryolarında, elinde iki kahve tepsisiyle turnikeye yaklaşan birine kimse 'Kartını basar mısın?' demez. Aksine, nazikçe kapıyı tutarlar. Bu, insan doğasındaki 'nezaket' fonksiyonunun (function) bypass edilmesidir.

Savunma Hattı: İnsanı Nasıl 'Hardening' Ederiz?

Teknik kontroller olmadan sadece eğitim vermek, yangın var diye bağırmak ama su vanasını kapalı tutmak gibidir. İşte gerçek dünyada işe yarayan bazı savunma stratejileri:

  1. FIDO2 / WebAuthn: SMS veya Push tabanlı MFA yerine, fiziksel güvenlik anahtarları (YubiKey vb.) kullanmak. Bu cihazlar domain validation yaptığı için phishing saldırılarını teknik olarak imkansız kılar.
  2. DMARC/SPF/DKIM: Mail sunucularınızı düzgün konfigüre edin. 'External Mail' uyarısı eklemek bir yere kadar işe yarar, ama sahte maillerin daha içeri girmeden droplanması asıl çözümdür.
  3. Conditional Access (Koşullu Erişim): 'Kullanıcı doğru parolasını girse bile, eğer tanınmayan bir cihazdan ve alışılmadık bir konumdan geliyorsa ek doğrulama iste veya blokla' kuralı hayat kurtarır.
  4. Reporting Culture (Raporlama Kültürü): Çalışan bir linke tıkladığında onu cezalandırmak yerine, 'Hata yaptım' diyebileceği bir güven ortamı oluşturun. Erken müdahale, veri sızıntısının etkisini %90 oranında azaltır.

Red Team'in Gözünden

Bizim işimiz sadece sistemlere girmek değil, organizasyonun direncini ölçmektir. Bir çalışanı kandırdığımızda aslında o çalışana değil, o çalışanın bu hatayı yapmasına izin veren sisteme odaklanırız. Eğer bir 'kurtarma kodu' tek bir telefon görüşmesiyle resetlenebiliyorsa, zafiyet o personelde değil, o sürecin (process) tasarımındadır.

Unutmayın, en gelişmiş şifreleme algoritmaları bile, parolasını Post-it'e yazıp monitörüne yapıştıran bir kullanıcı karşısında çaresizdir. Güvenlik, en zayıf halka kadar güçlüdür ve o halka genellikle klavye ile koltuk arasındadır.

İlgili yazılar