导语:今天介绍一款针对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模块爬取过页面了,就可以直接利用。

好了,结束!!!

源链接

Hacking more

...