Hedefi belirledin, karşında koca bir yapı var. Şirketin binlerce çalışanı, onlarca alt alan adı (subdomain) ve muhtemelen senin bile bilmediğin yerlerde unutulmuş sunucuları bulunuyor. "Nereden başlayacağım?" diye düşünüyorsan, işin aslı her şey o ilk küçük ipucunda gizli. Geçenlerde bir projede, hedef şirketin kıdemli bir yazılımcısının kişisel GitHub hesabında paylaştığı basit bir kod parçasından yola çıkarak şirketin tüm iç ağ yapısını çözdüğümü hatırlıyorum. İşte OSINT (Open Source Intelligence) dediğimiz şey tam olarak bu: Herkese açık olan ama kimsenin dikkat etmediği parçaları birleştirip büyük resmi görmek.
OSINT'i sadece Google’da "dorking" yapmak sanıyorsan, madalyonun sadece bir yüzüne bakıyorsun demektir. Benim için bu süreç, bir dedektiflik hikayesinden farksız. İşin içine girdiğinde, sızma testinin en heyecanlı ama bir o kadar da sabır isteyen aşaması olduğunu anlıyorsun.
O Unutulan Subdomainler Her Zaman Baş Belasıdır
Bir şirketin ana sitesi muhtemelen kale gibi korunuyordur. Ama ya beş yıl önce bir kampanya için açılan ve sonra unutulan test-kampanya.sirket.com adresi? İşte orası bizim için altın madeni. Sıkça karşılaştığım bir durumdur; ana sistemlerde her türlü WAF (Web Application Firewall) ve güvenlik önlemi varken, bu yan adreslerde eski PHP versiyonları, debug modları açık kalmış frameworkler cirit atar.
Benim subdomain keşfinde ilk tercihim her zaman Subfinder veya Amass olur. Ama işin sırrı sadece araç çalıştırmak değil, sonuçları anlamlandırmakta. Mesela, crt.sh üzerinden SSL sertifikalarını taradığında, şirketin henüz yayına almadığı "staging" ortamlarını bile görebilirsin.
Basit bir bash scriptiyle süreci hızlandırmak istersen şöyle bir şey kullanabilirsin:
#!/bin/bash
# Hedef domaini alalım
TARGET=$1
echo "[+] $TARGET için subdomain avı başlıyor..."
# Subfinder ile hızlı bir tarama
subfinder -d $TARGET -o subdomains.txt
# Bulunan domainlerin canlı olup olmadığını check edelim (httpx kullanarak)
cat subdomains.txt | httpx -title -tech-detect -status-code -o live_subdomains.txt
echo "[+] Canlı domainler live_subdomains.txt dosyasına kaydedildi."
Bu tarz küçük otomatizasyonlar hayat kurtarır. Ama dikkat etmen gereken nokta şu: Çıkan sonuçları manuel olarak incelemezsen, o çok kritik "hidden" klasörünü gözden kaçırabilirsin.
GitHub: Yazılımcıların En Sevdiği (Ve En Tehlikeli) Arşiv
Yazılımcılar bazen işleri yetiştirme telaşıyla, bazen de "nasıl olsa kimse görmez" düşüncesiyle GitHub'a çok kritik şeyler yükleyebiliyor. Geçen yıl bir pentest sırasında, bir çalışanın .bash_history dosyasını yanlışlıkla bir repoya commit ettiğini gördüm. Dosyanın içinde AWS anahtarları ve veritabanı şifreleri kabak gibi ortadaydı.
GitHub'da OSINT yaparken sadece şirket organizasyonuna bakma. Çalışanların kendi kişisel hesaplarını da tara. Adam işten gelmiş, evde projenin bir parçası üzerinde çalışırken yanlışlıkla şirketin API anahtarını kodun içine gömüvermiş olabilir. Bence bu aşamada truffleHog veya git-leaks gibi araçlar olmazsa olmazın. Ama manuel olarak şu aramaları GitHub üzerinde denemeni öneririm:
"sirketadi.com" password"sirketadi.com" secret_key"sirketadi.com" configextension:env "DB_PASSWORD"
Shodan: İnternetin Karanlık Arka Sokakları
Shodan'ı duymayan kalmamıştır ama hakkını vererek kullanan azdır. Shodan, internete bağlı her şeyi (buzdolabından endüstriyel kontrol sistemlerine kadar) indeksleyen bir arama motoru. Bir güvenlik uzmanı olarak Shodan'ı sadece açık port bakmak için kullanmıyorum. Şirketin kullandığı SSL sertifikalarının parmak izini (fingerprint) alıp, internetin genelinde bu sertifikaya sahip başka hangi sunucular var diye bakıyorum. Bu yöntemle, şirketin bulut sağlayıcılarda (AWS, Azure gibi) açtığı ve domain kaydı bile yapılmamış "gölge" sunucularını çat diye bulabiliyorsun.
Örneğin, şirketin kullandığı özel bir HTTP header'ı varsa, bunu Shodan'da aratmak seni hiç tahmin etmediğin bir yönetim paneline götürebilir:
import shodan
# API anahtarını buraya girmen lazım (tabii ki buralara açık yazmıyoruz)
api = shodan.Shodan('YOUR_SHODAN_API_KEY')
try:
# Hedef şirketin IP bloğunu veya ismini aratalım
results = api.search('org:"Target Company Name"')
for result in results['matches']:
print(f"IP: {result['ip_str']}")
print(f"Port: {result['port']}")
print(f"Data: {result['data']}")
print("-" * 20)
except shodan.APIError as e:
print(f"Hata: {e}")
Bu kodu çalıştırdığında önüne düşen sonuçlar bazen seni gerçekten şaşırtabilir. "Bu sistemin neden dışarıya SSH portu açık?" diye sorduğun her an, aslında bir güvenlik açığının kapısını aralıyorsun demektir.
İnsan Faktörü: LinkedIn ve Sosyal Mühendislik Hazırlığı
Teknik veriler harika ama günün sonunda o sistemleri insanlar yönetiyor. OSINT'in en "sosyal" kısmı çalışanları analiz etmek. LinkedIn'de hedef şirketin çalışanlarını listelerken nelere dikkat ediyorum biliyor musun? Kullandıkları teknolojilere. Bir sistem yöneticisi "10 yıllık Active Directory ve Exchange yönetimi tecrübesi" yazıyorsa, içerde neyle karşılaşacağımı biliyorumdur. Veya bir yazılımcı "Python ve Django uzmanı" diyorsa, web uygulamalarında hangi zafiyet sınıflarına odaklanmam gerektiğine dair bir fikrim oluşur.
İşin aslı, insanların yardımseverlik duygusu bazen en büyük zafiyet olabiliyor. Bir forumda (StackOverflow gibi) şirketin teknik bir sorunu hakkında soru soran birini bulduğunda, o anki sistem mimarisi hakkında çoktan bilgi sahibi olmuş oluyorsun. "Bence" en iyi OSINT, bu tip parçaları birleştirip saldırı yüzeyini daraltmaktır.
Veriyi Anlamlandırmak: Maltego ve Grafikler
Topladığın binlerce veri satırı arasında boğulmamak için bunları görselleştirmek şart. Ben genelde karmaşık projelerde Maltego kullanıyorum ama bazen kendi yazdığım küçük Python scriptleri ile veriyi bir veritabanına atıp aralarındaki bağları görmek daha pratik oluyor.
Diyelim ki elinde 500 tane subdomain, 20 tane IP adresi ve 50 tane çalışan ismi var. Bunlar arasındaki ilişkiyi kuramadığın sürece hepsi sadece birer satır yazıdan ibaret. Hangi IP hangi subdomain'e bağlı? Hangi çalışan hangi projede commit yapmış? Bu soruların cevapları seni hedefe götüren yoldur.
Birkaç Tavsiye ve Küçük Bir Uyarı
OSINT yaparken kendini kaptırıp kaybolmak çok kolaydır. Bir ipucunun peşinden giderken asıl hedeften sapabilirsin. Sana tavsiyem, her zaman bir planın olsun ve bulduğun her şeyi not et. Obsidian veya Notion gibi araçlar bu aşamada çok işine yarar.
Ayrıca unutma, OSINT yasal sınırlar içinde kaldığın sürece bir sanattır. Herkese açık veriyi topluyorsun, bu tamam. Ama bulduğun o "açık" yönetim paneline izinsiz girmeye çalıştığın an işin rengi değişir. Bizim amacımız her zaman sistemi daha güvenli hale getirmek veya Red Team operasyonu kapsamında zayıf noktaları raporlamak.
Öğrenmeye açık ol, çünkü bugün kullandığın araç yarın eskimiş olabilir. Önemli olan araç değil, o araştırmacı mantaliteye sahip olmak. Eğer bir gün sabaha karşı saat 4'te, bir PDF dosyasının metadata'sından yola çıkarak şirketin printer'ının modelini ve firmware versiyonunu bulduysan ve bu seni heyecanlandırıyorsa, doğru yoldasın demektir.
Hadi şimdi, kendi dijital ayak izine bir bak bakalım; internet senin hakkında neler biliyor? Şaşırmaya hazır ol.
