Jak zablokować setki tysięcy stron phishingowych jedną linijką kodu

Większość stron phishingowych istnieje tylko przez kilka dni. Oszuści rejestrują domenę o nazwie podobnej do popularnego serwisu, kradną klucze prywatne lub dane kart od kilkudziesięciu nieuważnych użytkowników, a następnie przechodzą do następnego adresu. Tradycyjne bazy antywirusowe często pozostają w tyle na etapie analizy, kiedy główna szkoda została już wyrządzona.
Niedawno natknąłem się na otwarty projekt Destroylist stworzony przez zespół PhishDestroy. To nie tylko kolejna lista złych adresów, ale kompleksowy system zbierania informacji o zagrożeniach, który automatycznie wyszukuje oszustwa, weryfikuje treść, zgłasza naruszenia do rejestrów domen i dostarcza gotowe do użycia feedy we wszystkich możliwych formatach.
Co zawiera i dla kogo jest przeznaczony
Baza danych projektu zawiera ponad 888 000 śledzonych domen. Z nich około 180 000 znajduje się na głównej zweryfikowanej liście zasobów phishingowych. Projekt zbiera dane z 13 źródeł poprzez własne parsery, stale filtrując fałszywe wyniki.

Feed jest przydatny w czterech jasnych scenariuszach:
- Konfiguracja serwera DNS w sieci domowej lub biurowej za pomocą Pi-hole, AdGuard Home lub Unbound.
- Walidacja linków w usługach internetowych, botach messengerów lub portfelach kryptowalutowych przed przekierowaniem użytkownika.
- Wzbogacanie danych w narzędziach SOC lub badań OSINT.
- Uczenie własnych modeli filtrowania ruchu.
Feedy na każdy gust i szybki Redis
Jedną z miłych cech repozytorium jest to, że autorzy dbają o to, jak będziesz pobierać dane. Nie będziesz musiał pisać parserów do czyszczenia logów ani przekształcać JSON-a w locie. Katalog projektu zawiera gotowe pliki dla różnych narzędzi:
- Hosts (dla Pi-hole,
/etc/hostslub Windows) - AdBlock (dla uBlock Origin i AdGuard)
- Dnsmasq
- Unbound (dla pfSense i OPNsense)
- RPZ (dla BIND i Knot DNS)
- Redis
Jeśli potrzebujesz załadować aktualny feed do Redis dla operacji O(1), repozytorium zawiera gotową jedną linijkę:
curl -s https://cdn.jsdelivr.net/gh/phishdestroy/destroylist@main/rootlist/formats/primary/redis.txt | redis-cli --pipe
Po uruchomieniu tego polecenia sprawdzanie adresu na evil-domain.com staje się natychmiastową operacją:
SISMEMBER destroylist:primary evil-domain.com
Wszystkie listy są dostępne bezpośrednio z GitHub, a także przez CDN jsDelivr. Druga opcja jest preferowana, ponieważ częste żądania do surowych plików GitHub mogą łatwo skutkować błędem 429.
Weryfikacja treści HTTP i problem cloakingu
Wielu twórców czarnych list ogranicza się do rozwiązywania DNS. Jeśli domena odpowiada na ping lub zwraca adres IP, jest uznawana za żywą. Ale atakujący często używają cloakingu: jeśli bot wyszukiwarki lub automatyczny skaner bezpieczeństwa odwiedza stronę, otrzymuje pustą stronę lub placeholder. Rzeczywista treść phishingowa jest wyświetlana tylko prawdziwym użytkownikom z odpowiednimi nagłówkami HTTP i geolokalizacją.
Destroylist ma osobny feed z weryfikacją HTTP. Skrypty projektu nie tylko sprawdzają rekordy DNS — wykonują prawdziwe żądania HTTP co 12 godzin i analizują treść strony.
Jeśli strona phishingowa jest faktycznie serwowana w tym momencie, domena jest dodawana do content_active.json. Jednak autorzy uczciwie ostrzegają: jeśli strona nie znajduje się na liście z sprawdzoną treścią, nie oznacza to, że jest bezpieczna. Ze względu na cloaking, bardziej logiczne jest użycie pełnej listy.
Bezpłatne Threat Intelligence API
Jeśli nie chcesz przechowywać lokalnej bazy danych ani regularnie aktualizować plików tekstowych, projekt udostępnia publiczne REST API. Jest całkowicie bezpłatne, nie wymaga rejestracji ani kluczy API.
Specjalną cechą API jest obliczanie wyniku ryzyka od 0 do 100 punktów. Ocena jest kształtowana przez kombinację czynników:
- Obecność na głównej liście projektu (+40 punktów)
- Potwierdzona aktywność DNS (+30 punktów)
- Zgłoszenia społeczności (+20 punktów)
- Podejrzane słowa kluczowe jak airdrop, wallet, metamask (+5 punktów za każde)
- Ryzykowne TLD jak
.xyz,.top,.club(+5 punktów)
Możesz sprawdzić domenę przez cURL jednym poleceniem:
curl "https://api.destroy.tools/v1/check?domain=suspicious-site.xyz"
Odpowiedź to przejrzysty JSON z poziomem zagrożenia (severity) i zdobytymi punktami:
{
"domain": "suspicious-site.xyz",
"threat": true,
"risk_score": 85,
"severity": "critical"
}
Dla sprawdzania wielu domen naraz, there's a POST endpoint at /v1/check/bulk that accepts up to 500 domains per request. Jest to wygodne, jeśli filtrujesz dane wejściowe użytkownika lub przetwarzasz przychodzące logi partiami.
Przykład w Pythonie do regularnych sprawdzeń:
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("Внимание! Домен находится в черном списке.")
Walka z rejestratorami i automatyzacja
Destroylist jest interesujący nie tylko jako baza danych, ale jako precedens w automatycznej walce z nadużyciami. Autorzy projektu opracowali pipeline, który po wykryciu zagrożenia generuje dowody (zrzuty ekranu, zrzuty ruchu, dane WHOIS) i wysyła oficjalne skargi do dostawców hostingu, rejestrów domen i ponad 50 usług bezpieczeństwa, w tym Google Safe Browsing, VirusTotal, Cloudflare i Microsoft Security.
Repozytorium transparentnie prowadzi historię wszystkich zgłoszonych nadużyć. Projekt publikuje raporty o rejestratorach, którzy ignorują wymagania ICANN i nie odpowiadają na dziesiątki zgłoszeń nadużyć przez miesiące.
Jeśli legalna domena przypadkowo znalazła się w odłowie, there's an appeal form on the website and public GitHub Issues. Autorzy na bieżąco przetwarzają zgłoszenia i dodają poprawione adresy do pliku allowlist.json.

Podsumowanie
Destroylist to dojrzałe narzędzie open-source (licencja MIT) o wysokiej częstotliwości aktualizacji. Dzięki elastycznej strukturze eksportu, łatwo integruje się zarówno z domowym Pi-hole, jak i usługą produkcyjną, która musi filtrować oszustwa w locie.
Sprawdź repozytorium, pobierz format feeda, który potrzebujesz, lub po prostu zapisz adres bezpłatnego API. Projekt jest żywy, aktywnie rozwijany przez społeczność i naprawdę pomaga uczynić sieć czystszą.
Powiązane projekty