Merhabalar. Bir saldırı başlamadan önce, bir pentest açılmadan önce, bir sosyal mühendislik senaryosu kurulmadan önce mutlaka yapılması gereken bir aşama vardır, hedef hakkında bilgi toplamak. OSINT yani Açık Kaynak İstihbaratı bu aşamanın adıdır. İyi yapılmış bir OSINT çalışması bir sonraki adımı hem daha hızlı hem de çok daha hedefli hale getirir. Bu yazımda OSINT ile hedef profillemenin ne olduğunu, hangi kaynaklardan ne tür bilgi çıkarıldığını, araçların nasıl kullanıldığını ve bunların bir araya getirildiğinde nasıl bir resim oluşturduğunu anlatacağım. İyi okumalar.
OSINT Nedir ve Neden Bu Kadar Güçlüdür?
OSINT, herhangi bir sisteme izinsiz giriş yapmadan, herhangi bir yasadışı eylem gerçekleştirmeden, yalnızca kamuya açık kaynaklardan bilgi toplama durumudur. İnternet, sosyal medya, haber arşivleri, kamu kayıtları, domain veritabanları, iş ilanları, akademik yayınlar bunların hepsi OSINT kaynağıdır.
Bu kadar güçlü olmasının nedeni de şudur: insanlar ve kurumlar her gün inanılmaz miktarda bilgiyi farkında olmadan kamuya açık hale getirir. Bir şirkete ait iş ilanı hangi teknolojilerin kullanıldığını ele verir. Bir çalışanın LinkedIn profili organizasyon şemasını ortaya koyar. Bir domain'in WHOIS kaydı teknik altyapıyı gösterir. Eski bir web sayfası silindiği zannedilen bilgiyi barındırır. Bunlar birleştirildiğinde hedefe ait kapsamlı bir profil ortaya çıkar.
OSINT yalnızca saldırganların kullandığı bir teknik değildir. Siber tehdit istihbaratı, redteam operasyonları, gazeteciler, araştırmacılar, savcılıklar ve şirketler rekabet istihbaratı için OSINT kullanır.
Bu yazıda OSINT'in iki boyutunu ele alacağız: bireysel hedef profilleme ve kurumsal hedef profilleme. Her ikisinin de farklı kaynakları, farklı araçları ve farklı çıktıları vardır.
Pasif ve Aktif OSINT Ayrımı
OSINT çalışmalarında önce bu ayrımı netleştirmek gerekir çünkü her ikisinin hukuki ve operasyonel sonuçları farklıdır.
Pasif OSINT hedefe hiçbir şekilde temas etmeksizin yürütülür. Google arama, arşiv siteleri, sosyal medya profilleri, WHOIS sorguları, sertifika şeffaflık logları bunların hepsi pasif yöntemlerdir. Hedef sisteme hiçbir paket gönderilmez. Hedef kişi veya kurum bilgi toplama işleminden haberdar olmaz. Pasif OSINT yasal açıdan en güvenli alandır.
Aktif OSINT ise hedefe doğrudan sorgu göndermesi anlamına gelir. Port taraması, DNS zone transfer denemesi, web uygulamasını crawl etmek, SMTP kullanıcı numaralandırması bunlar aktif yöntemlerdir. Hedefin loglarında iz bırakır. Yetkisiz sistemlere karşı bu tekniklerin kullanılması hukuki sorun yaratır.
Bu yazımızın büyük bölümü pasif OSINT teknikleri üzerinedir.
Bir OSINT çalışması başlamadan önce sorulacak soru şudur: bu bilgiye hakkım var mı? Yetkili pentest, kendi şirketin güvenlik değerlendirmesi, gazetecilik araştırması, açık kaynak tehdit analizi bunlar meşru bağlamlardır. Başkasını izlemek, çalışan casusluk faaliyetleri veya hedefli taciz bunlar değildir. Oyüzden lütfen etik kurallara uyunuz
Google Dorking
Google Dorking, Google'ın gelişmiş arama operatörlerini kullanarak internette kamuya açık ama genellikle göze çarpmayan bilgileri bulmaktır. Bu teknik hem bireysel hem kurumsal profilleme için temeldir.
Sıradan bir arama "Ahmet Yılmaz techcorp" şeklinde yapılır ve binlerce sonuç döner. Google Dorking ise çok daha hedeflidir ve çok daha spesifik sonuçlar üretir.
site: operatörü belirli bir domainin içindeki sayfaları listeler. filetype: belirli dosya türlerini bulur. intitle: sayfa başlığında arama yapar. inurl: URL içinde arama yapar. intext: sayfa içeriğinde arama yapar. cache: Google'ın önbelleğini gösterir. link: belirli siteye bağlantı veren sayfaları listeler.
Bu operatörlerin kombinasyonuyla çok güçlü sorgular oluşturulur. Bir şirkete ait açıkta kalan Excel dosyaları, yanlışlıkla indekslenmiş dahili belgeler, eski çalışanların bıraktığı gizli klasörler, hata mesajları içinde sızan yazılım sürüm bilgileri Google Dorking ile bulunabilir.
Google Hacking Database (GHDB) Exploit-DB bünyesinde binlerce hazır dork barındırır. Kategorilere ayrılmış sorgular: açık yönetim panelleri, varsayılan şifreler, hassas dosyalar, veritabanı hataları. Bir hedef için bu veritabanından uygun sorgular seçilip uyarlanır.
Domain ve Altyapı İstihbaratı
Bir kurumu hedefleyen OSINT çalışmasında teknik altyapı analizi çok değerli bilgiler üretir. Bu bilgiler hem saldırı yüzeyini hem de kullanılan teknoloji yığınını ortaya koyar.
WHOIS sorgusu domain tescil bilgilerini verir. Kimin tescil ettiği, ne zaman tescil edildiği, hangi DNS sunucuları kullanıldığı, teknik ve yönetici iletişim bilgileri. GDPR sonrasında birçok kayıt gizlenmiş olsa da kurumsal domainlerde teknik e-posta adresleri hâlâ görünebilir.
DNS analizi çok katmanlı bilgi sunar. MX kaydı hangi e-posta servisinin kullanıldığını gösterir: Office 365 mi, Google Workspace mi, kendine ait sunucu mu? SPF kaydı hangi sunucuların şirket adına e-posta gönderme yetkisi olduğunu listeler ve bu liste CDN sağlayıcıları, üçüncü taraf hizmetler hakkında bilgi içerir. TXT kayıtları çeşitli servis doğrulama kodları taşır ve hangi üçüncü taraf servislerin kullanıldığını ele verir.
Sertifika şeffaflık logları belki de en az bilinen ama en değerli kaynaklardan biridir. Her TLS sertifikası verilen anda bir log sunucusuna kaydedilir ve bu loglar herkese açıktır. crt.sh veya Censys üzerinden bir domain için verilen tüm sertifikaları görmek mümkündür. Bu sertifikalar arasında henüz kamuya açıklanmamış test ortamları, geliştirme sunucuları ve iç kullanım için oluşturulmuş ama internete açık kalan subdomainler bulunur.
ASN ve IP aralığı analizi şirketin internet üzerindeki varlığını haritalandırır. BGP.he.net veya ipinfo.io üzerinden bir şirketin sahip olduğu IP bloklarına ulaşılır ve bu bloklar Shodan ile taranabilir.
Sosyal Medya İstihbaratı
Sosyal medya OSINT'in en zengin ama aynı zamanda en değişken kaynağıdır. Bireysel hedef profilleme için LinkedIn'i zaten ele aldık, burada diğer platformları ve kurumsal sosyal medya analizini ele alacağız.
Twitter/X gerçek zamanlı bilgi için eşsizdir. Hedef ne düşünüyor, hangi olaylara tepki veriyor, kiminle etkileşime giriyor, hangi araçlardan bahsediyor? Bir güvenlik araştırmacısı kullandığı yeni bir aracı tweet'lediğinde bu araç hem profilleme için hem de zafiyet analizi için değerli bir veri noktasıdır. Twitter Advanced Search ile belirli bir tarih aralığında, belirli bir konumdan veya belirli bir kişiyle etkileşimde atılmış tweetler bulunur.
GitHub teknik profilleme için altın madenidir. Geliştiricilerin repolarına bakıldığında hangi teknolojileri kullandıkları, hangi projelerde çalıştıkları, commit mesajlarında ne tür bilgiler sızdırdıkları anlaşılır. Commit geçmişinde yanlışlıkla eklenen API anahtarları, veritabanı bağlantı string'leri, iç ağ adresleri çok sık görülür. Bu bilgi hem bireysel hem de kurumsal hedef için kritiktir.
Instagram ve Facebook konum bilgisi için değerlidir. Gönderilerdeki coğrafi etiketler, arka planda görünen nesneler, fotoğraf metadata'sı (EXIF) konum ve zaman bilgisi taşır. Fotoğraf metadata analizi için ExifTool kullanılır ve çekilen fotoğrafın hangi cihazla, hangi koordinatlarda çekildiği görülür.
Kurumsal sosyal medya analizi da değerlidir. Şirketin resmi hesaplarından yapılan paylaşımlar hangi projelerin devam ettiğini, hangi teknolojilere yatırım yapıldığını, hangi etkinliklere katılındığını ve organizasyonun genel yapısını ortaya koyar.
Sızdırılmış Veri Analizi — HaveIBeenPwned vs
Milyarlarca kullanıcı kaydı geçmişte çeşitli ihlallerle kamuya sızmıştır. Bu veri artık dark web'de ve çeşitli aggregator sitelerinde bulunabilir durumdadır. OSINT açısından bu veriler hedef kişinin hangi hizmetleri kullandığını, e-posta adreslerini ve bazı durumlarda parola örüntülerini ortaya koyar.
HaveIBeenPwned (HIBP) Troy Hunt tarafından yönetilen ve kamuya açık bir servis olarak binlerce ihlaldeki e-posta adreslerini indeksler. Bir e-posta adresinin hangi ihlallerde görüldüğü sorgulanabilir. API ile bu sorgulama otomatize edilir.
Sızdırılmış veri ne anlatır? Hedef kişi hangi servisleri kullanmış: LinkedIn, Adobe, Dropbox ihlallerinde görüldüyse bunlar iş araçları. Gaming platformu ihlallerinde görüldüyse kişisel bir boyut var. E-posta adresi formatları farklı servislerde farklıysa kullanıcının tercih ettiği e-posta naming convention anlaşılır. Şifre hash'leri bazı durumlarda kırılabilirse ve bu kişi başka yerlerde aynı şifreyi kullanıyorsa credential stuffing için değerli hale gelir.
Dehashed, Snusbase ve IntelX daha kapsamlı ihlal veritabanı servisleridir. Ücretli erişim sunarlar ama araştırmacılar için lisanslı kullanım mevcuttur. Bu servislerden e-posta adresine bağlı kullanıcı adları, IP adresleri ve diğer tanımlayıcılar sorgulanabilir.
Önemli bir not: bu araçlar yalnızca kendi verilerinizi veya yetkili test kapsamındaki verileri sorgulamak için kullanılır. Başkasının sızdırılmış verisini rıza olmadan araştırmak etik ve hukuki sorunlar yaratır.
İş İlanları
Bu bölüm çoğu kişinin gözden kaçırdığı ama son derece değerli bir OSINT tekniğini ele almaktadır. Şirketlerin iş ilanları teknik altyapılarını neredeyse açıkça ortaya koyar.
Bir şirket "Deneyimli Siber Güvenlik Mühendisi" aradığında aranan niteliklere bakılır: "CrowdStrike Falcon deneyimi", "Splunk SIEM yönetimi", "Palo Alto Networks güvenlik duvarı". Bu üç kelime şirketin güvenlik altyapısını özetlemektedir. Bunun karşısında hangi sürümlerin hangi CVE'lere sahip olduğu bakılır.
Bir "Kıdemli Backend Geliştirici" ilanında şunlar görülür: "Go veya Python", "PostgreSQL ve Redis", "Kubernetes ve AWS EKS", "Kafka mesaj kuyruğu". Bu şirketin yazılım altyapısının haritasıdır.
İş ilanı OSINT nasıl yapılır? LinkedIn Jobs, Kariyer.net, Indeed ve şirketin kendi kariyer sayfası taranır. Aynı şirkete ait birden fazla ilan bir araya getirilir. Tekrar eden teknoloji isimleri listelenir. Sürüm bilgisi varsa not edilir. Orta veya kıdemli pozisyon için aranan yetkinlikler şirketin mevcut kapasitesini de gösterir.
Bunun ötesinde eski ilanlar da değerlidir. Şirket iki yıl önce Juniper deneyimi arıyordu, şimdi Aruba arıyor. Bu bir altyapı geçişinin işaretidir. Eski teknoloji hâlâ sistemde olabilir ve yamalar yapılmamış olabilir.
Wayback Machine ve Arşiv Analizi
Wayback Machine yani web.archive.org internet üzerindeki sayfaların geçmiş hallerini barındırır. Silinen bir sayfa, kaldırılan bir belge, değiştirilen bir yapılandırma dosyası burada hâlâ mevcut olabilir.
Bu neden bu kadar değerlidir? İnsanlar bir sayfayı sildiklerinde gerçekten gittiğini sanarlar. Ama eğer Wayback Machine o sayfayı silmeden önce kaydetmişse bilgi kaldırılamaz. Şirketin eski web sitesinde görünen çalışan isimleri, o dönemde kullanılan teknolojiler, o tarihte geçerli olan iletişim bilgileri ve o dönemde var olan ama artık olmayan alt domainler hepsi erişilebilir kalır.
Güvenlik açısından özellikle ilgi çekici bazı senaryolar vardır. Geliştirme ortamında yanlışlıkla yayınlanan ve sonra kaldırılan bir yapılandırma dosyası Wayback'te yaşıyor olabilir. Bir API endpoint dökümantasyonu kaldırıldı ama arşivde mevcut, endpoint hâlâ aktif olabilir. Bir ekip sayfası kaldırıldı ama eski çalışan listesi arşivde görünüyor.
CommonCrawl benzer ama çok daha büyük ölçekli bir arşivdir. Akademik araştırma için kamuya açıktır ve petabayt ölçekinde web içeriği barındırır. Özel araçlarla sorgulanabilir.
CachedView ve Google Cache ise çok daha hızlı erişim için kullanılan alternatiflerdir. Google'ın önbelleği son birkaç hafta içinde değişen sayfaların eski halini tutar.
Profil Birleştirme
Toplanan bilgilerin değeri tek tek değil, bir araya getirildiklerinde ortaya çıkar. Bu birleştirme sürecine intelligence production denir ve ham veriden işlenmiş istihbarat elde edilir.
Bireysel profil için şu bilgilerin birleştirilmesi gerekir: kimlik bilgileri (ad, konum, iş), dijital ayak izi (e-posta, kullanıcı adları, profil URL'leri), ihlal geçmişi (hangi platformlar, hangi veriler), teknik profil (kullandığı araçlar, yazılım dilleri), sosyal ağ (kimlerle çalışıyor, kime yakın), zaman profili (ne zaman aktif, hangi etkinliklere katıldı).
Maltego bu birleştirme işi için en yaygın kullanılan araçtır. Grafiksel bir arayüzde varlıkları ve aralarındaki ilişkileri görselleştirir. Transform'lar aracılığıyla bir e-posta adresinden sosyal medya hesaplarına, oradan domain'lere, oradan IP adreslerine otomatik geçiş yapılır. Tüm bu ilişkiler bir grafik üzerinde görünür hale gelir.
SpiderFoot otomatik OSINT için açık kaynak bir platformdur. Hedef bir e-posta adresi, domain, IP veya kişi adı olabilir. SpiderFoot yüzlerce farklı kaynaktan otomatik veri çeker, ilişkilendirir ve raporlar. Web arayüzü veya komut satırından çalışır.
TheHarvester e-posta adresi, alt domain ve isim toplama konusunda uzmanlaşmış bir araçtır. Kali Linux ile birlikte gelir ve birden fazla arama motorunu aynı anda sorgular.
OSINT'e Karşı Savunma
OSINT savunması kişisel mahremiyet yönetimi ve kurumsal bilgi güvenliği politikası olmak üzere iki boyutludur.
Dijital ayak izini azaltmak bireysel savunmanın temelidir. Sosyal medyada gizlilik ayarları gözden geçirilir, kamuya açık bilgi minimum düzeye indirilir. Farklı platformlarda farklı kullanıcı adları kullanılır, böylece birleştirme zorlaşır. Genel fotoğraflara EXIF verisi temizlenerek yüklenir. Yayınlanan belgelere gömülü metadata temizlenir.
Kurumsal bilgi güvenliği için iş ilanlarında detaylı teknoloji isimlerinden kaçınılır. "Deneyimli güvenlik mühendisi" yeterlidir, "CrowdStrike Falcon ve Splunk ES deneyimi" fazla bilgi verir. GitHub repolarında gizli bilgi olup olmadığı düzenli taranır. Eski çalışanların bıraktığı erişimler derhal kapatılır.
Kendinize OSINT yapmak en etkili savunma değerlendirme yöntemidir. Düzenli aralıklarla kendi adınızı, şirketinizi ve çalışanlarınızı OSINT araçlarıyla tarayın. Bir saldırgan ne bulabilir? Bu sorunun cevabı savunma önceliklerini belirlemenizi sağlar.
OSINT ile hedef profilleme herhangi bir sisteme izinsiz giriş yapmadan kapsamlı bir bilgi tabanı oluşturur. Google Dorking ile açıkta kalan dosyalar ve iç sayfalar bulunur. Domain analizi DNS kayıtları, sertifika logları ve ASN bilgisiyle teknoloji altyapısını ortaya koyar. Sosyal medya bireysel profilden organizasyon haritasına kadar geniş bir veri sunar. GitHub commit'lerinde sızan API anahtarları ve veritabanı bağlantıları teknik analizin en değerli kaynakları arasındadır. İhlal veritabanları hedefin hangi servislerde kayıtlı olduğunu ve parola ihlali riskini gösterir. İş ilanları güvenlik ve yazılım stack'ini neredeyse açıkça listeler. Wayback Machine silinen ama arşivlenmiş bilgilere erişim sağlar. Tüm bu kaynaklar Maltego veya SpiderFoot gibi araçlarla birleştirildiğinde ham veriden işlenmiş istihbarat elde edilir. Savunmada dijital ayak izini azaltmak, iş ilanlarında teknoloji isimlerini gizlemek, GitHub'ı düzenli taramak ve kendinize OSINT yaparak saldırgan perspektifini anlamak katmanlı bir koruma sağlar.
Önemli Hatırlatma: Bu yazıdaki teknikler siber tehdit istihbaratı, yetkili penetrasyon testi, güvenlik araştırması ve savunma amaçlı eğitim kapsamında paylaşılmıştır. Kişilerin özel hayatlarını izinsiz araştırmak TCK Madde 134 ve Madde 243 kapsamında suçtur. Denemeyiniz efendim.
OSINT Nedir ve Neden Bu Kadar Güçlüdür?
OSINT, herhangi bir sisteme izinsiz giriş yapmadan, herhangi bir yasadışı eylem gerçekleştirmeden, yalnızca kamuya açık kaynaklardan bilgi toplama durumudur. İnternet, sosyal medya, haber arşivleri, kamu kayıtları, domain veritabanları, iş ilanları, akademik yayınlar bunların hepsi OSINT kaynağıdır.
Bu kadar güçlü olmasının nedeni de şudur: insanlar ve kurumlar her gün inanılmaz miktarda bilgiyi farkında olmadan kamuya açık hale getirir. Bir şirkete ait iş ilanı hangi teknolojilerin kullanıldığını ele verir. Bir çalışanın LinkedIn profili organizasyon şemasını ortaya koyar. Bir domain'in WHOIS kaydı teknik altyapıyı gösterir. Eski bir web sayfası silindiği zannedilen bilgiyi barındırır. Bunlar birleştirildiğinde hedefe ait kapsamlı bir profil ortaya çıkar.
OSINT yalnızca saldırganların kullandığı bir teknik değildir. Siber tehdit istihbaratı, redteam operasyonları, gazeteciler, araştırmacılar, savcılıklar ve şirketler rekabet istihbaratı için OSINT kullanır.
Bu yazıda OSINT'in iki boyutunu ele alacağız: bireysel hedef profilleme ve kurumsal hedef profilleme. Her ikisinin de farklı kaynakları, farklı araçları ve farklı çıktıları vardır.
Pasif ve Aktif OSINT Ayrımı
OSINT çalışmalarında önce bu ayrımı netleştirmek gerekir çünkü her ikisinin hukuki ve operasyonel sonuçları farklıdır.
Pasif OSINT hedefe hiçbir şekilde temas etmeksizin yürütülür. Google arama, arşiv siteleri, sosyal medya profilleri, WHOIS sorguları, sertifika şeffaflık logları bunların hepsi pasif yöntemlerdir. Hedef sisteme hiçbir paket gönderilmez. Hedef kişi veya kurum bilgi toplama işleminden haberdar olmaz. Pasif OSINT yasal açıdan en güvenli alandır.
Aktif OSINT ise hedefe doğrudan sorgu göndermesi anlamına gelir. Port taraması, DNS zone transfer denemesi, web uygulamasını crawl etmek, SMTP kullanıcı numaralandırması bunlar aktif yöntemlerdir. Hedefin loglarında iz bırakır. Yetkisiz sistemlere karşı bu tekniklerin kullanılması hukuki sorun yaratır.
Bu yazımızın büyük bölümü pasif OSINT teknikleri üzerinedir.
Bir OSINT çalışması başlamadan önce sorulacak soru şudur: bu bilgiye hakkım var mı? Yetkili pentest, kendi şirketin güvenlik değerlendirmesi, gazetecilik araştırması, açık kaynak tehdit analizi bunlar meşru bağlamlardır. Başkasını izlemek, çalışan casusluk faaliyetleri veya hedefli taciz bunlar değildir. Oyüzden lütfen etik kurallara uyunuz
Python:
# OSINT Çalışma Başlangıcı — Ön Hazırlık
# 1. Kapsam belirleme
# Ne arıyorsunuz? Bireysel mi kurumsal mı?
# Hangi bilgi kategorileri hedefte?
# Hangi sınırları aşmayacaksınız?
OSINT_KAPSAM = {
"hedef_turu": "bireysel / kurumsal",
"izin_seviyesi": "pasif / aktif",
"yasal_dayanak": "pentest sözleşmesi / kendi kurumunuz",
"hariç_tutulanlar": [],
}
# 2. Takma kimlik ve operasyonel güvenlik
# OSINT yaparken kendi izlerinizi gizlemek de önemlidir
# Hedef profilinizi görmemeli
# Sosyal medyada araştırma sırasında hesabınıza profil bakıyorsanız
# LinkedIn sizi bildirir, bu operasyonel güvenlik ihlalidir
# Önerilen OPSEC önlemleri:
OSINT_OPSEC = [
"VPN veya Tor üzerinden çalışın",
"LinkedIn'de gizli mod açın (ayarlar → görünürlük)",
"Araştırma hesabı kullanın, kişisel hesabınızı değil",
"Tarayıcı parmak izi için Firefox + uBlock + Canvas Blocker",
"Arama motorlarında kişisel hesapla oturum açmayın",
]
# 3. Not alma sistemi — Maltego veya manuel
# Bulunan her bilgi kategorize edilmeli
# Kaynakla birlikte kaydedilmeli (doğrulama için)
# Farklı kaynaklardan gelen bilgiler ilişkilendirilmeli
Google Dorking
Google Dorking, Google'ın gelişmiş arama operatörlerini kullanarak internette kamuya açık ama genellikle göze çarpmayan bilgileri bulmaktır. Bu teknik hem bireysel hem kurumsal profilleme için temeldir.
Sıradan bir arama "Ahmet Yılmaz techcorp" şeklinde yapılır ve binlerce sonuç döner. Google Dorking ise çok daha hedeflidir ve çok daha spesifik sonuçlar üretir.
site: operatörü belirli bir domainin içindeki sayfaları listeler. filetype: belirli dosya türlerini bulur. intitle: sayfa başlığında arama yapar. inurl: URL içinde arama yapar. intext: sayfa içeriğinde arama yapar. cache: Google'ın önbelleğini gösterir. link: belirli siteye bağlantı veren sayfaları listeler.
Bu operatörlerin kombinasyonuyla çok güçlü sorgular oluşturulur. Bir şirkete ait açıkta kalan Excel dosyaları, yanlışlıkla indekslenmiş dahili belgeler, eski çalışanların bıraktığı gizli klasörler, hata mesajları içinde sızan yazılım sürüm bilgileri Google Dorking ile bulunabilir.
Google Hacking Database (GHDB) Exploit-DB bünyesinde binlerce hazır dork barındırır. Kategorilere ayrılmış sorgular: açık yönetim panelleri, varsayılan şifreler, hassas dosyalar, veritabanı hataları. Bir hedef için bu veritabanından uygun sorgular seçilip uyarlanır.
Python:
### Google Dorking — Kurumsal Hedef Profilleme
## Temel Sorgular:
# Şirketin tüm alt domainleri
site:techcorp.com.tr -www
# Şirkete ait açık dosyalar
site:techcorp.com.tr filetype:pdf
site:techcorp.com.tr filetype:xlsx
site:techcorp.com.tr filetype:docx
# Gizli olmayan ama kamuya açık belgeler
site:techcorp.com.tr intext:"gizli" OR intext:"confidential" OR intext:"dahili"
# Hata mesajları — yazılım sürümü sızıntısı
site:techcorp.com.tr intext:"SQL syntax" OR intext:"stack trace" OR intext:"exception"
# Açık yönetim panelleri
site:techcorp.com.tr inurl:admin OR inurl:login OR inurl:panel OR inurl:dashboard
# Yedek dosyalar
site:techcorp.com.tr filetype:bak OR filetype:old OR filetype:backup
# E-posta adresleri
"@techcorp.com.tr" site:linkedin.com OR site:twitter.com
## Kişisel Hedef Dorking:
# Ad soyadla e-posta adresi bul
"ahmet.yilmaz" "@" "techcorp"
# Sosyal medya hesaplarını bul
"Ahmet Yılmaz" site:linkedin.com OR site:twitter.com OR site:github.com
# Akademik yayınlar ve konferans sunumları
"Ahmet Yılmaz" filetype:pdf OR site:scholar.google.com
# Otomatik dork üretimi — Python
def dork_listesi_uret(hedef_domain: str, kisi_adi: str) -> list:
dorklar = [
f"site:{hedef_domain} filetype:pdf",
f"site:{hedef_domain} inurl:admin",
f'"{kisi_adi}" "@{hedef_domain}"',
f"site:{hedef_domain} intext:password OR intext:passwd",
f"site:{hedef_domain} filetype:xml OR filetype:json",
f'"{kisi_adi}" site:linkedin.com',
f"site:{hedef_domain} -site:www.{hedef_domain}", # Alt domainler
]
return dorklar
dorklar = dork_listesi_uret("techcorp.com.tr", "Ahmet Yılmaz")
for d in dorklar:
print(f"https://www.google.com/search?q={d.replace(' ', '+')}")
# Shodan Dork — internet bağlantılı cihazlar
# org:"TechCorp" port:3389 → Açık RDP
# org:"TechCorp" http.title:"admin" → Açık yönetim paneli
# org:"TechCorp" ssl.cert.subject.cn:techcorp.com → SSL sertifikaları
Domain ve Altyapı İstihbaratı
Bir kurumu hedefleyen OSINT çalışmasında teknik altyapı analizi çok değerli bilgiler üretir. Bu bilgiler hem saldırı yüzeyini hem de kullanılan teknoloji yığınını ortaya koyar.
WHOIS sorgusu domain tescil bilgilerini verir. Kimin tescil ettiği, ne zaman tescil edildiği, hangi DNS sunucuları kullanıldığı, teknik ve yönetici iletişim bilgileri. GDPR sonrasında birçok kayıt gizlenmiş olsa da kurumsal domainlerde teknik e-posta adresleri hâlâ görünebilir.
DNS analizi çok katmanlı bilgi sunar. MX kaydı hangi e-posta servisinin kullanıldığını gösterir: Office 365 mi, Google Workspace mi, kendine ait sunucu mu? SPF kaydı hangi sunucuların şirket adına e-posta gönderme yetkisi olduğunu listeler ve bu liste CDN sağlayıcıları, üçüncü taraf hizmetler hakkında bilgi içerir. TXT kayıtları çeşitli servis doğrulama kodları taşır ve hangi üçüncü taraf servislerin kullanıldığını ele verir.
Sertifika şeffaflık logları belki de en az bilinen ama en değerli kaynaklardan biridir. Her TLS sertifikası verilen anda bir log sunucusuna kaydedilir ve bu loglar herkese açıktır. crt.sh veya Censys üzerinden bir domain için verilen tüm sertifikaları görmek mümkündür. Bu sertifikalar arasında henüz kamuya açıklanmamış test ortamları, geliştirme sunucuları ve iç kullanım için oluşturulmuş ama internete açık kalan subdomainler bulunur.
ASN ve IP aralığı analizi şirketin internet üzerindeki varlığını haritalandırır. BGP.he.net veya ipinfo.io üzerinden bir şirketin sahip olduğu IP bloklarına ulaşılır ve bu bloklar Shodan ile taranabilir.
Python:
#!/usr/bin/env python3
"""
Domain ve Altyapı OSINT Analizi
"""
import dns.resolver
import whois
import requests
import socket
from datetime import datetime
def dns_tam_analiz(domain: str) -> dict:
"""Bir domain için kapsamlı DNS analizi yapar."""
sonuc = {'domain': domain, 'kayitlar': {}}
resolver = dns.resolver.Resolver()
kayit_turleri = ['A', 'AAAA', 'MX', 'NS', 'TXT', 'SOA', 'CNAME']
for tur in kayit_turleri:
try:
cevap = resolver.resolve(domain, tur)
sonuc['kayitlar'][tur] = [str(r) for r in cevap]
except Exception:
pass
# MX kaydından e-posta altyapısı tespiti
if 'MX' in sonuc['kayitlar']:
for mx in sonuc['kayitlar']['MX']:
if 'outlook' in mx or 'protection.outlook' in mx:
sonuc['email_altyapi'] = 'Microsoft 365'
elif 'google' in mx or 'googlemail' in mx:
sonuc['email_altyapi'] = 'Google Workspace'
elif 'mimecast' in mx:
sonuc['email_altyapi'] = 'Mimecast (E-posta güvenlik filtresi)'
# TXT kaydından üçüncü taraf servisler
if 'TXT' in sonuc['kayitlar']:
for txt in sonuc['kayitlar']['TXT']:
if 'v=spf1' in txt:
sonuc['spf'] = txt
if 'stripe' in txt.lower():
sonuc['odeme_sistemi'] = 'Stripe kullanıyor'
if 'zendesk' in txt.lower():
sonuc['destek_sistemi'] = 'Zendesk kullanıyor'
return sonuc
def sertifika_subdomain_bul(domain: str) -> list:
"""crt.sh üzerinden sertifika şeffaflık loglarını sorgular."""
url = f"https://crt.sh/?q=%.{domain}&output=json"
try:
yanit = requests.get(url, timeout=10)
sertifikalar = yanit.json()
subdomainler = set()
for cert in sertifikalar:
isim = cert.get('name_value', '')
for satir in isim.split('\n'):
satir = satir.strip().lstrip('*.')
if domain in satir:
subdomainler.add(satir)
return sorted(subdomainler)
except Exception as e:
return []
def whois_analiz(domain: str) -> dict:
"""WHOIS bilgisini analiz eder."""
try:
w = whois.whois(domain)
return {
'tescil_tarihi': str(w.creation_date),
'son_guncelleme': str(w.updated_date),
'bitis_tarihi': str(w.expiration_date),
'kayit_eden': w.registrar,
'ns_sunuculari': w.name_servers,
}
except Exception as e:
return {'hata': str(e)}
# Örnek kullanım:
hedef = "techcorp.com.tr"
dns_bilgi = dns_tam_analiz(hedef)
subdomainler = sertifika_subdomain_bul(hedef)
whois_bilgi = whois_analiz(hedef)
print(f"E-posta altyapısı : {dns_bilgi.get('email_altyapi', 'Bilinmiyor')}")
print(f"Bulunan subdomain : {len(subdomainler)}")
for sub in subdomainler[:20]:
print(f" → {sub}")
Sosyal Medya İstihbaratı
Sosyal medya OSINT'in en zengin ama aynı zamanda en değişken kaynağıdır. Bireysel hedef profilleme için LinkedIn'i zaten ele aldık, burada diğer platformları ve kurumsal sosyal medya analizini ele alacağız.
Twitter/X gerçek zamanlı bilgi için eşsizdir. Hedef ne düşünüyor, hangi olaylara tepki veriyor, kiminle etkileşime giriyor, hangi araçlardan bahsediyor? Bir güvenlik araştırmacısı kullandığı yeni bir aracı tweet'lediğinde bu araç hem profilleme için hem de zafiyet analizi için değerli bir veri noktasıdır. Twitter Advanced Search ile belirli bir tarih aralığında, belirli bir konumdan veya belirli bir kişiyle etkileşimde atılmış tweetler bulunur.
GitHub teknik profilleme için altın madenidir. Geliştiricilerin repolarına bakıldığında hangi teknolojileri kullandıkları, hangi projelerde çalıştıkları, commit mesajlarında ne tür bilgiler sızdırdıkları anlaşılır. Commit geçmişinde yanlışlıkla eklenen API anahtarları, veritabanı bağlantı string'leri, iç ağ adresleri çok sık görülür. Bu bilgi hem bireysel hem de kurumsal hedef için kritiktir.
Instagram ve Facebook konum bilgisi için değerlidir. Gönderilerdeki coğrafi etiketler, arka planda görünen nesneler, fotoğraf metadata'sı (EXIF) konum ve zaman bilgisi taşır. Fotoğraf metadata analizi için ExifTool kullanılır ve çekilen fotoğrafın hangi cihazla, hangi koordinatlarda çekildiği görülür.
Kurumsal sosyal medya analizi da değerlidir. Şirketin resmi hesaplarından yapılan paylaşımlar hangi projelerin devam ettiğini, hangi teknolojilere yatırım yapıldığını, hangi etkinliklere katılındığını ve organizasyonun genel yapısını ortaya koyar.
Python:
#!/usr/bin/env python3
"""
Sosyal Medya OSINT Araçları
"""
import exifread
import json
import re
from datetime import datetime
def exif_analiz(gorsel_dosya: str) -> dict:
"""Görsel dosyasından EXIF metadata çıkarır."""
with open(gorsel_dosya, 'rb') as f:
etiketler = exifread.process_file(f, details=False)
sonuc = {}
ilginc_etiketler = [
'GPS GPSLatitude', 'GPS GPSLongitude',
'GPS GPSLatitudeRef', 'GPS GPSLongitudeRef',
'EXIF DateTimeOriginal',
'Image Make', 'Image Model', # Cihaz markası ve modeli
'EXIF Software',
]
for etiket in ilginc_etiketler:
if etiket in etiketler:
sonuc[etiket] = str(etiketler[etiket])
# GPS koordinatlarını ondalık dereceye çevir
if 'GPS GPSLatitude' in sonuc and 'GPS GPSLongitude' in sonuc:
lat = sonuc['GPS GPSLatitude']
lon = sonuc['GPS GPSLongitude']
sonuc['koordinat_ham'] = f"{lat}, {lon}"
sonuc['google_maps'] = f"https://maps.google.com/?q={lat},{lon}"
return sonuc
def github_kullanici_analiz(kullanici_adi: str) -> dict:
"""GitHub kullanıcısını OSINT için analiz eder."""
import requests
base_url = "https://api.github.com"
headers = {"Accept": "application/vnd.github.v3+json"}
# Kullanıcı profili
profil = requests.get(f"{base_url}/users/{kullanici_adi}", headers=headers).json()
# Repolar
repolar = requests.get(
f"{base_url}/users/{kullanici_adi}/repos?per_page=100",
headers=headers
).json()
# Kullanılan diller
diller = {}
for repo in repolar:
if repo.get('language'):
lang = repo['language']
diller[lang] = diller.get(lang, 0) + 1
# E-posta bulma — commit geçmişinden
# Her commit'in author email'i kamuya açık
email_listesi = set()
for repo in repolar[:10]: # İlk 10 repo
commitler = requests.get(
f"{base_url}/repos/{kullanici_adi}/{repo['name']}/commits?per_page=5",
headers=headers
).json()
if isinstance(commitler, list):
for commit in commitler:
try:
email = commit['commit']['author']['email']
if email and 'noreply' not in email:
email_listesi.add(email)
except Exception:
pass
return {
'isim': profil.get('name'),
'bio': profil.get('bio'),
'sirket': profil.get('company'),
'konum': profil.get('location'),
'blog': profil.get('blog'),
'twitter': profil.get('twitter_username'),
'repo_sayisi': profil.get('public_repos'),
'diller': sorted(diller.items(), key=lambda x: x[1], reverse=True)[:5],
'emailler': list(email_listesi),
}
# GitHub'da hassas bilgi arama — gitleaks alternatifi
HASSAS_PATTERN = {
'api_key': r'(?i)(api[_\-]?key|apikey)\s*[=:]\s*["\']?[a-z0-9]{20,}',
'aws_key': r'AKIA[0-9A-Z]{16}',
'db_url': r'(postgresql|mysql|mongodb):\/\/[^\s]+',
'private_key': r'-----BEGIN (RSA |EC )?PRIVATE KEY-----',
'slack_token': r'xox[baprs]-[0-9a-zA-Z]{10,48}',
}
Sızdırılmış Veri Analizi — HaveIBeenPwned vs
Milyarlarca kullanıcı kaydı geçmişte çeşitli ihlallerle kamuya sızmıştır. Bu veri artık dark web'de ve çeşitli aggregator sitelerinde bulunabilir durumdadır. OSINT açısından bu veriler hedef kişinin hangi hizmetleri kullandığını, e-posta adreslerini ve bazı durumlarda parola örüntülerini ortaya koyar.
HaveIBeenPwned (HIBP) Troy Hunt tarafından yönetilen ve kamuya açık bir servis olarak binlerce ihlaldeki e-posta adreslerini indeksler. Bir e-posta adresinin hangi ihlallerde görüldüğü sorgulanabilir. API ile bu sorgulama otomatize edilir.
Sızdırılmış veri ne anlatır? Hedef kişi hangi servisleri kullanmış: LinkedIn, Adobe, Dropbox ihlallerinde görüldüyse bunlar iş araçları. Gaming platformu ihlallerinde görüldüyse kişisel bir boyut var. E-posta adresi formatları farklı servislerde farklıysa kullanıcının tercih ettiği e-posta naming convention anlaşılır. Şifre hash'leri bazı durumlarda kırılabilirse ve bu kişi başka yerlerde aynı şifreyi kullanıyorsa credential stuffing için değerli hale gelir.
Dehashed, Snusbase ve IntelX daha kapsamlı ihlal veritabanı servisleridir. Ücretli erişim sunarlar ama araştırmacılar için lisanslı kullanım mevcuttur. Bu servislerden e-posta adresine bağlı kullanıcı adları, IP adresleri ve diğer tanımlayıcılar sorgulanabilir.
Önemli bir not: bu araçlar yalnızca kendi verilerinizi veya yetkili test kapsamındaki verileri sorgulamak için kullanılır. Başkasının sızdırılmış verisini rıza olmadan araştırmak etik ve hukuki sorunlar yaratır.
Python:
#!/usr/bin/env python3
"""
İhlal Veri Analizi — HIBP ve Diğer Kaynaklar
"""
import requests
import hashlib
import time
def hibp_email_sorgula(email: str, api_key: str) -> dict:
"""HaveIBeenPwned API ile e-posta ihlal kontrolü."""
url = f"https://haveibeenpwned.com/api/v3/breachedaccount/{email}"
headers = {
"hibp-api-key": api_key,
"User-Agent": "OSINT-Research-Tool"
}
try:
yanit = requests.get(url, headers=headers)
if yanit.status_code == 200:
ihlaller = yanit.json()
return {
'ihlal_sayisi': len(ihlaller),
'ihlaller': [
{
'ad': i['Name'],
'tarih': i['BreachDate'],
'veri_turleri': i['DataClasses'],
'hesap_sayisi': i['PwnCount']
}
for i in ihlaller
]
}
elif yanit.status_code == 404:
return {'ihlal_sayisi': 0, 'mesaj': 'İhlalde görülmemiş'}
except Exception as e:
return {'hata': str(e)}
def hibp_parola_kontrol(parola: str) -> dict:
"""
k-anonymity yöntemiyle parola ihlal kontrolü.
Parola asla HIBP'ye gönderilmez, yalnızca hash'in ilk 5 karakteri.
"""
sha1 = hashlib.sha1(parola.encode()).hexdigest().upper()
on_bes = sha1[:5]
kalan = sha1[5:]
url = f"https://api.pwnedpasswords.com/range/{on_bes}"
yanit = requests.get(url)
for satir in yanit.text.splitlines():
hash_parca, sayi = satir.split(':')
if hash_parca == kalan:
return {
'ihlalde_goruldu': True,
'gorulme_sayisi': int(sayi),
'yorum': f"Bu parola {sayi} kez ihlal veritabanında görülmüş"
}
return {'ihlalde_goruldu': False}
def ihla_analizi_ozet(ihlal_listesi: list) -> dict:
"""İhlal listesinden profil çıkarır."""
tum_veri_turleri = []
ilk_ihla_tarihi = None
son_ihla_tarihi = None
for ihla in ihlal_listesi:
tum_veri_turleri.extend(ihla.get('veri_turleri', []))
tarih_str = ihla.get('tarih', '')
if tarih_str:
if not ilk_ihla_tarihi or tarih_str < ilk_ihla_tarihi:
ilk_ihla_tarihi = tarih_str
if not son_ihla_tarihi or tarih_str > son_ihla_tarihi:
son_ihla_tarihi = tarih_str
from collections import Counter
veri_sayaci = Counter(tum_veri_turleri)
return {
'en_sık_sızan_veri': veri_sayaci.most_common(5),
'ilk_ihla': ilk_ihla_tarihi,
'son_ihla': son_ihla_tarihi,
'parola_var_mi': 'Passwords' in tum_veri_turleri,
'telefon_var_mi': 'Phone numbers' in tum_veri_turleri,
}
İş İlanları
Bu bölüm çoğu kişinin gözden kaçırdığı ama son derece değerli bir OSINT tekniğini ele almaktadır. Şirketlerin iş ilanları teknik altyapılarını neredeyse açıkça ortaya koyar.
Bir şirket "Deneyimli Siber Güvenlik Mühendisi" aradığında aranan niteliklere bakılır: "CrowdStrike Falcon deneyimi", "Splunk SIEM yönetimi", "Palo Alto Networks güvenlik duvarı". Bu üç kelime şirketin güvenlik altyapısını özetlemektedir. Bunun karşısında hangi sürümlerin hangi CVE'lere sahip olduğu bakılır.
Bir "Kıdemli Backend Geliştirici" ilanında şunlar görülür: "Go veya Python", "PostgreSQL ve Redis", "Kubernetes ve AWS EKS", "Kafka mesaj kuyruğu". Bu şirketin yazılım altyapısının haritasıdır.
İş ilanı OSINT nasıl yapılır? LinkedIn Jobs, Kariyer.net, Indeed ve şirketin kendi kariyer sayfası taranır. Aynı şirkete ait birden fazla ilan bir araya getirilir. Tekrar eden teknoloji isimleri listelenir. Sürüm bilgisi varsa not edilir. Orta veya kıdemli pozisyon için aranan yetkinlikler şirketin mevcut kapasitesini de gösterir.
Bunun ötesinde eski ilanlar da değerlidir. Şirket iki yıl önce Juniper deneyimi arıyordu, şimdi Aruba arıyor. Bu bir altyapı geçişinin işaretidir. Eski teknoloji hâlâ sistemde olabilir ve yamalar yapılmamış olabilir.
Python:
#!/usr/bin/env python3
"""
İş İlanı OSINT Analizi — Teknoloji Yığını Çıkarma
"""
import requests
from bs4 import BeautifulSoup
import re
from collections import Counter
# Yaygın güvenlik teknolojileri sözlüğü
GUVENLIK_TEKNOLOJI = [
# EDR/EPP
'CrowdStrike', 'SentinelOne', 'Carbon Black', 'Cylance',
'Microsoft Defender', 'Symantec', 'McAfee',
# SIEM
'Splunk', 'IBM QRadar', 'Microsoft Sentinel', 'Elastic SIEM',
'LogRhythm', 'ArcSight', 'Chronicle',
# Güvenlik Duvarı
'Palo Alto', 'Fortinet', 'Check Point', 'Cisco ASA', 'Juniper',
# IAM
'Okta', 'Azure AD', 'Ping Identity', 'CyberArk', 'BeyondTrust',
# Bulut
'AWS', 'Azure', 'GCP', 'Cloudflare',
# SOAR
'Splunk SOAR', 'Palo Alto XSOAR', 'IBM Resilient',
]
YAZILIM_TEKNOLOJI = [
'Python', 'Go', 'Java', 'Node.js', 'React', 'Angular',
'PostgreSQL', 'MySQL', 'MongoDB', 'Redis', 'Elasticsearch',
'Kubernetes', 'Docker', 'Terraform', 'Ansible',
'Kafka', 'RabbitMQ', 'Jenkins', 'GitLab CI',
]
def ilan_teknoloji_cikar(ilan_metni: str) -> dict:
"""İş ilanı metninden teknoloji yığınını çıkarır."""
bulunan_guvenlik = []
bulunan_yazilim = []
metin_kucuk = ilan_metni.lower()
for tech in GUVENLIK_TEKNOLOJI:
if tech.lower() in metin_kucuk:
bulunan_guvenlik.append(tech)
for tech in YAZILIM_TEKNOLOJI:
if tech.lower() in metin_kucuk:
bulunan_yazilim.append(tech)
# Sürüm numarası arama
versiyon_pattern = re.compile(
r'(' + '|'.join(GUVENLIK_TEKNOLOJI + YAZILIM_TEKNOLOJI) +
r')\s+v?(\d+[\.\d]*)',
re.IGNORECASE
)
surumler = versiyon_pattern.findall(ilan_metni)
return {
'guvenlik_stack': bulunan_guvenlik,
'yazilim_stack': bulunan_yazilim,
'bulunan_surumler': surumler,
'toplam_teknoloji': len(bulunan_guvenlik) + len(bulunan_yazilim)
}
def sirket_ilanlarini_analiz(ilanlar: list) -> dict:
"""Birden fazla ilandan şirket profili çıkarır."""
tum_guvenlik = Counter()
tum_yazilim = Counter()
for ilan in ilanlar:
analiz = ilan_teknoloji_cikar(ilan)
for tech in analiz['guvenlik_stack']:
tum_guvenlik[tech] += 1
for tech in analiz['yazilim_stack']:
tum_yazilim[tech] += 1
return {
'guvenlik_stack_kesin': [k for k, v in tum_guvenlik.items() if v >= 2],
'guvenlik_stack_muhtemel': [k for k, v in tum_guvenlik.items() if v == 1],
'yazilim_stack': tum_yazilim.most_common(10),
'profil_guven': 'YÜKSEK' if len(tum_guvenlik) > 3 else 'ORTA'
}
Wayback Machine ve Arşiv Analizi
Wayback Machine yani web.archive.org internet üzerindeki sayfaların geçmiş hallerini barındırır. Silinen bir sayfa, kaldırılan bir belge, değiştirilen bir yapılandırma dosyası burada hâlâ mevcut olabilir.
Bu neden bu kadar değerlidir? İnsanlar bir sayfayı sildiklerinde gerçekten gittiğini sanarlar. Ama eğer Wayback Machine o sayfayı silmeden önce kaydetmişse bilgi kaldırılamaz. Şirketin eski web sitesinde görünen çalışan isimleri, o dönemde kullanılan teknolojiler, o tarihte geçerli olan iletişim bilgileri ve o dönemde var olan ama artık olmayan alt domainler hepsi erişilebilir kalır.
Güvenlik açısından özellikle ilgi çekici bazı senaryolar vardır. Geliştirme ortamında yanlışlıkla yayınlanan ve sonra kaldırılan bir yapılandırma dosyası Wayback'te yaşıyor olabilir. Bir API endpoint dökümantasyonu kaldırıldı ama arşivde mevcut, endpoint hâlâ aktif olabilir. Bir ekip sayfası kaldırıldı ama eski çalışan listesi arşivde görünüyor.
CommonCrawl benzer ama çok daha büyük ölçekli bir arşivdir. Akademik araştırma için kamuya açıktır ve petabayt ölçekinde web içeriği barındırır. Özel araçlarla sorgulanabilir.
CachedView ve Google Cache ise çok daha hızlı erişim için kullanılan alternatiflerdir. Google'ın önbelleği son birkaç hafta içinde değişen sayfaların eski halini tutar.
Python:
#!/usr/bin/env python3
"""
Wayback Machine OSINT Analizi
"""
import requests
from datetime import datetime
import json
def wayback_snapshot_listesi(url: str, limit: int = 50) -> list:
"""
Belirli bir URL için Wayback Machine snapshot'larını listeler.
"""
api_url = f"http://archive.org/wayback/available?url={url}"
cdx_url = (
f"http://web.archive.org/cdx/search/cdx"
f"?url={url}&output=json&limit={limit}&fl=timestamp,statuscode,mimetype"
)
try:
yanit = requests.get(cdx_url, timeout=15)
veriler = yanit.json()
# İlk satır başlık
baslik = veriler[0]
snapshots = []
for satir in veriler[1:]:
snapshot = dict(zip(baslik, satir))
snapshot['wayback_url'] = (
f"https://web.archive.org/web/{snapshot['timestamp']}/{url}"
)
snapshots.append(snapshot)
return snapshots
except Exception as e:
return []
def wayback_hassas_dosya_ara(domain: str) -> list:
"""
Domain için hassas dosyaların arşivlenmiş hallerini arar.
"""
hassas_dosyalar = [
f"{domain}/.env",
f"{domain}/config.php",
f"{domain}/wp-config.php",
f"{domain}/database.yml",
f"{domain}/settings.py",
f"{domain}/appsettings.json",
f"{domain}/web.config",
f"{domain}/.git/config",
f"{domain}/backup.zip",
f"{domain}/dump.sql",
]
bulunanlar = []
for dosya_url in hassas_dosyalar:
snapshots = wayback_snapshot_listesi(dosya_url, limit=5)
if snapshots:
# 200 durumlu snapshot var mı?
basarili = [s for s in snapshots if s.get('statuscode') == '200']
if basarili:
bulunanlar.append({
'url': dosya_url,
'snapshot_sayisi': len(basarili),
'ilk': basarili[0]['wayback_url'],
'son': basarili[-1]['wayback_url'],
})
return bulunanlar
# Eski alt domain keşfi — Wayback + subdomain kombinasyonu
def eski_subdomain_bul(domain: str) -> list:
"""
Wayback Machine'de görülmüş ama artık olmayan subdomainleri bulur.
"""
cdx_url = (
f"http://web.archive.org/cdx/search/cdx"
f"?url=*.{domain}&output=json&fl=original&collapse=urlkey&limit=200"
)
try:
yanit = requests.get(cdx_url, timeout=20)
veriler = yanit.json()
subdomainler = set()
for satir in veriler[1:]: # İlk satır başlık
url = satir[0]
match = __import__('re').match(r'https?://([^/]+)', url)
if match:
subdomain = match.group(1)
if domain in subdomain:
subdomainler.add(subdomain)
return sorted(subdomainler)
except Exception:
return []
Profil Birleştirme
Toplanan bilgilerin değeri tek tek değil, bir araya getirildiklerinde ortaya çıkar. Bu birleştirme sürecine intelligence production denir ve ham veriden işlenmiş istihbarat elde edilir.
Bireysel profil için şu bilgilerin birleştirilmesi gerekir: kimlik bilgileri (ad, konum, iş), dijital ayak izi (e-posta, kullanıcı adları, profil URL'leri), ihlal geçmişi (hangi platformlar, hangi veriler), teknik profil (kullandığı araçlar, yazılım dilleri), sosyal ağ (kimlerle çalışıyor, kime yakın), zaman profili (ne zaman aktif, hangi etkinliklere katıldı).
Maltego bu birleştirme işi için en yaygın kullanılan araçtır. Grafiksel bir arayüzde varlıkları ve aralarındaki ilişkileri görselleştirir. Transform'lar aracılığıyla bir e-posta adresinden sosyal medya hesaplarına, oradan domain'lere, oradan IP adreslerine otomatik geçiş yapılır. Tüm bu ilişkiler bir grafik üzerinde görünür hale gelir.
SpiderFoot otomatik OSINT için açık kaynak bir platformdur. Hedef bir e-posta adresi, domain, IP veya kişi adı olabilir. SpiderFoot yüzlerce farklı kaynaktan otomatik veri çeker, ilişkilendirir ve raporlar. Web arayüzü veya komut satırından çalışır.
TheHarvester e-posta adresi, alt domain ve isim toplama konusunda uzmanlaşmış bir araçtır. Kali Linux ile birlikte gelir ve birden fazla arama motorunu aynı anda sorgular.
Python:
#!/usr/bin/env python3
"""
OSINT Profil Birleştirici — Ham Veriden İstihbarata
"""
from dataclasses import dataclass, field
from typing import List, Dict, Optional
from datetime import datetime
import json
@dataclass
class BireyselProfil:
"""Bir kişiye ait OSINT bulguları."""
# Kimlik
ad_soyad: str = ""
takma_adlar: List[str] = field(default_factory=list)
konum: List[str] = field(default_factory=list)
# Dijital varlık
email_adresleri: List[str] = field(default_factory=list)
sosyal_medya: Dict[str, str] = field(default_factory=dict)
websiteler: List[str] = field(default_factory=list)
# İhlal geçmişi
ihla_sayisi: int = 0
ihla_platformlari: List[str] = field(default_factory=list)
parola_ihla: bool = False
# Teknik profil
programlama_dilleri: List[str] = field(default_factory=list)
araçlar: List[str] = field(default_factory=list)
github_repolari: List[str] = field(default_factory=list)
# Sosyal ağ
meslektaslar: List[str] = field(default_factory=list)
bagli_kurumlar: List[str] = field(default_factory=list)
# Meta
kaynak_listesi: List[str] = field(default_factory=list)
olusturulma: str = field(
default_factory=lambda: datetime.now().isoformat()
)
def risk_puani(self) -> int:
"""Profil zenginliğini puanlar — yüksek puan = fazla bilgi."""
puan = 0
puan += len(self.email_adresleri) * 3
puan += len(self.sosyal_medya) * 2
puan += self.ihla_sayisi * 4
puan += 10 if self.parola_ihla else 0
puan += len(self.programlama_dilleri) * 1
puan += len(self.meslektaslar) * 2
return puan
def ihlas_notu(self) -> str:
if self.parola_ihla:
return "KRİTİK — Parola ihlalde görülmüş, credential stuffing riski"
elif self.ihla_sayisi > 5:
return "YÜKSEK — Çok sayıda ihlal, kişisel bilgiler geniş çapta açık"
elif self.ihla_sayisi > 0:
return "ORTA — İhlal geçmişi mevcut"
return "DÜŞÜK — Bilinen ihlal yok"
def rapor_uret(self) -> str:
rapor = f"""
=== OSINT PROFİL RAPORU ===
Hedef : {self.ad_soyad}
Tarih : {self.olusturulma}
Zenginlik : {self.risk_puani()} puan
E-postalar ({len(self.email_adresleri)}):
{chr(10).join(f' → {e}' for e in self.email_adresleri)}
Sosyal Medya:
{chr(10).join(f' → {p}: {u}' for p, u in self.sosyal_medya.items())}
İhlal Analizi:
Sayı : {self.ihla_sayisi}
Durum : {self.ihlas_notu()}
Servisler: {', '.join(self.ihla_platformlari[:5])}
Teknik Profil:
Diller : {', '.join(self.programlama_dilleri)}
Araçlar : {', '.join(self.araçlar[:5])}
Kaynaklar: {', '.join(self.kaynak_listesi)}
"""
return rapor
# Örnek profil oluşturma:
profil = BireyselProfil(
ad_soyad="Ahmet Yılmaz",
email_adresleri=["[email protected]", "[email protected]"],
sosyal_medya={
"LinkedIn": "linkedin.com/in/ahmetyilmaz",
"GitHub": "github.com/ahmetyilmaz",
"Twitter": "@ahmetyilmaz"
},
ihla_sayisi=3,
ihla_platformlari=["LinkedIn", "Adobe", "Dropbox"],
parola_ihla=True,
programlama_dilleri=["Python", "Go", "JavaScript"],
araçlar=["Splunk", "CrowdStrike", "Azure AD"],
kaynak_listesi=["LinkedIn", "HIBP", "GitHub", "crt.sh"]
)
print(profil.rapor_uret())
OSINT'e Karşı Savunma
OSINT savunması kişisel mahremiyet yönetimi ve kurumsal bilgi güvenliği politikası olmak üzere iki boyutludur.
Dijital ayak izini azaltmak bireysel savunmanın temelidir. Sosyal medyada gizlilik ayarları gözden geçirilir, kamuya açık bilgi minimum düzeye indirilir. Farklı platformlarda farklı kullanıcı adları kullanılır, böylece birleştirme zorlaşır. Genel fotoğraflara EXIF verisi temizlenerek yüklenir. Yayınlanan belgelere gömülü metadata temizlenir.
Kurumsal bilgi güvenliği için iş ilanlarında detaylı teknoloji isimlerinden kaçınılır. "Deneyimli güvenlik mühendisi" yeterlidir, "CrowdStrike Falcon ve Splunk ES deneyimi" fazla bilgi verir. GitHub repolarında gizli bilgi olup olmadığı düzenli taranır. Eski çalışanların bıraktığı erişimler derhal kapatılır.
Kendinize OSINT yapmak en etkili savunma değerlendirme yöntemidir. Düzenli aralıklarla kendi adınızı, şirketinizi ve çalışanlarınızı OSINT araçlarıyla tarayın. Bir saldırgan ne bulabilir? Bu sorunun cevabı savunma önceliklerini belirlemenizi sağlar.
Python:
### OSINT Karşı Savunma Kontrol Listesi
# BİREYSEL:
BIREYSEL_SAVUNMA = {
"E-posta": "Farklı amaçlar için farklı e-posta kullanın",
"Kullanıcı adı": "Her platformda farklı kullanıcı adı",
"Fotoğraf": "Yüklemeden önce EXIF temizleyin",
"LinkedIn": "Bağlantı listesi ve profil görüntüleyenler gizli",
"HIBP": "Kendi e-postanızı düzenli kontrol edin",
"Belge": "PDF ve Office belgelerinden yazar bilgisini kaldırın",
}
# EXIF Temizleme:
# Linux/macOS: exiftool -all= foto.jpg
# Windows: ExifTool GUI veya IrfanView
# Belge metadata temizleme:
# Word: Dosya → Bilgi → Sorun Denetle → Belge Özelliklerini Kaldır
# PDF: Acrobat → Araçlar → Koru → Gizli Bilgileri Kaldır
# KURUMSAL:
KURUMSAL_SAVUNMA = {
"İş ilanları": "Teknoloji isimlerini genel tutun",
"GitHub": "Gitleaks ile düzenli tarama yapın",
"DNS": "WHOIS gizleme servisi kullanın",
"Sertifikalar": "Wildcard sertifika kullanımını değerlendirin",
"Wayback": "Kaldırılan hassas sayfaları exclude.txt ile işaretleyin",
"Çalışan ayrılışı": "GitHub erişimi ve sosyal medya adlarını güncelleyin",
}
# Gitleaks — GitHub'da hassas veri taraması
# pip install gitleaks (veya brew install gitleaks)
# gitleaks detect --source . --report-format json --report-path gitleaks.json
# Web arşivden sayfa kaldırma:
# https://www.google.com/webmasters/tools/removals — Google Cache
# Internet Archive'e e-posta: [email protected] — Wayback kaldırma
# Düzenli OSINT öz değerlendirme — SpiderFoot ile
# spiderfoot -s "techcorp.com.tr" -m sfp_bing,sfp_dns,sfp_whois
# -o tab > sirket_osint_rapor.txt
OSINT ile hedef profilleme herhangi bir sisteme izinsiz giriş yapmadan kapsamlı bir bilgi tabanı oluşturur. Google Dorking ile açıkta kalan dosyalar ve iç sayfalar bulunur. Domain analizi DNS kayıtları, sertifika logları ve ASN bilgisiyle teknoloji altyapısını ortaya koyar. Sosyal medya bireysel profilden organizasyon haritasına kadar geniş bir veri sunar. GitHub commit'lerinde sızan API anahtarları ve veritabanı bağlantıları teknik analizin en değerli kaynakları arasındadır. İhlal veritabanları hedefin hangi servislerde kayıtlı olduğunu ve parola ihlali riskini gösterir. İş ilanları güvenlik ve yazılım stack'ini neredeyse açıkça listeler. Wayback Machine silinen ama arşivlenmiş bilgilere erişim sağlar. Tüm bu kaynaklar Maltego veya SpiderFoot gibi araçlarla birleştirildiğinde ham veriden işlenmiş istihbarat elde edilir. Savunmada dijital ayak izini azaltmak, iş ilanlarında teknoloji isimlerini gizlemek, GitHub'ı düzenli taramak ve kendinize OSINT yaparak saldırgan perspektifini anlamak katmanlı bir koruma sağlar.
Önemli Hatırlatma: Bu yazıdaki teknikler siber tehdit istihbaratı, yetkili penetrasyon testi, güvenlik araştırması ve savunma amaçlı eğitim kapsamında paylaşılmıştır. Kişilerin özel hayatlarını izinsiz araştırmak TCK Madde 134 ve Madde 243 kapsamında suçtur. Denemeyiniz efendim.
Son düzenleme:

