news 2026/8/13 10:30:28

NLP从入门到放弃——处理威胁情报

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
NLP从入门到放弃——处理威胁情报

0x00 前言:

之前回答不算特别认真, 却也有一定认真程度, 事情由此而起, 见: 知乎用户: NLP 在威胁情报中有哪些应用? **。于是, 有人通过私信询问, 事实上, 我才刚开始接触这部分内容。关于这个需求的由来, 存在两个原因。其一, 是boss的强迫症所致, 告警推送全都要求以自然语言表示。其二, 与威胁情报的分类问题相关, 在捕获威胁情报时, 大家的共识是借助爬虫去爬取有对应消息的源, 源在此处实际上经过了筛选, 筛选过程待以后有时间再讲。此时, 问题出现了, 国内的源要么消息滞后, 要么不提供RSS接口, 以xx厂商最为典型。而国外的源情况相反, 消息更新迅速, 拥有RSS和邮件推送, 甚至有些信息实现了json推送。这时, 另一个问题产生了, 推送英语过来还好, 要是推送诸如思密达这类语言, 没有语言功底的人确实难以看懂。所以, 这时便想到运用NLP, 即自然语言处理来解决情报处理的问题。

0x01 确定要收集的信息:

设想这样一种事态: 老大要求你去搜集某些关键组件的漏洞披露情形, 要是存在高风险的状况, 即刻借助IM、邮件的形式递送到老大跟前。暂且搁置规划不论, 这种针对特定组件的漏洞搜集工作实际上是颇为繁杂的一桩事情, 由于你并不清楚何时会爆发何种漏洞, 然而我们依旧存有一些特定的搜集技巧, 我们依据披露的灰度对源予以分类:

完成这个过程以后, 事实上你便能够去编写爬虫了, 关于编写爬虫的过程, 省略, 大致爬完便是这种效果:

{ "id": "CVE-2018-6439", "cvss": {}, "seen_wild": false, "date_created": "2018-12-03T00:00:00", "description": "A Vulnerability in the configdownload command of Brocade Fabric OS command line interface (CLI) versions before 8.2.1, 8.1.2f, 8.0.2f, 7.4.2d could allow a local attacker to escape the restricted shell and, gain root access.", "reference": [ { "name": "https://www.broadcom.com/support/fibre-channel-networking/security-advisories/brocade-security-advisory-2018-730", "type": "UNKNOWN", "external_source": "CONFIRM", "href": "https://www.broadcom.com/support/fibre-channel-networking/security-advisories/brocade-security-advisory-2018-730" } ], "products": [], "mitre": "https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-6439", "exploit": [] }

0x02 机读转人读

此际你便能大致知悉该漏洞的某些信息, 可是, 你仅晓得此漏洞的信息, 然而你并不清楚此漏洞是否值得响应, 那么何种漏洞信息值得你去响应呢, 通常状况下这个值得响应是关联资产、漏洞危害、在野利用、是否披露等诸多方面予以评估后才会得出是否需修复的决策的, 这明显不是威胁情报生产团队所要考量的(毕竟有切实办事的SRC存在),不过情报方面要给出信息能够助力他们做决策, 就以上述这个漏洞来讲, 我们需留意的是阐述此地:

A Vulnerability in the configdownload command of Brocade Fabric OS command line interface (CLI) versions before 8.2.1, 8.1.2f, 8.0.2f, 7.4.2d could allow a local attacker to escape the restricted shell and, gain root access.

我们于此处运用自动化方式完毕对这段话的处置, 之所以进行处置, 其缘由在于:

(1)提高情报的可运营效率,也就是说人话让运营人员能操作

(2)提高情报指向性,方便运营人员排查资产是否受影响

(3)联动IM,提高情报推送的及时性

(4)能够与资产系统一同联动, 据此确定受影响的组件范围, 进而降低修复漏洞的SLA。

我们运用简单的分词, 结合之前依循使用cpe和cwe等数据作为训练样本而获取到的数据, 展开对漏洞告警信息的处理操控, 并且去以汉化的方式处理告警信息, 举个例子:

