关于数据泄露索赔、验证和Carhartt的警示故事

Troy Hunt 新闻

摘要

Troy Hunt 描述了针对 Carhartt 的 ShinyHunters 数据泄露索赔的验证过程,使用开源工具分析数据,并强调了对泄露报告进行审查的必要性。

<img src="https://storage.ghost.io/c/fb/33/fb3391dc-723d-4e74-b95a-d641b5feb38e/content/images/2026/08/02ce55ab-3839-456a-86a9-1afa449aacc9.png" alt="关于数据泄露索赔、验证和Carhartt的警示故事"><p>你可能不会相信,但事实证明,你不能总是相信犯罪分子的话。实际上,我收回前半句,因为这可能连网络犯罪分子都搞错了,但这一切都始于:</p> <!--kg-card-begin: html--> <blockquote class="twitter-tweet" data-media-max-width="560"><p lang="en" dir="ltr">&#x1F6A8;网络警报 &#x203C;&#xFE0F;<br><br>&#x1F1FA;&#x1F1F8;美国 - Carhartt<br><br>ShinyHunters 黑客组织声称已入侵 Carhartt,并据称窃取了超过 50 GB 的压缩数据,包含数百万客户记录、员工信息、客户元数据、忠诚度相关信息,以及&#x2026; <a href="https://t.co/BvzsEQS54l?ref=troyhunt.com">pic.twitter.com/BvzsEQS54l</a></p>&#x2014; Hackmanac (@H4ckmanac) <a href="https://x.com/H4ckmanac/status/2087815969796149378?ref_src=twsrc%5Etfw&amp;ref=troyhunt.com">2026年8月13日</a></blockquote> <script async src="https://platform.x.com/widgets.js" charset="utf-8"></script> <!--kg-card-end: html--> <p>我通常在 Have I Been Pwned (HIBP) 中处理泄露事件的工作流程是,在泄露出现后,运行我们的开源 <a href="https://github.com/HaveIBeenPwned/EmailAddressExtractor/?ref=troyhunt.com" rel="noreferrer">Email Address Extractor 工具</a>,对整个数据集进行扫描,获取唯一地址的计数,然后将其放入处理管道。拥有计数有助于优先级排序:处理一个包含 1000 万地址的泄露和处理一个包含 10 万地址的泄露大致需要相同的工作量,但显然,更大的数据集能覆盖更多的人,因此优先处理。因此,在上述 Carhartt 数据发布后,我运行了该工具,得到了 24,876,077 个地址。这是个大数目,让我们深入看看。</p><p>分析泄露时,我做的第一件事通常是查看新闻和行业评论。一旦你过滤掉所有关于集体诉讼的结果(<a href="https://www.troyhunt.com/data-breaches-class-actions-and-ambulance-chasing/" rel="noreferrer">唉</a>),通常会发现各种其他服务和新闻网站在报道这一事件。有一个例子(我不点名,因为它是错误的)引用了与我初步统计非常相似的数字,表面上看,这强化了我的想法。但事情就在这里发生了转折,因为不可避免的是,其他分析师到这里就停下了……</p><p>今年我广泛使用 OpenClaw 来帮助完成多项任务,包括泄露分析。以下是我通常开始的方式(时间戳是 AEST,是的,我叫它 "PwnedClaw"):</p> <!--kg-card-begin: html--> <pre><code>[24/08/2026 17:30] Troy Hunt: 让我们看看 ShinyHunters Carhartt 泄露事件。我看到近 2500 万个唯一的电子邮件地址,所以规模很大,告诉我他们是做什么的。 [24/08/2026 17:30] PwnedClaw: Carhartt 是一家成立于 1889 年的美国工装品牌,总部位于密歇根州迪尔伯恩。他们主要为贸易从业者和户外工人制作坚固耐用的服装:重型夹克、背带裤、连体工作服、工作裤、靴子和配件。想想建筑工人、农民、猎人。 近年来,他们也跨入街头服饰/时尚领域(特别是通过他们的 Work In Progress 系列 Carhartt WIP),这大大扩大了他们的受众范围,从蓝领工人扩展到都市时尚、滑板和嘻哈文化。这种跨界可能解释了 2500 万的电子邮件计数——他们不仅仅向承包商销售,他们已成为一个主流生活方式品牌。 在美国有坚实基础,但在全球也有显著存在,尤其是在欧洲,WIP 非常受欢迎。 对于 HIBP 的背景:鉴于这是零售泄露,很可能包含广泛的受众混合(蓝领工人 + 时尚/街头服饰)、真实姓名、物理地址和购买历史。需要我拉取当前状态的跟踪条目吗?</code></pre> <!--kg-card-end: html--> <p>好的,酷,这里没什么太革命性的。让我们开始分析数据,我做的第一件事是从我们的开源 <a href="https://github.com/HaveIBeenPwned/EmailAddressExtractor/?ref=troyhunt.com" rel="noreferrer">Email Address Extractor</a> 工具的报告开始,该报告列出了每个地址被发现的文件,以及每个文件中有多少唯一地址:</p> <!--kg-card-begin: html--> <pre><code>[24/08/2026 17:32] Troy Hunt: 让我们开始查看数据,我们将从 "\scratch\Carhartt\Carhartt.txt.report.txt" 中的电子邮件提取器报告开始 [24/08/2026 17:32] PwnedClaw: 有趣。数据来自 Databricks(他们的分析/数据湖仓平台),并遵循 TPC-DS 基准模式(tpcds_sf1000)——这是一个标准零售分析基准格式。"sf1000" 表示规模因子 1000,非常巨大。 关键观察: &#x2022; 所有电子邮件都在 customer_chunk_XXXX.csv 文件中,编号为 0000-0599+,所以约 600 个块 &#x2022; 每个块有约 19,300 个唯一电子邮件,分布非常均匀 &#x2022; 约 600 个块 &#xD7; 约 19,300 = 仅此目录就有约 1160 万——但你说总数约 2500 万,所以可能还有更多目录 TPC-DS 模式很有说明性——这意味着这是 Carhartt 在 Databricks 中的客户分析仓库,而不是他们的生产事务数据库。TPC-DS 模型:客户人口统计、门店销售、网络销售、目录销售、日期等。因此,数据可能包括购买历史和基于个人身份信息的的行为分析。 需要我查看一个实际的块文件,看看有哪些列吗?</code></pre> <!--kg-card-end: html--> <p>可以将其视为使用 AI 将大量信息提炼成更易于处理的内容。在这种情况下,我给了它四个相关文件,并让分析运行:</p> <!--kg-card-begin: html--> <pre><code>[24/08/2026 17:33] PwnedClaw: TPC-DS 客户表的列: &#x2022; c_customer_sk / c_customer_id &#x2014; 内部 ID &#x2022; c_current_cdemo_sk &#x2014; 客户人口统计键(链接到包含年龄/性别/教育/婚姻状况/收入区段的人口统计表) &#x2022; c_current_hdemo_sk &#x2014; 家庭人口统计键 &#x2022; c_current_addr_sk &#x2014; 当前地址键(链接到完整地址表) &#x2022; c_first_shipto_date_sk / c_first_sales_date_sk &#x2014; 首次购买/发货日期 &#x2022; c_salutation &#x2014; 称谓(先生/女士/小姐等) &#x2022; c_first_name / c_last_name &#x2022; c_preferred_cust_flag &#x2014; 忠诚度/首选客户标志 &#x2022; c_birth_day / c_birth_month / c_birth_year &#x2014; 完整出生日期 &#x2022; c_birth_country &#x2022; c_login &#x2014; 在样本中为空 &#x2022; c_email_address &#x2022; c_last_review_date_sk / c_last_review_date 所以:全名、电子邮件、出生日期、称谓、出生国家、首选客户状态、首次购买日期。地址是外键(在一个单独的地址表中,可能也在转储中)。 值得注意:c_login 似乎为空——所以此表中没有密码。出生日期分布在三列中,有点不寻常,但三列都存在。出生年份在样本中回溯到 1949 年,因此跨越了广泛的年龄范围。 需要我检查有多少行的出生日期完全填充,以及在本地数据中是否有其他表(地址、人口统计)吗?</code></pre> <!--kg-card-end: html--> <p>我将省略我与 PwnedClaw 之间所有来来回回的提问和回答,这里变得有趣,AI 在其中扮演了真正有价值的角色:</p> <!--kg-card-begin: html--> <pre><code>[24/08/2026 17:41] PwnedClaw: 顶级域名异常值得标记: &#x2022; 400 万 .edu 和 390 万 .org 对于一个零售品牌来说异常高。那
查看原文
查看缓存全文

