打击爱读完觉得有帮助记得关注和点赞!!!
摘要 网络威胁情报(CTI)报告通常描述网络攻击中涉及的失陷指标(IoC),如IP地址、URL、文件哈希和加密货币钱包。这些IoC通常在非结构化的报告文本中被描述,或在报告末尾列出且缺少上下文,限制了其可用性。本文介绍了TagZilla,一个平台,给定一份威胁报告,它能自动分析其文本,并用关于该IoC所属的威胁组织和恶意软件家族的所有者上下文信息,以及与该IoC关联的滥用类型(例如,钓鱼、性勒索、命令与控制)来标记其所描述的IoC。TagZilla提供了一种新颖的基于LLM的方法,使用开放世界分类来为IoC分配所有者标签,并使用封闭世界分类来为IoC分配29种滥用类型标签。我们在一个手动生成的地面真实数据集上评估了TagZilla,该数据集包含100份威胁报告和1,534个指标,在所有者标记方面达到0.94的F1分数,在滥用类型标记方面达到0.93的F1分数。然后,我们将TagZilla应用于765份威胁报告,识别出属于637个恶意软件家族、113个威胁组织和162个其他实体的15,583个IoC。结果表明,即使在描述多个行为者和恶意软件家族的报告,TagZilla也能标记IoC,从而为这些实体生成IoC配置文件。
1 引言 由安全厂商、独立研究人员和事件响应团队撰写的网络威胁情报(CTI)报告提供了关于攻击活动、恶意软件家族以及参与网络攻击的威胁组织(或威胁行为者)的宝贵数据。此类威胁报告通常包含与恶意活动关联的失陷指标(IoC),如IP地址、URL、文件哈希、电子邮件地址和加密货币钱包。然而,这些IoC要么作为文本描述的一部分被提及,要么在威胁报告末尾列出且缺少上下文。为了使这些IoC具有可操作性,应该用诸如它们所属的威胁组织或恶意软件家族以及它们被用于的滥用类型(例如,钓鱼、性勒索、命令与控制)等上下文信息进行注释。此类额外上下文对于威胁共享平台(Thomas等,2016;Bouwman等,2022)的IoC接收者理解如何使用它们至关重要,也有助于构建可用于威胁归属、威胁狩猎、基础设施跟踪和跨活动自动关联的威胁组织配置文件(Ethembabaoglu等,2026;Saha等,2026)。
从威胁报告中提取IoC上下文是一个具有挑战性的问题。首先,威胁报告可能不仅包含IoC,还包含应被过滤的良性指标(Froudakis等,2025)。其次,报告通常描述多个威胁组织或恶意软件家族。例如,一份报告可能分析一次基于恶意软件的攻击,其中一台主机被一个投放器感染,该投放器下载了另外两个恶意软件样本。投放器和两个下载的样本可能属于不同的恶意软件家族(例如,由于按安装付费模式(Caballero等,2011))。因此,我们不能简单地为每份威胁报告手动分配一个威胁组织或恶意软件家族(如MITRE ATT&CK(MITRE,2025)和Malpedia(Fraunhofer FKIE,2026)等流行知识库所做的那样),并假设报告中的所有IoC都属于该实体。我们需要从报告级粒度转向每个IoC粒度。第三,恶意软件家族和威胁组织通常在不同报告中被赋予不同的名称,这些别名应该被规范化以进行有效的威胁情报共享。
为解决这些挑战,我们提出了TagZilla。给定一份威胁报告(以HTML、PDF、Word或纯文本文档形式发布),TagZilla输出报告中的IoC,每个IoC都带有所有者和滥用类型标签。所有者标签捕获拥有或控制IoC的威胁组织和恶意软件家族,将别名映射到相同的规范化实体标签。滥用类型标签捕获IoC被用于的恶意活动(例如,性勒索、加密劫持、投资诈骗)。此外,TagZilla丢弃威胁报告中不是IoC的指标(即,良性指标和正则表达式的误报),并按它们对应的工件类型(例如,文件哈希或证书哈希)对哈希(即MD5、SHA1、SHA256)进行分类。
TagZilla实现了一种新颖的基于LLM的方法,为每个IoC生成所有者和滥用类型标签。由于新的恶意软件家族和威胁组织不断出现,它使用开放世界分类生成所有者标签,为以前未知的实体创建新标签,并为现有实体重用标签。为实现别名到同一实体标签的规范化,它从Malpedia(Fraunhofer FKIE,2026)和MISP(33)公共知识库创建了一个实体数据库。对于生成滥用类型标签,它使用预定义的分层分类法实现封闭世界分类,该分类法涵盖29种流行的滥用类型,且易于扩展。为提高效率并最小化成本,TagZilla还实现了一个新颖的通用项识别模块,可以在不需要LLM查询的情况下识别大量的良性指标。
为评估TagZilla,我们生成了一个包含100份威胁报告的地面真实(GT)数据集,包含1,534个指标,其中每个IoC都被手动注释了所有者和滥用类型标签,良性和虚假指标也被相应标记。我们使用本地运行的各种开放模型在GT上评估TagZilla。使用gpt-oss-20b,TagZilla在所有者标记方面达到0.94的F1分数,在滥用类型标记方面达到0.93的F1分数,突显了所提出方法的准确性。TagZilla与模型无关。将其配置为使用商业前沿模型可能会进一步提高准确性,但会使我们的评估可重复性降低且成本更高。
我们将TagZilla应用于从三个公共数据集收集的765份威胁报告,包含20,239个候选指标:Malpedia(Fraunhofer FKIE,2026)、AnnoCTR(Lange等,2024)和PRISM(,2025)。TagZilla将15,583个(77.0%)候选指标标记为IoC,4,117个(20.3%)标记为良性,563个(2.8%)标记为无效指标。最常分配的滥用类型标签是命令与控制(占IoC的26.9%)、恶意软件分发(22.0%)和钓鱼(12.6%)。在15,583个IoC中,TagZilla为10,961个(70.3%)分配了所有者标签,其余属于很少分配威胁组织或恶意软件家族的滥用类型,如勒索、钓鱼和其他诈骗。带有所有者标签的10,961个IoC属于912个实体:113个威胁组织、637个恶意软件家族和162个其他实体。其中,473个(51.8%)实体不在原始实体数据库中。TagZilla允许创建威胁组织和恶意软件家族配置文件,捕获出现在不同报告中的实体的IoC。例如,它从14份威胁报告中识别出属于APT28的369个IoC,从8份报告中识别出与Emotet相关的189个IoC。
我们的贡献总结如下:
-
我们提出了TagZilla,一个CTI平台,给定一份威胁报告,自动标记报告中的IoC并赋予所有者和滥用类型标签。TagZilla提供了一个基于LLM的开放世界分类器用于分配所有者标签,以及一个基于LLM的封闭世界分类器用于分配29种滥用类型标签。
-
我们生成了一个包含100份威胁报告的地面真实数据集,包含1,534个指标,每个指标被标记为IoC或不是,且IoC被注释了从报告文本中提取的所有者和滥用类型标签。
-
我们开发了一个通用项过滤模块,以高效地移除正则表达式提取工具识别出的大量良性指标,而无需查询LLM。
-
我们在GT上评估了TagZilla,显示其在所有者标记方面达到0.94的F1分数,在滥用类型标记方面达到0.93的F1分数。我们将TagZilla应用于765份报告,其中它为属于912个实体的15,583个IoC分配了所有者标签。
2 问题定义 本工作的目标是,给定一份用自然语言编写的非结构化威胁报告(例如,以HTML网页、PDF或Word文档或纯文本形式发布),生成一份结构化报告,其中包含文档中存在的失陷指标(例如,域名、URL、加密货币地址),每个都附有所有者和滥用类型标签,为IoC提供上下文。
在本工作中,一个指标是具有指标类型和指标值(如(fqdn, malicious.com))的对。我们将指标类型分为四类:网络类(例如,IP地址、域名、URL)、联系类(即,电子邮件、TOX标识符)、工件哈希(例如,文件、证书)和不同区块链的地址(例如,比特币、以太坊)。指标可以是良性的或恶意的。例如,威胁报告中引用的域名可能属于受害者或攻击者。我们使用失陷指标(IoC)专指恶意指标。
2.1 所有权 指标的所有权可能是一个难以捉摸的概念,因为指标可能有多个所有者。例如,一个IP地址可被认为属于已由IANA委托处理该IP所属地址块的区域互联网注册管理机构(RIR);属于该RIR向其租赁包含该IP地址的子块的ISP或云托管提供商;或属于这些服务的客户端,租赁该IP地址以连接到互联网或托管云虚拟机。
我们考虑最细粒度的所有权,即所有者是租赁链末端的实体,它控制着指标如何被(滥)用。例如,对于IP地址,所有者是负责该IP地址如何使用的ISP或云托管提供商的客户端。
我们的重点是标记IoC(即恶意指标)。我们将IoC的所有者定义为在其恶意活动中使用该指标的威胁组织或恶意软件家族。由于威胁组织可能使用多个恶意软件家族,TagZilla可能为同一IoC同时输出威胁组织和恶意软件家族的所有者标签。例如,域名malicious.com可能被分配标签command_and_control、plugx和apt8,表示它是一个用于PlugX恶意软件、由威胁组织APT8使用的C2域名。
一些恶意活动如诈骗和勒索很少与威胁组织或恶意软件家族关联。相反,它们通常被聚类到归属未知的活动中。TagZilla不尝试为诈骗和勒索识别所有者。它将这些IoC注释为指定诈骗类型(例如,投资、技术支持)或勒索类型(例如,性勒索、DDoS)的滥用类型。接下来,我们详细说明本工作背景下不同指标类型的所有权。
域名。 域名的所有者通常是从域名注册商注册了顶级域的实体。然而,一些服务(例如,博客或网页构建器)在其顶级域下向第三方租赁子域(Silva等,2021;Ahmed等,2026)。对于子域租赁顶级域,顶级域的所有者是一项服务,但子域的所有者是该服务的用户。例如,blogspot.com属于Google的Blogger服务,TagZilla应将其视为良性。但其子域malicious.blogspot.com被租赁给Blogger的用户,可能属于恶意实体。
URL。 URL通常属于托管它的域名的所有者。然而,一些服务在其顶级域下托管用户上传的内容(Silva等,2021;Ahmed等,2026)。对于URL租赁顶级域,URL的所有者是该服务的用户。例如,https://github.com/ 属于GitHub,TagZilla应将其视为良性。但 https://github.com/SoomeUser/SomeRepo/file.exe 指向GitHub用户上传的内容,可能属于恶意实体。
IP地址。 IP地址的所有者是使用该IP地址访问互联网或托管内容的ISP或云托管提供商的客户端。
电子邮件。 电子邮件地址属于其域名的所有者,除非该域名属于电子邮件服务提供商(例如,gmail.com,protonmail.com),在这种情况下,所有者是电子邮件服务的用户。
区块链地址。 区块链地址可以由个人生成,也可以由向其用户租赁这些地址的服务生成。例如,加密货币交易所可以为每个用户提供一个服务控制的钱包,以便用户接收可在交易所兑现的币。对于服务提供的地址,我们认为所有者是服务分配该地址的用户。例如,如果勒索说明中包含交易所的比特币支付地址,我们认为所有者是勒索软件家族,而非交易所。
哈希。 对于工件哈希(例如,文件、证书),所有者是工件所属的威胁组织或恶意软件家族。
2.2 系统属性 TagZilla提供五个属性。给定一份威胁报告,TagZilla首先使用基于正则表达式的工具(Palo Alto Networks,2020;InQuest,2024;MaliciaLab,2023)识别报告中的候选指标。三个细化属性允许(R1)丢弃不是真实IoC的候选指标,即由于正则表达式错误导致的假阳性(FP);(R2)确定指标是IoC还是良性的;(R3)按它们对应的工件类型(例如,file.md5,certificate.sha1)对哈希(即md5、sha1、sha256)进行分类。
我们方法的核心是为IoC分配标签,捕获:(C1)谁拥有或控制指标(即,恶意软件家族、威胁组织),以及(C2)指标被用于什么类型的滥用(例如,勒索、诈骗、敲诈)。捕获指标的所有者(C1)需要一个开放世界分类,因为新的恶意软件家族和威胁组织不断出现。穷举列出所有可能的实体并保持任何此类列表最新是不可行的。相比之下,我们使用封闭世界分类和预定义的分层分类法来确定滥用类型(C2)。
表1:不同数据集中提及多个威胁组织或恶意软件家族的报告数量。
| misp-malpedia | 家族 | 17,489 | 3,223 (18.4%) | 14,266 (81.6%) | 51 |
| misp-threat-actor | 组织 | 2,857 | 136 (4.8%) | 2,721 (95.2%) | 24 |
| AnnoCTR | 组织&家族 | 120 | 83 (69.2%) | 16 (13.3%) | 18 |
2.3 每个IoC粒度 像Malpedia(Fraunhofer FKIE,2026)、MISP Threat Actors(32)和AnnoCTR(Lange等,2024)这样的数据集手动用报告中提到的恶意软件家族和威胁组织标记威胁报告。然而,如表1所示,同一份报告提及多个恶意软件家族和威胁组织是很常见的。例如,在Malpedia的17,489份与恶意软件相关的威胁报告中,3,223份(18.4%)提及多个恶意软件家族,有些报告最多提及51个恶意软件家族。在AnnoCTR中,提及多个恶意软件家族或威胁组织的报告比例达到69.2%,因为该数据集包含许多总结威胁生态系统的报告(例如,安全厂商的季度报告)。
报告标签不能分配给报告中提到的所有IoC,因为同一报告中的不同IoC可能属于不同的恶意软件家族或威胁组织。此外,威胁报告经常提及不属于威胁组织或恶意软件家族基础设施的良性指标。

