Outline: FinPhishGuard — Adversarially Robust Financial Brand Phishing Detection
Docelowa publikacja: pełny paper (8-10 stron), venue: ACSAC / USENIX Security / CCS Ostatnia aktualizacja: 2026-05-12
Tytuł (kandydaci)
- FinPhishGuard: Adversarially Robust Detection of Financial Brand Impersonation via CLIP-Based Visual Matching and DOM Timing Analysis
- Towards Robust Brand Phishing Detection: CLIP, Adversarial Hardening, and Timing Evasion Defense for Financial Services
- Beyond the Lab: Adversarially Robust Phishing Detection for Financial Brands with Multi-Modal Fusion
Teza główna: Hybrydowy system łączący zero-shot CLIP brand matching, PGD adversarial hardening i DOM-based timing analysis osiąga >90% recall pod atakami klasy A1-A3, gdzie istniejące RBPD (PhishIntention, KnowPhish) tracą istotnie na skuteczności — ewaluowane empirycznie na publicznych datasetach (konkretna liczba degradacji baseline’ów: do uzupełnienia po EXP-3).
1. Introduction (~1 strona)
Zadanie: Uzasadnienie problemu + research gap + contributions
1.1 Problem statement
- Phishing ataków na instytucje finansowe: skala (APWG raporty), koszt
- Zakres: nie tylko banki — PayPal, Revolut, BLIK, Mastercard impersonowane równie często
- Istniejące RBPD: 87-92% F1 w laboratorium (KnowPhish: F1=92.05%, Phishpedia: Recall=87.1%, PhishIntention: Recall=90% @ własny dataset) → drastyczny spadek w warunkach rzeczywistych (Ji et al. 2024: recall spada do 22-66% w zależności od systemu)
1.2 Attack landscape (3 klasy)
- A1: GAN/diffusion adversarial logos — 95% evasion rate (Lee 2023), logo detectory podatne
- A2: Delayed rendering — detection 100%→0% (Yuan 2026), żaden system produkcyjny nie broni
- A3: Multi-space evasion — URL + visual jednocześnie (Yuan/MultiSpacePhish 2023)
1.3 Limitations of existing work
- VisualPhishNet/PhishIntention/KnowPhish: nie testowane adversarially
- Baza marek: banki tradycyjne, brak fintech/payment gateways
- Logo detection na urządzeniach: 46.6% recall (Petrukha 2024)
- Delayed rendering: jedyna obrona = 1 dodatkowy screenshot (łatwe do ominięcia)
1.4 Contributions (lista punktowana — do sekcji 1.4)
Uwaga zakresu: Top venue (USENIX/CCS) oczekuje 1-2 głębokich wkładów, nie 5 płytkich. Priorytety: C1 + C2 to rdzeń; C3 jako silny supporting; C4/C5 jako enabling contributions.
- C1: CLIP-based zero-shot brand matching — pierwsza ewaluacja odporności CLIP na transfer adversarial logos (GAN/diffusion) wobec ResNet-Siamese baseline; udokumentowana luka literaturowa
- C2: DOM/CSS/JS static timing analysis — pierwsza systematyczna obrona przed delayed rendering attacks (Yuan 2026) nie wymagająca screenshotów; recall ≥80% dla nieopakowanych ataków
- C3: FinPhishGuard — hybrydowy system (URL + CLIP visual + NER content + DOM timing) z udokumentowaną przewagą na Ji & Kim 2025 (adversarial protocol A1-A3)
- C4: Financial Brand KB — 150+ marek (banki + fintech + payment gateways); wkład enabling (nie główna teza)
- C5: Ewaluacja na Ji & Kim 2025 (19,131 phishing + ≥5,000 benign) z brand-level breakdown i adversarial protocol — open benchmark dla community
2. Background & Related Work (~1.5 strony)
2.1 Reference-Based Phishing Detectors (RBPD)
Łańcuch ewolucji (każdy 1-2 zdania):
- VisualPhishNet (Abdelnabi 2020) — triplet CNN, visual profiles
- Phishpedia (Lin 2021) — object detection + brand matching, USENIX, 164 cyt.
- PhishIntention (Liu 2022) — phishing intent, modularny, Baseline #1
- DynaPhish (Liu 2023) — dynamiczne uczenie nowych marek
- KnowPhish (Li 2024) — LLM + 20k brand KG
Nowy SOTA (bez reference list):
- Lee et al. (2024, arXiv 2408.05941) — MLLM two-phase: LLM identifies brand → verify domain; eliminuje KB maintenance; Baseline #3; nie testowany adversarially
Gap wspólny dla wszystkich: żaden nie testowany na GAN logos / diffusion / delayed rendering; fintech brand coverage słaba; real-world performance dramatycznie niższa (Ji 2024).
2.2 Adversarial Attacks on Phishing Detectors
- FGSM (Goodfellow 2014) + PGD (Madry 2018) — ogólna klasa first-order attacks
- Lee 2023 — GAN adversarial logos: 95% evasion na VisualPhishNet
- Hao 2024 — LogoMorph diffusion: semantycznie podobne ale nie wykrywane
- Yuan 2023 (MultiSpacePhish) — problem + feature space evasion
- Yuan 2026 — delayed rendering: CSS curtain, 100%→0%
- Kulkarni et al. 2024 (PhishOracle) — adversarial page generator; VisualPhishNet i Phishpedia padają; nawet MLLM (Lee 2024) podatny → Attack Class A5 w naszym protokole
2.3 Visual Foundations
- ResNet (He 2016) — baseline CNN backbone
- ViT (Dosovitskiy 2021) — globalny attention, odporniejszy na lokalne perturbacje
- DETR/Deformable DETR (Carion 2020, Zhu 2021) — object detection bez anchors
- CLIP (Radford 2021) — zero-shot visual-language alignment
- Triplet loss / FaceNet (Schroff 2015) — metric learning baseline
2.4 Adversarial Defenses
- PGD adversarial training (Madry 2018) — empirical robustness
- Randomized Smoothing (Cohen 2019) — certified L₂ robustness
2.5 Real-World Evaluation Gap
- Ji et al. 2024: 451k stron, PhishIntention recall ~40% — lab vs real-world
- Ji & Kim 2025: 19,131 stron, LLM vs RBPD, nasz główny benchmark dataset
3. Threat Model (~0.5 strony)
3.1 Attacker capabilities
- Adversary zna architekturę systemu (white-box) lub typ (black-box)
- Może modyfikować: logo (pikselowo), rendering timing, URL strukturę, HTML/CSS/JS
- Nie może modyfikować: DNS wpisy (propagacja TTL), infrastrukturę CDN ofiary
Uwaga: SSL certyfikat LET’S ENCRYPT jest darmowy i wydawany w minutach — NIE jest barierą dla atakującego. Usuń z threat model jako “kosztowne”.
3.1b Adaptive attacker (wymagane przez top venues)
- Zakres obrony M4 (DOM timing): atakujący NIE znający o M4 (realistic black-box) lub znający ale bez obfuskacji JS
- Poza zakresem obrony: webpack-minified JS, base64-encoded CSS, CSS-in-JS, ServiceWorker-based timing — wymienione explicite w Limitations (Section 7.1)
- Zakres obrony M2 (CLIP): transfer attacks z modelu ResNet-Siamese (Lee 2023 scenario); adaptive CLIP-targeted attacks są silniejsze — kompensowane przez M2c PGD verifier
- Uzasadnienie zakresu: ograniczenia są standardowe w literaturze adversarial defenses (Carlini & Wagner 2017)
3.2 Attack classes formalized
| Klasa | Atak | Target modułu | Wcześniejsza praca |
|---|---|---|---|
| A1-wb | PGD L∞ na logo | M2 visual | Madry 2018 |
| A1-bb | GAN adversarial logos | M2 visual | Lee 2023 |
| A2 | Diffusion logo morph | M2 visual | Hao 2024 |
| A3 | Delayed CSS rendering | M4 timing | Yuan 2026 |
| A4 | URL obfuscation + A1-bb | M1 + M2 | Yuan 2023 |
| A5 | PhishOracle brand-embed | M2 + M3 | Kulkarni 2024 |
3.3 Defender goal
≥ 90% recall dla każdej klasy A1-A3, FPR ≤ 5% na clean legitimate sites.
4. System Design: FinPhishGuard (~3 strony)
4.1 Architecture Overview
Diagram: URL + HTML + Screenshot → [M1 URL | M2 Visual | M3 Content | M4 Timing] → Fusion → verdict
4.2 M1: URL Analyzer
- Feature engineering: homoglyph score (Unicode confusables, Levenshtein vs brand list), TLD abuse, domain age, SSL issuer
- Model: LightGBM (Duarte 2025 jako punkt wyjścia)
- Rola: szybki filtr < 5ms, shortcut dla oczywistych przypadków
4.3 M2: Visual Logo Detector (core)
4.3.1 Logo Localization
- Deformable DETR fine-tuned na LogoSENSE (3,060 próbek, bounding box)
- Klasy: [logo_region, favicon, brand_text]
4.3.2 CLIP Zero-Shot Matching
- ViT-B/32 CLIP image encoder → 512-dim embedding
- Brand KB: 150+ marek, opisy tekstowe → pre-computed text embeddings
- Zero-shot: nowa marka = nowy opis tekstowy, zero retrainingu
- Rola: fast path dla oczywistych matchów (sim > τ_high)
4.3.3 Adversarial Verifier
- Fine-tuned ViT-B/16 + PGD adversarial training (ε=8/255, k=40, α=2/255)
- Training data augmentation: 30% clean + 20% PGD + 20% GAN (Lee 2023) + 15% diffusion (Hao 2024) + 15% std augmentation
- Rola: deep verification gdy τ_low < CLIP sim < τ_high
- Opcjonalnie: Randomized Smoothing dla certified radius R
4.3.4 Multi-Timestamp Visual Defense
- Playwright headless: t=0, t=500ms, t=2000ms
- SSIM delta threshold: logo appearance po t=0 → suspicious signal
4.4 M3: Content Brand Extractor
- HTML parser: title, h1, meta, button, form action
- PaddleOCR: header region + login form screenshot
NER — dwie ścieżki (wybór po eksperymencie):
- Opcja A (zero-shot): Qwen3 / Gemma prompt: “Extract financial brand names from this HTML snippet” — brak potrzeby danych treningowych, natychmiastowy start; latencja ~200-400ms lokalnie
- Opcja B (fine-tuned): RoBERTa-base NER z klasami BANK / PAYMENT / FINTECH / CARD — wymaga labeled NER training set (silver labels przez Opcja A + manualna weryfikacja ~500 przykładów); latencja ~30ms
Uwaga implementacyjna: Opcja B wymaga stworzenia annotowanego datasetu NER od zera — brak publicznych NER corpora dla financial brand extraction z phishing HTML. Opcja A (zero-shot LLM) eliminuje ten problem i jest realistyczna dla doktoratu.
- URL cross-check: Levenshtein(brand, domain_root) < τ → mismatch signal
4.5 M4: DOM Timing Analyzer
M4a — Static analysis (naprawdę statyczna, < 10ms, bez uruchamiania strony):
- CSS parser: identyfikacja
opacity:0 / display:none / visibility:hidden / clip-path:inset(...)na elementach logo - JS AST (esprima/acorn):
setTimeout / setIntervalz delay > 200ms na logo-related DOM nodes; wykrywanie wzorców klasy PhishMe module - Heuristic scoring: każdy wykryty pattern → additive suspicious score
- Zakres: nieopakowany CSS/JS (bez webpack/obfuskacji) — explicite w Limitations
M4b — Dynamic fallback (wykonanie strony, uruchamiane tylko gdy M4a score < threshold):
- Playwright headless: Resource Timing API → logo PNG fetch delay vs DOMContentLoaded
- Uzasadnienie: M4b jest drogie (~500ms) i uruchamiane tylko gdy M4a jest niekonkluzywne
- Trade-off: M4a = szybki, zakres ograniczony; M4b = wolny, wyższy coverage
Podział odpowiedzialności z M2d: M4a+M4b = detekcja timing patterns (cel: wykryć ATAK). M2d (multi-timestamp SSIM w M2) = weryfikacja wizualna logo (cel: potwierdzić BRAK logo). Komplementarne, nie redundantne — różne sygnały, różna warstwa decyzyjna.
4.6 Decision Fusion
- Weighted ensemble: s = w₁·p_url + w₂·p_visual + w₃·p_content + w₄·p_timing
- Wagi uczone na dev set (Ji & Kim 2025 split: 70/15/15 train/dev/test) przez grid search lub logistic regression meta-learner — nie dobierane arbitralnie
- Punkt startowy heurystyczny (do ablacji): w₁=0.25, w₂=0.40, w₃=0.25, w₄=0.10
- Adaptive weights: visual timeout → redistribution; payment form context → β+=0.10
- Override rules: p_timing > 0.95 → PHISHING; p_visual < 0.05 → LEGITIMATE (weryfikować empirycznie próg)
- Threshold: FPR @ 95% TPR jako operacyjny punkt kalibracji
5. Financial Brand Knowledge Base (~0.5 strony)
5.1 Taxonomia
- Tier 1 Banki (50 marek): PKO BP, mBank, ING, HSBC, Deutsche Bank, JPMorgan, …
- Tier 2 Payments (20 marek): PayPal, Stripe, Revolut, BLIK, Wise, Klarna, …
- Tier 3 Cards + Mobile (10 marek): Mastercard, Visa, Amex, Apple Pay, Google Pay
- Tier 4 Crypto/Fintech (30 marek): Binance, Coinbase, N26, Monzo, Starling, …
5.2 Zebranie logo
- Oficjalne strony WWW (scraper z robots.txt compliance)
- EUIPO Bulk Download: Class 36 (financial) → SVG/PNG trademark logos
- Warianty per marka: pełne/icon/dark/light/small ≈ 5-10 wariantów
5.3 Zero-shot extension via CLIP
- Nowa marka bez retrainingu: dodaj opis tekstowy
- Few-shot extension: ≥ 3 przykładów logo → znacznie lepsza precision
6. Evaluation (~2 strony)
6.1 Datasets
| Dataset | Rozmiar | Użycie |
|---|---|---|
| Phishpedia Labelled Logo (Lin 2021) | 30,649 stron + bounding box | M2a training — logo localization |
| LogoSENSE (Bozkir 2020) | 1,979 test | M2a test set (held-out, inne źródło) |
| Phishpedia Target List (Lin 2021) | 181 marek | Seed Financial Brand KB |
| Phishpedia Phishing (Lin 2021) | 29,496 stron | M2/M3 training; secondary eval |
| Ji & Kim 2025 | 19,131+243 | End-to-end benchmark (primary) |
| PhiUSIIL | ~465k | M1 URL module training |
| Syntetyczny A1-A4 | ~5k | Adversarial robustness testing |
6.2 Baselines
- PhishIntention (Liu 2022) — Baseline #1 (główny)
- KnowPhish (Li 2024) — Baseline #2 (SOTA reference-based)
- Lee et al. 2024 MLLM — Baseline #3 (SOTA no-reference-list)
- Phishpedia (Lin 2021) — Baseline #4 (historyczny, Ji & Kim 2025 używa)
- M1-only, M1+M2, M1+M2+M3, full — ablation warianty
6.3 Eksperymenty
EXP-1: Logo Detection (M2a)
- Dataset: LogoSENSE test set (1,979 stron z bounding box annotation)
- Metryki: [email protected], [email protected] (object detection metrics)
- Baseline: Faster R-CNN (Phishpedia Lin 2021 używa F-RCNN — właściwy punkt porównania, ta sama metryka mAP)
- Uwaga: HOG+SVM Bozkir 2020 raportuje accuracy klasyfikatora (94.3%) — nieporównywalny z mAP detektora; nie używać jako baseline numerycznego
EXP-2: Brand Matching Clean (M2b)
- Dataset: LogoSENSE logo crops
- Metryki: Top-1 accuracy, Top-5 accuracy
- Baseline: ResNet-50 + triplet (PhishIntention approach)
- H: CLIP ≥ ResNet-50 triplet accuracy
EXP-3: Adversarial Robustness (M2c) — kluczowy
- Dataset: LogoSENSE + adversarial samples
- Metryki: recall pod atakiem, Δ evasion rate per attack type
- Baseline: ResNet-50 no hardening (Lee 2023: 95% evasion dla Siamese)
- H: CLIP naturalnie odporny (transfer); PGD hardening redukuje evasion < 30%
Źródła ataków adversarial (weryfikować dostępność PRZED planem):
- PGD L∞: własna implementacja (straightforward, PyTorch autograd) ✅
- GAN logos (Lee 2023): brak publicznego kodu — opcje: (a) kontakt z autorami, (b) własna reprodukcja GAN perturbation generator (~3-4 tygodnie GPU), (c) zawężenie EXP-3 do PGD + diffusion
- Diffusion logos (Hao 2024 LogoMorph): sprawdzić GitHub autorów; jeśli niedostępny → reprodukcja lub pominięcie
- Uwaga: jeśli Lee 2023 GAN niedostępny, core claim H1 musi być przeformułowany na “PGD transfer attack” zamiast “GAN logos”
EXP-4: Timing Defense (M4)
- Dataset: syntetyczny ≥ 1,000 stron (200+ per delay class: 0ms, 500ms, 1s, 2s, 5s); FPR na 500 legalnych stronach z legalnymi lazy-load delays
- Metryki: recall per delay class; FPR na legalnych stronach z legalnymi delays
- Baseline: Yuan 2026 PoC (1 extra screenshot = 0% recall przy delay > 2s)
- H: DOM static analysis wykrywa ≥ 80% bez screenshotów (nieopakowane ataki)
- Zakres: nieopakowany CSS/JS (bez webpack/obfuskacji) — opisać w Limitations
EXP-5: End-to-End (primary)
- Dataset: Ji & Kim 2025 (19,131 phishing) + ≥ 5,000 benign (Alexa top-10k lub CommonCrawl sample) — 243 benign z Ji & Kim 2025 jest niewystarczające do rzetelnej estymacji FPR
- Metryki: F1, recall, FPR @ 95% TPR; bootstrap 95% CI dla każdej metryki (n=1,000 resampli)
- Baseline: PhishIntention, KnowPhish; test McNemar dla istotności statystycznej Δ F1
- Ablation: M1 → M1+M2 → M1+M2+M3 → full (M1+M2+M3+M4)
EXP-6: Financial Brand Breakdown
- Dataset: Ji & Kim 2025, manualna klasyfikacja phishing stron per brand tier
- Metryki: recall per tier (Banks / Payments / Cards / Fintech)
- H: PhishIntention gorsza dla Tier 2-4 (payment/fintech), nasz system lepszy
EXP-7: Latency (deployment)
- Środowisko: commodity laptop (CPU-only) + GPU server
- Metryki: p50/p95/p99 latency per moduł + end-to-end
6.4 Grad-CAM Analysis (qualitative)
- Wizualizacja heatmap: które piksele logo decydują o match
- Porównanie clean vs adversarial: jak perturbacja zmienia attention
- Przykłady: true positive, false positive, adversarial bypass
7. Discussion (~0.5 strony)
7.1 Limitations
- M4 scope: DOM timing analysis wykrywa nieopakowane ataki klasy Yuan 2026; adaptywny atakujący używający webpack/obfuskacji/ServiceWorker może obejść — poza zakresem tej pracy
- H1 scope: Odporność CLIP mierzona na transfer attacks (Lee 2023 GAN → CLIP); adaptive CLIP-targeted attacker może osiągnąć wyższy evasion rate — kompensowane przez M2c PGD verifier
- KB coverage: długi ogon marek (niszowe fintechy nieobecne w bazie 150 marek)
- Certified robustness: Randomized Smoothing kosztowny dla realtime deployment (opcjonalne rozszerzenie)
- Dataset: Ji & Kim 2025 bez brand-level labels → ręczna klasyfikacja (EXP-6) potrzebna; benign sample uzupełniony zewnętrznie
7.2 Practical considerations
- Deployment: browser extension (< 500ms) vs server-side proxy
- Knowledge distillation: ViT → mniejszy model dla edge deployment
- GDPR: screenshoty stron phishingowych — kwestia retencji
7.3 Future work
- Continual learning: automatyczna aktualizacja KB z nowych phishing feeds
- Multi-language: arabski, cyrylica (PL banki mniej narażone ale EU kontekst)
- Graph-based extension: powiązanie z fraud graph detection (#FG- projekt)
8. Conclusion (~0.3 strony)
Podsumowanie contributions C1-C5, kluczowe liczby z eksperymentów (placeholder), wezwanie do akcji: open-source KB + adversarial protocol jako community benchmark.
Status sekcji
| Sekcja | Status | Następny krok |
|---|---|---|
| 1. Introduction | szkic (outline) | pisać po eksperymentach |
| 2. Related Work | literatura zebrana | pisać teraz (referencje gotowe) |
| 3. Threat Model | szkic (outline) | doprecyzować po implementacji |
| 4. System Design | ✅ architektura gotowa | pisać teraz |
| 5. Brand KB | ⬜ zebrano logo? | zebrać logo Tier 1-2 |
| 6. EXP-1 LogoSENSE | ⬜ dataset pobrany? | pobrać + uruchomić |
| 6. EXP-2 Brand matching | ⬜ | po EXP-1 |
| 6. EXP-3 Adversarial | ⬜ | kluczowy, 4-6 tygodni |
| 6. EXP-4 Timing | ⬜ | 2-3 tygodnie |
| 6. EXP-5 End-to-end | ⬜ | po EXP-1-4 |
| 6. EXP-6 Brand breakdown | ⬜ | wymaga label Ji & Kim |
| 6. EXP-7 Latency | ⬜ | na końcu |
| 7. Discussion | ⬜ | po eksperymentach |
| 8. Conclusion | ⬜ | na końcu |