查看原文
其他

【开源情报】利用Twitter数据自动收集并分析网络安全威胁情报

dingba 丁爸 情报分析师的工具箱 2022-10-14

本文机器翻译由百分点智能翻译提供

官网地址:http://translate.percent.cn/

公司官网:https://www.percent.cn/


【摘要】

为了抵御日益频繁、多样化和复杂的网络攻击,及时分析网络安全威胁信息至关重要。开源情报(OSINT)是一种从可公开获得的来源收集信息,然后对其进行分析以导出可操作智能的方法。


本文介绍了一个用于自动收集和分析发布在Twitter上的网络安全相关信息(如威胁和漏洞)的Twitter开源情报原型系统的设计和实现。


原型系统是在Java中实现的,它使用TwitterStreamingAPI基于一组用户提供的关键字下载相关的tweet。选择的tweets接着被自然语言处理(NLP)模块处理和分析,该模块使用Stanford CoreNLP库和基本NLP能力的语言模型,以及由橡树岭国家实验室开发和提供的Stucco网络域特定实体提取库。然后,处理的tweet与NLP模块为这些tweet生成的所有注释一起存储在JavaScriptObjectNotation(JSON)格式的文件中。接下来,TwitterOSINT系统使用ElasticStack(Elasticsearch、Logstash和Kibana)来收集、索引、存储、分析、管理和可视化注释的推文,并使用由ElasticStack提供的内置数据分析和机器学习功能帮助获得智能。进行了初步实验,以获取该系统的运行经验和见解。


关键词:数字情报,开源情报,Twitter,自然语言处理,弹性堆栈


1.前言

网络犯罪的影响迫使世界各地的政府和私营部门组织应对网络威胁。所有部门现在都面临着类似的困境,即如何以最佳方式减少网络犯罪并有效实施最佳做法。利用公共信息获取可用的高价值情报,正迅速成为网络防御的重要手段。随着从公开来源获得的信息量迅速增加,打击网络犯罪越来越依赖先进的软件工具和技术,以有效和有效的方式收集、处理、分析和利用信息。


开源情报(OSINT)是指从公共可用的来源,如新闻文章、博客和社交媒体获得的情报。使用自动化开源情报收集和分析工具和方法,政府和私营部门可以更好地做好准备,避免网络攻击之前,打击他们,或更有效地减轻和应对事件。


例如,Twitter已成为收集网络安全信息的一个明显和非常重要的来源,因为该领域的许多专业人员使用这种社交媒体来共享威胁和攻击发生的信息,并观察网络安全领域的趋势。Twitter让那些有兴趣的人可以方便地获得网络事件的即时通知。


然而,人工收集和分析网络安全开源情报的方法是不够的,这是由于要分析的信息量以及威胁产生的速度。不同于基于已知攻击设计的传统网络安全产品,下一代安全情报系统必须提供实时警报,并允许收集关于威胁的即时情报。


为了帮助网络安全开源情报收集和分析过程自动化,我们设计并实现了一个名为TwitterOSINT的原型系统,用于收集和分析在Twitter上发布的网络安全相关信息(例如. 威胁、漏洞和攻击)。


原型系统是在Java中实现的,它使用TwitterStreamingAPI基于一组用户提供的关键字下载相关的tweet。为了处理和分析非结构化文本的tweet,TwitterOSINT系统使用StanfordCoreNLP库和基本NLP能力的语言模型实现了自然语言处理(NLP)流水线,以及由橡树岭国家实验室(ORNL)开发和提供的Stucco网络域特定实体提取库,以从非结构化文本提取网络域实体。两个图书馆都使用先进的机器学习和统计技术来提供高性能的文本分析能力。


然后,处理的tweets被存储在JavaScriptObjectNotation(JSON)中,这是一种轻量级和人类可读的数据交换格式,文件连同由自然语言处理(NLP)流水线为这些tweets产生的所有注释(例如.date、用户名、文本和网络域实体)。接下来,TwitterOSINT系统使用ElasticStack(Elasticsearch、Logstash和Kibana)来收集、索引、存储、分析、管理和可视化注释的推文,并使用由ElasticStack提供的内置数据分析和机器学习功能帮助获得智能。进行了初步实验,以获取系统的操作经验和见解。