# coding: utf-8 import nltk import mtranslate from nltk.tag import pos_tag_sents fintels = [] vul_describes = json.loads(cve_spider_list) for vul_describe in vul_describes: chn_u = mtranslate.translate(vul_describe["description"], "zh-cn") words = nltk.word_tokenize(vul_describe["description"]) affect_list = mach_learn(cpe_list_sample()) # 训练样本返回的组件名称规则 version_list = mach_learn(cpe_version_sample()) # 训练样本返回的组件版本规则 severity_list = mach_learn(severity_sample()) # 训练样本返回的漏洞类型规则 res = nltk.tag.pos_tag(words) affect = "" version = [] severity_list = [] for word,pos in res: if pos in affect_list: t_words = word + " " affect += t_words elif pos in version_list: version.append(word) elif pos in severity_list: severity_list.append(word) fintel = { "description": chn_u, "affect": affect, "version": version, "reference": vul_describe["reference"], "cve_id": vul_describe["cve_id"], "severity": severity_list } fintels.append(fintel) print(fintel)

处理过后得到的信息就变得简单多了:

行, 可以, 在这个时候, 我们能够进行IM联动, 鉴于各路IM并非完全一样, 所以通过查看各家给定的SDK便能够将此问题予以解决, 最终推送所呈现出的效果便是如此这般:

这样,安全运营人员就可以根据你的情报进行响应了。

0x03 小结:

从操作的层面来讲, 上述问题并非难以操作, 关键所在是NLP技术怎样助力自动化处置部分威胁情报信息, 以此便利人员展开运营, 毕竟情报收集在很大程度上是依据公开信息, 诸多情形下都需处理海量信息, 此时自动化识别、NLP、OCR这些技术便能提升我们的处理效率, 减少因情报导致的时机延误。毕竟参与运营工作的哥哥姐姐很是辛劳, 扫描器会发出告警, 监控会发出告警, IDS也会发出告警, 这些告警都需要去进行响应, 在此情形下要是再给他一堆无法响应的情报, 他会手持一把长达40米的大刀, 接着让你先跑39米。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/13 10:25:41

PixVerse实战指南:零基础生成电影级产品视频

1. 这篇文章真正要解决的问题如果你是一名产品经理、设计师,或者正在为新产品制作宣传视频的开发者,最近可能被一个词刷屏了:AI视频生成。从Runway、Pika到Sora,每一次技术发布都让人心潮澎湃,但随之而来的往往是更深的…

作者头像 李华
网站建设 2026/8/13 10:25:17

Spark Streaming实战:从微批处理到生产级应用的性能调优与容错设计

1. 从批处理到实时流:为什么Spark Streaming是道坎 如果你是从Spark Core或者Spark SQL的批处理世界过来的开发者,第一次接触Spark Streaming时,大概率会经历一个短暂的“认知失调”阶段。批处理的世界是静态的、确定的,数据就躺在…

作者头像 李华
网站建设 2026/8/13 10:23:25

3. 不要把整个仓库塞进 Prompt:代码索引与信息密度

有一种看似勤奋的做法:每次用户提问都把整个仓库读一遍,然后把所有文件内容塞给模型。 这就像把整座图书馆搬进会议室,只为了回答“《红楼梦》在哪一排”。信息很多,但答案更难找。 3.1 当前系统的选择:索引做地图,工具取证据 LoopAgent 初始化 WorkspaceIntelligence…

作者头像 李华
网站建设 2026/8/13 10:21:38

PyTorch实现DarkNet53:从DBL模块到多尺度特征提取的完整指南

1. 项目缘起:为什么从DarkNet53开始?如果你刚开始接触计算机视觉,或者想找一个既经典又不过时的模型来练手,DarkNet53绝对是个绕不开的名字。它不像VGG那样结构简单但参数臃肿,也不像ResNet那样有各种变体让人眼花缭乱…

作者头像 李华
网站建设 2026/8/13 10:16:55

glgeim文件解析:从来源排查到处理方案的完整指南

在开发过程中,我们经常会遇到各种格式的文件,其中一些文件扩展名可能并不常见,比如 .glgeim 。当你在项目目录或日志中发现此类文件时,可能会感到困惑:它是什么?由谁生成?是否可以安全删除&am…

作者头像 李华
网站建设 2026/8/13 10:15:31

《阿扎达3》经典解谜游戏:现代系统兼容性、核心玩法与通关解析

这次我们来看一个经典解谜游戏《阿扎达3:舍己为人的丛林女王》的实况流程与深度解析。作为《阿扎达》系列的第三部作品,它延续了前作奇幻解谜的核心玩法,并引入了更丰富的场景和更具挑战性的谜题。对于喜欢点击式冒险、逻辑解谜和探索神秘故事…

作者头像 李华