Back to Blog

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.com formatı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 LinkedIn 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 Twitter 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ı:

  1. HIBP Web Sitesine Gidin: https://haveibeenpwned.com/
  2. E-posta Adresini Girin: Arama kutusuna hedef e-posta adresini yazın
  3. "pwned?" Butonuna Tıklayın: Sorguyu başlatın
  4. 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:

  1. Passwords bölümüne gidin: https://haveibeenpwned.com/Passwords
  2. Şifreyi girin: Test etmek istediğiniz şifreyi yazın
  3. 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:

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:

  1. Sızıntı Tarihi: Hedefin o dönemdeki aktivitelerini araştırın
  2. Platform/Servis: Hedefin ilgi alanları ve kullandığı hizmetler
  3. Sızan Veri Türleri: Password, IP, phone, address, etc.
  4. Sızıntı Ciddiyeti: Sensitive (hassas) işaretli sızıntılara öncelik verin
  5. 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:

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:

  1. İzin ve Yetki: Yalnızca yetkiniz olan araştırmaları yapın
  2. Minimum Müdahale: Hedefin sistemlerine zarar vermeyin
  3. Gizlilik Saygısı: Elde edilen bilgileri sorumlu kullanın
  4. Şeffaflık: Amacınız ve kullanım şekliniz açık olsun
  5. 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

İ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! 🔍🔐