ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

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

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?nameCVE-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米。
返回列表