本文件的其余部分安排如下。第二节提供了关于TwitterOSINT原型系统所用关键技术的背景信息。第三节介绍系统的设计和实现。第四节讨论了如何运行和使用TwitterOSINT系统及我们的初步实验。第五节最后简要总结并讨论了今后的工作。


2. 背景

在本节中,我们提供了关于Twitter流API、自然语言处理和弹性堆栈的背景信息。

A. Twitter流媒体API

TwitterOSINT系统利用了Twitter流API,如图1所示,它提供了对Twitter的全球Twitter流的低延迟访问,并下载被认为与网络安全相关的Twitter流。

流式客户端基于用户指定的关键字推送指示tweet和其他事件发生的消息。连接到流API需要保持持久的HTTP连接打开。维护流连接的代码通常运行在与处理HTTP请求的进程分离的进程中。流处理获取输入tweet,并在将结果传递给数据存储之前执行所需的任何解析、过滤和/或聚合。HTTP处理过程响应于用户请求查询数据存储结果。


B.自然语言处理

根据行业估计,只有21%的可用数据以结构化形式存在,以便从非结构化文本数据产生显著和可操作的见解。开发自然语言处理技术和工具,以智能和高效的方式分析、理解和获取文本数据。


自然语言处理领域(NLP)旨在将人类语言转换为便于计算机操作的形式表示。自然语言处理(NLP)已经被用来在包括机器翻译在内的多种应用中执行nmnerous自动化任务。自动汇总、命名实体识别、情绪分析等。


虽然机器对语义的完全理解仍然是一个遥远的目标,但研究者们采取了一种分而治之的方法,确定了几个自然语言处理(NLP)子任务,这些子任务对于应用程序开发和分析很有用。从句法(如词性标记、分块和解析)到语义(如词义消歧、语义角色标记、命名实体提取和回指解析)。


两个问题尤其使得自然语言处理(NLP)困难,并且需要不同于与处理人工语言(例如,例如人工语言)相关联的技术。编译器构造)。这些问题是:自然语言中存在的歧义程度;甚至简单的句子中包含的语义信息的复杂性。


通常,语言处理器处理大量单词,其中许多单词具有替代用法,以及允许由同一串单词形成不同短语类型的大标记。自然语言处理(NLP)由于语言的不规则性和可能出现的不同歧义性而变得更加复杂,


C.自然语言处理(NLP)任务

自然语言处理(NLP)管道中最常见的任务,如图2:


