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

cybersecurity

En Pahalı Firewall’un Bile Sökemediği Tek Bug: İnsan Faktörü

Bir sabah ofise gelip tüm sunucuların şifrelendiğini gördüğünüzde, suçlunun binlerce dolarlık firewall değil de, o çok güvendiğiniz 'yardımsever' iş arkadaşınız olduğunu anladığınız o an... Sosyal mühendisliğin anatomisini ve teknik savunma yöntemlerini konuşuyoruz.

Sedat Özdemir
· 3 dk okuma

Hiç binlerce dolarlık güvenlik yatırımının, bir stajyerin 'bedava kahve' linkine tıklamasıyla saniyeler içinde çöp oluşunu izledin mi? İzlemediysen şanslısın, ama bu izlemeyeceğin anlamına gelmiyor. Red Team dünyasında biz buna 'Human Interface Device' (HID) saldırısı demiyoruz sadece, bildiğin 'insan arayüzü zafiyeti' diyoruz. Teknik ne kadar kusursuz olursa olsun, o klavyenin başındaki parmaklar 'Enter'a bastığı sürece her zaman bir giriş kapısı vardır.

Bugün seninle biraz dertleşelim. Sosyal mühendislik (social engineering) denince akla hemen 'Dayıoğlu, bana 5000 TL göndersene' mesajları gelmesin. Bizim dünyamızda işler çok daha sofistike, çok daha 'cool' ve ne yazık ki çok daha tehlikeli ilerliyor. Red Team Lead olarak sahada gördüğüm en büyük yanılgı, siber güvenliğin sadece 0'lardan ve 1'lerden ibaret sanılması. Oysa ki biz çoğu zaman şifrelere değil, insanların duygularına brute-force yapıyoruz.

Psikolojik Tetikleyiciler: Neden Kanıyoruz?

Saldırganlar (biz Red Team'ciler dahil) temelde üç şeyi kullanır: Acele, Otorite ve Merak.

Bir e-posta hayal et. Gönderen kişi CEO (Otorite). Konu: 'Acil: Q3 Finansal Rapor Hataları' (Acele). İçerik: 'Bu dosyadaki hataları düzeltmezsek büyük ceza yiyeceğiz, şuradan kontrol et.' (Korku/Merak). Şimdi söyle bana, hangi SIEM/SOAR kuralı bir insanın panikle o linke tıklamasını %100 engelleyebilir?

Teknik Perde Arkası: Phishing ve Typosquatting

Sadece 'ikna' yetmez, teknik altyapı da lazım. Genelde biz testCompany ağını simüle ederken testC0mpany.com gibi (Typosquatting) veya testCompany-support.io gibi inandırıcı domainler alırız. Ardından bu domain arkasına bir Nginx proxy kurarız ki asıl siteye trafiği yönlendirirken aradan kimlik bilgilerini (credentials) çalalım.

İşte sana basit bir 'Domain similarity' kontrolü yapan, savunma tarafında kullanabileceğin bir pseudo-code örneği. Amacımız, sistemine gelen maillerdeki linkleri kendi orijinal domaininle kıyaslamak:

# phishing_detector_mock.py
# Bu kod eğitim amaçlıdır, prod ortamında gelişmiş kütüphaneler kullanın.

import Levenshtein # Benzerlik skorlaması için

def check_for_phishing(target_domain, suspected_url):
    # Zararsızlaştırılmış örnekler
    # target_domain: "testCompany.com"
    # suspected_url: "testC0mpany.com"
    
    distance = Levenshtein.distance(target_domain.lower(), suspected_url.lower())
    
    if 0 < distance <= 2:
        return f"[!] UYARI: Şüpheli domain tespit edildi: {suspected_url}. Mesafe: {distance}"
    return "[+] Domain güvenli görünüyor."

print(check_for_phishing("testCompany.com", "testC0mpany.com"))

MFA Fatigue: 'Hadi Ama, Sadece Bir Onay!'

Son zamanlarda popüler olan bir yöntemden bahsedeyim: MFA Fatigue (Çok Faktörlü Doğrulama Yorgunluğu). Artık statik şifre çalmak yetmiyor, telefonuna gelen o 'Push' onayını da almamız lazım. Biz ne yapıyoruz? Gece saat 03:00'te kurbanın telefonuna üst üste 50 tane onay isteği gönderiyoruz. Kurban uykulu gözlerle 'Yeter artık, neyse ne!' diyerek onaya bastığı an, biz içerideyiz.

Burada teknik önlem olarak MFA Number Matching (Numara Eşleştirme) kullanılması hayati önem taşıyor. Ekranında '76' sayısını görmeden onaya basamamalı.

'Smishing' ve 'Vishing' Gerçekleri

SMS üzerinden (Smishing) veya sesli arama (Vishing) ile yapılan saldırılar genelde BT ekiplerini hedef alır. Kendini 'BT Güvenlik Ekibi'nden biri olarak tanıtan birinin, VPN güncellemesi için şifreni istemesi çok klişe geliyor değil mi? Ama o anki yoğunlukta, arkadan gelen 'ofis sesleri' efektiyle (evet, bunu da yapıyoruz) inandırıcılık %90 artıyor.

Bir Red Team operasyonunda kullandığımız mock payload senaryosuna bakalım (Lütfen bunu sadece kendi test ortamlarında simüle et):

# Zararsızlaştırılmış saldırı simülasyon komutu
# Amaç: Kullanıcıyı sahte bir giriş paneline yönlendiren kısa link oluşturmak

curl -X POST https://example.com/api/v1/shorten \
     -d "url=http://127.0.0.1:8080/login-page-mock" \
     -d "alias=testcompany-update-security"

# Çıktı: http://example.com/testcompany-update-security

Peki, Nasıl Defans Yapacağız?

"E Sedat, her şey bu kadar kolaysa biz dükkanı kapatıp gidelim mi?" dediğini duyar gibiyim. Hayır, tam tersine, savunma katmanlarını 'insanı' merkeze alarak güçlendirmeliyiz.

  1. Conditional Access (Koşullu Erişim): 'Eğer bu kullanıcı alışılmadık bir konumdan ve tanımsız bir cihazdan geliyorsa, şifresi doğru olsa bile blokla.' Bu kural hayat kurtarır.
  2. Passwordless (Şifresiz) Dünyaya Geçiş: FIDO2 anahtarları (Yubikey vb.) kullanıyorsan, ben istediğim kadar phishing yapayım, o fiziksel anahtar bende olmadığı sürece kapıdan dönüyorum.
  3. Raporlama Kültürü: Bir çalışan bir linke tıkladığında onu cezalandırırsan, bir dahaki sefere sana haber vermez. 'Oltaya geldim' diyen çalışana 'Teşekkürler, hemen aksiyon alıyoruz' diyen bir kültür oluşturmalısın.
  4. DLP (Data Loss Prevention) Kuralları: Çalışan dalsa bile, hassas veriyi dışarı sızdırmaya çalıştığında 'Dur bakalım!' diyen teknik bir fren olmalı.

Kapanış Notu

Unutma, siber güvenlikte en zayıf halka insandır derler ama aslında en güçlü sensör de insandır. Doğru eğitilmiş ve tetikte olan bir ekip, piyasadaki en pahalı IPS cihazından daha hızlı 'Anomali' tespiti yapabilir.

Bir sonraki kahveni içerken e-postalarına bir bak; acaba hangisi gerçekten iş arkadaşından geliyor, hangisi benim senin için hazırladığım bir 'öğrenme fırsatı'?

Stay secure, stay curious (a bit) paranoid!

İlgili yazılar