OSINT Araştırmalarında Have I Been Pwned Kullanımı
Have I Been Pwned Nedir?
Have I Been Pwned (HIBP), güvenlik uzmanı Troy Hunt tarafından 2013 yılında oluşturulmuş, dünya çapında en büyük veri sızıntısı takip platformudur. Bu hizmet, milyarlarca sızdırılmış hesap bilgisini içeren kapsamlı bir veritabanı sunarak, kullanıcıların ve güvenlik uzmanlarının e-posta adreslerinin veya şifrelerinin veri ihlallerinde yer alıp almadığını kontrol etmelerine olanak tanır.
HIBP, sadece bireysel kullanıcılar için değil, aynı zamanda OSINT (Open Source Intelligence) uzmanları, penetrasyon testçileri ve siber güvenlik araştırmacıları için de vazgeçilmez bir araç haline gelmiştir.
Platform Özellikleri
Have I Been Pwned'in temel özellikleri:
- 11+ milyar sızdırılmış hesap: Sürekli güncellenen devasa veritabanı
- 600+ veri ihlali: LinkedIn, Adobe, Yahoo gibi büyük sızıntılar dahil
- Ücretsiz erişim: Temel aramalar tamamen ücretsiz
- API desteği: Otomatik sorgular için güçlü API
- Pwned Passwords: 850+ milyon sızdırılmış şifre veritabanı
- Domain Search: Şirket domainlerini toplu kontrol
- Bildirim sistemi: Yeni sızıntılar için otomatik uyarılar
OSINT'de Have I Been Pwned Neden Önemli?
OSINT (Open Source Intelligence - Açık Kaynak İstihbaratı) araştırmalarında, hedef hakkında mümkün olduğunca fazla bilgi toplamak kritik önem taşır. Have I Been Pwned, bu süreçte aşağıdaki nedenlerle vazgeçilmez bir araçtır:
1. Hedef Kişinin E-posta Adresleri
Bir hedef kişinin birden fazla e-posta adresine sahip olması, dijital ayak izleri hakkında önemli ipuçları sağlar:
E-posta Analizi ile Elde Edilebilecek Bilgiler:
- Eski iş yerleri:
isim.soyisim@eskisirket.comformatındaki e-postalar - Takma adlar ve kullanıcı adları: Farklı platformlarda kullanılan nickname'ler
- Kişisel ilgi alanları: Hobi veya ilgi alanlarını yansıtan e-posta adresleri
- Yaş ve dönem bilgisi: E-posta sağlayıcısı (Hotmail, Yahoo) kullanıcının yaş grubunu işaret edebilir
- Profesyonel bağlantılar: İş ortakları veya kurumsal e-postalar
Örnek Senaryo:
john.doe@oldcompany.com → 2010-2015 arası Old Company'de çalıştı
johndoe_gamer@yahoo.com → Oyun topluluklarında aktif
j.doe@newtech.io → Şu anda NewTech'te çalışıyor
2. Şifre Sızıntıları ve Güvenlik Açıkları
Şifre sızıntıları, OSINT araştırmalarında kritik bilgiler sağlar:
Şifre Analizi Faydaları:
- Şifre kalıpları: Hedef kişinin şifre oluşturma mantığını anlama
- Çoklu kullanım: Aynı şifrenin farklı platformlarda kullanılıp kullanılmadığını tespit
- Güvenlik bilinci: Hedefin siber güvenlik konusundaki farkındalık seviyesi
- Zaman çizelgesi: Hangi dönemde hangi hizmetleri kullandığına dair ipuçları
Yaygın Şifre Kalıpları:
Ad + Yıl: John2015, John2020
Şirket + Rakam: Company123, Company2024
Kişisel Bilgi: Istanbul1980, DoguTarih
Basit Kombinasyonlar: Password123, Qwerty2024
Güvenlik Notu: Sızan şifreleri gerçek hesaplarda denemek yasa dışıdır ve etik kurallara aykırıdır!
3. Veri Sızıntısı Tarihleri ve Zaman Çizelgesi
Sızıntı tarihleri, hedef kişinin dijital yaşam öyküsü hakkında değerli bilgiler verir:
Zaman Çizelgesi Analizi:
| Sızıntı Tarihi | Platform | Çıkarım |
|---|---|---|
| 2008 | MySpace | Erken internet kullanıcısı, sosyal medya meraklısı |
| 2012 | Profesyonel kariyere başlama dönemi | |
| 2014 | Adobe | Yaratıcı sektörde çalışıyor olabilir |
| 2016 | Tumblr | Blog yazarlığı veya içerik üretimi |
| 2019 | Canva | Grafik tasarım ilgisi |
| 2023 | Aktif sosyal medya kullanıcısı |
Analiz Örneği:
2010-2015: Oyun forumlarında aktif (gaming sızıntıları)
2015-2018: Kariyer geçişi (iş platformları sızıntıları)
2018-2023: Teknoloji sektöründe (SaaS platformları sızıntıları)
4. Ek Bilgiler ve Metadata
Bazı veri sızıntıları, e-posta ve şifre dışında çok değerli ek bilgiler içerir:
Sızıntılarda Bulunabilecek Ek Veriler:
Kişisel Bilgiler:
- Tam ad (Ad Soyad)
- Doğum tarihi
- Cinsiyet
- Fiziksel adres
- Telefon numarası
Hesap Bilgileri:
- Kullanıcı adı
- Profil URL'leri
- Hesap oluşturma tarihi
- Son oturum açma tarihi
- IP adresleri
Finansal Bilgiler:
- Kredi kartı bilgileri (son 4 hane)
- Ödeme yöntemleri
- Abonelik durumu
- Satın alma geçmişi
Teknik Bilgiler:
- Browser bilgisi
- İşletim sistemi
- Cihaz bilgileri
- Konum verileri (GPS)
Örnek Sızıntı Verisi:
{
"email": "john.doe@example.com",
"name": "John Doe",
"phone": "+90 5XX XXX XXXX",
"address": "İstanbul, Türkiye",
"username": "johndoe123",
"password_hash": "5f4dcc3b5aa765d61d8327deb882cf99",
"signup_date": "2015-03-15",
"ip_address": "85.123.45.67"
}
5. Sosyal Mühendislik İçin Zemin Hazırlama
HIBP'den elde edilen bilgiler, sosyal mühendislik saldırıları için zemin hazırlayabilir (etik çerçevede):
Kullanım Alanları:
- Phishing kampanyaları: Hedefin kullandığı servisleri bilerek daha ikna edici e-postalar
- Pretexting: Gerçekçi hikayeler oluşturma (eski şirket, kullandığı platform vb.)
- Güven inşası: Ortak noktalar bularak yakınlık kurma
- Zayıf nokta tespiti: Hedefin güvenlik bilinci ve zaaflarını anlama
Have I Been Pwned Kullanım Rehberi
Adım 1: Hedef Kişinin E-posta Adreslerini Bulmak
OSINT araştırmasının ilk adımı, hedef kişiye ait olası e-posta adreslerini tespit etmektir.
1.1. Sosyal Medya Platformları
Kontrol Edilmesi Gereken Platformlar:
✓ LinkedIn - Profesyonel e-postalar
✓ Twitter/X - Bio veya tweet'lerde paylaşılan e-postalar
✓ Facebook - Hakkında bölümü
✓ Instagram - Bio linktree veya diğer linkler
✓ GitHub - Profile ve commit'lerde görünen e-postalar
✓ Medium - Yazar profilleri
✓ Reddit - Post geçmişi ve yorumlar
Gelişmiş Teknikler:
# GitHub'da e-posta bulma
git clone <repo-url>
git log --format='%ae' | sort -u
# Web sitesi kaynak kodunda e-posta arama
curl -s https://example.com | grep -Eo "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}"
1.2. Açık Kaynaklı Veritabanları ve OSINT Araçları
Popüler OSINT Araçları:
- Hunter.io: Domain bazlı e-posta keşfi
- Phonebook.cz: E-posta, domain ve URL araması
- IntelX: Darknet ve clearnet veri keşfi
- Dehashed: Sızıntı veritabanı araması
- Snusbase: Kapsamlı sızıntı araması
- LeakCheck: E-posta ve şifre kontrolü
E-posta Formatı Tahmin Etme:
# Yaygın e-posta formatları
formats = [
"ad.soyad@domain.com",
"ad_soyad@domain.com",
"adsoyad@domain.com",
"asoyad@domain.com",
"ad@domain.com",
"soyad@domain.com",
"a.soyad@domain.com"
]
# Örnek: John Doe
john.doe@company.com
j.doe@company.com
johndoe@company.com
jdoe@company.com
1.3. Whois ve DNS Kayıtları
# Domain Whois sorgusu
whois example.com
# DNS kayıtlarını kontrol et
dig example.com ANY
# MX kayıtlarını kontrol et
dig example.com MX
Adım 2: Have I Been Pwned'de Arama Yapmak
2.1. Web Arayüzü Kullanımı
Temel Arama Adımları:
- HIBP Web Sitesine Gidin: https://haveibeenpwned.com/
- E-posta Adresini Girin: Arama kutusuna hedef e-posta adresini yazın
- "pwned?" Butonuna Tıklayın: Sorguyu başlatın
- Sonuçları İnceleyin: Sızıntı varsa detaylı bilgileri görüntüleyin
Arayüz Özellikleri:
- Anlık sonuç: Sorgular saniyeler içinde tamamlanır
- Detaylı bilgi: Her sızıntı için tarih, platform ve sızan veriler gösterilir
- Severity göstergesi: Sızıntının ciddiyeti renklerle belirtilir
- Bildirim ayarı: E-posta ile gelecek sızıntılar için uyarı alabilirsiniz
2.2. Pwned Passwords Kontrolü
Şifrelerin sızdırılıp sızdırılmadığını kontrol etmek için:
- Passwords bölümüne gidin: https://haveibeenpwned.com/Passwords
- Şifreyi girin: Test etmek istediğiniz şifreyi yazın
- Sonucu görüntüleyin: Şifrenin kaç kez sızdığını görün
Güvenlik Notu: HIBP k-Anonymity yöntemi kullanır, şifrenizin tamamı sunucuya gönderilmez!
2.3. API Kullanımı
Daha gelişmiş araştırmalar için HIBP API'sini kullanabilirsiniz.
Python ile API Kullanımı:
import requests
import time
def check_pwned(email):
"""Have I Been Pwned API ile e-posta kontrolü"""
url = f"https://haveibeenpwned.com/api/v3/breachedaccount/{email}"
headers = {
'User-Agent': 'Python-OSINT-Tool',
'hibp-api-key': 'YOUR_API_KEY' # API key gerekli
}
try:
response = requests.get(url, headers=headers)
if response.status_code == 200:
breaches = response.json()
print(f"\n[!] {email} için {len(breaches)} sızıntı bulundu!\n")
for breach in breaches:
print(f"Platform: {breach['Name']}")
print(f"Tarih: {breach['BreachDate']}")
print(f"Sızan Veriler: {', '.join(breach['DataClasses'])}")
print(f"Açıklama: {breach['Description'][:100]}...")
print("-" * 50)
elif response.status_code == 404:
print(f"[+] {email} için sızıntı bulunamadı.")
else:
print(f"[-] Hata: {response.status_code}")
except Exception as e:
print(f"[-] Bağlantı hatası: {str(e)}")
time.sleep(1.5) # Rate limiting
# Kullanım
emails = [
"john.doe@example.com",
"jane.smith@company.com"
]
for email in emails:
check_pwned(email)
Bash Script ile Toplu Kontrol:
#!/bin/bash
# HIBP API Key
API_KEY="your_api_key_here"
# E-posta listesi dosyası
EMAIL_LIST="emails.txt"
while IFS= read -r email; do
echo "Checking: $email"
curl -s -H "hibp-api-key: $API_KEY" \
-H "User-Agent: Bash-OSINT-Script" \
"https://haveibeenpwned.com/api/v3/breachedaccount/$email" | jq .
sleep 1.5 # Rate limiting
done < "$EMAIL_LIST"
API Key Alma:
- HIBP API kullanımı için https://haveibeenpwned.com/API/Key adresinden ücretli API key almanız gerekir
- Fiyat: ~$3.50/ay
- Rate Limit: Dakikada 60 istek
Adım 3: Sonuçları Değerlendirmek
3.1. Sızıntı Yok Durumu
Ne Anlama Gelir:
✓ Hedef kişinin bu e-posta adresi ile bilinen bir sızıntıya maruz kalmamıştır ✓ E-posta adresi henüz HIBP veritabanına eklenmemiş olabilir ✓ Hedef güvenlik konusunda bilinçli olabilir
Yapılması Gerekenler:
- Alternatif e-posta formatlarını deneyin
- Diğer OSINT araçlarını kullanarak doğrulayın
- Yeni sızıntılar için bildirim kurun
3.2. Sızıntı Var Durumu
Değerlendirilmesi Gereken Bilgiler:
- Sızıntı Tarihi: Hedefin o dönemdeki aktivitelerini araştırın
- Platform/Servis: Hedefin ilgi alanları ve kullandığı hizmetler
- Sızan Veri Türleri: Password, IP, phone, address, etc.
- Sızıntı Ciddiyeti: Sensitive (hassas) işaretli sızıntılara öncelik verin
- Verification Durumu: Doğrulanmış sızıntılar daha güvenilirdir
Örnek Sızıntı Analizi:
Email: john.doe@example.com
[1] Adobe - 2013-10-04
Data: Email, Password, Hints
Severity: High
→ Adobe ürünleri kullanıyor (Photoshop, Illustrator?)
→ Yaratıcı sektörde çalışıyor olabilir
[2] LinkedIn - 2012-05-05
Data: Email, Password
Severity: High
→ 2012 veya öncesinde profesyonel kariyere başladı
→ Şu anki pozisyon bilgileri güncel mi kontrol et
[3] Canva - 2019-05-24
Data: Email, Name, Password, Username, Geographic Location
Severity: Medium
→ Grafik tasarım ilgisi
→ Konum bilgisi sızmış (hangi şehir?)
3.3. Yanlış Pozitifler ve Doğrulama
Yanlış Pozitif Nedenleri:
- Benzer isimler: john.doe@domain.com vs john.doe@otherdomain.com
- Typo hatalar: johndoe vs johnde
- Domain değişiklikleri: company.com → company.io
- Sahte kayıtlar: Test veya spam amaçlı hesaplar
Doğrulama Teknikleri:
def verify_breach_data(email, breach_info):
"""Sızıntı bilgilerini doğrula"""
checks = {
'name_match': False,
'date_plausible': False,
'platform_relevant': False,
'data_consistent': False
}
# İsim kontrolü
if known_name in breach_info.get('name', ''):
checks['name_match'] = True
# Tarih kontrolü
breach_date = breach_info.get('breach_date')
if is_date_in_range(breach_date, known_active_period):
checks['date_plausible'] = True
# Platform relevansı
if platform_matches_interests(breach_info['platform'], known_interests):
checks['platform_relevant'] = True
# Veri tutarlılığı
if cross_check_with_other_sources(breach_info):
checks['data_consistent'] = True
confidence = sum(checks.values()) / len(checks) * 100
return confidence, checks
Çapraz Doğrulama Kaynakları:
- Diğer sızıntı veritabanları (Dehashed, Snusbase)
- Sosyal medya profilleri
- Whois kayıtları
- Google dorking sonuçları
- Archive.org (wayback machine)
Adım 4: Gizlilik ve Etik Kurallar
4.1. Yasal Sınırlamalar
Dikkat Edilmesi Gerekenler:
⚠️ Yasadışı Aktiviteler:
- Elde edilen şifreleri kullanarak hesaplara giriş yapmak
- Kişisel verileri izinsiz paylaşmak veya satmak
- Kara para veya siber suç amaçlı kullanmak
- Taciz, şantaj veya tehdit amacıyla kullanmak
✅ Yasal Kullanım:
- Kendi güvenliğinizi kontrol etmek
- İzinli penetrasyon testleri
- Güvenlik araştırmaları (etik sınırlar içinde)
- Eğitim ve farkındalık amaçlı kullanım
4.2. Etik OSINT Prensipleri
Etik OSINT İlkeleri:
- İzin ve Yetki: Yalnızca yetkiniz olan araştırmaları yapın
- Minimum Müdahale: Hedefin sistemlerine zarar vermeyin
- Gizlilik Saygısı: Elde edilen bilgileri sorumlu kullanın
- Şeffaflık: Amacınız ve kullanım şekliniz açık olsun
- Zarar Vermeme: Bilgileri kötü amaçla kullanmayın
Örnek Kullanım Senaryoları:
| Senaryo | Etik mi? | Açıklama |
|---|---|---|
| Kendi e-postanızı kontrol | ✅ Evet | Yasal ve etik |
| İzinli pentest için hedef analizi | ✅ Evet | Yasal çerçevede |
| Şirket çalışanlarının güvenlik kontrolü (izinli) | ✅ Evet | Şirket politikası ile |
| Eski sevgilinizin hesaplarını kontrol | ❌ Hayır | Etik dışı |
| Rakip şirket çalışanlarını izinsiz araştırma | ❌ Hayır | Etik ve yasal sorun |
| Sızıntılardan elde edilen şifreleri deneme | ❌ Hayır | Yasadışı |
Ek İpuçları ve Gelişmiş Teknikler
1. API Kullanımı ve Otomasyon
Gelişmiş Python Script Örneği
import requests
import json
import csv
from datetime import datetime
import time
class HIBPChecker:
def __init__(self, api_key):
self.api_key = api_key
self.base_url = "https://haveibeenpwned.com/api/v3"
self.headers = {
'hibp-api-key': api_key,
'User-Agent': 'OSINT-Research-Tool'
}
def check_email(self, email):
"""E-posta adresini kontrol et"""
url = f"{self.base_url}/breachedaccount/{email}"
response = requests.get(url, headers=self.headers)
time.sleep(1.5) # Rate limiting
if response.status_code == 200:
return response.json()
elif response.status_code == 404:
return None
else:
raise Exception(f"API Error: {response.status_code}")
def check_password(self, password):
"""Şifrenin sızmış olup olmadığını kontrol et (k-anonymity)"""
import hashlib
sha1_hash = hashlib.sha1(password.encode()).hexdigest().upper()
prefix = sha1_hash[:5]
suffix = sha1_hash[5:]
url = f"https://api.pwnedpasswords.com/range/{prefix}"
response = requests.get(url)
hashes = response.text.split('\r\n')
for h in hashes:
hash_suffix, count = h.split(':')
if hash_suffix == suffix:
return int(count)
return 0
def generate_report(self, email, breaches):
"""Detaylı rapor oluştur"""
report = {
'email': email,
'check_date': datetime.now().isoformat(),
'breach_count': len(breaches) if breaches else 0,
'breaches': []
}
if breaches:
for breach in breaches:
report['breaches'].append({
'name': breach['Name'],
'date': breach['BreachDate'],
'data_classes': breach['DataClasses'],
'description': breach['Description'],
'verified': breach['IsVerified'],
'sensitive': breach['IsSensitive']
})
return report
def export_to_csv(self, reports, filename='hibp_results.csv'):
"""Sonuçları CSV olarak kaydet"""
with open(filename, 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(['Email', 'Breach Count', 'Platforms', 'Latest Breach'])
for report in reports:
if report['breach_count'] > 0:
platforms = ', '.join([b['name'] for b in report['breaches']])
latest = max([b['date'] for b in report['breaches']])
writer.writerow([
report['email'],
report['breach_count'],
platforms,
latest
])
# Kullanım örneği
checker = HIBPChecker('YOUR_API_KEY')
emails = ['john@example.com', 'jane@example.com']
reports = []
for email in emails:
print(f"Checking: {email}")
breaches = checker.check_email(email)
report = checker.generate_report(email, breaches)
reports.append(report)
print(f"Found {report['breach_count']} breaches")
checker.export_to_csv(reports)
print("Report saved to hibp_results.csv")
2. Veri Sızıntısı Haritaları ve Görselleştirme
Coğrafi Dağılım Analizi
import folium
from geopy.geocoders import Nominatim
def create_breach_map(breach_data):
"""Sızıntıların coğrafi haritasını oluştur"""
m = folium.Map(location=[39.9334, 32.8597], zoom_start=6)
for breach in breach_data:
if 'location' in breach:
folium.Marker(
location=[breach['lat'], breach['lon']],
popup=f"{breach['platform']} - {breach['date']}",
icon=folium.Icon(color='red', icon='info-sign')
).add_to(m)
m.save('breach_map.html')
# Zaman çizelgesi görselleştirme
import matplotlib.pyplot as plt
import pandas as pd
def create_timeline(breaches):
"""Sızıntıların zaman çizelgesini oluştur"""
df = pd.DataFrame(breaches)
df['date'] = pd.to_datetime(df['date'])
df = df.sort_values('date')
plt.figure(figsize=(12, 6))
plt.plot(df['date'], range(len(df)), marker='o')
plt.xlabel('Tarih')
plt.ylabel('Kümülatif Sızıntı Sayısı')
plt.title('Zaman İçinde Sızıntılar')
plt.xticks(rotation=45)
plt.tight_layout()
plt.savefig('breach_timeline.png')
3. Diğer OSINT Araçlarıyla Birleştirme
Maltego Entegrasyonu
HIBP'yi Maltego ile entegre ederek görsel OSINT analizi yapabilirsiniz:
# Maltego Transform örneği
from maltego_trx.maltego import MaltegoTransform, MaltegoMsg
def hibp_to_maltego(email):
"""HIBP sonuçlarını Maltego formatına çevir"""
transform = MaltegoTransform()
breaches = check_hibp(email)
for breach in breaches:
entity = transform.addEntity("maltego.Phrase", breach['Name'])
entity.addProperty("date", "Date", value=breach['BreachDate'])
entity.addProperty("data", "Data Types",
value=", ".join(breach['DataClasses']))
return transform.returnOutput()
Shodan ile Birleştirme
import shodan
def cross_reference_shodan(email, api_key):
"""HIBP sonuçlarını Shodan ile ilişkilendir"""
api = shodan.Shodan(api_key)
# Domain'den IP bul
domain = email.split('@')[1]
results = api.search(f'hostname:{domain}')
print(f"Found {len(results['matches'])} results for {domain}")
for result in results['matches']:
print(f"IP: {result['ip_str']}")
print(f"Org: {result.get('org', 'N/A')}")
print(f"Ports: {result.get('port', 'N/A')}")
theHarvester Entegrasyonu
#!/bin/bash
# E-posta toplama ve HIBP kontrolü pipeline
DOMAIN="example.com"
OUTPUT="harvested_emails.txt"
# theHarvester ile e-posta toplama
theharvester -d $DOMAIN -b all -f harvester_results
# Sonuçları parse et
grep -Eo "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}" \
harvester_results.json | sort -u > $OUTPUT
# Her e-postayı HIBP'de kontrol et
while read email; do
echo "Checking: $email"
python3 hibp_checker.py "$email"
done < $OUTPUT
4. Domain Search ve Toplu Kontrol
HIBP'nin Domain Search özelliği ile şirket domainlerini toplu kontrol edebilirsiniz:
def domain_search(domain, api_key):
"""Bir domain'e ait tüm sızan e-postaları bul"""
url = f"https://haveibeenpwned.com/api/v3/breaches?domain={domain}"
headers = {
'hibp-api-key': api_key,
'User-Agent': 'Domain-Search-Tool'
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
breaches = response.json()
print(f"Found {len(breaches)} breaches affecting {domain}")
for breach in breaches:
print(f"\n[!] {breach['Name']}")
print(f" Date: {breach['BreachDate']}")
print(f" Affected: {breach.get('PwnCount', 'Unknown')} accounts")
return breaches
# Örnek kullanım
domain_breaches = domain_search("company.com", "YOUR_API_KEY")
Gerçek Dünya Senaryoları
Senaryo 1: Penetrasyon Testi Öncesi Keşif
# Hedef şirket çalışanlarının e-postalarını toplama ve analiz
target_company = "targetcorp.com"
# 1. E-posta formatlarını tahmin et
employees = ["john.doe", "jane.smith", "bob.wilson"]
email_formats = [
"{name}@{domain}",
"{first}.{last}@{domain}",
"{first}{last}@{domain}"
]
# 2. Her e-postayı HIBP'de kontrol et
results = {}
for employee in employees:
first, last = employee.split('.')
email = f"{first}.{last}@{target_company}"
breaches = check_hibp(email)
results[email] = {
'breach_count': len(breaches) if breaches else 0,
'weak_passwords': check_common_passwords(last),
'risk_level': calculate_risk(breaches)
}
# 3. Rapor oluştur
generate_pentest_report(results)
Senaryo 2: Güvenlik Farkındalık Eğitimi
# Şirket çalışanlarının güvenlik durumunu değerlendir
def security_awareness_check(company_emails):
"""Çalışanların güvenlik farkındalığını ölç"""
stats = {
'total_employees': len(company_emails),
'compromised_accounts': 0,
'multiple_breaches': 0,
'recent_breaches': 0,
'high_risk_employees': []
}
for email in company_emails:
breaches = check_hibp(email)
if breaches:
stats['compromised_accounts'] += 1
if len(breaches) > 3:
stats['multiple_breaches'] += 1
recent = [b for b in breaches
if datetime.strptime(b['BreachDate'], '%Y-%m-%d').year >= 2023]
if recent:
stats['recent_breaches'] += 1
stats['high_risk_employees'].append({
'email': email,
'breaches': len(breaches),
'latest': recent[0]['BreachDate']
})
# Farkındalık skoru hesapla
awareness_score = 100 - (stats['compromised_accounts'] / stats['total_employees'] * 100)
stats['awareness_score'] = round(awareness_score, 2)
return stats
Senaryo 3: Tehdit İstihbaratı
def threat_intelligence_analysis(target_email):
"""Hedef hakkında tehdit istihbaratı topla"""
intelligence = {
'email': target_email,
'risk_assessment': {},
'attack_vectors': [],
'recommendations': []
}
# HIBP kontrolü
breaches = check_hibp(target_email)
if breaches:
# Sızıntı analizi
password_breaches = [b for b in breaches if 'Passwords' in b['DataClasses']]
personal_info_breaches = [b for b in breaches
if any(x in b['DataClasses']
for x in ['Names', 'Phone numbers', 'Physical addresses'])]
# Risk değerlendirmesi
intelligence['risk_assessment'] = {
'password_reuse_risk': 'HIGH' if len(password_breaches) > 2 else 'MEDIUM',
'personal_info_exposure': 'HIGH' if personal_info_breaches else 'LOW',
'social_engineering_risk': 'HIGH' if personal_info_breaches else 'MEDIUM'
}
# Saldırı vektörleri
if password_breaches:
intelligence['attack_vectors'].append('Credential Stuffing')
intelligence['attack_vectors'].append('Password Spraying')
if personal_info_breaches:
intelligence['attack_vectors'].append('Spear Phishing')
intelligence['attack_vectors'].append('Social Engineering')
# Öneriler
intelligence['recommendations'] = [
'Implement MFA on all accounts',
'Conduct password reset campaign',
'Provide security awareness training',
'Monitor for suspicious login attempts'
]
return intelligence
En İyi Uygulamalar ve Öneriler
1. Düzenli İzleme
# Otomatik izleme sistemi
def setup_monitoring(emails, check_interval_hours=24):
"""E-postaları düzenli olarak kontrol et"""
import schedule
def check_all_emails():
for email in emails:
breaches = check_hibp(email)
if breaches:
# Yeni sızıntı tespit edildi
send_alert(email, breaches)
schedule.every(check_interval_hours).hours.do(check_all_emails)
while True:
schedule.run_pending()
time.sleep(60)
2. Veri Koruma
# Hassas verileri güvenli saklama
from cryptography.fernet import Fernet
def secure_storage(data, key):
"""HIBP sonuçlarını şifreli sakla"""
f = Fernet(key)
encrypted = f.encrypt(json.dumps(data).encode())
with open('encrypted_results.bin', 'wb') as file:
file.write(encrypted)
def secure_retrieval(key):
"""Şifreli verileri oku"""
f = Fernet(key)
with open('encrypted_results.bin', 'rb') as file:
encrypted = file.read()
decrypted = f.decrypt(encrypted)
return json.loads(decrypted.decode())
3. Raporlama ve Dokümantasyon
def generate_comprehensive_report(email, breaches):
"""Kapsamlı HTML raporu oluştur"""
html_template = """
<!DOCTYPE html>
<html>
<head>
<title>HIBP Security Report</title>
<style>
body {{ font-family: Arial, sans-serif; margin: 20px; }}
.breach {{ border: 1px solid #ccc; padding: 10px; margin: 10px 0; }}
.high {{ background-color: #ffebee; }}
.medium {{ background-color: #fff3e0; }}
.low {{ background-color: #e8f5e9; }}
</style>
</head>
<body>
<h1>Have I Been Pwned Report</h1>
<h2>Email: {email}</h2>
<h3>Total Breaches: {count}</h3>
{breaches_html}
</body>
</html>
"""
breaches_html = ""
for breach in breaches:
severity = 'high' if breach['IsSensitive'] else 'medium'
breaches_html += f"""
<div class="breach {severity}">
<h3>{breach['Name']}</h3>
<p><strong>Date:</strong> {breach['BreachDate']}</p>
<p><strong>Data Types:</strong> {', '.join(breach['DataClasses'])}</p>
<p>{breach['Description']}</p>
</div>
"""
html = html_template.format(
email=email,
count=len(breaches),
breaches_html=breaches_html
)
with open(f'report_{email.replace("@", "_")}.html', 'w') as f:
f.write(html)
Sonuç
Have I Been Pwned, OSINT uzmanları ve siber güvenlik profesyonelleri için vazgeçilmez bir araçtır. Ancak, bu aracı kullanırken elde edilen bilgilerin doğrulanması ve etik kurallara uygun hareket etmek kritik önem taşır.
Önemli Hatırlatmalar
✅ Yasal ve Etik Kullanım:
- Yalnızca izinli araştırmalar yapın
- Elde edilen bilgileri sorumlu kullanın
- Yasal sınırları aşmayın
- Gizliliğe saygı gösterin
✅ Doğrulama ve Analiz:
- Sonuçları çapraz doğrulayın
- Yanlış pozitiflere dikkat edin
- Bağlam içinde değerlendirin
- Diğer OSINT araçlarıyla birleştirin
✅ Güvenlik ve Koruma:
- API anahtarlarınızı güvende tutun
- Hassas verileri şifreli saklayın
- Rate limiting kurallarına uyun
- Düzenli izleme yapın
Son Söz
HIBP, hedef kişi hakkında daha derinlemesine bilgi edinmek için mükemmel bir başlangıç noktasıdır, ancak tek başına yeterli değildir. Kapsamlı bir OSINT araştırması için:
- Birden fazla kaynak kullanın
- Bilgileri çapraz doğrulayın
- Bağlamı göz önünde bulundurun
- Etik ve yasal sınırlara uyun
- Sürekli öğrenin ve gelişin
Unutmayın: Güç, sorumluluk gerektirir. OSINT araçlarını bilge bir şekilde kullanın!
Kaynaklar ve Ek Okumalar
- Have I Been Pwned: https://haveibeenpwned.com/
- HIBP API Documentation: https://haveibeenpwned.com/API/v3
- Troy Hunt's Blog: https://www.troyhunt.com/
- OSINT Framework: https://osintframework.com/
- OSINT Techniques Book: Michael Bazzell
İletişim
OSINT ve siber güvenlik konularında daha fazla içerik için takipte kalın!
NOT: Bu yazı eğitim ve farkındalık amaçlıdır. Bilgilerin etik ve yasal çerçevede kullanılması tamamen okuyucunun sorumluluğundadır.
Güvenli araştırmalar! 🔍🔐