2025最新:Phishing.Database反钓鱼数据库完全指南 — 从威胁情报到实战防御

2025最新:Phishing.Database反钓鱼数据库完全指南 — 从威胁情报到实战防御

【免费下载链接】Phishing.Database Phishing Domains, urls websites and threats database. We use the PyFunceble testing tool to validate the status of all known Phishing domains and provide stats to reveal how many unique domains used for Phishing are still active. 【免费下载链接】Phishing.Database 项目地址: https://gitcode.com/gh_mirrors/ph/Phishing.Database

你是否还在为层出不穷的钓鱼攻击焦头烂额?作为企业安全团队,每天要处理超过2000个新出现的钓鱼域名却无从下手?作为开发者,想集成反钓鱼功能却找不到可靠的数据源?本文将带你全面掌握Phishing.Database这一全球领先的开源反钓鱼数据库,从数据结构到实战应用,一文解决你的反钓鱼威胁情报需求。

读完本文你将获得:

  • 掌握4大类共18种反钓鱼数据文件的使用场景
  • 学会3种主流集成方式(防火墙/浏览器插件/代码调用)
  • 获取5个企业级实战案例及性能优化方案
  • 了解数据库背后的自动化测试流程与数据验证机制
  • 获得完整的API调用代码示例与定期更新脚本

项目概述:全球最活跃的开源反钓鱼数据库

Phishing.Database是一个综合性的开源钓鱼威胁情报库,致力于通过社区协作的方式收集、验证和分享钓鱼域名(Phishing Domains)、URL(统一资源定位符)和IP地址(互联网协议地址)信息。该项目采用PyFunceble测试工具自动化验证所有已知钓鱼实体的状态,并提供详细统计数据,揭示当前仍活跃的钓鱼威胁数量。

核心价值主张

与商业威胁情报系统不同,Phishing.Database坚持以下核心原则:

  • 完全开源免费:所有数据无需付费订阅即可获取和使用
  • 社区协作维护:全球安全研究者共同贡献和验证数据
  • 高度自动化:每日自动更新并验证所有记录状态
  • 透明可审计:完整的测试流程和验证标准公开可见

截至2025年9月,该数据库已累计捕获:

  • 465,985个钓鱼域名(Domains)
  • 736,074个钓鱼链接(Links)
  • 日均新增威胁记录超过1,200条

项目架构与工作流程

mermaid

数据库的核心优势在于其严格的自动化测试流程,通过PyFunceble工具对每个记录进行HTTP状态码检测、DNS解析验证和内容分析,确保数据的准确性和时效性。

数据文件详解:18种文件类型与应用场景

Phishing.Database项目提供了丰富的数据文件,按照威胁类型、活跃状态和使用场景进行分类。以下是主要文件类型及其应用场景的详细说明:

1. 按威胁类型分类

域名数据(Domains)
文件名描述典型内容适用场景
phishing-domains-ACTIVE.txt目前活跃的钓鱼域名00000000000000000000000000000000000000dfjjjhv.000webhostapp.com
000000000000000000000000000000000000dbscrfg.000webhostapp.com
防火墙拦截规则
域名黑名单过滤
phishing-domains-INACTIVE.txt已确认非活跃的钓鱼域名example-phishing-domain.com
old-phish-site.net
历史威胁分析
安全研究
phishing-domains-INVALID.txt无效或已被移除的域名expired-phish-domain.com
taken-down-site.org
误报分析
威胁趋势研究
phishing-domains-NEW-last-hour.txt过去一小时新增域名newly-registered-phish[.]xyz
just-created-scam[.]info
实时威胁监控
应急响应
phishing-domains-NEW-today.txt今日新增域名today-phish[.]club
new-scam-site[.]top
每日威胁简报
趋势分析

数据样例(phishing-domains-ACTIVE.txt):