图1:分析两个IoC(红色实线下划线)的威胁报告段落,它们与两个恶意软件家族(prospy, dracarys)和一个威胁组织(bitter)(黄色实心方块)相关。该段落还提及一个良性指标(红色虚线)与一个良性行为者(黄色虚线方块)相关,以及第二个IoC的滥用类型(圆角紫色方块)。 [图描述:一个文本段落,显示两个IoC(com-ae.net和youtubepremiumapp.com)被高亮,分别与ProSpy和Dracarys恶意软件家族以及BITTER APT组织关联。也提到了一个良性指标Hunt.io。]
TagZilla在IoC粒度上自动化标记过程,避免了将报告标签应用于其包含的所有指标时引入的错误。以图1中的段落为例,摘自一份威胁报告(Islamoglu和Albrecht,2026)。它提到两个IoC(com-ae[.]net, youtubepremiumapp[.]com)和一个良性指标(Hunt.io)。两个恶意域名都与BITTER APT威胁组织关联,但每个关联到不同的恶意软件家族(ProSpy, Dracarys)。该段落还提及一些良性实体如volrant136和Meta。TagZilla将输出三个指标。它将为IoC com-ae.net生成三个标签:malware_distribution捕获其滥用类型,prospy和bitter分别捕获恶意软件家族和威胁组织的所有权。类似地,它将为IoC youtubepremiumapp.com生成三个标签:command_and_control, dracarys,和bitter。最后,它将Hunt.io标记为notanioc以表示它是一个良性指标。

