企业如何有效收集公开来源的威胁情报

华盟原创文章投稿奖励计划

*本文原创作者:scu-igroup,本文属FreeBuf原创奖励计划,未经许可禁止转载

1.前言

威胁情报作为信息安全领域一个正在茁壮成长的分支,在当下依旧处于混浊状态。即网络中存在着大量的所谓“情报”,它们的结构不同、关注方向不同、可信度不同、情报内容不同、情报的来源也是千奇百怪。这使得威胁情报在实际的运用中面临许多问题,而这其中的关键问题在于,在现阶段无法统一有效的提取出威胁情报中能够应用的关键信息。

为了在一定程度上解决这一问题,我们做了一点微小的工作,通过爬取网上已经公开的威胁情报内容,提取其中的域名、URL、IP等数据,作为威胁情报库的基础数据。由此可以看出,威胁情报库的丰富,在于情报来源的丰富,也在于对威胁情报内容的有效提取。

2.来源

我们关注的是威胁情报中的域名、URL、IP等数据,这些数据的来源主要有两类。

一、开源的黑名单,在网上有大量的开源黑名单FireHOLsans.edu等。这些黑名单更新迅速、可信度高,是我们所关注的信息的一个很好的来源。且十分容易处理。

二、安全咨询类网站上的文章,在这些文章中往往包含了很多的特定主题下的IoC信息,这些信息具有针对性强的特点,即一个IP或域名可以对应到某一具体的事件。这也是威胁情报收集中非常重要的一类来源,但其最大的问题是这些信息一般都在文章中出现,其间夹杂了大量的冗余信息,使得提取这些数据具有一定的困难。

关于来源,我们正努力搜集其他的威胁情报来源。因为收集的情报越全面,越能发挥威胁情报的作用。目前在这一领域的先驱者国内有360威胁情报中心和微步在线。

3.开源黑名单获取脚本

现有的来源主要是一些网站,针对这些来源,想要自动化的提取信息最有效的办法是爬虫。下面介绍我们编写的其中的一个主要爬虫脚本,该脚本主要爬取FireHOL网站上的IP黑名单。

如何收集一波公开来源的威胁情报

其使用到的python库如上图所示。该爬虫主要分为三个步骤。第一步获取基础页面中的文件链接,这一步中主要的难点在于解析下载到的HTML文件,在本例中,使用urllib2包拿到的HTML文件中并不包含所需信息,通过抓包发现在一个请求的JSON文件中。因此只要直接获取该JSON文件就可以得到想要的文件的下载链接。其代码如下。

如何收集一波公开来源的威胁情报

其得到的文件如下图所示。将该json文件解析后就能得到想要的文件链接。

如何收集一波公开来源的威胁情报

在获取到了具体文件的下载链接后,就可以通过如下代码进行第二步,使用多线程的方式迅速的将存有IP、域名的文件取回。所以在爬虫运行时会生成大量的html文件。

第三步,依据文件中的数据类别,分别将这些文件中的内容存入到数据库中。按照数据种类的不同,存储在3张表中,分别是URL、IP、域名的表,给不同的来源建立一个索引,高效的存储在数据库中。其中有URL24601条、IP1163481条、域名54265条。并且随着我们工作的开展,这个数据库中的内容会越来越多。

如何收集一波公开来源的威胁情报

如何收集一波公开来源的威胁情报

除了以上提到的这个网站外,我们还收集了其余的20多个网站,并在不断地添加过程中,详情请访问我们的Github,来源和相关代码都已上传。

4.从文章中提取IoC信息

从文章中提取IoC信息是我们关注的数据(恶意IP、恶意URL、恶意域名)的另一个来源。从文章中提取的IoC信息比起开源黑名单中的数据来说有一大优势,就是每一个IoC信息都可以对应到具体的事件,而这些事件往往都是通过安全人员分析的具有高可信度的一类信息。所以这类信息比起开源黑名单中的数据来说具有更高的价值。

另外,这些网站的文章中往往还有别的类似网站的链接,还可以通过这些链接中寻找新的来源。

在这里展示其中一个例子,badcyber.com是国外一个信息安全类咨询网站,会每周定期地发布一些有关信息安全的文章。通过筛选这些文章,可以发现威胁情报类的事件咨询,并提取出用的IoC信息和新的IoC来源。如下图所示即是爬取的badcyber中发布的信息安全咨询类文章的题目和链接。

如何收集一波公开来源的威胁情报

从这些咨询类文章中筛选出威胁情报类文章,一个篇是否是我们需要的威胁情报类文章,主要看该文章中是否有IoC信息,有则提取出来放到数据库中。

下图展示的是从这些文章中提取的IoC信息。包括,文章链接、文章中出现的IoC信息、时间。

如何收集一波公开来源的威胁情报

5.一个小例子

在获取了这么多的数据之后,这里给出一个使用这些数据的小例子。在Windows和Linux中分别使用winpcap库和libpcap库用C语言编写一个捕获DNS包的小程序DNS_Sniffer,该程序可以抓取电脑中发起的域名请求,并将这些请求存到文件中,并通过程序自动比对这些域名请求是否在威胁情报库中。

其大致流程如下图所示。

如何收集一波公开来源的威胁情报

把捕获到的数据存储在一个如下图所示的文件中。

如何收集一波公开来源的威胁情报

然后利用python脚本request.py查询这些域名,判断其中是否有恶意行为。如果发现有恶意行为结果如下图所示。

如何收集一波公开来源的威胁情报

6.结语

威胁情报的收集是一项非常复杂且庞大的工程,特别是威胁情报来源丰富,内容结构不一致,给收集工作带来不小的挑战。但这也是非常值得研究的问题,不少企业已在威胁情报的自动采集、提取和威胁情报信息的标准化上做了不少的工作,我们也将朝这个方向继续努力。在此,希望通过我们所做的一点微小的工作抛砖引玉, 欢迎大家一起讨论。

详情见:https://github.com/scu-igroup/Ti_Collector

*本文原创作者:scu-igroup,本文属FreeBuf原创奖励计划,未经许可禁止转载

本文原创,作者:AlexFrankly,其版权均为华盟网所有。如需转载,请注明出处:https://www.77169.net/html/183863.html

发表评论