00000000000000000000000000000000000000dfjjjhv.000webhostapp.com
000000000000000000000000000000000000dbscrfg.000webhostapp.com
000000000000000000000000000.vstarbet555.com
000000000000000000000000000yteyeuya.000webhostapp.com
0000000000000000000000000.findyourjacket.com
URL数据(Links)
文件名描述典型内容适用场景
phishing-links-ACTIVE.txt目前活跃的钓鱼链接http://example.com/login.php
https://phish-site.com/verify
Web过滤
邮件安全网关
phishing-links-INACTIVE.txt已失效的钓鱼链接http://old-phish.com/fake-login安全意识培训
历史案例分析
phishing-links-INVALID.txt无效的钓鱼链接http://nonexistent-site.com/scam研究与统计分析
phishing-links-NEW-last-hour.txt过去一小时新增链接http://new-phish[.]xyz/steal-creds实时监控
即时阻断
phishing-links-NEW-today.txt今日新增链接http://today-scam[.]info/fake-bank日常安全运营
威胁情报报告

数据样例(phishing-links-ACTIVE.txt):

http://00000000000000000000000000000000000000dfjjjhv.000webhostapp.com/yahoo/yahooattt/global/attverzon/login.php?.intl=us&.lang=en-us&https://login.yahoo.com/?.src=ym
http://000000000000000000000000000000000000dbscrfg.000webhostapp.com/yahoo/yahooattt/global/attverzon/login.php?https%3a//login.yahoo.com/?.src=ym&.intl=us&.lang=en-us
ftp://me@createkindlebooks.org:noobasshole@createkindlebooks.org/index.html
IP地址数据(IPs)
文件名描述典型内容适用场景
phishing-IPs-ACTIVE.txt活跃的钓鱼服务器IP192.168.1.100
203.0.113.45
网络层阻断
入侵检测系统
phishing-IPs-INACTIVE.txt非活跃的钓鱼IP198.51.100.200历史数据分析
IP信誉评估
phishing-IPs-INVALID.txt无效的钓鱼IP10.0.0.1(内网地址)研究用途
phishing-ips-NEW-last-hour.txt过去一小时新增IP169.254.1.1实时响应
动态阻断
phishing-ips-NEW-today.txt今日新增IP172.16.0.2日常安全运营

2. 特殊格式文件

AdBlock格式文件

phishing-domains-ACTIVE.adblock 文件采用AdBlock Plus过滤规则格式,适用于浏览器插件和支持该格式的内容过滤系统:

! Title: Phishing Domains - ACTIVE
! Updated: 2025-09-09 17:39:35
! Expires: 1 day (update frequency)
! Homepage: https://github.com/Phishing-Database/Phishing.Database
! License: MIT
! Total domains: 465985

||00000000000000000000000000000000000000dfjjjhv.000webhostapp.com^
||000000000000000000000000000000000000dbscrfg.000webhostapp.com^
||000000000000000000000000000.vstarbet555.com^

这种格式的优势在于可以直接导入AdBlock、uBlock Origin等浏览器插件,为普通用户提供即时保护。

自动化测试流程:确保数据准确性的核心机制

Phishing.Database的核心竞争力在于其严格的自动化测试流程,通过PyFunceble工具实现对每个威胁实体的持续验证。以下是该流程的详细解析:

1. 状态判定标准

系统根据HTTP响应状态码将钓鱼实体分为不同状态:

活跃状态(ACTIVE)
  • 明确活跃:返回2xx系列状态码(200, 201, 202等)
  • 潜在活跃:返回000、3xx重定向系列(301, 302等)、4xx客户端错误(403, 405等)和5xx服务器错误(500, 503等)

mermaid

非活跃状态(INACTIVE)
  • 返回404 Not Found或410 Gone状态码
  • 持续多次测试均无法访问
无效状态(INVALID)
  • DNS解析失败
  • 域名已过期或被注册商收回
  • IP地址被分配给非恶意实体

2. 测试频率与更新周期

  • 新增实体:首次发现后每15分钟测试一次
  • 活跃实体:每小时测试一次
  • 非活跃实体:每24小时测试一次
  • 无效实体:每周测试一次,持续4周无变化则从数据库移除

这种分层测试策略既保证了活跃威胁的时效性,又避免了不必要的资源消耗。

实战应用:从数据到防御的完整方案

1. 企业级防火墙集成

适用场景:企业网络边界防护,阻止内部用户访问钓鱼网站

实施步骤

  1. 定期下载数据
# 创建存放数据的目录
mkdir -p /etc/phishing-blocklists

# 下载活跃域名列表
curl -o /etc/phishing-blocklists/domains-active.txt https://phish.co.za/latest/phishing-domains-ACTIVE.txt

