1行のコードで数十万のフィッシングサイトをブロックする方法

ほとんどのフィッシングサイトは数日しか存続しません。詐欺師は人気サービスに似た名前のドメインを登録し、注意散漫なユーザーからプライベートキーやカード情報を数件盗み、次のアドレスに移動します。伝統的なアンチウイルスデータベースは、分析段階でしばしば遅れを取り、本体への被害が既に発生した後であることが多いです。
最近、PhishDestroyチームのオープンソースプロジェクトDestroylistに出会いました。これは単なる悪質なアドレスのリストではなく、スCAMを自動的に検索し、コンテンツを検証し、 Registrar に違反を報告し、あらゆる形式のすぐに使えるフィードを提供する包括的な脅威コレクションシステムです。
中身と用途
プロジェクトデータベースには88万件以上の追跡対象ドメインが含まれています。このうち、約18万件がフィッシングリソースの主な検証済みリストに登録されています。プロジェクトは独自のパーサーを通じて13の情報源からデータを収集し、誤検知を常にフィルタリングしています。

このフィードは4つの明確なシナリオで役立ちます:
- Pi-hole、AdGuard Home、Unboundを使用したホームネットワークまたはオフィスDNSサーバーの設定。
- Webサービス、メッセンジャーボット、または暗号通貨ウォレット内で、ユーザーをリダイレクトする前にリンクを検証。
- SOCまたはOSINT研究ツールのデータ強化。
- 独自のトラフィックフィルタリングモデルのトレーニング。
あらゆる形式のフィードと高速Redis
このリポジトリの素晴らしい特徴の1つは、データの取得方法について開発者が配慮していることです。ログをクリーンアップしたり、JSONをその場で変換したりするパーサーを書く必要はありません。プロジェクトディレクトリには、さまざまなツール向けのすぐに使えるファイルが含まれています:
- Hosts(Pi-hole、
/etc/hostsまたはWindows用) - AdBlock(uBlock OriginおよびAdGuard用)
- Dnsmasq
- Unbound(pfSenseおよびOPNsense用)
- RPZ(BINDおよびKnot DNS用)
- Redis
Redisに最新のフィードをO(1)ルックアップで読み込む必要がある場合、リポジトリにはすぐに使えるワンライナーが含まれています:
curl -s https://cdn.jsdelivr.net/gh/phishdestroy/destroylist@main/rootlist/formats/primary/redis.txt | redis-cli --pipe
このコマンドを実行すると、evil-domain.comでのアドレス確認が即座の操作になります:
SISMEMBER destroylist:primary evil-domain.com
すべてのリストはGitHubから直接アクセスできるほか、jsDelivr CDNからも利用可能です。2番目のオプションが推奨されます。これは、GitHubの生ファイルへの頻繁なリクエストが429エラーを簡単に引き起こす可能性があるためです。
HTTPコンテンツ検証とクローキングの問題
多くのブラックリスト作成者はDNS解決に限定しています。ドメインがpingに応答するか、IPアドレスを返せば生きていると見なされます。しかし、攻撃者はしばしばクローキングを使用します:検索ボットや自動化されたセキュリティスキャナーがサイトにアクセスすると、空白ページまたはプレースホルダーが表示されます。実際のフィッシングコンテンツは、適切なHTTPヘッダーと地理位置情報を持つ реальные пользователиにのみ表示されます。
DestroylistにはHTTP検証付きの отдельный feedがあります。プロジェクトのスクリプトはDNSレコードを確認するだけでなく、12時間ごとに реальные HTTPリクエストを行い、ページコンテンツを分析します。
フィッシングページが実際に今すぐ提供されている場合、ドメインはcontent_active.jsonに追加されます。ただし、作者は正直に警告しています:コンテンツチェックリストにサイトがない場合でも、それが安全であるという意味ではありません。クローキングのため、完全なリストを使用することの方が論理的です。
無料のThreat Intelligence API
ローカルデータベースを保存したり、テキストファイルを定期的に更新したくない場合、プロジェクトにはパブリックREST APIがあります。これは完全に無料で、登録もAPIキーも不要です。
APIの特殊な機能は、0から100ポイントのリスクスコア計算です。評価は次の要因の組み合わせから形成されます:
- プロジェクトのメインリストへの掲載(+40ポイント)
- 確認されたDNSアクティビティ(+30ポイント)
- コミュニティレポート(+20ポイント)
- airdrop、wallet、metamaskなどの疑わしいキーワード(それぞれ+5ポイント)
.xyz、.top、.clubなどのリスクのあるTLD(+5ポイント)
cURLで単一のコマンドを使用してドメインを確認できます:
curl "https://api.destroy.tools/v1/check?domain=suspicious-site.xyz"
レスポンスは、脅威レベル(重大度)と獲得ポイントを備えた透過的なJSONです:
{
"domain": "suspicious-site.xyz",
"threat": true,
"risk_score": 85,
"severity": "critical"
}
バッチチェックには、リクエストごとに最大500件のドメインを受け入れるPOSTエンドポイント(/v1/check/bulk)があります。これは、ユーザーの入力をフィルタリングしたり、着信ログをバッチで処理したりする場合に便利です。
定期チェック用のPythonの例:
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("Внимание! Домен находится в черном списке.")
Registrarとの戦いと自動化
Destroylistは単なるデータベースとしてだけでなく、自動化された abuse борьбаの先例としても興味深いです。プロジェクト作者は、脅威を検出すると、証拠(スクリーンショット、トラフィックダンプ、WHOISダンプ)を生成し、 Hosting Provider、Registrar、およびGoogle Safe Browsing、VirusTotal、Cloudflare、Microsoft Securityを含む50以上のセキュリティサービスに公式の苦情を送信するパイプラインを開発しました。
リポジトリは提出されたすべての虐待の履歴を透過的に管理しています。プロジェクトは、ICANNの要件を無視し、 数ヶ月間 dozens of abuse レポートに応答しないRegistrarに関するレポートを公開しています。
正当なドメインが誤って巻き込まれた場合、WebサイトとパブリックのGitHub Issuesにアピールフォームがあります。著者はリクエストを迅速に処理し、修正されたアドレスをallowlist.jsonファイルに追加します。

まとめ
Destroylistは、更新頻度の高い成熟したオープンソースツール(MITライセンス)です。柔軟なエクスポート構造により、ホームのPi-holeと、オンザフライでスCAMをフィルタリングする必要がある本番サービスの両方に簡単に統合できます。
リポジトリを確認し、必要なフィード形式を取得するか、単に無料APIのアドレスを保存してください。プロジェクトは活発に開発されており、コミュニティによって積極的にメンテナンスされており、ネットワークをよりクリーンにするのに本当に役立ちます。
関連プロジェクト