•语音部分(POS)标记(POS)标记:用表示其句法作用的唯一标记标记标记每个单词(例如:复数名词,副词。

•分块:用句法成分如名词短语(NP)或动词短语(VP)标记句子的片段。每个单词只分配一个唯一的标记。

•命名实体识别(NER):使用诸如person、company或location之类的类别来标记句子中的原子元素。

•语义角色标记(SRL):为句子的每个句法成分分配一个语义角色。

•语言模型:传统上估计单词w是序列中下一个单词的概率。

•语义相关词(例如,同义词、同名词、同名词):使用WordNet数据库作为基础真值进行测量。这个任务包括预测两个词是否语义相关。


D.斯坦福CoreNetLP

斯坦福CoreNLP是世界上使用最广泛的自然语言处理(NLP)软件之一。它提供了一套人类语言技术工具。它可以给出词的基本形式、词类、公司名称、人名等。规范日期、时间和数字量,根据短语和句法依赖关系标记句子结构,指示哪些名词短语指同一实体,指示情感,提取实体之间的特定或开放类关系,得到人们所说的引号等。


Stanford CoreNLP 的设计使其非常灵活、可扩展,并且易于将一系列语言分析工具应用到文本中。可以使用两行代码在一个纯文本上运行工具管道。Stanford CoreNLP集成了许多Stanford的自然语言处理(NLP)工具,包括语音部分(POS)标记器、命名实体识别器(命名实体识别(NER))、解析器、同义词解析系统、情感分析、自动学习模式和开放信息提取工具。此外,注释器管道可以包括附加的定制或第三方注释器。CoreNLP的分析为高级和领域特定文本理解应用程序提供了基础性构件。


E.网络域的实体提取

尽管StanfordCoreNLP 是一款最先进的自然语言处理(NLP)软件,但它没有为从网络域中的非结构化文本中提取实体提供非常好的性能,因为它没有接受网络域特定数据的训练。

Stucco Entity-Extractor库,由Oak Ridge NationalLab(ORNL)开发,旨在从非结构化文本中识别和标签网络域实体,该库利用Apache OpenNLP库和StanfordCoreNLP库进行令牌化、词性标记,以及构建非结构化文本的解析树。

Stucco EntityExtrator库标识和标记的实体类型包括:

•软件:供应商,产品,版本

•文件:名称

•功能:名称

•漏洞:名称、描述、CVE、MS

对于非结构化文本,实体-提取器库生成注释对象,该注释对象将非结构化文本表示为映射,该映射包括:

•文本:原始原始文本

•句子:句子清单

o 句子:一个句子的地图

■Token:句子中的词

■POSTag:词性标记

■网络实体:令牌的网络域标签

o ParseTree:作为树的句子结构

例如。图3显示了国家脆弱性数据库(NVD)文本描述的Coimnon脆弱性增强CVE-2012-0678与自动生成的标签。注意网络域注释,如软件供应商:苹果和软件产品:Safari。

在自然语言处理(NLP)管道分析tweet之后,TwitterOSINT系统将tweet的文本及其用户名、日期和所有注释附加到JavaScriptObjectNotation(JSON)fde,以便进一步处理和分析。


F.弹性堆栈

TwitterOSINT系统利用了Elastic Stack,这是一个可伸缩、灵活、功能丰富的平台,使用户能够以任何格式可靠和安全地获取来自任何源的数据,并进行实时搜索、分析和可视化。

图4显示了弹性堆栈的关键部件:

•Logstash:一个开源的、服务器端的数据处理管道,它同时从多个源获取数据,对其进行转换,然后发送到“stash”(如果使用弹性堆栈,这就是弹性搜索)。

•弹性搜索:用于索引、存储和分析数据的分布式RESTful搜索和分析引擎。

•Kibana:UI可视化弹性搜索数据并导航弹性堆栈。

TwitterOSINT系统使用Logstash获取为选择的tweets创建的JavaScriptObjectNotation(JSON)文件,并将内容提供给Elasticsearch,Elasticsearch然后将数据索引并存储到集中管理的数据存储中。

为了搜索和分析索引Twitter以获得进一步的洞察力并导出可操作的智力,人类分析人员可以使用Elasticsearch和Kibana来执行搜索查询或创建可视化。弹性堆栈的X-Pact可进一步用于提供额外的数据分析和任务自动化能力,包括机器学习、图形分析和警告。


3.TwitterOSINT的设计与实现

在本节中,我们描述了TwitterOSINT原型系统的设计与实现。

A.系统结构

TwitterOSINT将自然语言处理(NLP)、机器学习技术和弹性栈(Elastic Stack)结合在一起,提供了一个全面的数据分析环境,以收集、存储、分析和可视化被认为与网络安全相关的推文。图中的流程图,最后给出了TwitterOSINT系统的体系结构和在每个步骤中的Twitter数据的转换。


B.运行环境和工具

TwitterOSINT原型系统是使用EclipseOxygenRelease4.7. 0IDE和JavaVersion8Update151开发的。它最初是在运行CentOS 7的Dell Power Edge 730xd企业级服务器上实现的。后来它被移植到Windows7工作站上。

该系统是以下列主要应用特定依赖性构建的:

•Twitter4j-4.0. 4

•斯坦福德-科伦普-3.4. 1

•Stanford-corenlp-3.4. 1模型

•实体-提取或-1.0. 0

•opennlp-tools-1.6. 0

•jackson-databind-2.7. 0


C.TwitterOSINTJava应用程序

TwitterOSINT是由两个主要类对象组成的主要Java应用程序:Stream和注释器。

•java包含使用TwitterStreamingAPI,基于文本文件中指定的网络安全关键字来流传输tweet的主类。它删除特殊字符和URL,然后将结果传递给注释器类,以进一步自然语言处理(NLP)和实体提取。Stream类还负责创建JavaScriptObjectNotation(JSON)对象,该对象具有由自然语言处理(NLP)和实体提取管道返回的推特日期、用户名、文本和注释。这些JavaScriptObjectNotation(JSON)对象接下来被写入名为twitDB. json的文件中。


•java包含使用实体提取模块进行令牌化、语音部分(POS)标记和向每个令牌添加注释的类。注释器类的输出是具有键-值对的JavaScriptObjectNotation(JSON)对象,其中键是字段标签(例如。令牌、语音部分(POS)、CyberAnnot)和值是字段值。


在本节中,我们首先讨论如何运行TwitterOSINT系统以及几个示例来展示如何将系统用于网络安全操作。然后,我们讨论为获得关于该系统及其能力的操作经验和见解而进行的初步实验,以及我们的观察。


4.运行TwitterOSINT系统

要运行TwitterOSINT系统,请启动Stream.java应用程序。Logstash、Elasticsearch和Kibana服务,让他们继续跑。


A.运行TwitterOSINT系统

Streamjava应用程序维护到Twitter的连接,以下载相关的tweet。然后,它使用自然语言处理(NLP)管道来分析tweet,并将带有自动生成的注释的文本存储在twitDB.json文件中。


Logstash服务被配置为摘要twitDB. json文件并将数据转发到Elasticsearch,Elasticsearch然后将tweet及其注释索引并存储在中央管理的数据存储中。


Kibana服务提供的UI用于创建存储在Elasticsearch中的数据的可视化、导航ElasticStack和执行命令。


B.样本数据

下面的文本框显示了twitterOSINT系统处理的示例tweet(包含日期、用户名和Twitter的文本)。

JavaScriptObjectNotation(JSON)格式显示为这个tweef文本生成的注释的一部分。文本被分解成令牌。每个令牌都标有三个字段:CyberAnnot(表示网络实体:脆弱性、软件供应商、软件产品等)。或者“O”(如果不是网络相关实体),POS(表示语言部分)和令牌本身。

C.数据可视化

手动检查大量索引tweets对于分析师来说并不实用。为了说明如何利用弹性堆栈的强大性和易用性来帮助分析人员以自动化的方式定义和执行对他们来说高度感兴趣和有价值的任务,弹性堆栈用于创建五个可视化,以使其更容易收集和查看聚合或相关信息。


弹性搜索提供了一个名为重要术语聚合的特性,它是一个聚合,它返回一组中有趣或不寻常的术语出现。所选术语不是集合中最受欢迎的术语。它们是在前台(例如,今天索引的Tweet)集和后台(直到今天但不包括今天索引的Tweet)集之间测量时,在流行度方面经历了显著变化的术语。


例如,假设tnnRansomware只存在于先前索引的1000万条tweet中的5条,然而它在今天索引的100条tweet中的4条中发现。这样的大移位频率(5/10, 000, 000或0. 000005%相对于4/100或4%)是显著的,并且可能指示需要进一步调查,通常当前威胁或受威胁影响的软件产品,将出现在当天的推文中,其频率高于正常频率。


我们构建了一个饼图,如图5所示,以显示在一天中最重要的术语上聚合的tweet中的标记词的分布。这个图表可以帮助分析者更快地发现网络威胁和易损性词语频度的显著增加,比如每天。

标签云是自由形式文本的视觉表示,标签通常是单个单词,并且每个标签的重要性用由度量聚合确定的字体大小和/或颜色示出。重要术语聚合用于为TwitterOSINT构建标签云。这个标签云的目的是表示当天最重要的单词,并提供一键访问包含特定感兴趣单词的所有tweet。例如,在图 6 所示的标签云中,单Google显示当天包含单Google所有索引 tweet。

计数聚合返回所选索引模式中元素的原始计数。这个可视化提供了当天相关推文的数量的快速视图。当在标签云上单击一个单词以显示包含该单词的Tweet时,Count矩阵显示查询返回的Tweets的nmnber,如图7所示。

我们构建的最后两个Kibana生成的可视化显示为表格。如图8所示,第一张表格显示了包含当天前20个重要词汇的推文。第二个表,如图9所示,包含了当天的所有相关推文。这些表格提供了当天推文的快速视图。可以修改表以显示感兴趣的tweet,基于点击标签云中的一个单词。

D.初步实验

我们进行了一个非常初步的实验,以评估TwitterOSINT系统在使用与网络域相关的信息标记Twitter方面的有效性。


在此实验中,选择三组,每组由500个随机选择的推特组成。这些推特被手动研究,以识别具有相关数据的推特的属性。这些属性是通过在JavaScriptObjectNotation(JSON)对象中以注释的形式存在或不存在网络安全实体来描述的。结果见表1。

实验发现,在1500条(3. 4%)的采样推文中,51条是相关的,这意味着它们包含一些与漏洞相关的有趣的信息。78%(40/51)的这些推特具有受该漏洞影响的漏洞描述、软件供应商和/或软件产品。在其余22%的带有相关信息的推文中,一个或多个字段丢失;然而。大约一半的时间,他们确实包含的信息已经被覆盖在其他78%的相关推文中。


对于这个实验,观察到的每日未过滤tweet计数约为10, 000条tweet。我们在Kibana开发了一条规则来过滤每天的推文,只显示包含三个实体的推文:脆弱性、软件供应商和/或软件产品。这个规则删除了大多数不相关的tweet,因此平均有130条tweet保留在筛选列表中。该规则还删除了少量(-12%)的确包含相关信息的推文。此外,过滤后的列表中也有一小部分的假阳性推文。虚假肯定是指实际上不包含与网络安全有关的信息的推特,或者它们包含的信息只是信息,而不是最近的网络安全威胁。


5.  结论

本文描述了一个TwitterOSINT原型系统的设计和实现,该系统可以帮助分析人员利用Twitter的开源数据收集和获得网络安全情报。


TwitterOSINT原型系统使用TwitterStreamingAPI实现,以收集包含与网络安全相关的指定关键字的推文。利用StanfordCoreNLP库和橡树岭国家实验室的Stucco网络域特定实体提取库对非结构化tweet文本进行分析,并对文本中的网络相关实体进行自动分类和标签。系统还使用 Elastic Stack 存储、搜索和可视化注释的 tweet。


使用Twitter等数据源进行网络智能的一个主要挑战是,从非结构化文本中准确分类和标签特定域实体,因为大多数自然语言处理(NLP)工具都经过培训来处理通用英语。借助橡树岭国家实验室(ORNL)的网络域特定实体提取库应对这一挑战,TwitterOSINT原型系统运行良好。


总的来说,自然语言处理(NLP)、机器学习和弹性堆栈(Elastic Stack)的结合提供了非常强大、可扩展和易于使用的平台。TwitterOSINT框架显示有望成为帮助网络安全分析师监测全球发现的最新网络威胁的工具,使他们能够积极主动地保护自己的组织的资产免受威胁,实现高度自动化和准确性。


未来,我们计划在开源情报原型系统中加入更多的开放源代码,比如安全博客、新闻网站和用户讨论和辩论网络安全威胁、攻击和漏洞的其他在线场所。我们还计划利用 Elastic Stack 提供的额外功能,如内置的机器学习和警报功能,以促进数据分析和网络安全操作任务的进一步自动化。此外,我们喜欢在实际的网络操作环境中试用我们的TwitterOSINT原型系统,这样我们可以从从事网络操作的人员那里获得输入和反馈,以帮助指导我们未来的规划、设计、实施和实验努力。


作者:SatyanarayanRaju Vadapalli, George Hsieh, Kevin S. Nauer



原文及机器翻译文档已上传小编知识星球




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存