# 下载活跃IP列表
curl -o /etc/phishing-blocklists/ips-active.txt https://phish.co.za/latest/phishing-IPs-ACTIVE.txt
  1. 转换为防火墙规则
# 为UFW防火墙生成规则
while IFS= read -r domain; do
    echo "sudo ufw deny out to $domain" >> /etc/phishing-blocklists/ufw-rules.sh
done < /etc/phishing-blocklists/domains-active.txt

# 为IPTables生成规则
while IFS= read -r ip; do
    echo "-A OUTPUT -d $ip -j DROP" >> /etc/phishing-blocklists/iptables-rules.txt
done < /etc/phishing-blocklists/ips-active.txt
  1. 设置定时更新任务
# 添加到crontab,每天凌晨3点更新
echo "0 3 * * * /path/to/update-scripts/update-phishing-lists.sh" | crontab -

性能优化建议

  • 对于超过10万条记录的大型列表,建议使用ipset而非单独的iptables规则
  • 实施分层过滤:先按IP段过滤,再检查域名
  • 对高频访问的域名实施缓存机制,减少DNS查询压力

2. 浏览器插件开发

适用场景:终端用户保护,防止员工或个人用户访问钓鱼网站

核心代码示例(Chrome扩展):

// 后台服务 worker
chrome.runtime.onInstalled.addListener(() => {
  // 初始化时加载钓鱼域名列表
  loadPhishingDomains();
  
  // 设置定时更新(每4小时)
  chrome.alarms.create('updatePhishingLists', { periodInMinutes: 240 });
});

// 处理定时更新
chrome.alarms.onAlarm.addListener(alarm => {
  if (alarm.name === 'updatePhishingLists') {
    loadPhishingDomains();
  }
});

// 加载并存储钓鱼域名
let phishingDomains = new Set();

async function loadPhishingDomains() {
  try {
    const response = await fetch('https://phish.co.za/latest/phishing-domains-ACTIVE.txt');
    const text = await response.text();
    const domains = text.split('\n').filter(d => d.trim() !== '');
    
    // 更新Set集合
    phishingDomains = new Set(domains);
    
    // 存储到本地存储,供内容脚本访问
    chrome.storage.local.set({ phishingDomains: Array.from(phishingDomains) });
    
    console.log(`Updated phishing domains: ${domains.length} entries`);
  } catch (error) {
    console.error('Failed to update phishing domains:', error);
  }
}

// 监听网页请求
chrome.webRequest.onBeforeRequest.addListener(
  details => {
    const url = new URL(details.url);
    const hostname = url.hostname;
    
    // 检查是否在钓鱼列表中
    if (phishingDomains.has(hostname)) {
      // 阻止请求并重定向到警告页面
      return { 
        redirectUrl: chrome.runtime.getURL('warning.html?url=' + encodeURIComponent(details.url)) 
      };
    }
  },
  { urls: ["<all_urls>"] },
  ["blocking"]
);

警告页面设计