图2:TagZilla架构。灰色模块为本工作开发。 图描述:一个架构图,显示四个模块:指标提取(Indicator Extraction)、通用项过滤(Generics Filtering)、滥用标记(Abuse Tagging)、所有者标记(Owner Tagging)。输入是威胁报告,输出是带标记的IoC。
3 方法概述 图2总结了TagZilla的架构。给定一份威胁报告,它用滥用类型和所有者标签注释报告中的IoC。TagZilla包括四个模块:指标提取、通用项过滤、滥用标记和所有者标记。
指标提取模块从威胁报告文件中提取纯文本,该文件可能是HTML网页或PDF或Word文档,并使用iocsearcher指标提取工具(MaliciaLab,2023)识别文本中的指标。对于找到的每个指标,iocsearcher返回起始偏移量、指标值在文本中的显示形式(例如,test(AT)example(DOT)com)以及去混淆后的指标值(例如,test@example.com)。iocsearcher已被证明具有非常高的召回率(即低假阴性),但精确率较低(即假阳性),因为正则表达式偶尔会错误地识别指标(例如,将file.py识别为域名而非文件名),并且它们无法确定指标是良性的还是恶意的(Caballero等,2023;Froudakis等,2025)。
iocsearcher提取的指标经过通用项过滤模块,如第5.1节所述,该模块旨在在不分析文本的情况下过滤一部分良性指标。它识别的任何良性指标都不需要被标记,从而节省LLM查询并提高标记过程效率。
滥用标记模块(详见第5.2节)接收过滤后的指标并用滥用类型标签标记它们。该模块实现了一个基于LLM的封闭世界分类器,从预定义分类法中选择最佳标签,详见第4.2节。它首先将每个指标分为三类之一:iocsearcher的假阳性、良性指标(被通用项过滤模块遗漏)或IoC。此步骤满足要求R1(即,过滤无效IoC)和R2(即,将IoC与良性指标分开)。然后,它用滥用类型标记IoC,满足要求C2。对于哈希,它还确定哈希对应的IoC类型,满足要求R3。
所有者标记模块生成一组所有者标签,捕获拥有该指标的实体,分为三组:威胁组织、恶意软件家族和其他(例如,个人、国家),满足要求C1。该模块包括两个步骤,详见第5.3节。首先,它以开放世界的方式查询LLM以提议一个或多个所有者名称,即不约束模型可能输出的名称。如果LLM输出一个所有者名称,额外的细化步骤将同一实体的别名规范化。为此,该模块在预生成的实体数据库(DB)中搜索相似的实体名称,该数据库包含流行的恶意软件家族和威胁组织及其别名,详见第4.1节。其次,它查询LLM以检查提议的名称是否对应任何候选实体。如果是,则分配已知实体标签。否则,它为提议的名称创建一个标签,并将一个新实体添加到实体DB中。
4 数据集与标签 表2:用于构建实体数据库的来源。
| misp-malpedia (30) | 3,683 | – |
| misp-ransomware (31) | 2,095 | – |
| misp-threat-actor (32) | – | 979 |
| 全部 | 5,778 | 979 |
4.1 实体数据库 为IoC分配所有者标签时的一个挑战是,一个实体可能被使用不同的别名来指代。一些别名在语法上相似(例如,Lazarus和Lazarus Group),但其他则不同(例如,Killdisk, Sandworm)。
为避免为同一实体创建不同标签,我们创建了一个包含流行恶意软件家族和威胁组织及其别名的实体DB。实体DB中的每个条目是一个实体对象,包含一个唯一规范名称、一组别名,以及关于实体的可选信息,如其类型(例如,恶意软件家族或威胁组织)、实体的文本描述或实体参与的滥用类型。规范名称是一个文本唯一标识符(例如,lazarus),使用有限的字符集(即小写、下划线、句点)。规范名称用作实体的标签。
为构建实体DB,我们利用表2中的来源。我们从MISP开源威胁情报平台(33)获取恶意软件家族和威胁组织。MISP包含由不同组织贡献的实体列表(称为集群)。我们使用三个频繁更新的MISP集群:misp-malpedia,由Malpedia(Fraunhofer FKIE,2026)管理员维护,包含该知识库中的恶意软件家族;以及misp-ransomware和misp-threat-actor,两者均由MISP管理员维护,分别包含流行的勒索软件和威胁组织。这些集群中的实体包含别名。Malpedia没有自己的威胁组织知识库,而是使用misp-threat-actor。
搜索功能。 实体DB提供三个搜索功能,给定一个名称字符串,检查DB中是否存在具有该规范名称、别名或其他相似名称的实体。search_entity函数返回具有给定规范名称的实体,如果输入不是规范名称则返回NULL。search_alias函数检查给定字符串是否是DB中任何实体的已知别名。同一个别名可能被用来指代MISP和Malpedia中的多个实体。此函数不尝试解决此类冲突。相反,它返回具有该别名的DB中所有实体的列表,如果别名未知则返回空列表。最后,search_k_similar函数执行k近邻搜索,返回名称(即规范名称或别名)与输入字符串最相似的k个实体。此搜索使用Sørensen-Dice系数计算输入字符串与实体DB中每个名称之间的相似度(Sørensen,1948;Dice,1945),并返回前k个最相似名称对应的实体。为加速搜索,实体DB中规范标签和别名的双元组被预计算并索引。搜索首先选择实体DB中与输入字符串共享至少一个双元组的名称。相似度分数仅在输入字符串与此候选名称子集之间计算,大大减少了搜索时间。候选按相似度降序排序,选择前k个候选。返回所选候选对应的实体对象集。如果实体DB中与提议标签共享至少一个双元组的名称少于k个,或如果多个选中的候选名称是同一实体的别名,则可能返回少于k个实体。
不完整性。 没有实体DB可以是完整的,因为新的恶意软件家族和威胁组织不断出现。当TagZilla识别出一个以前未知的实体时,该实体被添加到实体DB中,并可以贡献回原始的MISP集群。

