
AMIRA 是一种服务,用于自动对 OSXCollector 输出文件进行分析。自动化分析通过 OSXCollector Output Filters 执行,特别是《统御一切的过滤器》:Analyze Filter。AMIRA 负责从 S3 存储桶中检索输出文件,运行 Analyze Filter,然后将分析结果上传回 S3(当然,也可以设想将结果附加到相关的 JIRA 工单上)。
以下步骤假设您的机器上已安装 tox。
如果尚未安装,请运行:
$ sudo pip install tox
AMIRA 使用 OSXCollector Output Filters 进行实际分析,因此您需要在工作目录中有一个有效的 osxcollector.yaml 配置文件。示例配置文件可在 OSXCollector Output Filters 中找到。
配置文件中提到了文件哈希和域黑名单的位置。请确保配置文件中提到的黑名单位置在运行 AMIRA 时也是可用的。
AMIRA 使用 boto3 与 AWS 交互。您可以通过任意一种配置选项提供凭证。
这些凭证应允许从 AMIRA 配置中指定的 SQS 队列读取和删除 SQS 消息,以及读取存储 OSXCollector 输出文件的 S3 存储桶中的对象。为了能够将分析结果上传回 AMIRA 配置文件中指定的 S3 存储桶,凭证还应具有对该存储桶的写入权限。
该服务使用 S3 存储桶事件通知 来触发分析。您需要为 OSXCollector 输出文件配置一个 S3 存储桶,以便在文件添加时,通知会发送到 SQS 队列(下图中为 AmiraS3EventNotifications)。AMIRA 定期检查队列中的新消息,收到消息后,它会从 S3 存储桶中获取 OSXCollector 输出文件,然后对检索到的文件运行 Analyze Filter。
Analyze Filter 依次运行 OSXCollector Output Filters 包中包含的所有过滤器。其中一些过滤器与外部资源通信,例如域和哈希黑名单(或白名单)以及威胁情报 API,如 VirusTotal、OpenDNS Investigate 或 ShadowServer。原始的 OSXCollector 输出会附带所有这些信息,而 Analyze Filter 运行的最后一个过滤器会将所有发现汇总成可读形式。过滤器运行完成后,分析结果将上传到分析结果 S3 存储桶。
整个流程及涉及的系统组件概览如下所示:

AMIRA 的主要入口点在 amira/amira.py 模块中。您首先需要创建一个 AMIRA 类的实例,提供 AWS 区域名称(即包含 OSXCollector 输出存储桶事件通知的 SQS 队列所在的区域)以及 SQS 队列名称:
from amira.amira import AMIRA
amira = AMIRA('us-west-1', 'AmiraS3EventNotifications')
然后,您可以注册分析结果上传器,例如 S3 结果上传器:
from amira.s3 import S3ResultsUploader
s3_results_uploader = S3ResultsUploader('amira-results-bucket')
amira.register_results_uploader(s3_results_uploader)
最后,运行 AMIRA:
amira.run()
去冲杯咖啡,放松一下,等待分析结果出现在 S3 存储桶中吧!