《SoftwareX》:UDCDGA: A reproducible software framework for constructing large-scale DGA detection datasets
编辑推荐:
本研究介绍UDCDGA_Generator,一个用于可复现构建域名生成算法(Domain Generation Algorithm,DGA)检测研究大规模数据集的模块化Python框架。该软件在可配置工作流中集成了良性源聚合、异构DGA实现执行、确定性采样与平
本研究介绍UDCDGA_Generator,一个用于可复现构建域名生成算法(Domain Generation Algorithm,DGA)检测研究大规模数据集的模块化Python框架。该软件在可配置工作流中集成了良性源聚合、异构DGA实现执行、确定性采样与平衡、全局去重与跨类重叠消除、特征提取、完整性验证以及数据集导出。DGA生成域名通过自适应生成流水线产生,该流水线支持可配置的种子与日期策略,监控DGA实现执行情况,并强制实施全局唯一性。数据集构建模块应用包含词法、结构、统计及基于n-gram表示在内的54个数值特征的默认注册表,同时支持特定实验的特征配置,并生成元数据与完整性工件以保障可追溯性。该框架的能力通过构建UDCDGA得以说明,该数据集为包含8,450,556个唯一域名的平衡数据集,在良性源域名与DGA生成域名之间均匀分布,并以Apache Parquet格式导出,同时附带描述其模式、完整性及构建过程的元数据。通过将数据集构建与固定域名语料库解耦,UDCDGA_Generator为DGA检测研究提供了可配置且可扩展的基础设施,用于构建可复现数据集。
研究背景方面,域名系统(Domain Name System,DNS)是互联网基础设施的核心组件,提供将人类可读域名转换为网络通信所需标识符的分布式命名服务,因此DNS数据成为研究互联网活动和网络安全的重要观测点。DNS的核心地位也使其成为恶意行为者的目标,相关威胁涵盖针对解析基础设施的攻击以及将域名用于恶意软件、网络钓鱼、僵尸网络和命令控制基础设施等。其中,域名生成算法(DGA)自动生成大量候选域名以供恶意软件定位命令控制服务器,通过快速更换通信域名增强恶意基础设施的韧性,使仅依赖静态域名黑名单的方法效果下降,因此区分算法生成域名与良性源域名成为基于DNS威胁检测的重要组成部分。在此背景下,DGA检测研究日益依赖同时包含良性源域名和算法生成域名的高质量数据集。既有研究指出可复现性和可比性是本领域的持续挑战,检测方法常在不同数据集、预处理流程和实验条件下评估;尽管已有众多公开DGA数据集,但许多以静态集合形式分发且构建过程信息有限,难以复现、扩展和长期维护;构建纳入新DGA实现或更新良性源仓库的新数据集往往需要大量手工工作和临时性预处理。为解决这些局限,研究人员开发了UDCDGA_Generator,一个模块化Python框架,通过可复现、可配置的三阶段工作流支持DGA数据集构建。该框架并非仅关注最终数据集,而是提供可扩展基础设施,用于聚合良性源仓库域名、从多个DGA实现生成域名、平衡两类样本并提取词法和统计特征,所得数据经校验后导出为可直接用于机器学习、深度学习及其他人工智能方法进行DGA检测与分析的数据集。框架以可复现性和可扩展性为首要目标,各DGA实现以独立模块提供,可通过配置文件启用或禁用,使研究人员能够以最小代码修改纳入新算法;生成工作流各阶段具有确定性和可配置性,支持在等效输入数据、软件版本、配置参数和执行条件下进行实验复现。框架能力通过生成UDCDGA数据集得以展示,该数据集为面向网络安全研究的大规模平衡语料库,作为可引用研究工件独立发布;尽管UDCDGA是框架的一种可能输出,但本工作的主要贡献是UDCDGA_Generator,为科学界提供可复用、可维护、可扩展的基础设施以构建未来DGA数据集。与已有资源相比,RAMPAGE 通过提供在一致评估条件下训练和比较DGA检测模型的通用框架来解决实验可复现性问题;而UDCDGA_Generator并非孤立地引入某项能力,而是在统一工作流中集成了可配置良性源聚合、DGA执行、带标签数据集构建、数值特征提取以及显式可复现性和完整性机制,其可扩展特征注册表还将活动特征定义传播至生成的模式、清单、完整性元数据和验证流程,从而在保留显式来源和验证信息的同时支持可配置、可复现的数据集构建。研究结论表明,本文提出了UDCDGA_Generator,一个开源软件框架,在模块化可配置工作流中集成了良性源聚合、DGA域名生成、特征提取和数据集验证;该框架将确定性采样与生成机制同执行元数据和完整性验证相结合,支持面向DGA检测研究的可复现、可追溯数据集构建;UDCDGA数据集的构建说明了该软件在生成具有数值特征表示的大规模平衡数据集方面的实际适用性;除该示例用例外,UDCDGA_Generator为涉及基于机器学习的DGA检测、替代特征表示和可解释人工智能方法的研究提供了可复用基础设施;未来工作可能包括扩展操作支持的DGA实现集合和特征提取能力、研究计算密集阶段的并行化策略,以及进一步扩展数据集构建的配置和验证机制。
研究人员开展的研究为:设计并实现UDCDGA_Generator模块化Python框架,采用三子系统流水线架构,包括良性域名聚合、DGA域名生成以及数据集构建与特征提取;各子系统产生可独立检查、复用或再生的显式中间工件。主要关键技术方法包括:其一,良性域名聚合模块接受用户通过命令行提供的任意纯文本或CSV文件集合,执行并行行计数、基于最大余数法的比例采样配额分配、规范化(去除字节顺序标记、尾部分隔符和首尾空白并转为小写)、CSV分隔符与可选表头检测、可配置验证与去重策略以及确定性随机种子采样,并生成规范化CSV文件和JSON报告;其二,DGA生成模块在用户指定仓库中发现候选DGA实现并检查其接口与执行特征,通过通用或专用适配器调用,提供比例分配与动态配额再分配及确定性有序执行两种调度策略,采用可配置且确定性的种子与日期策略进行自适应批处理生成,对生成域名进行规范化与验证(小写转换、去除尾点、国际化域名(Internationalized Domain Name,IDN)规范化、结构验证及域名长度与标签约束验证),并使用基于SQLite的持久化后端以规范表示索引每个生成域名以实现全局唯一性,支持检查点与断点续跑,同时持续监控实现执行状态;其三,数据集构建与特征提取模块在类内去重和跨类重叠消除后,以可配置全局随机种子实施一对一类别比例的确定性平衡策略,特征提取在最终平衡语料建立后执行,默认特征注册表包含54个数值特征,涵盖unigram、bigram、trigram、词法与结构以及域名组件五个特征族,特征提取可通过有序特征注册表扩展,每个特征由唯一名称、可调用提取器、显式数据类型、科学描述和定义版本定义,并通过有序特征名校验和、特征定义校验和及显式特征模式版本记录特征模式身份,活动注册表传播至Parquet和ARFF模式、模式描述、执行清单、完整性元数据和输出验证阶段;同时记录输入SHA-256哈希、特征模式校验和、执行参数及可选完整性报告等执行元数据,并在最终工件定稿前验证模式一致性、类别平衡、去重和数据集完整性。样本队列来源方面,UDCDGA数据集的良性类语料取自DomainsProject Internet Domains Dataset,一个通过GitHub分发的公开大规模互联网域名集合。研究结果方面,第一,软件架构与可复现性机制:框架遵循由良性域名聚合、DGA域名生成以及数据集构建与特征提取三个主要子系统组成的模块化流水线架构,通过确定性采样流程、可配置随机种子、持久化去重机制、执行清单、输入哈希、特征模式校验和及可选完整性报告在全流程支持可复现性,在等效输入数据、软件版本、配置参数和执行条件下支持确定性数据集构建并提供审计构建过程的可追溯性。第二,良性域名聚合模块:该模块从外部仓库构建规范化良性类域名语料,将配置来源获得的域名视为良性源域名而非独立验证的良性真值,聚合阶段执行规范化、句法验证、去重和采样但不施加独立信誉或安全评估,因此源出处决定类别分配且不能排除有限程度的类别污染;聚合过程发现兼容输入文件、执行并行行计数并使用最大余数分配法计算比例采样配额,若某来源无法满足配额可将缺口在其余来源间再分配并可选用补充机制达到目标规模,采样由用户定义随机种子控制;模块生成规范化CSV文件及汇总配额、来源贡献、执行时间、验证统计、警告和处理指标的JSON报告并生成执行日志。第三,DGA生成模块:该模块是框架核心组件,为来自多个外部来源的异构DGA实现提供统一可复现执行框架;发现本身不意味着操作支持,接口不兼容、不完整或不支持的实现可能需要专用适配器或被排除执行;软件按用户定义策略构建生成计划,生成以自适应批次进行,全局策略支持顺序、哈希或固定种子生成以及固定或演化日期序列并可配置日期范围和越界处理,这些策略可通过parameter_strategy配置按实现覆盖;对需要通用种子和日期之外参数的实现,专用适配器可处理计数器、版本、密钥或魔数等实现特定维度;每个生成域名经规范化与验证,重复域名通过基于SQLite的持久化后端以规范表示索引以强制全局唯一性并支持中断执行后的自动检查点和恢复;执行期间框架持续监控DGA实现执行,检测饱和、退化、耗尽或失败实现并相应调整生成策略;模块产出生成DGA域名语料及执行计划、统计报告、持久化生成状态文件和执行日志。第三方DGA实现被视为可信实验代码,Python可调用实现和专用适配器在主生成器进程内执行,命令行实现作为普通子进程执行;框架提供验证、错误处理、生成配额、实现执行监控和检查点以提高操作稳健性,但这些机制不构成安全沙箱,当前实现不限制文件系统或网络访问、Python导入、系统调用、用户权限或操作系统资源,因此外部来源DGA实现执行前应审查,评估不可信代码时应在适当隔离环境(如限制权限及网络和文件系统访问的容器或虚拟机)中执行框架。生成器正确性在两个互补层面评估:首先所有归类为操作支持的DGA实现通过生产执行路径运行以验证成功调用、生成有效域名和错误处理,当前框架发现的47个实现中有37个满足这些操作支持标准,仅发现本身不被解释为支持证据;其次使用固定生成参数和外部参考实现或参考向量对五个代表性DGA实现独立评估语义正确性,通过正常UDCDGA_Generator执行路径产生的有序域名序列与相应参考输出比较,五个代表性实现均通过验证,其中Ramnit和Tinba在原始和规范化形式下均匹配全部100个参考域名;验证过程还促成了命令行生成器的额外保护措施,仅成功子进程执行的标准输出有资格进行域名解析,标准错误保留用于诊断,不成功执行的输出被拒绝;完整软件测试套件当前包含252个通过测试;基于参考的语义验证是代表性而非穷尽的,不应被解释为对每个操作支持DGA实现或参数配置的独立语义验证。第四,数据集构建与特征提取模块:该模块将前序模块生成的良性源和DGA域名语料集成为单一机器学习就绪数据集,除合并两来源外还负责平衡类别、计算所选特征集、验证数据集一致性并导出最终工件;构建过程先去除各类内重复域名并消除良性源域名与DGA生成域名之间的重叠,随后应用确定性平衡策略以可配置全局随机种子构建一对一类别比例,同一种子一致用于采样和比例缩减;默认特征集旨在提供域名特征的互补数值表示而非依赖单一表征策略,unigram、bigram和trigram特征捕获不同字符上下文长度下的统计特性,词法和结构特征表征字符组成、熵、DNS结构、字符连续段和语音模式等特性,域名组件特征还表征二级域名和前置标签,这五个特征族共同构成默认注册表生成的54个数值特征,为每个域名提供互补视图而不将所得数据集耦合于特定下游分类器;特征提取可通过有序特征注册表扩展,自定义特征可加入实验特定注册表而不修改默认特征集;作为集成示例,一个表示规范化域名长度平方的确定性特征被加入实验特定注册表,所得55特征数据集成功生成并通过更新后的模式元数据和校验和验证,而默认54特征注册表保持不变;为支持可追溯性,模块记录包括输入SHA-256哈希、特征模式校验和、执行参数和可选完整性报告的执行元数据,验证阶段在生成工件定稿前验证模式一致性、类别平衡、去重和数据集完整性;所得数据集主要导出为Apache Parquet格式并对大输出自动分区,补充元数据、执行清单、完整性报告和描述性统计以JSON格式生成。第五,示例工作流:该节通过生成UDCDGA数据集说明完整工作流,演示三个软件组件如何顺序执行以构建面向DGA检测机器学习研究的平衡特征数据集;软件可直接从源码仓库安装,要求Python 3.11或更高版本,克隆仓库后三个主要组件(dga_benigns_generator、dga_fraudulents_generator和dga_features_extractor)可分别使用pip独立安装,完整工作流随后作为三阶段流水线执行;构建良性源域名语料阶段,UDCDGA数据集良性类语料取自DomainsProject Internet Domains Dataset,聚合器配置为从data/benign_sources源文件构建1500万良性源域名语料并使用确定性随机种子,输入源在计数阶段使用八个工作进程处理,启用平衡验证策略和最终去重,同时启用计数缓存;输出包括包含聚合良性源域名语料的udcdga_benigns_domains.csv文件和描述聚合过程(包括来源贡献、验证指标和执行统计)的udcdga_benigns domains_stats.json报告。生成DGA域名语料阶段,所选实现包括基于日期和基于种子等不同生成机制,覆盖Locky、QakBot、Ramnit、Tinba、Gozi、Necurs和Nymaim等DGA家族,框架根据所选调度策略构建生成计划并从操作支持实现生成唯一域名,完整实现列表及各自对生成语料的贡献记录在生成统计中;该阶段配置1500万唯一DGA生成域名生成目标,使用带配额再分配的比例分配、批处理生成和周期性检查点,目标计数适用于该生成阶段而不决定最终数据集中DGA实例数量,后续验证、去重、跨类重叠消除和平衡在最终数据集产生前对生成语料操作;执行期间软件验证生成域名、监控DGA实现执行、必要时再分配生成配额并使用SQLite后端执行持久化去重,执行计划、统计摘要、持久化状态、检查点、日志和相关元数据存储于输出目录以支持可追溯性和中断执行恢复。构建最终数据集阶段,框架在去除重复域名和跨类重叠后应用所选特征表示并验证所得数据集完整性,该阶段配置将良性源和DGA生成域名语料合并并以Apache Parquet格式构建最终数据集,批处理、可配置行组大小和自动文件分区支持大输出,执行还生成代表性样本、清单、完整性信息、数据集统计和特征模式描述,输出验证用于在构建后验证生成工件;尽管前序阶段配置每类最多1500万域名目标,最终数据集大小在全局去重、跨类重叠消除和平衡后确定,所得UDCDGA数据集包含8,450,556个唯一域名,在4,225,278个良性源域名和4,225,278个DGA生成域名之间均匀分布;每个域名由默认特征注册表的54个数值特征表示,连同DOMAIN、CLASS和LABEL字段最终数据集共57列,DOMAIN存储规范化域名,CLASS记录其具体出处(良性源域名的顶级域或DGA生成域名的DGA实现),LABEL提供二分类分配(良性源域名为0,DGA生成域名为1),完整数据集及其相关元数据和完整性信息通过Zenodo公开获取。可复现性通过使用相同输入数据、软件版本、配置参数、时间设置和随机种子(42)对完整工作流进行三次独立执行进行实验评估,每次执行产生200,000个唯一域名的平衡数据集,具有相同的规范SHA-256摘要、零差异行或特征值以及字节完全相同的Parquet工件;使用不同随机种子的对照执行产生不同的规范数据集摘要,同时保持数据集大小、类别平衡和特征模式;这些结果证明了在测试软件和执行环境下的可复现性。为量化计算可扩展性,UDCDGA_Generator在固定配置下使用从50,000到约一百万最终域名的平衡数据集评估,三个执行阶段呈现不同计算特征:良性源聚合受对同一31.4 GiB源语料(含约11.1亿原始行)重复扫描支配,引入显著的输入相关基线成本;相比之下,54特征提取阶段运行时间在所评估范围内随最终行数近似成比例增长,从50,000域名的17.1秒增至约一百万域名的328.7秒;生成存储从20.0 MiB增至361.2 MiB,观察到的阶段级最大常驻内存从约0.55 GiB增至1.58 GiB;可配置并行目前限于良性源计数,将计数工作进程从1增至8仅产生1.04倍加速,表明在所评估条件下增加计数工作进程收益有限;DGA生成和特征提取在当前实现中为串行,因此不对这些阶段做并行效率声明。讨论部分总结:UDCDGA_Generator的主要研究影响在于将DGA数据集构建与固定已发布语料库解耦,研究人员可通过系统变化良性源仓库、DGA实现、生成参数和特征表示构建定制数据集,同时保留有记录且可复现的构建过程,为受控研究数据集组成如何影响DGA检测模型以及构建针对特定实验假设定制的数据集提供基础设施;软件主要面向从事DGA检测的网络安全研究人员,潜在用例包括开发和基准测试机器学习与深度学习检测方法、评估可解释人工智能(Explainable Artificial Intelligence,XAI)方法、分析替代特征表示、构建定制训练和评估数据集,以及跨不同DGA实现集合研究检测方法;通过将可配置数据集构建与执行元数据、完整性验证和可复现性机制集成,UDCDGA_Generator为跨DGA检测研究构建可追溯数据集提供可复用基础设施,可减少开发临时数据集构建流水线的需求并促进生成数据集的一致记录和复用;框架还支持使用固定数据集难以进行的实验研究,例如评估DGA检测器对良性源仓库变化、DGA实现组成、生成参数或特征子集变化的敏感性;软件以Apache License 2.0分发,允许研究人员检查、复用、修改和扩展框架以满足实验需求。研究结论部分译文为:本文提出了UDCDGA_Generator,一个开源软件框架,在模块化可配置工作流中集成了良性源聚合、DGA域名生成、特征提取和数据集验证。该框架将确定性采样与生成机制同执行元数据和完整性验证相结合,支持面向DGA检测研究的可复现、可追溯数据集构建。UDCDGA数据集的构建说明了该软件在生成具有数值特征表示的大规模平衡数据集方面的实际适用性。除该示例用例之外,UDCDGA_Generator为涉及基于机器学习的DGA检测、替代特征表示和可解释人工智能方法的研究提供了可复用基础设施。未来工作可能包括扩展操作支持的DGA实现集合和特征提取能力、研究计算密集阶段的并行化策略,以及进一步扩展数据集构建的配置和验证机制。