导语:今天介绍一款针对Twitter的威胁情报分析框架,Birdwatcher起初只是一堆计算微博用户和小组的权重的脚本集合,框架作者将他重写成更加完善的框架,可以模块化的交互式框架。
今天介绍一款针对Twitter的威胁情报分析框架,Birdwatcher刚开始的时候只是一堆计算微博用户和小组的权重的脚本集合,框架作者将他重写成更加完善的框架,可以模块化的交互式框架。就像Metasploit和Recon-ng那样的。
本篇文章将通过一个例子来介绍Birdwatcher,关于工具如何安装等等,大家可以直接看github。
1. 工作空间
和Metasploit一样,Birdwatcher也提供了工作空间的概念。可以方便管理不同用户,存储产生的数据。通过工作空间,可以将不同用户在逻辑上进行隔离。
如上图,在方括号内显示的就是当前活跃的用户。Birdwatcher提供了一个默认的工作空间,如果你只是个单用户,这个默认用户就可以满足你所有操作。如果是小组,就需要另外在建,并且为每个成员分配工作空间。
2. 命令
最主要的部分是他的命令介绍和help命令,命令后面都有简要的介绍:
3. 模块
同样的,Birdwatcher也提供了一大堆不同功能的模块。通过这些模块可以将原始的微博数据加工成我们需要的样子。如下功能:
1. 计算用户的影响力,微博话题和影响图 2.基于用户的微博内容,生成加权关键字,微博云 3.列出最受欢迎的分享的URLs 4.生成用户的社交关系图 5.通过分享URL爬取内容和标题 6.通过用户微博中开启的位置信息生成KML文件,可以在Google Earth中查看 7.生成用户微博情绪评分(正面,中性,负面)
Birdwatcher代码的设计初衷就是可以让用户容易使用,如果你会Ruby的话,还可以自己写扩展模块。
4. 使用案例
如果大家关注安全新闻的话,应该会知道LOVELY HORSE这个工具,是用来监控Twitter上与安全相关的账号和小组。接下来,我们就用Birdwatcher演示下如何做一个自己的LOVELY HORSE
4.1 创建一个新的工作区和用户
我们用一个新的工作区来演示接下来的步骤:
创建成功,同时切换到lovelyhorse工作区下。接下来为我们的工作区添加用户。
以下是37个Twitter账号的列表,在这里我们将使用这些作为接下来的例子。
0xcharlie alexsotirov anon_central anon_operations anonops anonymousirc bradarkin CeRTFi danchodanchev daveaitel dinodaizovi diocyde egyp7 GoVCeRT_NL halvarflake hdmoore hernano JaNeTCSiRT kevinmitnick lennyzeltser lulzsec mdowd mikko msftsecresponse operationleaks owasp pusscat Shadowserver snowfl0w taosecurity taviso teamcymru thegrugq TheHackersNews tinman2k VuPeN WTFuzz
通过执行user add0xcharlie alexsotirov … WTFuzz 这样的命令一个个导入,但是这样太麻烦了。我们用第一个模块批量导入就可以。想把这个列表保存成一个文件,然后通过该模块导入:
用use命令通过模块的相对路径就可以导入了。这一点框架都给我们做好了,只要知道在Modules目录下找就行。
用show info 命令可以查看模块的使用文档。然后,show命令也可以查看模块的配置选项,这点和Msf一样:
这个模块很简单,至于一个FILE选项,配置这个选项来确定从哪里导入文件。表格中的Required的意思就是这个选项必须要配置,配置完后直接运行,如下图:
接下来,模块就会通过Twitter API获取到这些用户的基本信息,并存到后台数据库。我们可以随时通过user list 命令查看这些用户:
4.2 获取微博内容
现在,我们可以通过TwitterAPI获取这些用户的微博内容进行进一步研究:
通过status fetch命令可以抓取到1000条微博内容并存到数据库中。同时这个命令也可以提取微博中的一些内容,例如:URLs,@内容和标签关键词。第一次运行该命令花的时间要长一些,因为第一次需要抓取所有的信息,随后再抓取就只是抓更新的部分。
通过status list 命令查看抓到的内容:
通过statussearch命令可以查看这些微博中内容,例如lovelyhorse:
4.3 爬去URLs
抓取完后,我们有了一个用户关注的URL集合,通过这些URL我们可以获取到用户感兴趣的内容以及很多有趣的信息。不过现在我们只有用户分享的URL,光有这些是很难处理的。我们要把这些URL内容爬下来,可以用URL爬取模块:
由上图可以看出,通过该模块,可以采集到url的HTTP状态码,页面类型以及网页标题。该模块也支持重定向的页面。当然,有些页面是由访问限制的,如果我们想切换IP呢?该模块同样可以通过PROXY_选项的配置为你的访问设置代理。
代理设置:
设置好后,就可以直接运行了,运行的速度取决于你的网速,代理,以及线程大小设置
4.4 获取Klout信息
Klout是一家衡量用户在Twitter,Facebook,Google+,LinkedIn,Foursquare,Wikipedia等社交网络上影响力指数的公司。通过Klout API我们可以得到有关用户影响力的信息。通过这些我们可以画出用户影响力图,很直观的看到每个用户影响了谁和被谁影响。
首先载入user/lklout_id模块。该模块可以检索到用户在Klout的ID好,通过这些id,其余有关Klout的模块才能调用数据:
运行users/klout_topics模块可以获取到每个用户的微博关键词,例如Technology,Hacking,Marketing,Information Security,等等。这些关键词都会保存在数据库中:
如果我们想知道每个用户的影响力,可以使用user/klout_score模块来检索Klout评分。Klout评分是由Klout公司给出的,评分标准可以看这里(https://klout.com/corp/score),评分越高,用户影响力越高:
由输出可以看到,mikko是最有影响力的账号,其次是hdmoore和thegrugq。
接下来,我们加载users/klout_influence模块检索信息,计算出每个用户影响了谁和被谁影响了:
接下来,我们用users/influence_graph模块,根据影响力关系做影响关系图:
结果如下:
4.5 制作标签云
通过statuses/word_cloud模块,可以为我们计算出所有用户微博中每个词的权重,当然这个范围可以选择。配置如下:
我们必须为该模块配置一个输出的图片文件,同时设置图片大小。这里我们把INCLUDE_PAGE_TITLES选项设置成true,这样模块就能利用之前urls/crawl模块爬下的标题信息当成输出了:
接下来,就会生成一个7天内的关键词标签云:
4.6 社交关系图
接下来我们要做的是另一个关系图:社交关系图。这里不需要用到影响力数据。我们需要分析的是每个用户在自己的微博里提到了谁:
这个的结果与影响力图有些许不同,会为我们提供一个聚合的社交群。用户之间的权重代表的是用户之间相互提起的次数。线越粗,表示这两个用户相互提起的次数越多:
4.7 用户活跃时间
另外的问题是,如果你知道用户在什么时间段内最容易回复你的微博,我们可以用users/activity_plot模块计算出来:
从上图,我们可以知道halvarflake在周五和周二早上8点,周三下午7点是最活跃的时候。最可能回复你的留言。
4.8 分享链接列举
最后介绍一个模块,可以列举出用户所有的分享链接。因为,如果一个链接被大多数用户分享,那也许可以说明这个链接的价值也更大:
之前,我们用urls/crawl模块爬取过页面了,就可以直接利用。
好了,结束!!!