(图3a:滥用类型)
(图3b:恶意软件类型)
(图3c:IoC类型)
(图3d:所有者类型) 图3:使用的标签。粗体标签是在GT生成期间引入的。
4.2 地面真实与标签 为评估TagZilla,我们需要一个威胁报告的地面真实(GT)数据集,其中报告中的每个IoC都被分配了滥用、所有者和指标类型标签。不存在这样的GT,因此我们创建了它。
为生成GT,我们首先从各种来源收集了96份包含恶意软件和网络犯罪操作分析的威胁报告,包括安全厂商的网站(例如,ESET(11)、Cisco(8))、独立研究员的博客(例如,Crypto-Ransomware Digest(47))和网络安全新闻媒体(例如,BleepingComputer(3))。我们还包含了来自与网络犯罪无关的区块链相关博客的4份报告。这些报告只包含良性指标(即没有IoC),对于评估潜在的TagZilla误报很有用。这100份报告跨越十年(2016-2026),包含iocsearcher识别的1,534个候选指标。
然后,我们创建了滥用类型和指标类型的初始分类法。对于滥用类型,我们从Gomez等人(Gomez等,2025)提出的分类法开始。对于IoC类型,我们从iocsearcher支持的类型开始,增加了哈希识别的常见工件的额外类型(例如,文件、证书、区块链交易)。分类法如图3(a)和3(c)所示,初始分类法中的标签是非粗体的。分类法是分层的,更深的层级捕获更具体的类型。此设计适应可能的不完整性并便于扩展。这对于滥用类型尤其重要,因为任何滥用分类法必然是不完整的,因为网络犯罪分子经常引入新的滥用类型。例如,如果一份威胁报告指的是一种诈骗类型,未被图3(a)中的7个诈骗子类型捕获,则使用父标签scam表示它是另一种类型的诈骗。
两位分析师审查了100份报告,标记每个指标。分析师被告知仅基于文本进行标记。他们应首先将指标分类为iocsearcher的假阳性(notanioc)、良性指标(notabuse)和IoC(abuse)。然后,他们应使用初始滥用类型和指标类型分类法以及实体DB中的标签来标记IoC。如果现有标签不足,允许分析师提议新标签(例如,对于新的滥用类型和所有者)。在标记报告后,分析师讨论了分歧直至达成共识,并规范化了新标签的名称。
在GT构建期间,分析师向实体DB添加了34个新所有者,并添加了11种新的滥用类型。他们还概括了一种滥用类型,并移除了两种被认为捕获技术而非滥用类型的类型。新的滥用类型在图3(a)中以粗体显示。它们包括两种诈骗类型(技术支持、钓鱼)、在网页中注入JavaScript代码以窃取加密货币的恶意软件(web_skimming),以及用于恶意软件分发、漏洞扫描、勒索软件基础设施、网络战、数据外泄和命令与控制(c2)的网络指标。后者的一个特例是用于信号新命令与控制域名或IP地址的区块链地址(blockchain_signaling)。
在GT的1,534个指标中,1,310个(85.4%)是IoC(abuse),192个(12.5%)是良性的(notabuse),32个(2.1%)是iocsearcher的假阳性(notanioc)。最常见的良性指标是域名和URL。良性域名可能是非常流行的(例如,avast.io, bitcoin.org),但也可能不那么流行(例如,ecos.am,一个Tranco排名为428,857的加密货币矿池(Le Pochat等,2019))。一个良性URL的示例是https://www.torproject.org/download/。最常见的iocsearcher假阳性是被错误识别为域名的文件名(例如,file.py, archive.zip)。另一种常见情况是文件路径被误分类为URL,例如,iocsearcher将transmission.app/Content/MacOS/Transmission识别为URL,但它是transmission.app移动应用内的一个文件。
在GT的100份报告中,18份包含来自多个所有者的IoC。这些说明了TagZilla的必要性,因为我们不能简单地将报告中的所有IoC分配给单个实体。相反,这些报告需要细粒度的、每个IoC的处理。最常见的IoC类型、滥用类型和所有者如表3所示。
表3:GT中前10名所有者、滥用和IoC类型。
| rtm | 83 | giveaway | 388 | fqdn | 403 |
| xbash | 52 | notabuse | 183 | btc | 304 |
| iron-group | 52 | command_and_control | 180 | sha256 | 199 |
| protonbot | 43 | ransom | 121 | url | 160 |
| glad0ff | 43 | ransomware | 106 | ip4 | 121 |
| speakup | 38 | clipping | 68 | eth | 108 |
| xanthe-elf | 33 | malware_distribution | 47 | sha1 | 79 |
| rocke | 32 | cryptojacker | 41 | md5 | 62 |
| combojack | 30 | clipper | 36 | 45 | |
| apt29 | 28 | fake_marketplace | 34 | doge | 35 |
5 TagZilla 本节详细介绍TagZilla的主要组件,这些组件已在第3节中介绍。
5.1 通用项过滤 通用项过滤模块高效地识别一部分良性指标(称为通用项),并将它们标记为notabuse。这允许跳过对这些非IoC指标的基于LLM的标记模块,提高了TagZilla的效率。该过滤基于黑名单,不利用报告的文本。因此,有些良性指标它无法识别。例如,它可以识别流行域名是良性指标,但无法为不太流行的良性域名确定相同结论。它也无法识别iocsearcher的假阳性,如被错误识别为域名的文件名(例如,attachments.zip)。此模块遗漏的良性指标和iocsearcher假阳性将在稍后被滥用标记模块利用报告上下文识别。
一个指标是否为通用项的决定针对每种指标类型,如下所述。
顶级域。 如果满足以下至少一个约束,则顶级域是通用项:(1)出现在公共后缀列表(PSL)的公共部分(Mozilla,2026);(2)出现在Tranco Top 100K域名流行度列表(Le Pochat等,2019);(3)出现在3,791个电子邮件提供商的公共列表(ammarshah,2022);或(4)出现在Ahmed等人(Ahmed等,2026)生成的6,637个子域租赁和1,832个URL租赁顶级域列表中。
FQDN。 如果其顶级域是通用项且不租赁子域,或者其顶级域租赁子域但FQDN不包含子域或子域是www,则完全合格域名(FQDN)是通用项。
URL。 如果URL包含主机名(而非IP地址)且主机名的顶级域满足以下约束之一,则是通用项:(1)出现在250个安全厂商拥有的域名列表中;(2)租赁URL且URL没有路径;或(3)是通用顶级域。
IPv4。 如果IPv4地址属于私有范围(例如,10.0.0.0/8)、是多播地址,或在93个公共DNS解析器地址列表中,则是通用项。
电子邮件。 如果电子邮件包含13个通用用户名之一(例如,nobody, noemail),或者不属于电子邮件提供商且主机名是通用FQDN,则是通用项。
其他指标类型(即,哈希和区块链地址)被视为非通用项。
5.2 滥用标记 滥用标记模块接收使用iocsearcher从威胁报告中提取的指标,过滤掉不是IoC的指标,并用滥用类型标签标记IoC。它满足了第2节中五个要求中的四个:丢弃虚假指标(R1)、区分良性和恶意指标(R2)、细化哈希的IoC类型(R3)以及分配滥用类型标签(C2)。
该模块实现了一个基于LLM的分类器,遵循Gomez等人(Gomez等,2025)提出的自顶向下设计。虽然他们的分类器仅支持区块链地址的滥用类型,但我们的分类器支持更广泛的指标类型(即,联系、哈希、网络、支付),识别虚假指标,并细化哈希捕获的指标类型。
作为准备步骤,我们为图3(a)中的每种滥用类型编写了文本定义。这些定义用于强制LLM按我们意图的方式解释标签。它们防止LLM使用其训练数据解释标签。这至关重要,因为滥用类型(例如,诈骗、敲诈)在不同来源中通常有不同的定义,引入可能混淆LLM的冲突定义。
{提示}
[滥用类型]
你是一名网络安全专家,在网络和软件安全方面拥有广泛的知识,包括恶意软件、加密货币诈骗、高级持续性威胁组织和其他在线滥用等主题。你将帮助我分类威胁报告中出现的失陷指标(IOC)(即,加密货币地址、IP、域名、哈希等),完全基于给定TEXT的内容。
-
仅使用TEXT中的信息。不使用外部知识。
-
不要推断超出明确陈述的内容。
-
不要仅基于相似性、推测或历史关联进行分类。 以下是滥用类别的定义列表。仔细阅读列表,并根据TEXT中的上下文,通过回答给定的QUESTION来分类给定的IOC。
QUESTION
给定上面的定义列表,使用其上下文(从字符{}开始,在TEXT内)将IOC {}(IOC类型为{})分类为以下类别之一:{}。仅用清晰匹配这些定义之一的类别名称回答,并通过填写以下JSON结构来证明你的答案:{"answer": "", "reasoning": ""}
图4:滥用类型提示。 花括号中的变量被替换为标签定义、描述文本、IoC值、IoC类型、IoC在文本中的位置以及可能输出的标签列表。
分类器遍历滥用类型分类法,如图3(a)所示,从顶部到底部。在每一层,它使用图4中的提示查询LLM。提示包含报告文本、指标的位置、类型和值、可以输出的标签及其相应定义的变量。查询之间的区别在于,在每一层,分类器在提示中包含不同的标签和定义集。当前层可能的输出标签取决于前一层分类的结果。例如,如果LLM在第二层(L2)分类中输出extortion,则五个敲诈子类型(例如,sextortion, reputation)的定义用于第三层(L3)分类的提示中。除了子标签外,提示中还包含一个额外的other标签。当没有一个子标签适用时,由LLM分配此标签。使用提示查询LLM,过程迭代直到输出为other,在这种情况下输出标签是前一层的标签,或者没有更多的分类法层级可遍历,在这种情况下输出标签是最后一层的标签。除了分配的标签外,输出还包括模型的推理。
作为上述过程的优化,对于每个顶级指标类型组(即,网络、哈希、联系、区块链、支付),我们准备了一个独立的滥用类型分类法,它是图3(a)的子集,其中不适用于该组的标签已被移除。例如,malware_distribution和vulnerability_scanning仅包含在网络指标的分类法中。这限制了LLM需要推理的选项,提高了准确性,并减少了查询的大小,降低了分类成本。使用的分类法详见附录中的图5-8。
5.3 所有者标记 所有者标记模块生成一组所有者标签,捕获控制IoC的实体,满足要求C1。并非每个IoC都被分配所有者。滥用类型为勒索(extortion)或诈骗(scam)或其任何子类型(图3)的IoC不被分配所有者,因为这些类型的滥用不直接与恶意软件家族或威胁组织关联。例外是投资诈骗(investment scams),其所有者可能是提供投资的恶意公司或个人,而非恶意软件家族或威胁组织。
所有者标记包括两个步骤。首先,以开放世界方式查询LLM以提议一组所有者名称,即不约束模型可能输出的名称。其次,细化步骤尝试为每个提议的名称在实体DB中识别对应的实体,考虑已知别名。如果找到实体,其规范名称用作标签。否则,创建新标签。接下来我们详述这两个步骤。
所有者识别。 为识别所有者,TagZilla使用思维链提示。提示首先定义我们对所有权的含义。然后,它包含一组必须遵循的规则,旨在通过强制模型基于文本推理而不是仅依赖其训练知识来最小化推测和幻觉。规则还详细说明了一些应被忽略的实体,因为它们虽然可能被视为IoC的所有者,但实际上并不控制IoC的使用方式,因为它们已将其租赁给其他实体以换取费用,例如托管提供商和域名注册商。接下来,提示说明该任务应通过执行两个操作来解决。首先,模型应识别控制指标的实体类型,包括以下五种类型之一:malware_family, threat_group, individual, organization,和government。然后,它请求模型根据其类型识别所有者的名称,解释如果无法识别所有者,应返回unknown,如果存在多个同等可能的所有者,应返回包含所有所有者的列表。提示还约束所提供名称的格式,仅使用小写字符、数字、连字符、下划线、点和空格。最后,它要求以JSON格式输出所得所有者并包含推理。在图1的示例中,TagZilla为域名com-ae.net提议了两个候选所有者标签:恶意软件家族prospy和威胁组织bitter apt。
所有者细化。 所有者细化的目标是检查LLM提议的名称是否可能对应于实体DB中已存在的实体。为此,它需要检查LLM是否可能为现有实体提议了别名。如果是,应重用现有实体的标签(即规范名称),避免为同一实体创建多个标签。
所有者细化首先使用所有者识别中获得的类型将提议的名称分为三组:威胁组织、恶意软件家族和其他所有者,后者包括个人、组织和政府类型。然后,对于这三组中的每一组,它迭代LLM提议的名称,搜索该名称是否已作为规范名称(使用search_entity函数)或作为别名(使用search_alias函数)存在于实体DB中。在我们的示例中,当处理com-ae.net时,prospy和bitter apt都不是实体DB中的规范名称或已知别名。如果这两个搜索失败,它使用search_k_similar函数尝试在实体DB中识别相似的规范名称或别名。如第4.1节所述,此函数最多返回k个,但可能更少的候选实体。如果未返回候选实体,则LLM提议的名称作为新标签输出。如果返回单个候选,则该候选的规范名称用作标签。最后,如果相似性搜索输出多个候选,TagZilla通过使用细化提示查询LLM来选择提议名称和这些候选中的最佳者。在我们的示例中,相似性搜索未找到prospy的候选,因此创建一个以该名称为规范名称的新实体并用作标签。对于提议的bitter apt名称,相似性搜索找到两个候选:威胁组织bitter和恶意软件家族bitter-rat。调用LLM来决定这两个候选哪个最匹配提议的名称。
细化提示包括格式化为其IoC类型的IoC、LLM在所有者识别步骤中提议的标签及其选择它的推理,以及候选实体。通过包含LLM在所有者识别步骤中提供的推理,我们强制LLM对候选进行推理,而不是简单地选择语法相似度最高的候选。LLM可能选择最匹配的候选,在这种情况下,该候选的规范名称用作标签。或者,它可能决定没有候选是好的匹配。在这种情况下,创建一个新实体,其规范名称为LLM提议的名称,提议的名称用作标签。在我们的示例中,LLM选择bitter作为bitter apt的最佳匹配,重用现有标签。
6 评估 本节评估TagZilla。第6.1节首先展示在GT上的准确性结果。然后,第6.2节展示应用TagZilla标记新报告的结果。
6.1 准确性评估 我们首先使用第4.2节构建的GT评估TagZilla生成滥用类型和所有者标签的准确性。我们使用四个开放模型系列测试了TagZilla:OpenAI的gpt-oss(20b)、Google的gemma4-e(4b)、DeepSeek R1(5b、7b、32b)和Qwen 3.5(4b、9b、27b)。然而,DeepSeek R1和Qwen 3.5模型经常无法输出格式正确的JSON,或者在我们的Debian服务器上运行太慢,该服务器配备NVIDIA A100 GPU(40GB vRAM)、256 GB RAM和64个CPU。因此,我们仅展示两个模型的结果:OpenAI的gpt-oss-20b和Google的gemma4-e4b。
我们将标记模块作为多类分类器评估。我们首先计算每个类别的精确率、召回率和F1分数(一对多)。然后,计算每个指标的加权平均值,其中每个类别按类别中的样本数加权。我们使用严格的准确性视图,仅当TagZilla输出的标签恰好是GT中该IoC的标签之一时才视为真阳性(TP)。例如,如果GT显示sextortion而TagZilla输出父标签extortion,我们将其视为错误。
表4:在GT上使用所有四层时的每层滥用类型标记准确性和最终准确性。
| gpt-oss-20b | L1 | 0.99 | 0.99 | 0.99 |
| gemma4-e4b | L1 | 0.97 | 0.97 | 0.97 |
| gpt-oss-20b | L2 | 0.96 | 0.95 | 0.95 |
| gemma4-e4b | L2 | 0.91 | 0.84 | 0.87 |
| gpt-oss-20b | L3 | 0.96 | 0.94 | 0.95 |
| gemma4-e4b | L3 | 0.90 | 0.77 | 0.81 |
| gpt-oss-20b | 全部 | 0.94 | 0.93 | 0.93 |
| gemma4-e4b | 全部 | 0.87 | 0.72 | 0.76 |
滥用类型标记。 表4总结了TagZilla的滥用标记准确性,以及四个分类法层级中每一层的准确性。使用gpt-oss-20b模型时达到了最佳的TagZilla准确性。使用该模型,TagZilla实现了0.94的滥用标记精确率、0.93的召回率和0.93的F1分数。相比之下,使用gemma4-e4b时,所有指标都较低,实现了0.87的精确率、0.72的召回率和0.76的F1分数。
对于每层结果,我们允许TagZilla仅输出该层的滥用类型。例如,在L1,TagZilla仅分配abuse、notabuse和notanioc标签。结果表明gpt-oss-20b在所有层级上都优于gemma4-e4b,并且无论模型如何,准确性随着分类变得更细粒度而降低。例如,使用gpt-oss-20b时,F1分数在L1为0.99,L2为0.95,L3为0.95,最后在使用所有四层时为0.93。这是因为错误累积,即上层错误无法在下层纠正。
附录中的图9显示了使用gpt-oss-20b时滥用类型标签的混淆矩阵。我们观察到三个常见的错误来源。第一种情况是将giveaway区块链IoC误分类为unauthwithdrawal(20例)和将钓鱼网络IoC误分类为giveaway(13例)。单个报告(13)包含10个被错误分类的比特币地址,LLM的推理指出这些比特币地址被用于接收来自赠品计划的被盗资金,即使推理也指出“受害者自愿发送资金以使其翻倍”。LLM未能推理出资金并非未经授权提取,并错误地得出结论“这是未经授权的资金提取”。尽管如此,两种错误类型仅影响367个giveaway IoC中的不到9%。第二种常见情况是将malware_distribution网络IoC识别为command_and_control(5例)和相反情况(4例)。我们意图malware_distribution仅捕获第一个恶意软件样本(感染受害者主机的那个)的分发,任何后续恶意软件下载都被标记为来自命令与控制服务器。但这个区别似乎太微妙了。另一种选择可能是将malware_distribution作为command_and_control的子类型。第三种情况是在malware_sample下分配的恶意软件类别之间存在差异。在其中一些情况下,分析师为同一恶意软件家族的不同恶意文件分配了相同的滥用类型(例如,ransomware),但这些文件实现了不同的组件(例如,downloader, infostealer)。然而,LLM试图使分类更细粒度,例如,指出一些勒索软件组件是下载器。
表5:在GT上的所有者标记准确性。
| gpt-oss-20b | 0.95 | 0.94 | 0.94 |
| gemma4-e4b | 0.79 | 0.76 | 0.73 |
所有者标记。 表5总结了TagZilla生成所有者标签时的准确性。由于对于某些滥用类型(即敲诈和诈骗)的IoC跳过了所有者标记,我们仅当滥用类型正确且TagZilla分配的所有者标签与GT中的非空交集时才认为分配的所有者标签正确。同样,使用gpt-oss-20b达到了最佳准确性,实现了0.95的精确率、0.94的召回率和0.94的F1分数,而使用gemma4-e4b时为0.79的精确率、0.76的召回率和0.73的F1分数。
在进行所有者标记的838个IoC中,784个(93.6%)被分配了所有者。对于其他54个(6.4%),LLM返回“unknown”。大多数假阴性来自LLM仅为部分IoC提取了所有者的报告,尽管多个IoC可能共享相同的上下文(即,是同一表的一部分),这可能是由于LLM的非确定性性质导致的不一致问题。
在假阳性中,最常见的情况是报告中出现的文件哈希带有AV引擎分配给样本的标签,例如Win32/TrojanDownloader.Banload.YJD。LLM倾向于将此标签输出为恶意软件家族,而分析师倾向于向GT添加更具体的家族名称(例如,casbaneiro)。虽然AV标签可能包含家族名称,但它们通常包含与家族无关的其他信息(例如,Win32、TrojanDownloader、YJD),恶意软件标记工具可以过滤这些信息(Sebastián等,2016)。将这些工具集成到TagZilla中是未来工作的一个可能方向。
表6:消融结果,比较使用gpt-oss-20b的TagZilla与移除通用项识别和所有者规范化步骤的版本的准确性。
| 精确率 | 召回率 | F1 | 精确率 | 召回率 | F1 | |
| TagZilla | 0.94 | 0.93 | 0.93 | 0.94 | 0.93 | 0.93 |
| 无通用项 | 0.94 | 0.92 | 0.92 | 0.94 | 0.93 | 0.93 |
| 无所有者规范化 | 0.94 | 0.93 | 0.93 | 0.85 | 0.81 | 0.82 |
消融研究。 我们评估了移除TagZilla不同组件的影响,特别是通用项识别和所有者规范化模块。表6总结了消融研究结果。移除通用项识别模块将滥用标记F1分数从0.93降至0.92。此版本的TagZilla使用LLM对iocsearcher输出的每个指标进行分类,使整个流水线运行更慢,因为它为更多指标查询LLM(即,通用项模块过滤了GT中所有指标的9.6%),而且准确性也更低。这是因为被通用项识别模块正确识别为良性的指标被LLM错误地分类为IoC。例如,域名download.cnet.com被通用项模块正确识别为良性。而不使用通用项模块时,LLM推理出“download.cnet.com托管了特洛伊化的应用程序,这些应用程序窃取比特币;该域名被用作恶意软件的分发点,这是明确的滥用实例”,使该域名被错误地视为IoC。
当移除所有者规范化模块时,所有者标记F1分数从0.93降至0.82。这是因为LLM输出的原始所有者标签可能是别名,如msil_clipbanker_df而非clipbanker,或redaman而非rtm。
表7:在PRISM数据集(Froudakis等,2025)上仅使用通用项模块、仅使用gpt-oss-20b以及同时使用两者的第一层(abuse、notabuse)分类结果。对于此实验,notanioc被视为notabuse的一部分。
| 仅通用项 | 0.98 | 0.55 | 0.70 | – |
| 仅LLM L1 | 0.98 | 0.98 | 0.98 | 1,475 |
| 通用项 + LLM L1 | 0.98 | 0.98 | 0.98 | 1,274 |
L1分类准确性。 我们还评估了顶级(L1)分类的准确性,这对整体准确性至关重要,因为错误会累积。Froudakis等人(Froudakis等,2025)最近发布了PRISM数据集,包含从50份威胁报告中提取的1,746个指标,每个指标被标记为IoC或不是。表7显示了在PRISM数据集上使用以下方法时的L1分类准确性:仅使用通用项模块、仅使用gpt-oss-20b的L1提示,以及同时使用两者。由于PRISM不区分notanioc,在此实验中我们将该标签视为notabuse。
通用项识别模块实现了0.98的精确率、0.55的召回率和0.70的F1分数。极高的精确率(0.98)验证了TagZilla使用通用项模块来减少LLM查询数量的做法。只有四个指标被标记为潜在的假阳性。手动检查显示其中两个确实是我们的模块的假阳性,原因是只在某些路径(即https://discord.com/api/webhooks/<WEBHOOK>)或子域(即https://graph.microsoft.com/beta/users/<UUID>)下租赁URL的顶级域。另外两个并不是真正的假阳性,而是PRISM GT中的错误,对应于一个域名(a.storyblok.com)和一个URL(https://notifier.rarlab.com)被标记为IoC,但它们属于良性服务。另一方面,通用项模块的召回率较低,因为有些指标只能通过分析报告文本来确定不是IoC。常见情况是被iocsearcher错误识别为域名的文件名(例如,attachments.zip, framework.py)和Android包名(例如,com.avira.android, com.bitdefender.security)。
仅使用LLM已经实现了0.98的精确率、0.98的召回率和0.98的F1分数。然而,它需要对每个候选指标进行一次LLM查询。通过使用通用项模块,我们在PRISM上节省了12%的LLM查询,但如我们将在第6.2节中所示,在像AnnoCTR这样的其他数据集中,超过一半的候选指标是良性的,从而在LLM查询上产生更大的节省。此外,当使用完整的TagZilla时,通用项模块识别的每个良性指标可以节省多次LLM查询。当结合通用项和LLM L1组件时,TagZilla实现了0.98的L1精确率、0.98的召回率和0.98的F1分数,同时节省了大量的LLM查询。
在通用项识别模块的152个潜在假阴性中,有26个域名在VirusTotal中至少有4次检测(例如,abert-online.de, acehigh.host, androidd.com)。这些域名极有可能是恶意的,但在PRISM中被错误地标记为非IoC。额外的6个域名有2-3次VT检测;这些可能是恶意的,但也可能是AV引擎的误报。我们将向PRISM作者报告这些情况。
表8:将TagZilla应用于Malpedia、AnnoCTR和PRISM报告的结果总结。
| 数据集 | 全部 | 含指标 | 含IoC | 全部 | notanioc | notabuse | IoCs | 含所有者 | 全部 | 已知 | 新 |
| Annoctr | 400 | 386 (96.5%) | 273 (68.2%) | 8,804 | 123 (1.4%) | 2,933 (33.3%) | 5,749 (65.3%) | 4,118 (71.6%) | 364 | 210 | 154 |
| Malpedia | 315 | 272 (86.3%) | 209 (66.3%) | 9,912 | 379 (3.8%) | 1,076 (10.9%) | 8,476 (85.5%) | 5,695 (67.2%) | 461 | 190 | 271 |
| PRISM | 50 | 50 (100.0%) | 50 (100.0%) | 1,590 | 65 (4.1%) | 167 (10.5%) | 1,359 (85.5%) | 1,149 (84.5%) | 131 | 83 | 48 |
| 全部 | 765 | 708 (92.5%) | 532 (69.5%) | 20,239 | 563 (2.8%) | 4,117 (20.3%) | 15,583 (77.0%) | 10,961 (70.3%) | 912 | 439 | 473 |
6.2 报告标记 在本节中,我们将TagZilla应用于标记来自三个来源的765份威胁报告:来自AnnoCTR数据集(Lange等,2024)的400份报告,发布于2013年3月至2022年2月;来自PRISM数据集(,2025)的50份报告,发布于2023年4月至2024年11月;以及2026年2月18日至5月28日期间添加到Malpedia(Fraunhofer FKIE,2026)的315份报告。在Malpedia报告中,70%发布于2026年,21%发布于2025年,9%是更早的报告,最早可追溯到2016年。根据报告URL和标题,三个来源的报告没有重叠。
表8总结了标记结果。在分析的765份报告中,708份(92.5%)包含至少一个iocsearcher识别的候选指标。其余的多数是描述恶意软件使用的技术但未引用特定IoC的Malpedia报告(例如,(27, 17))。在20,239个候选指标中,TagZilla将15,583个(77.0%)标记为IoC,4,117个(20.3%)标记为良性,563个(2.8%)标记为iocsearcher的假阳性。IoC来自532份(69.5%)分析报告。没有IoC的报告包括安全厂商比较不同威胁流行度的季度报告,但未提供这些威胁的IoC。AnnoCTR中良性指标的比例(33.3%)显著高于Malpedia(10.9%)和PRISM(10.5%)。这是因为AnnoCTR将URL引用(例如,对其他威胁报告的引用)作为报告文本的一部分,而在另外两个数据集中,我们使用iocsearcher直接从HTML和PDF报告中提取文本,其中包括链接的文本,但不包括链接URL,作为文本的一部分。
表9:按IoC数量排名的前10个滥用类型标签。
| command_and_control | 4,191 | 2,069 | 1,706 | 417 |
| malware_distribution | 3,422 | 1,806 | 1,460 | 156 |
| phishing | 1,959 | 1,442 | 452 | 65 |
| downloader | 1,192 | 512 | 492 | 188 |
| infostealer | 1,022 | 191 | 756 | 75 |
| rat | 891 | 439 | 214 | 238 |
| registration_contact | 702 | 698 | 3 | 1 |
| abuse | 656 | 545 | 97 | 14 |
| malware_sample | 632 | 234 | 258 | 140 |
| sender | 372 | 258 | 111 | 3 |
| file_hash | 184 | 71 | 61 | 52 |
滥用类型标签。 TagZilla为15,583个IoC中的每一个分配了一个滥用类型标签。其中,95.8%被分配了特定的滥用类型,而其他4.2%被分配了顶级abuse标签,表示未能找到特定的滥用类型。这些IoC中的大多数(83.1%)来自Malpedia。绝大多数是用于虚假信息活动(例如,托管假新闻、发起政治影响活动或传播宣传)或属于未指定恶意基础设施的域名和IP地址。这表明cyberwarfare也应该是一个应用于网络指标的标签。
表9显示了前10种滥用类型。最常见的是command_and_control,分配给26.9%的IoC,malware_distribution(22.0%)和phishing(12.6%),这些都分配给网络IoC。分配给样本的恶意软件类别也很常见,如downloader(7.6%)、infostealer(6.6%)和rat(5.7%)。还有无法分配特定恶意软件类别的恶意可执行文件(malware_sample)以及良性工具和非可执行文件(file_hash)。一个有趣的案例是恶意电子邮件中的发件人地址(sender_email)。由于发件人地址经常被伪造,此标签允许过滤此类指标。
所有者标签。 在15,583个IoC中,TagZilla为10,961个(70.3%)分配了所有者标签。未分配所有者的IoC属于不考虑所有权的滥用类型,如敲诈、钓鱼和其他诈骗。带有所有者的10,961个IoC属于912个实体。其中,439个(48.1%)在原始实体DB中,其他473个(51.9%)是不在实体DB中的新实体。在所有实体中,113个是威胁组织,637个是恶意软件家族。其他162个实体属于个人、用作个人代理的账户、国家(例如,Russia, DPRK)或国家机构(例如,FBI, SVR)。在912个实体中,8个出现在三个来源的报告中(例如,apt28, lazarus, agent-tesla),另有26个出现在两个数据集的报告中。
表10:按IoC数量排名的前10个所有者实体。
| hazy-tiger | 组织 | 387 | 1 | ✓ |
| apt28 | 组织 | 369 | 14 | ✓ |
| north korean nation state | 组织 | 354 | 1 | ✗ |
| scripted-sparrow | 组织 | 332 | 1 | ✓ |
| graycharlie | 组织 | 315 | 1 | ✓ |
| prospy | 恶意软件 | 285 | 1 | ✗ |
| storm-1516 | 组织 | 204 | 1 | ✓ |
| unc2814 | 组织 | 197 | 1 | ✓ |
| emotet | 恶意软件 | 189 | 8 | ✓ |
| flubot-apk | 恶意软件 | 177 | 1 | ✓ |
表10显示了按跨所有来源报告识别的IoC数量排名前10的所有者实体。在这10个实体中,7个是威胁组织,3个是恶意软件家族。有些实体如hazy-tiger、scripted-sparrow或graycharlie只有一份报告包含许多IoC,但其他实体如apt28(来自所有三个来源的14份报告)和emotet(来自Malpedia的8份报告)的IoC来自多份报告。其中八个实体是已知的。未知实体来自两份报告,一份是与朝鲜有关的恶意活动,作者将恶意行为者称为North Korean nation-state threat actors。另一份来自我们图1示例中的报告,提及一个以前未知的名为prospy的恶意软件。
7 讨论 我们讨论局限性和改进途径。
指标提取。 我们使用iocsearcher识别威胁报告中的候选指标,然后应用TagZilla标记这些指标。因此,iocsearcher遗漏的任何指标都会引入假阴性。虽然iocsearcher已被证明具有非常高的召回率(Caballero等,2023;Froudakis等,2025),但它偶尔会遗漏指标,例如当URL在连续行之间被分割时。我们初步测试了直接使用LLM从威胁报告中提取指标,而不使用iocsearcher。但召回率较低,因为LLM拒绝彻底执行。尽管如此,我们认为使用LLM直接提取指标,而不使用正则表达式,是一种有前景的方法。
多种滥用类型。 TagZilla可能为报告中的IoC提取多个所有者标签,但目前仅为每个IoC提取单个滥用类型标签。一个IoC可能被用于不同类型的滥用。当同一IoC在不同报告中被提及时,我们可以为该IoC累积标签。从同一报告中提取多个滥用类型标签可能需要更改我们的分层分类法方法,这对于使分类法支持新的滥用类型至关重要。这是未来工作的一个重要领域。
开放模型。 TagZilla独立于所使用的LLM。我们使用本地运行的各种开放模型对其进行了评估。使用商业前沿模型可能会进一步提高其准确性,但会使我们的评估可重复性降低且成本更高。
图像。 目前TagZilla仅分析报告的文本。在某些情况下,IoC及其上下文可能仅出现在图像中。在未来的工作中,我们计划探索可以提供完整报告(例如,包含文本和图像的PDF文件)的多模态LLM。
人在回路。 我们将TagZilla设计为完全自动化的。然而,人类可能希望监督其正确操作。我们设想人类监督可能在两个步骤中有所帮助。首先,人类可以检查TagZilla提议创建的新标签,即当所有者细化在实体DB中未找到任何候选时。人类可能希望检查新标签是否足够具体,过滤如表10中的north korean nation state等宽泛标签。其次,TagZilla有时可能为同一所有者类型输出多个所有者标签,例如同一IoC的两个恶意软件家族。当报告文本令人困惑时,这可能发生。TagZilla可以自动标记此类情况,以便人类可以再次检查。
8 相关工作 网络威胁情报(CTI)提取已从基于规则和正则表达式的IoC提取发展为上下文信息提取、关系提取,以及最近基于大型语言模型(LLM)的方法,这些方法旨在将非结构化的威胁报告转化为结构化的、可操作的情报,先前的工作主要侧重于提取失陷指标(IoC)、命名实体、攻击行为和ATT&CK战术与技术。
早期系统(Liao等,2016;Husari等,2017;Fraunhofer FKIE,2026;Zhu和Dumitras,2018;Niakanlahiji等,2019;Zhao等,2020;Satvat等,2021)专注于使用正则表达式从非结构化文本中提取结构化指标,这些正则表达式捕获指标的结构(例如,哈希、IP地址)。在(Caballero等,2023)中,作者介绍了iocsearcher(MaliciaLab,2023),一个识别41种不同IoC类型的指标提取工具,以及GoodFATR(Caballero等,2023),一个威胁报告收集平台,在无需地面真实的情况下评估不同指标提取工具之间的性能。尽管作者表明iocsearcher在提取指标方面优于类似工具,但在决定指标是恶意的(IoC)还是不是(通用项)方面非常有限。TagZilla超越了iocsearcher基于规则的过滤,利用报告内指标的上下文来过滤良性指标和iocsearcher的假阳性(例如,被提取为域名的文件名工件)。
一些方法旨在从报告中提取额外的有用信息,如威胁行动(Husari等,2017)、攻击行为(Satvat等,2021)、攻击技术(Cuong Nguyen等,2025),以及最近的MITRE ATT&CK战术与技术(Li等,2024;Rani等,2024),通过将NLP与深度学习(例如,BERT)等技术相结合,从指标的上下文中提取语义含义。其他方法将提取的信息转化为结构化表示,如攻击技术知识图谱(Li等,2022)、丰富攻击时间模式的图谱(Rahman等,2025)和标准化的STIX对象(Marchiori等,2023)。最近,基于LLM的方法已被应用于使用不同提示技术对指标进行提取和分类(Tang等,2024;Suarez-Roman等,2026;Gomez等,2025)。在(Gomez等,2025)中,作者利用LLM识别失陷指标的上下文(即滥用报告)以提取其滥用类型,有效地区分了恶意指标和良性指标。然而,作者专注于分类滥用报告而非指标,并且不尝试提取任何所有权信息,而TagZilla做到了。
研究还考察了更广泛的威胁报告生态系统,包括长期CTI报告中的碎片化和信息重叠(Suarez-Roman等,2026),将本体模糊性和数据集质量确定为主要挑战(Büchel等,2025)。诸如AnnoCTR(Lange等,2024)和PRISM(,2025)等注释资源已被引入,以支持CTI报告中实体、战术和技术的研究。尽管有大量工作,但现有方法主要集中在攻击技术提取或实体识别,而非理解单个指标的上下文和作用。特别是,它们通常不联合确定IoC的细粒度滥用类型和控制或拥有它的实体,并且许多隐含地假设报告涉及单个威胁行为者或活动。相比之下,TagZilla解决了单个IoC及其控制实体的上下文分类,包括涉及多个威胁行为者的报告,通过大规模联合执行细粒度的IoC滥用类型分类和实体所有权归属。
9 结论 本文介绍了TagZilla,一个自动化注释威胁报告中IoC的所有者和滥用类型标签的平台。与先前主要侧重于提取攻击技术和命名实体的工作不同,TagZilla侧重于识别每个IoC的所有者实体和滥用类型,用可操作的情报丰富IoC,可以回答有趣的问题,例如,谁拥有一个IoC以及该IoC被用于什么类型的网络攻击。TagZilla即使在描述多个实体的报告中也能识别IoC滥用类型和所有者实体。
我们的评估表明,TagZilla准确地生成所有者和滥用类型标签,分别达到0.94和0.93的F1分数。我们将TagZilla应用于标记765份威胁报告,识别出属于637个恶意软件家族、113个威胁组织和162个其他实体的15,583个IoC。TagZilla能够生成威胁组织和恶意软件家族的IoC配置文件,可用于威胁归属、威胁狩猎、基础设施跟踪和跨活动自动关联。