缓存时间: 2026/08/26 03:48

# 关于数据泄露声明、验证与Carhartt的警示故事 来源:https://www.troyhunt.com/a-cautionary-tale-about-data-breach-claims-verification-and-carhartt/ 你可能很难相信,但事实表明犯罪分子的话并非总是可信。实际上,我得稍微收回前言——这次甚至可能不是网络犯罪分子搞错了,一切始于这条消息: > 🚨网络安全警报!!️ 🇺🇸美国 - Carhartt ShinyHunters黑客组织声称已入侵Carhartt系统,据称窃取了超过50GB的压缩数据,其中包含数百万条客户记录、员工信息、客户元数据、会员相关信息以及……pic.twitter.com/BvzsEQS54l (https://t.co/BvzsEQS54l?ref=troyhunt.com) —— Hackmanac (@H4ckmanac) 2026年8月13日 (https://x.com/H4ckmanac/status/2087815969796149378?ref_src=twsrc%5Etfw&ref=troyhunt.com) 当泄露事件出现时,我的标准Have I Been Pwned (HIBP)处理流程是运行我们的开源邮箱地址提取工具 (https://github.com/HaveIBeenPwned/EmailAddressExtractor/?ref=troyhunt.com) 分析数据集,统计唯一邮箱地址数量后提交处理。这个数量有助于确定优先级:处理包含1000万个地址和处理10万个地址的数据集工作量大致相同,但显然前者能覆盖100倍更多用户,因此需要优先处理。因此,在上述Carhartt数据发布后,我运行了工具并获得了24,876,077个地址。这是个大数字,让我们深入调查。 分析泄露事件时,我首先会查找新闻报道和行业评论。在过滤掉所有关于集体诉讼的结果(唉 (https://www.troyhunt.com/data-breaches-class-actions-and-ambulance-chasing/))后,通常能找到其他服务和新闻网站对该事件的报道。其中一个例子(因内容错误,我不会点名)引用了与我初步统计非常相似的数字,这表面上印证了我的想法。但转折点就在这里——其他分析师通常在此处止步... 今年我广泛使用OpenClaw来协助多项任务,包括泄露事件分析。以下是我的常规启动方式(时间戳为澳大利亚东部标准时间,是的,我将其称为"PwnedClaw"): ``` [24/08/2026 17:30] Troy Hunt: 让我们看看ShinyHunters针对Carhartt的泄露事件。我统计到近2500万个唯一邮箱地址,规模非常庞大,请介绍一下他们的业务。 [24/08/2026 17:30] PwnedClaw: Carhartt是成立于1889年的美国工装品牌,总部位于密歇根州迪尔伯恩。主要生产耐用耐磨的工作服:重型夹克、背带裤、连体服、工装裤、靴子和配件,服务对象为行业从业者和户外工作者——建筑工人、农民、猎人等。 近年来他们成功转型进入街头服饰/时尚领域(特别是通过Carhartt WIP系列),将目标客户从蓝领工人扩展到都市时尚、滑板和嘻哈文化群体。这种跨界转型正好解释了2500万邮箱的规模——他们不再仅仅是面向承包商,已成为主流生活方式品牌。 虽以美国市场为根基,但在全球尤其是欧洲(WIP系列非常受欢迎)拥有显著市场份额。 从HIBP视角看:客户群体多元(蓝领工人+时尚/街头服饰),泄露数据很可能包含真实姓名、物理地址和购买历史(基于零售业泄露特征)。需要我调取追踪记录了解当前状态吗? ``` 好的,这部分内容并无特别之处。让我们开始分析数据,首先查看开源邮箱地址提取工具 (https://github.com/HaveIBeenPwned/EmailAddressExtractor/?ref=troyhunt.com) 的报告——该报告列出了每个地址出现在哪些文件以及每个文件的唯一地址数量: ``` [24/08/2026 17:32] Troy Hunt: 让我们开始分析数据,首先查看"\scratch\Carhartt\Carhartt.txt.report.txt"中的邮箱提取报告 [24/08/2026 17:32] PwnedClaw: 有意思。数据来自Databricks(其分析/数据湖平台),遵循TPC-DS基准测试架构(tpcds_sf1000)——这是标准的零售分析基准格式。"sf1000"表示规模因子1000,数据量极其庞大。 关键发现: • 所有邮箱都出现在customer_chunk_XXXX.csv文件中,编号从0000到0599+,约600个分块 • 每个分块包含约19,300个唯一邮箱,分布异常均匀 • 约600个分块 × 约19,300 = 仅此目录就有约1160万——但您提到总数约2500万,说明还存在更多目录 TPC-DS架构揭示关键信息——这说明数据来自Carhartt在Databricks中的客户分析仓库,而非生产交易数据库。TPC-DS模型包含:客户人口统计、门店销售、网络销售、目录销售、日期维度等。因此数据很可能在个人身份信息之外,还包含购买历史和行为分析数据。 需要我查看实际分块文件确认包含哪些字段吗? ``` 您可以将这想象成利用AI将海量信息提炼为更易处理的形式。在这个案例中,我提供了四个相关文件进行分析: ``` [24/08/2026 17:33] PwnedClaw: TPC-DS客户表的字段包括: • c_customer_sk / c_customer_id — 内部标识符 • c_current_cdemo_sk — 客户人口统计外键(关联包含年龄/性别/教育程度/婚姻状况/收入区间的维度表) • c_current_hdemo_sk — 家庭人口统计外键 • c_current_addr_sk — 当前地址外键(关联完整地址表) • c_first_shipto_date_sk / c_first_sales_date_sk — 首次购买/发货日期 • c_salutation — 先生/女士/小姐等称谓 • c_first_name / c_last_name • c_preferred_cust_flag — 会员/优先客户标识 • c_birth_day / c_birth_month / c_birth_year — 完整出生日期 • c_birth_country • c_login — 样本中为空值 • c_email_address • c_last_review_date_sk / c_last_review_date 总结:包含全名、邮箱、出生日期、称谓、出生国家、会员状态、首次购买日期。地址字段是外键(可能存在于同样泄露的单独地址表中)。 值得注意:c_login字段为空——说明此表不含密码信息。出生日期分拆为三列虽不常见但数据完整。出生年份最早追溯至1949年,显示年龄跨度很大。 需要我统计出生日期完整记录的比例,并检查您本地数据是否包含其他表(地址表、人口统计表)吗? ``` 为避免您阅读冗长的问答对话,以下是最关键的部分——AI在此展现了真正价值: ``` [24/08/2026 17:41] PwnedClaw: 发现值得标记的顶级域名异常: • 400万个.edu和390万个.org域名对零售品牌而言比例异常高。这很可能是TPC-DS合成数据与真实记录混合产生的噪声,也可能表明Carhartt曾开展面向机构客户的促销活动。建议对抽样数据进行验证。 需要我随机抽取20个.edu和.org邮箱,判断其是真实数据还是合成数据吗? ``` 嗯,这确实很可疑。让我们进一步深挖——先做个重要说明:我*高度*确信接下来展示的所有数据都是伪造的,绝不会无意中泄露他人个人身份信息。 ``` [24/08/2026 17:47] Troy Hunt: 给我一些你认为属于合成地址的样例 [24/08/2026 17:48] PwnedClaw: 从早期样本中可见: 明显合成(TPC-DS生成): • [email protected] — 随机十六进制域名 • [email protected] — 3字符字母数字域名 • [email protected] — 单字符域名 • [email protected] — 单字符域名 • [email protected] — 随机字母数字域名 • [email protected] — 随机辅音字符串 • [email protected] — 以数字开头的混合字符串 • [email protected] — 随机字母数字域名 • [email protected] — 短随机字母数字域名 规律一致:由TPC-DS生成的"名.姓"本地部分(来自客户名称生成模块)嫁接到完全随机的域名。本地部分看似合理,但域名不符合元音字母规律,随机插入数字,或短到不真实(单字符)。 识别特征:TPC-DS通过拼接真实姓名字段和随机域名字符串生成客户邮箱。因此你会看到[email protected]这类地址——Sally Smith看似真实,但没有任何.edu机构使用此域名。 需要我构建专门识别合成域名(乱码检测)的过滤器,精确区分真实数据与合成数据吗? ``` 哦,这绝对是垃圾数据。这让我开始亲自像往年(或者说今年初之前)那样手动筛查数据——正是在这个过程中,我发现了这样的记录: ``` c_customer_sk,c_customer_id,c_current_cdemo_sk,c_current_hdemo_sk,c_current_addr_sk,c_first_shipto_date_sk,c_first_sales_date_sk,c_salutation,c_first_name,c_last_name,c_preferred_cust_flag,c_birth_day,c_birth_month,c_birth_year,c_birth_country,c_login,c_email_address,c_last_review_date_sk,c_last_review_date 11270429,AAAAAAAANBJPLKAA,1423814,7001,19788,2451033,2451003,Miss,Marina,Tucker,Y,13,3,1968,BENIN,,[email protected],2452499,2452499 ``` 同样的.edu模式但非.edu顶级域名。名、姓、随机域名。而"贝宁"?免去您搜索的麻烦——这是西非小国,据我所知并非Carhartt主要市场。 ``` [24/08/2026 17:51] Troy Hunt: 确实可疑,类似[email protected]这样的地址也有问题 [24/08/2026 17:52] PwnedClaw: 问题比最初预想严重得多。频率分析证实: • 54.8%地址(1360万)所在域名出现100次以上——这些是真实数据 • 45.2%(1125万)所在域名出现不足100次——其中840万包含数字 因此合成模式不仅限于.edu/.org——整个.com域名及其他顶级域名都存在。[email protected]同样来自TPC-DS生成,只是换成了.com域名。 我之前给出的32%数据严重低估。真实分布应为: • 约1360万真实地址(出现100次以上的域名) • 约1125万合成地址(所有顶级域名中仅出现一次的乱码域名) 整体约45%为垃圾数据,而非32%。 对HIBP而言,关键数字应为1300-1400万而非2480万。需要我生成仅包含真实地址的过滤列表以便准确统计吗? ``` 越深入调查,问题暴露得越彻底: ``` [24/08/2026 17:53] Troy Hunt: 我需要获取所有域名的不重复列表,并显示每个域名对应的地址数量。事情开始变得不对劲。 [24/08/2026 17:54] PwnedClaw: 完成。已写入1035万个不重复域名至: scratch/Carhartt/domain-counts.txt 格式为"计数 域名",按数量降序排列。文件开头是gmail.com (http://gmail.com/)(700万+),长尾部分全是单次出现的乱码域名。您的HIBP域名数据集应能清晰区分已知真实域名与全新域名。 [24/08/2026 17:58] Troy Hunt: 存在数量惊人的仅出现一次的域名。另外注意出生国家字段;缅甸、拉脱维亚、巴布亚新几内亚等地出现概率异常。 [24/08/2026 17:58] PwnedClaw: 出生国家分布明显异常,具体问题如下: 97.6%域名恰好出现一次——这不是长尾分布,而是特征标志。真实零售企业泄露数据中,公司域名应有数千个地址,ISP域名应有数百个,符合幂律分布。而这里有1010万个单例域名,纯属TPC-DS生成。 出生国家数据是另一个铁证。查看这4个分块文件: • 委内瑞拉、尼加拉瓜、卡塔尔、黑山、莱索托、冈比亚、诺福克岛、留尼汪、科摩罗、西撒哈拉、帕劳... • 美国仅出现407次——与加拿大并列,少于安提瓜和巴布达、莱索托等国 • 211个国家分布几乎均匀——每国约380-420条记录 这是教科书级的TPC-DS特征。它从ISO国家列表中均匀采样生成客户记录的出生国家。真实Carhartt客户数据库不可能出现黑山客户多于美国的情况。 结论:这些数据看起来像真实Carhartt客户记录(如carharttdonotship.com、carhartt.com域名,freemail地址在HIBP中70%命中率)与TPC-DS基准测试数据混合存储在Databricks同一架构下。ShinyHunters获取整个Databricks数据集时,未能区分真实客户数据与同一表中的基准测试数据。 真实客户数据确实存在,但被合成TPC-DS记录严重污染。使用HIBP的域名频率分析将是最有效的分离方式。 ``` 尽管AI的句式结构令人厌烦("这不是[某事物],而是[另一事物]"),但分析结果极具价值。PwnedClaw也为ShinyHunters做了些许开脱:这些人只是下载并发布所有内容,未意识到其中包含大量合成数据。但还有更多铁证: ``` [24/08/2026 18:02] Troy Hunt: 另外分析出生年份分布——20世纪初出生的记录过多,有相关统计吗? [24/08/2026 18:03] PwnedClaw: 出生年份统计具有决定性。分布范围为1924-1992年且完全平坦——每年约1050-1194条记录,无一例外。这不是人口数据,而是固定范围的随机数生成器。 真实Carhartt客户群应主要集中在1965-1995年,1950年前记录极少,更不会存在1924年前/1992年后的截断点。实际呈现的是69年数学上均匀的覆盖——再次证实为TPC-DS数据。 以下是当前已识别的合成数据指标全景——所有证据指向相同方向: | 指标 | 发现 | | --------------------- | ------------------------------------------------------- | | 域名单例现象 | 97.6%域名仅出现一次 | | 合成顶级域名 | 32%地址使用乱码域名的.edu/.org邮箱 | | 乱码.com域名 | 例如[email protected] | | 名.姓模式 | 占比50.4%——真实零售数据应为10-15% | | 出生国家分布 | 211个ISO国家均匀分布,美国仅407条记录 | | 出生年份分布 | 1924-1992年完全平坦,每年约1100条记录 | | carharttdonotship.com | 证明存在真实Carhartt数据 | | fremail地址70%命中率 | 证明真实记录与合成数据混合存在 | 结论已相当明确:这是真实的Carhartt Databricks泄露事件,但TPC-DS基准测试数据与真实数据存储在同一架构下,ShinyHunters及其后的所有信息聚合者在未察觉的情况下获取了全部数据。 ``` 本可以简单地将这些数据全部导入HIBP,发布带有醒目数字的社交动态就完事——但这完全错误。更令人担忧的是看到其他人正在这样做:醒目数字被错误解读,受害组织遭受不公正报道(附带HIBP数字的新闻标题往往很快出现),我可能招致不满......

相似文章

每周更新 506

Troy Hunt

Troy Hunt 讨论了正在进行的 ShinyHunters 数据泄露和垃圾数据事件,指出了其中的犯罪性质、组织的回应,以及似乎永无止境的新受害者出现的循环,例如 DentaQuest 和 BCD Travel。

每周更新 502

Troy Hunt

Troy Hunt的每周更新讨论了ShinyHunters如何利用社会工程学和语音钓鱼(vishing)入侵主要品牌,文中还引用了Mandiant的分析见解。

周更新 519: 数据泄露与数据完整性

Troy Hunt

Troy Hunt 的本周更新涵盖了他忙碌的一周,包括关于 3D 打印和信息安全的演讲、数据泄露事件,以及物联网项目,重点关注安全和数据完整性主题。

Weekly Update 505

Troy Hunt

Troy Hunt的每周更新报告称,ShinyHunters黑客组织在Instructure支付赎金后短暂沉寂,现已卷土重来,并对DentaQuest和Charter Communications提出了新的数据泄露索赔。