Hoe je honderdduizenden phishing-sites blokkeert met één regel code

De meeste phishing-sites zijn slechts enkele dagen actief. Oplichters registreren een domein met een naam die lijkt op die van een populaire dienst, stelen privésleutels of kaartgegevens van een paar dozijn onoplettende gebruikers, en gaan dan verder naar het volgende adres. Traditionele antivirusdatabases lopen vaak achter bij de analysefase, wanneer de hoofdschade al is aangericht.
Onlangs stuitte ik op het open-source project Destroylist van het PhishDestroy-team. Het is niet zomaar een lijst met foute adressen, maar een uitgebreid threat collection-systeem dat automatisch zoekt naar oplichting, inhoud verifieert, overtredingen meldt aan registrars en kant-en-klare feeds levert in alle mogelijke formaten.
Wat erin zit en waar het voor bedoeld is
De projectdatabase bevat meer dan 888.000 gevolgde domeinen. Hiervan staan er ongeveer 180.000 in de hoofdgeverifieerde lijst met phishing-bronnen. Het project verzamelt gegevens uit 13 bronnen via eigen parsers, waarbij voortdurend false positives worden uitgefilterd.

De feed is nuttig in vier duidelijke scenario's:
- Het configureren van een thuisnetwerk of kantoor-DNS-server via Pi-hole, AdGuard Home of Unbound.
- Het valideren van links in webservices, messenger-bots of crypto-wallets voordat de gebruiker wordt doorgestuurd.
- Het verrijken van gegevens in een SOC of OSINT-onderzoekstools.
- Het trainen van je eigen verkeersfiltermodellen.
Feeds voor elke smaak en snelle Redis
Een handige functie van de repository is dat de auteurs nadenken over hoe je de gegevens ophaalt. Je hoeft geen parsers te schrijven om logs op te schonen of JSON onderweg te transformeren. De projectdirectory bevat kant-en-klare bestanden voor verschillende tools:
- Hosts (voor Pi-hole,
/etc/hostsof Windows) - AdBlock (voor uBlock Origin en AdGuard)
- Dnsmasq
- Unbound (voor pfSense en OPNsense)
- RPZ (voor BIND en Knot DNS)
- Redis
Als je een actuele feed in Redis moet laden voor O(1)-lookups, bevat de repository een kant-en-klare one-liner:
curl -s https://cdn.jsdelivr.net/gh/phishdestroy/destroylist@main/rootlist/formats/primary/redis.txt | redis-cli --pipe
Na het uitvoeren van deze opdracht wordt het controleren van een adres op evil-domain.com een directe operatie:
SISMEMBER destroylist:primary evil-domain.com
Alle lijsten zijn beschikbaar direct via GitHub en via de jsDelivr CDN. De tweede optie verdient de voorkeur, aangezien frequente verzoeken aan raw GitHub-bestanden gemakkelijk een 429-fout kunnen opleveren.
HTTP-inhoudverificatie en het cloaking-probleem
Veel blacklist-makers beperken zich tot DNS-resolutie. Als een domein reageert op ping of een IP-adres retourneert, wordt het als actief beschouwd. Maar aanvallers gebruiken vaak cloaking: als een zoekbot of geautomatiseerde beveiligingsscanner de site bezoekt, krijgt deze een lege pagina of een placeholder. De eigenlijke phishing-inhoud wordt alleen getoond aan echte gebruikers met de juiste HTTP-headers en geolocatie.
Destroylist heeft een aparte feed met HTTP-verificatie. De scripts van het project controleren niet alleen DNS-records—ze maken elke 12 uur echte HTTP-verzoeken en analyseren pagina-inhoud.
Als er momenteel daadwerkelijk een phishing-pagina wordt geserveerd, wordt het domein toegevoegd aan content_active.json. De auteurs waarschuwen echter eerlijk: als een site niet in de inhoud-gecontroleerde lijst staat, betekent dat niet dat het veilig is. Vanwege cloaking is het logischer om de volledige lijst te gebruiken.
Gratis Threat Intelligence API
Als je geen lokale database wilt opslaan of regelmatig tekstbestanden wilt bijwerken, heeft het project een openbare REST API. Het is volledig gratis, vereist geen registratie en heeft geen API-sleutels nodig.
Het speciale kenmerk van de API is de risicoscoreberekening van 0 tot 100 punten. De beoordeling wordt gevormd uit een combinatie van factoren:
- Aanwezigheid in de hoofdlijst van het project (+40 punten)
- Bevestigde DNS-activiteit (+30 punten)
- Meldingen van de community (+20 punten)
- Verdachte trefwoorden zoals airdrop, wallet, metamask (+5 punten elk)
- Riskante TLD's zoals
.xyz,.top,.club(+5 punten)
Je kunt een domein controleren via cURL met een enkele opdracht:
curl "https://api.destroy.tools/v1/check?domain=suspicious-site.xyz"
Het antwoord is een transparante JSON met dreigingsniveau (severity) en behaalde punten:
{
"domain": "suspicious-site.xyz",
"threat": true,
"risk_score": 85,
"severity": "critical"
}
Voor batch-controles is er een POST-endpoint op /v1/check/bulk dat tot 500 domeinen per verzoek accepteert. Dit is handig als je gebruikersinvoer filtert of inkomende logs in batches verwerkt.
Python-voorbeeld voor reguliere controles:
import requests
def check_domain(domain: str) -> bool:
response = requests.get(f"https://api.destroy.tools/v1/check?domain={domain}")
if response.status_code == 200:
data = response.json()
return data.get("threat", False)
return False
if check_domain("suspicious-site.xyz"):
print("Внимание! Домен находится в черном списке.")
Bestrijding van registrars en automatisering
Destroylist is interessant niet alleen als database, maar als precedent in geautomatiseerde abuse-bestrijding. De projectauteurs ontwikkelden een pipeline die, na het detecteren van een dreiging, bewijs genereert (schermafbeeldingen, verkeersdumps, WHOIS-dumps) en officiële klachten stuurt naar hostingproviders, registrars en meer dan 50 beveiligingsdiensten, waaronder Google Safe Browsing, VirusTotal, Cloudflare en Microsoft Security.
De repository houdt transparant een geschiedenis bij van alle ingediende abuses. Het project publiceert rapporten over registrars die ICANN-vereisten negeren en maandenlang niet reageren op tientallen abuse-meldingen.
Als een legitiem domein per ongeluk in de sweep is beland, is er een beroepsformulier op de website en openbare GitHub Issues. De auteurs verwerken verzoeken snel en voegen gecorrigeerde adressen toe aan het allowlist.json bestand.

Afsluitende gedachten
Destroylist is een volwassen open-source tool (MIT-licentie) met een hoge updatefrequentie. Dankzij de flexibele exportstructuur is het gemakkelijk te integreren in zowel een thuis-Pi-hole als een productiedienst die scams direct moet filteren.
Bekijk de repository, pak het feed-formaat dat je nodig hebt, of sla gewoon het gratis API-adres op. Het project leeft, wordt actief ontwikkeld door de community en helpt oprecht om het netwerk schoner te maken.
Gerelateerde projecten