Harpoon是一款自动化的用于从各种公开资源中收集威胁情报的工具。它是由Python 3编写的,并在其设计中体现了模块化思想,每个平台和任务都会有一个插件。大家可以在Github上查看其源码,并向作者提出建议或Pull Requests。
安装和配置:
接着,我们通过查看harpoo的帮助模块了解每个模块的使用方法
在过去的一年半里,我一直忙于对多种恶意软件的威胁情报收集和分析任务。威胁情报的主要来源,一方面是被动DNS/恶意软件数据库,另一方面是恶意活动数据库。其目的是映射攻击的基础架构,并在可能的情况下将其与其他恶意活动相关联。某些威胁情报平台是完全免费的,并且面向所有人开放(例如OTX 或 RobTex)。而有的则是完全商业化的,需要收取一定的费用才能使用(例如 VirusTotal 或 PassiveTotal)。最后不难发现这项任务的大部分时间,都花在了在不同平台寻找信息上。为此,许多人试图创建一个平台来集中化收集这些信息。但在研究过程中,我们发现总有另一些平台要需要我们考虑。
新标准问题完全适用于威胁情报(xkcd 927)
公开资源情报计划(OSINT)在另一方面则更加多样化。我们的目标是,尽可能多的向互联网上的个人或组织提供互联网上可公开访问的任何数据信息。当然,还有一些有趣的平台(如SpyOnWeb),它会从公开资源网站聚合信息,接着进行组织,方便用户迅速和方便地搜索网站。
总而言之,大量任务需要我们手动完成,并且很糟糕。起初,我试图创建一些Python脚本,来自动化的帮我完成一部分任务,但它很快就变得一团糟:脚本越来越多,有python 2中的也有python 3的,一些使用配置文件,还有一些在参数中获取API密钥…最终,我决定将这些脚本作为模块组织成一个名为Harpoon的工具。用了几个月后,我觉决定将这款工具开源,并希望能帮到大家。
关于此工具的一些说明:
Harpoon仅支持Python 3
许多OSINT工具都尝试从域或电子邮件收集尽可能多的信息,而不关心其来源。Harpoon并不遵循这一理念。它主要允许你为每个命令实现单个任务。我认为在调查期间,了解信息的来源以及信息的可靠性非常重要。 我重写了一些库(如SpyOnWeb),因为我想明确地知道它做了什么以及是如何做的。所以我重复造轮子了很多次,并且我感到很满意。 Harpoon被组织成容易实现的子命令,这些命令依赖于内部或外部库。这些命令使用单个配置文件,当需要API密钥时需要我们手动完成。 该工具仍有许多不足之处需要改进,因此也欢迎大家提出建议或Pull Requests。
我已通过pip打包Harpoon(感谢@cybersteez的帮助),因此大家可以通过pip install git+ssh://git@github.com/Te-k/harpoon —process-dependency-links进行安装。
打包最大的挑战就是我写的大多数库都托管在github而不是Pypi,所以应该在同一时间安装它们。或者,你可以在克隆存储库(pip install -r requirements.txt)后安装requirements.txt中的所有内容。
如果你想使用截图模块(网站截图),你需要通过npm来安装它:npm install -g phantomjs
现在我们已经安装了Harpoon。接着,我们需要安装Harpoon所需文件并对其进行配置。要安装所需文件(目前,主要是 MaxMind GeoIP数据库),只需运行harpoon config -u命令即可。最后,我们需要进行相关的配置,主要是提供你可以/想要使用的平台的API密钥。我们只需运行harpoon config,它将复制空配置文件并使用vim打开它,以便你可以提供给定的密钥。如果你没有相关密钥,留空即可。你可以使用harpoon config -c命令查看配置模块列表。在我当前的系统上,显示结果如下:
Harpoon所需的所有文件(包括配置文件)都安装在~/.config/harpoon目录中。
在没有列出模块的情况下,我很难对这些功能进行描述,因为我几乎为我需要自动执行的每项任务都创建了一个新命令。下面,我将通过实例来演示Harpoon的用法:
威胁情报平台: Virus Total, Passive Total, Hybrid Analysis, AlienVault OTX, Shodan, Censys, RobTex, ThreatGrid, GreyNoise, TotalHash, MISP, MalShare:
最重要的是,我已经实现了一些更高级的命令,来从所有这些平台上通过ip和域名收集信息。这些命令会从所有配置的插件中搜索相关信息:
网络信息:ip,dns和asn命令会提供相关IP,域或ASN码(位置,DNS解析或ASN信息)的基本信息。
社交媒体:快速保存社交媒体账户中的所有内容是非常有必要的,网站截图的功能在这就非常适用。目前仅Twitter和Telegram存在:
短网址服务:为了尽可能多的从API获取数据,我也通过命令实现了bit.ly和goo.gl的短网址服务:
我还实现了其他一些命令,例如,有一个命令让github在github repos中搜索,或者通过pgp来搜索密钥。我特别喜欢的一个命令是,用于检查不同缓存平台中是否存在网页的cache命令。
最后,我们还可以通过help命令来查看其它命令的使用方法:
在使用过程中,我发现我经常会重复使用一些命令。所以我创建了一个存储库harpoontools,它使用Harpoon功能来安装命令。你可以通过pip install git+ssh://git@github.com/Te-k/harpoontools安装它。
现在我只实现了ipinfo,asninfo和dns:
我们以最近的Palo Alto关于Quasar RAT的报告和akamaicdn[.]ru域为例。
首先,我们来检查下DNS情况:
没有条目被配置,让我们看看是否可以使用robtex,来获取到其它以前使用的IP:
查看这些IP的所属地区:
我们可以使用crt.sh检查该域是否创建了证书:
显然他们使用的是Cloudfare托管该域名。让我们通过OTX看看,是否可以获取到194.85.61.76这个IP地址的其它信息:
Harpoon是一款基于插件的工具,因此只需创建新插件就可以轻松添加新的功能。你只需在harpoon/commands中创建一个新文件,并实现一个类继承Command类。假设我们想实现一个ping命令,我们可以创建下面的ping.py文件:
最后,欢迎大家随时向我提出意见或建议,也可通过Twitter与我取得联系。在这里我要特别感谢Starcat对博客文章的反馈!
*参考来源:randhome,FB小编 secist 编译,转载请注明来自FreeBuf.COM