AI Phishing Detection System for Email URL Messages

We design and deploy artificial intelligence systems: from prototype to production-ready solutions. Our team combines expertise in machine learning, data engineering and MLOps to make AI work not in the lab, but in real business.
Showing 1 of 1 servicesAll 1566 services
AI Phishing Detection System for Email URL Messages
Medium
~2-4 weeks
FAQ
AI Development Areas
AI Solution Development Stages
Latest works
  • image_website-b2b-advance_0.png
    B2B ADVANCE company website development
    1212
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    852
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1041
  • image_logo-advance_0.png
    B2B Advance company logo design
    561
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    822

AI-система детекции фишинга: email и URL

Фишинг — вектор №1 в 80%+ APT-атак. Современные фишинговые письма пишутся с помощью GPT, визуально идентичны брендовым шаблонам, приходят с легитимно выглядящих доменов (typosquatting, lookalike domains). SpamAssassin с его правилами и репутационными листами ловит прошлое поколение фишинга.

Почему традиционная фильтрация не успевает

Zero-day phishing домены. Атакующий регистрирует домен за час до кампании. Reputation databases не обновляются так быстро. ML, работающий с характеристиками домена и письма, не зависит от black lists.

LLM-generated spear phishing. Персонализированные письма, написанные с учётом публично доступной информации о жертве. Не выглядят как «нигерийские письма». NLP-детектор учится на паттернах, а не содержании.

Legitimate services abuse. Фишинговые ссылки на Google Forms, OneDrive, Dropbox — легитимные домены в URL, SPF/DKIM проходят. Нужен анализ конечной страницы, а не только домена.

Многоуровневая детекция фишинг-email

Header analysis. SPF, DKIM, DMARC — первый слой. Но: прошедший DMARC != легитимный. Анализируем рассогласования: Display Name ≠ From address, Reply-To отличается от From, X-Originating-IP из подозрительного ASN.

URL features (без перехода). Характеристики URL в письме:

  • Длина URL и количество субдоменов
  • Энтропия домена (typosquatting имеет высокую энтропию)
  • Возраст домена (свежезарегистрированные — риск)
  • TLD аномалии
  • Lookalike detection: levenshtein к известным брендам ≤ 2 символа

NLP на тексте письма. BERT fine-tuned на phishing corpus: urgency indicators («ваш аккаунт заблокирован»), impersonation patterns, request for credentials. Важно: model должна быть multilingual — фишинг на русском не хуже английского.

Visual similarity (для HTML email). Отрендеренный email → screenshot → сравнение с brand fingerprint базой. CosineSimilarity эмбеддингов ResNet50: если визуально похоже на Sberbank, но отправитель не sberbank.ru — флаг.

class PhishingEmailDetector:
    def __init__(self):
        self.header_scorer = HeaderAnalyzer()
        self.url_scorer = URLFeatureExtractor()
        self.text_classifier = load_model("phishing-bert-multilingual")
        self.visual_matcher = BrandVisualMatcher(brand_db="brand_embeddings.index")

    def score_email(self, email: ParsedEmail) -> PhishingScore:
        scores = {
            'header': self.header_scorer.score(email.headers),
            'url': max(self.url_scorer.score(u) for u in email.urls) if email.urls else 0,
            'text': self.text_classifier.predict(email.body_text),
            'visual': self.visual_matcher.similarity_score(email.html_screenshot)
        }
        # Взвешенное объединение
        final_score = (0.2*scores['header'] + 0.35*scores['url'] +
                       0.3*scores['text'] + 0.15*scores['visual'])
        return PhishingScore(score=final_score, breakdown=scores)

URL-детектор в реальном времени

Для защиты браузера: расширение или proxy, проверяющий URL до перехода пользователя. Требование: latency < 200ms.

Быстрый слой: VirusTotal/Google Safe Browsing API lookup — 50–100ms. Покрывает известные URL.

ML-слой для неизвестных URL: LightGBM на ~30 URL-фичах (без перехода на страницу). Latency: 5–15ms. Точность: 94% при FPR 0.8%.

Глубокий слой (асинхронно): если URL прошёл быстрый слой, но score средний — реальный переход в headless sandbox: анализ DOM, детекция форм для ввода credentials, JavaScript поведение. Результат через 2–5 секунд, обновляет reputation базу.

Детекция lookalike domains

Для защиты бренда и pre-emptive blocking:

import tldextract
from rapidfuzz import distance

PROTECTED_BRANDS = ["sberbank", "tinkoff", "vtb", "gosuslugi", "mail"]

def check_lookalike(domain: str) -> float:
    extracted = tldextract.extract(domain)
    domain_name = extracted.domain

    min_dist = min(
        distance.Levenshtein.normalized_distance(domain_name, brand)
        for brand in PROTECTED_BRANDS
    )
    # Расстояние 0.15 = 1-2 символа разницы для коротких имён
    return 1.0 - min_dist if min_dist < 0.2 else 0.0

Дополнительно: Unicode homoglyph detection (кириллическая «а» vs. латинская «a» в домене).

Практический кейс

Производственная компания, 1 200 сотрудников. Целенаправленная spear phishing кампания под CFO: персонализированные письма от «поставщика», запрос подтвердить реквизиты для платежа.

Microsoft Defender пропустил: письма прошли SPF/DKIM, текст без типичных фишинговых признаков, ссылка на Google Forms.

AI-детектор поймал на трёх сигналах:

  • Домен отправителя зарегистрирован 3 дня назад
  • Lookalike similarity к реальному поставщику: 0.89 (1 буква разница)
  • NLP score: urgency + financial request паттерн → 0.78

6 писем заблокированы. CFO и 2 бухгалтера получили уведомление с объяснением почему письма подозрительны.

Сроки: 2–4 недели для email gateway интеграции с ML-детектором, 6–10 недель для полного решения с URL-анализом, brand monitoring и sandbox.