1.53亿张驾照正在挂牌售卖 我给明年身份数据下了五个预判
原创
紫禁
紫禁
紫禁玄科
2026年10月9日 15:22
四川
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
SECURITY · INTELLIGENCE
1.53亿张驾照正在挂牌售卖 我给明年身份数据下了五个预判
2026年10月09日 · 9 min
网络安全#数据隐私#未来预测
01
他们把我的驾照,当成了开店的免费样品
你的身份正在被挂牌——这不是比喻
先说个真事。8 月 31 日,美国安全记者 Brian Krebs 收到一条线报:俄语暗网论坛 Exploit 上新开了一家店,卖的是身份证明的扫描件。让他心里一紧的不是「又一家」,而是店主的推销手法——开张首帖里挂着的免费样品,是他本人的弗吉尼亚州驾照。
你想想这个细节有多狂:一家店敢把知名安全记者的证件当赠品,只说明一件事,它手里根本不缺货。
这家店叫 Nexus。今天这篇不追新闻,我想借它聊聊我判断明年会发生什么——因为这条产业链上的每一步,都已经有现货了。
02
货架有多满:不是一次泄露,是一条流水线
先把货架摆出来给你看。Nexus 自己报的库存是这样的:
1. 1.53 亿张美国和加拿大驾照扫描件;
2. 超过 1000 万份身份证件、300 多万份旅行证件和国际证件;
3. 至少 57.9 万张医疗卡,还有大麻专卖店的会员卡;
- 部分记录的来源标注是 CDL(商业驾照)和 CAC(美国政府门禁卡)。
这不是自我吹嘘。Krebs 用空搜索查了查:约 1150 万页结果,每页 15 条。加拿大驾照约 110 万条,其中安大略省一个省就占了 473,673 条。更值得注意的是另一条曲线——24 小时内,驾照记录增加了近 40 万条。
货架上的货里还有美国国防部长等多名高官的驾照。说白了,这已经不是「一次泄露」的体量,这是有进货渠道、有上新节奏的批发商。
档案正在被挂牌——而且每天还在进货
我做渗透测试这些年,判断一次泄露严重不严重,早就不看总量了,我看的是它还在不在动。
03
货是怎么进来的:你做实名认证的那一刻
Nexus 的卖家自己交代了货源:一家「大型身份验证公司」的持续入侵。他们的原话是——「我们已经连续外泄超过一年,源源不断进自己的私有数据库。」这家身份验证公司位于路易斯安那州,客户里有多家世界 500 强。
这句话翻译一下:你在做实名认证时上传的自拍和证件照,正在被第三方按天抽走。美国联邦调查局新奥尔良分局 9 月 1 日已经立案调查图片源头。
同一时期还有另一条进货线,值得放在一起看。数据盗窃团伙 ShinyHunters 从今年 6 月起,用一个人事管理软件 PeopleSoft 的零日漏洞(CVE-2026-35273)批量窃取数据,受害行业横跨高校、科技、医疗、农业、交通和政府。安全公司 Mandiant 给出的临时防护规则,几周后就被他们用一个 URL 编码的小技巧绕过了。
结果之一:FBI 自己的招聘网站被打穿,5000 多名 FBI 雇员的部门和专长信息外泄,负责维护该站点的承包商因为没打补丁被直接移除。
所以我的第一个判断是:明年的重点不是「哪个网站又被黑了」,而是「哪个替你保管证件的中间商还在裸奔」。
04
偷完之后的三种结局,第三种最麻烦
数据被拿走之后去哪了?就三条路。
1. 勒索。ShinyHunters 正在勒索波音去年剥离出去的业务单元 Jeppesen ForeFlight。
2. 挂牌。Nexus 这种就是典型,按条卖,支持预览,还带照片。
3. 反复转卖。一批数据在不同论坛之间倒手三五次,价格一路跌到白菜价,买家从职业骗子扩散到兼职骗子。
偷走之后被转卖——复制过的数据,赎金是买不回来的
有意思的是执法线也在动。Krebs 10 月 7 日披露:ShinyHunters 的头目、约旦安曼的少年「Rey」(Saif Al-din Khader)已被拘押并配合 FBI 指认同伙。讽刺的是,他勒索的那家波音子公司,造的正是他父亲所在的皇家约旦航空所用的机队。9 月 15 日,荷兰警方还抓了 24 岁的 Pepijn van der Stap。
抓人当然是好事,但请记住一个物理事实:数据被复制过,就没有「删除」这回事。头目落网,货架不会自动清空。这就是我下面这五个预判的出发点。
05
我对明年的五个预判
说清楚:这是预判,不是承诺。依据是过去两个月已经落地的事实,我把它往前推一年。
1. 「删除权」会从纸面变成没收令。今年 9 月,长期无视删除请求的数据经纪商 Radaris 输了官司——法官直接判它把 radaris.com 等十几个域名转移给原告。起作用的是新泽西州的 Daniel's Law:执法人员、政府人员和法官家属有权要求彻底删除,每条违规罚 1000 美元。这家公司此前还玩过虚构 CEO、马绍尔群岛空壳那一套。我判断明年会有更多地方照此办理;国内的《个人信息保护法》第四十七条本来就给了你删除权,缺的只是有人认真用。
2. 威胁指标从「泄露总量」换成「上新速度」。24 小时新增 40 万条,比「总共 1.53 亿条」更能说明问题——它意味着有一条活的进货管道。顺着这条管道看,头号目标会是做实名认证的、做招聘的、做人事的:这类系统天生要收证件照,收集即负债。
3. 勒索会让位给转卖。数据一旦被复制,赎金谈判的筹码就没了。ShinyHunters 一边勒索一边挂牌,两条腿走路。我判断明年会开始出现「泄露数据挂牌价」这样的公开指标,像查泄露邮箱一样被普通人查。
4. 「看起来合规」会被打穿。Mandiant 的规则被一个 URL 编码绕过、FBI 的承包商没打补丁就滚蛋——这两件事放在一起看:问题从来不是有没有措施,而是措施上次被验证是什么时候。我判断明年审计口径会往「可验证性」挪一格。
5. 普通人进入「自己管身份」的时代。冻结、别名邮箱、虚拟小号、最小留痕、主动发删除申请——今年这些还是安全从业者的习惯,我判断明年会像装反诈 App 一样普及。原因很简单:精准推销的下一步,就是精准诈骗。
06
两段脚本,把判断落到自己身上
光预测不给工具等于耍流氓。下面两个脚本都是我写完这篇顺手做的,只在本地读写文件、不联网,拷走就能跑。
第一个是骚扰台账。判断你的身份有没有被批发,最便宜的办法就是记录骚扰的密度和精度:
脚本一:identity\_exposure\_log.py —— 记骚扰台账,看你的信息是不是正在被转卖
!/usr/bin/env python3
-\- coding: utf-8 -\-
\"\"\"identity\_exposure\_log.py —— 骚扰台账:判断你的身份是不是正在被批量转卖
用法: add 来源 类型 备注 | report | demo 类型: call sms mail pretend
台账存本地 exposure\_log.json,不上传\"\"\"
import json, os, sys
from collections import Counter
from datetime import datetime, timedelta
LOG = os.path.join(os.path.dirname(os.path.abspath(\\_file\\_)), 'exposure\_log.json')
def load():
if os.path.exists(LOG):
with open(LOG, encoding='utf-8') as f:
return json.load(f)
return []
def save(rows):
with open(LOG, 'w', encoding='utf-8') as f:
json.dump(rows, f, ensure\_ascii=False, indent=1)
def add(args):
src, kind, note = (args + ['', '', ''])[:3]
rows = load()
rec = {
'ts': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
'source': src, 'kind': kind, 'note': note,
}
rows.append(rec)
save(rows)
print('已记录 [%s] %s %s %s' % (rec['ts'], src, kind, note))
def report(rows, title='骚扰台账分析'):
if not rows:
print('台账为空'); return
now = datetime.now()
print('== %s %s ==' % (title, now.strftime('%Y-%m-%d %H:%M:%S')))
print('总记录 %d 条,最早 %s,最新 %s' % (
len(rows), min(r['ts'] for r in rows), max(r['ts'] for r in rows)))
cut = (now - timedelta(days=7)).strftime('%Y-%m-%d')
week = [r for r in rows if r['ts'] >= cut]
print('近 7 天 %d 条,日均 %.1f 条' % (len(week), len(week) / 7.0))
by\_kind = Counter(r.get('kind', '?') for r in rows)
print('类型分布: ' + ' '.join('%s=%d' % kv for kv in by\_kind.most\_common()))
by\_src = Counter(r.get('source', '?') for r in rows)
print('来源前 3 : ' + ' '.join('%s=%d' % kv for kv in by\_src.most\_common(3)))
pretend = sum(1 for r in rows if r.get('kind') == 'pretend')
verdict = '高风险' if len(week) >= 10 or pretend >= 2 else ('中风险' if len(week) >= 4 else '低风险')
print('研判: %s —— %s' % (
verdict,
'信息疑似已被批发,建议立刻改密码+开两步验证' if verdict == '高风险'
else '保持台账,异常升温再处置' if verdict == '中风险'
else '目前平稳'))
day = Counter(r['ts'][:10] for r in rows)
top = day.most\_common(1)[0]
print('单日峰值: %s 共 %d 条' % top)
def main():
cmd = sys.argv[1] if len(sys.argv) > 1 else 'demo'
if cmd == 'add':
add(sys.argv[2:])
elif cmd == 'report':
report(load())
else:
ts = lambda d, h: (datetime.now() - timedelta(days=d, hours=h)).strftime('%Y-%m-%d %H:%M:%S')
demo = [
{'ts': ts(6, 2), 'source': '某贷款平台', 'kind': 'sms', 'note': '说我在该平台有 8 万额度'},
{'ts': ts(5, 5), 'source': '未知号码', 'kind': 'call', 'note': '冒充快递理赔'},
{'ts': ts(2, 1), 'source': '假公检法', 'kind': 'pretend', 'note': '能报出我的身份证后六位'},
{'ts': ts(0, 3), 'source': '某教育机构', 'kind': 'mail', 'note': '报出我孩子姓名的推销'},
]
report(demo, '演示数据分析')
if \\_name\\ == '\\main\\_':
main()
我用演示数据跑了一遍,注意每条记录都带完整时间戳,这是为了看趋势而不是看总量:
$ python3 identity\_exposure\_log.py demo
== 演示数据分析 2026-10-09 13:23:39 ==
总记录 4 条,最早 2026-10-03 11:23:39,最新 2026-10-09 10:23:39
近 7 天 4 条,日均 0.6 条
类型分布: sms=1 call=1 pretend=1 mail=1
来源前 3 : 某贷款平台=1 未知号码=1 假公检法=1
研判: 中风险 —— 保持台账,异常升温再处置
单日峰值: 2026-10-03 共 1 条
第二个是删除申请生成器。把站点名和姓名填进去,它会生成一份带法律依据的申请文本,并把复查时间点算好:
脚本二:removal\_request\_gen.py —— 生成个人信息删除申请 + 复查时间表
!/usr/bin/env python3
-\- coding: utf-8 -\-
\"\"\"removal\_request\_gen.py —— 生成数据经纪商删除申请 + 复查时间表(不联网)
用法: python3 removal\_request\_gen.py 站点名 你的姓名 [输出.txt]\"\"\"
import os, sys
from datetime import datetime, timedelta
TPL = \"\"\"【个人信息删除申请】致 {site} 数据处理负责人
申请时间: {now}
申请人: {name}
依据《个人信息保护法》第四十七条,本人要求贵司删除通过下列途径获取的本人个人信息:
姓名、身份证件号码、手机号、住址、职业及关联画像标签。
请在收到申请后十五个工作日内:
-
删除本人全部个人信息及画像标签,并停止对外提供;
-
向本人书面确认删除结果;
-
说明此前向第三方共享的对象清单。
如未在期限内处理,本人将向网信、市场监管部门投诉并保留诉讼权利。
\"\"\"
PLAN = \"\"\"【复查时间表】
发起: {t0}
第 1 次复查: {t1} (7 天后,看站点是否下线你的档案页)
第 2 次复查: {t2} (15 天后,未回复即投诉)
投诉模板留档: 12377 网络举报 / 12315 平台
\"\"\"
def gen(site, name, out=None):
now = datetime.now()
text = TPL.format(site=site, name=name, now=now.strftime('%Y-%m-%d %H:%M:%S'))
plan = PLAN.format(
t0=now.strftime('%Y-%m-%d %H:%M:%S'),
t1=(now + timedelta(days=7)).strftime('%Y-%m-%d %H:%M:%S'),
t2=(now + timedelta(days=15)).strftime('%Y-%m-%d %H:%M:%S'))
full = text + '\
' + plan
print(full)
if out:
with open(out, 'w', encoding='utf-8') as f:
f.write(full)
print('已保存 ->', os.path.abspath(out))
def main():
args = sys.argv[1:]
if not args or args[0] == 'demo':
gen('示例数据经纪商', '张三')
else:
site = args[0]
name = args[1] if len(args) > 1 else '你的姓名'
out = args[2] if len(args) > 2 else None
gen(site, name, out)
if \\_name\\ == '\\main\\_':
main()
$ python3 removal\_request\_gen.py demo
【个人信息删除申请】致 示例数据经纪商 数据处理负责人
申请时间: 2026-10-09 13:23:39 申请人: 张三
……(正文略)……
【复查时间表】
发起: 2026-10-09 13:23:39
第 1 次复查: 2026-10-16 13:23:39 (7 天后,看站点是否下线你的档案页)
第 2 次复查: 2026-10-24 13:23:39 (15 天后,未回复即投诉)
(提示:代码块用制表缩进显示,长按复制后如果编辑器报非法字符 U+00A0,把行首空格重打一遍就好。)
07
今年就该做的三件事,不分职业
如果你只记三件事,我建议是这三件。
1. 上传证件前停三秒。问一句:这一步是不是必须?能不能只传打码件?实名认证无可厚非,随手把证件照丢给来路不明的「审核」才是问题。
2. 把台账建起来。用脚本一记录推销、骚扰和冒充。台账的意义是让你比骗子更早发现异常——单日峰值突然翻倍,就该去改密码了。
3. 每年发两三次删除申请。用脚本二生成文本,发给那些能搜到你名字的人肉搜索站。Radaris 的域名是法官判走的,你的删除权也是要有人用,它才存在。
身份保护自查流程——顺序比速度重要
08
写在最后:删除权是打出来的,不是等来的
回到开头那张驾照。Krebs 的驾照被人挂出来当赠品,他做了什么?他把它写成了报道,FBI 立了案,两个月后头目落网。
我给明年的这五个预判,本质上只有一句话:数据被复制过之后,你能争取的不是「消失」,而是「不再对外提供」。这句话能走多远,取决于有多少人真的去用删除权、有多少法院真的去判、有多少中间商真的被打痛。
货架不会自己清空,但可以不再上新。
觉得有用?点个「在看」让更多人看到
紫禁玄科
专注网络安全 · 深度分析
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论