<!DOCTYPE html>
<html>
<head>
  <title>钓鱼网站警告</title>
  <style>
    body { width: 100%; height: 100%; background: #dc3545; color: white; text-align: center; padding: 50px; }
    .warning-container { max-width: 800px; margin: 0 auto; }
    .warning-icon { font-size: 100px; margin-bottom: 20px; }
  </style>
</head>
<body>
  <div class="warning-container">
    <div class="warning-icon">⚠️</div>
    <h1>钓鱼网站警告</h1>
    <p>您尝试访问的网站已被标记为钓鱼网站,可能会窃取您的个人信息。</p>
    <p><strong>被阻止的URL:</strong> <span id="blocked-url"></span></p>
    <button onclick="window.close()">关闭页面</button>
  </div>
  
  <script>
    // 获取被阻止的URL并显示
    const params = new URLSearchParams(window.location.search);
    const blockedUrl = params.get('url');
    document.getElementById('blocked-url').textContent = blockedUrl;
  </script>
</body>
</html>

3. 邮件安全网关集成

适用场景:企业邮件系统防护,过滤包含钓鱼链接的邮件

Python代码示例

import requests
import re
from datetime import datetime, timedelta

class PhishingEmailFilter:
    def __init__(self):
        self.phishing_domains = set()
        self.phishing_ips = set()
        self.last_updated = None
        self.update_interval = timedelta(hours=1)
        
        # 初始化时加载数据
        self.update_lists()
    
    def update_lists(self):
        """更新钓鱼域名和IP列表"""
        # 检查是否需要更新
        if self.last_updated and datetime.now() - self.last_updated < self.update_interval:
            return False
            
        try:
            # 获取域名列表
            domains_response = requests.get("https://phish.co.za/latest/phishing-domains-ACTIVE.txt")
            self.phishing_domains = set(domains_response.text.splitlines())
            
            # 获取IP列表
            ips_response = requests.get("https://phish.co.za/latest/phishing-IPs-ACTIVE.txt")
            self.phishing_ips = set(ips_response.text.splitlines())
            
            self.last_updated = datetime.now()
            print(f"Updated phishing lists at {self.last_updated}")
            print(f"Loaded {len(self.phishing_domains)} domains and {len(self.phishing_ips)} IPs")
            return True
        except Exception as e:
            print(f"Error updating phishing lists: {str(e)}")
            return False
    
    def extract_domains(self, text):
        """从文本中提取域名"""
        domain_pattern = re.compile(r'([a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)')
        return set(domain_pattern.findall(text))
    
    def extract_ips(self, text):
        """从文本中提取IP地址"""
        ip_pattern = re.compile(r'\b(?:\d{1,3}\.){3}\d{1,3}\b')
        return set(ip_pattern.findall(text))
    
    def scan_email(self, subject, body):
        """扫描邮件内容,判断是否包含钓鱼链接"""
        # 先更新列表
        self.update_lists()
        
        # 合并主题和正文进行扫描
        full_text = subject + "\n" + body
        
        # 提取所有域名和IP
        domains = self.extract_domains(full_text)
        ips = self.extract_ips(full_text)
        
        # 检查是否有匹配的钓鱼域名或IP
        malicious_domains = domains.intersection(self.phishing_domains)
        malicious_ips = ips.intersection(self.phishing_ips)
        
        if malicious_domains or malicious_ips:
            return {
                'is_phishing': True,
                'malicious_domains': list(malicious_domains),
                'malicious_ips': list(malicious_ips)
            }
        
        return {'is_phishing': False}

# 使用示例
if __name__ == "__main__":
    filter = PhishingEmailFilter()
    
    # 测试钓鱼邮件
    test_subject = "您的账户需要紧急验证"
    test_body = """
    尊敬的用户,您的账户存在异常活动,请立即访问 http://00000000000000000000000000000000000000dfjjjhv.000webhostapp.com 进行验证。
    如不及时处理,您的账户将被冻结。
    
    此致,
    客户服务团队
    """
    
    result = filter.scan_email(test_subject, test_body)
    print(result)
    # 应输出: {'is_phishing': True, 'malicious_domains': ['00000000000000000000000000000000000000dfjjjhv.000webhostapp.com'], 'malicious_ips': []}

高级应用:自定义数据处理与扩展

1. 数据校验与完整性检查

Phishing.Database提供了完整的校验和文件,可用于验证下载数据的完整性:

# 下载数据文件
curl -o phishing-domains-ACTIVE.txt https://phish.co.za/latest/phishing-domains-ACTIVE.txt

# 下载校验和文件
curl -o phishing-domains-ACTIVE.txt.sha256 https://raw.githubusercontent.com/Phishing-Database/checksums/refs/heads/master/phishing-domains-ACTIVE.txt.sha256

# 验证文件完整性
sha256sum -c phishing-domains-ACTIVE.txt.sha256

如果验证失败,可能是文件在传输过程中损坏,或下载的不是最新版本,建议重新下载。

2. 私有数据库部署

对于有高可用性要求的企业,可以部署私有数据库实例:

# 克隆项目仓库(注意:项目不建议直接克隆,而是通过API获取数据)
git clone https://gitcode.com/gh_mirrors/ph/Phishing.Database.git

# 进入项目目录
cd Phishing.Database

# 运行数据更新脚本(如果有)
./update.sh

注意:官方不建议直接克隆仓库,因为项目每24小时会重置历史记录,可能会破坏你的本地设置。推荐使用直接下载数据文件的方式获取最新数据。

3. 数据贡献与社区参与

如果你发现了新的钓鱼威胁,可以通过以下方式贡献数据:

  1. 提交新增域名/IP

    • 访问项目的phishing仓库:https://github.com/Phishing-Database/phishing
    • 编辑相应的列表文件(domains.list, ips.list等)
    • 提交Pull Request
  2. 报告误报

    • 访问项目Issue页面:https://github.com/Phishing-Database/Phishing.Database/issues
    • 选择"False Positive Report"模板
    • 提供误报的域名/IP和相关证明材料
  3. 改进建议

    • 通过Issue提交功能改进建议
    • 参与项目讨论和 roadmap 规划

常见问题与最佳实践

1. 数据更新与缓存策略

问题:如何平衡数据时效性和服务器负载?

解决方案:实施分层缓存策略

  • 活跃域名列表:每1小时更新一次
  • 非活跃域名列表:每24小时更新一次
  • 完整历史数据:每周更新一次
# 推荐的wget/curl命令,添加缓存控制
curl -H "Cache-Control: max-age=3600" -o phishing-domains-ACTIVE.txt https://phish.co.za/latest/phishing-domains-ACTIVE.txt

2. 大规模部署性能优化

问题:数据库包含数十万个记录,如何在不影响网络性能的情况下实施过滤?

解决方案

  • 使用高效数据结构:将域名转换为哈希集合而非数组,提高查找速度
  • 分层过滤:先按TLD(顶级域名)过滤,再检查二级域名
  • 实施白名单机制:对内部可信域名设置白名单,跳过过滤检查
  • 定期清理:移除超过90天未活跃的记录,减少列表大小

3. 误报处理流程

问题:误将合法网站标记为钓鱼网站怎么办?

处理流程

  1. 记录误报的域名/IP和访问时间
  2. 收集该域名的WHOIS信息和网站内容证明其合法性
  3. 通过项目的False Positive Report模板提交误报报告
  4. 在本地过滤规则中临时添加该域名到白名单
  5. 监控项目响应,确认误报是否被处理

4. 数据存储与访问控制

安全最佳实践

  • 限制反钓鱼数据库访问权限,仅授权人员可查看完整列表
  • 实施审计日志,记录所有数据访问和使用情况
  • 定期轮换用于访问API的凭证
  • 加密存储本地缓存的钓鱼数据文件

未来展望与发展趋势

Phishing.Database项目正朝着以下方向发展:

  1. 机器学习集成:开发基于AI的钓鱼检测模型,提高检测准确率
  2. 实时推送API:提供WebSocket接口,实现威胁实时推送
  3. 多语言支持:扩展项目文档和界面支持多种语言
  4. 移动应用集成:开发移动SDK,方便移动应用集成反钓鱼功能
  5. 威胁情报共享平台:建立更开放的威胁情报共享机制,连接不同安全产品

随着网络钓鱼技术的不断演进,开源威胁情报的重要性将愈发凸显。Phishing.Database通过社区协作的方式,正在构建一个更安全的网络环境,这种模式也为其他类型的威胁情报共享提供了可借鉴的范例。

总结与行动指南

通过本文的介绍,你已经全面了解了Phishing.Database这一强大的开源反钓鱼数据库。从数据结构到实战应用,从集成方案到性能优化,我们涵盖了从入门到精通所需的全部知识。

立即行动清单

  1. 访问项目主页,下载最新的活跃域名列表
  2. 评估你的组织最需要的集成方式(防火墙/浏览器插件/邮件过滤)
  3. 实施本文提供的代码示例,建立初步的反钓鱼防护
  4. 制定数据更新计划,确保防护规则与时俱进
  5. 加入项目社区,贡献你的发现和改进建议

记住,反钓鱼是一场持久战,没有一劳永逸的解决方案。通过持续更新威胁情报、优化防护策略和提高用户安全意识,我们才能共同构建一个更安全的网络环境。

如果你觉得本文对你有帮助,请点赞、收藏并关注项目更新,以便获取最新的反钓鱼防御技巧和最佳实践。下期我们将深入探讨PyFunceble测试工具的高级使用方法,敬请期待!

【免费下载链接】Phishing.Database Phishing Domains, urls websites and threats database. We use the PyFunceble testing tool to validate the status of all known Phishing domains and provide stats to reveal how many unique domains used for Phishing are still active. 【免费下载链接】Phishing.Database 项目地址: https://gitcode.com/gh_mirrors/ph/Phishing.Database

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值