Python Güvenlik URL Analizi

Phishing
Analizörü

URL'leri çoklu güvenlik kriterlerine göre analiz ederek oltalama (phishing) girişimlerini tespit eden Python tabanlı araç. Domain yaşı, SSL sertifikası, URL yapısı ve çeşitli heuristik yöntemlerle kapsamlı analiz yapar.

Proje Amacı

Phishing (oltalama) saldırıları, siber güvenlik tehditlerinin en yaygın ve etkili olanlarından biridir. Bu araç, kullanıcıların şüpheli URL'leri hızlıca analiz edebilmesini sağlayarak phishing girişimlerini tespit etmeye yardımcı olur.

Birden fazla analiz katmanı kullanarak tek bir kritere bağımlı kalmadan, kapsamlı bir güvenlik değerlendirmesi sunar. Her URL için bir risk skoru hesaplar ve detaylı rapor üretir.

Analiz Katmanları

URL Yapı Analizi

URL uzunluğu, alt domain sayısı, özel karakter kullanımı, IP tabanlı URL tespiti ve URL kısaltma servisi kontrolü.

SSL Sertifika Kontrolü

HTTPS varlığı, sertifika geçerlilik süresi, sertifika otoritesi doğrulaması ve sertifika saydamlık logları.

Domain WHOIS Analizi

Domain yaşı, kayıt tarihi, registrar bilgisi ve domain gizlilik servisi kullanım tespiti.

İçerik Analizi

Sayfa içeriğinde login formu, parola alanı, marka taklidi ve şüpheli JavaScript kodu tespiti.

Özellikler

  • Çoklu kriter tabanlı phishing risk skoru hesaplama
  • SSL sertifika geçerlilik ve güven kontrolü
  • WHOIS sorgusu ile domain yaşı analizi
  • URL yapısı ve karakter analizi
  • Google Safe Browsing API entegrasyonu
  • VirusTotal API ile kara liste kontrolü
  • Detaylı JSON ve HTML rapor çıktısı
  • Toplu URL analizi desteği (CSV girdi)

Kod Örneği

phishing_analyzer.py
import re
from urllib.parse import urlparse
import ssl, socket, whois

class PhishingAnalyzer:
    def analyze_url(self, url):
        score = 0
        parsed = urlparse(url)
        reports = []

        # URL uzunluk kontrolü
        if len(url) > 75:
            score += 15
            reports.append("Uzun URL tespit edildi")

        # Alt domain sayısı
        subdomain_count = parsed.hostname.count('.')
        if subdomain_count > 3:
            score += 20
            reports.append("Şüpheli alt domain yapısı")

        # IP tabanlı URL kontrolü
        if re.match(r'\d+\.\d+\.\d+\.\d+', parsed.hostname):
            score += 30
            reports.append("IP tabanlı URL!")

        # HTTPS kontrolü
        if parsed.scheme != 'https':
            score += 25
            reports.append("HTTPS eksik")

        return {
            'url': url,
            'risk_score': min(score, 100),
            'reports': reports,
            'verdict': self.get_verdict(score)
        }

Bunlara da
göz atın