Yelp/amira
GitHub: Yelp/amira
基于 AWS 的 macOS 恶意软件自动化分析服务,将 OSXCollector 取证数据与多源威胁情报联动,实现端到端的自动化事件响应。
Stars: 151 | Forks: 37

[](https://pypi.python.org/pypi/amira)
[](https://github.com/Yelp/amira/actions/workflows/build.yaml)
# AMIRA: 自动化恶意软件事件响应与分析
AMIRA 是一项用于自动运行 [OSXCollector](https://github.com/Yelp/osxcollector) 输出文件分析的服务。
自动化分析是通过 [OSXCollector Output Filters](https://github.com/Yelp/osxcollector_output_filters) 执行的,特别是 *The One Filter to Rule Them All*:[Analyze Filter](https://github.com/Yelp/osxcollector_output_filters#analyzefilter---the-one-filter-to-rule-them-all)。
AMIRA 负责从 S3 bucket 获取输出文件,运行 Analyze Filter,然后将分析结果上传回 S3(虽然也可以设想将其附加到相关的 JIRA 工单中)。
## 前置条件
### tox
以下步骤假设您的机器上已安装 [tox](http://tox.readthedocs.org/)。
如果尚未安装,请运行:
```
$ sudo pip install tox
```
### OSXCollector Output Filters 配置文件
AMIRA 使用 OSXCollector Output Filters 进行实际分析,因此您需要在工作目录中拥有一个有效的 `osxclassifier.yaml` 配置文件。
示例配置文件可以在 [OSXCollector Output Filters](https://github.com/Yelp/osxcollector_output_filters/blob/master/osxcollector.yaml.example) 中找到。
配置文件中提到了文件哈希和域名黑名单的位置。
请确保在运行 AMIRA 时,配置文件中提到的黑名单位置也可用。
### AWS 凭证
AMIRA 使用 boto3 与 AWS 进行交互。
您可以使用任何可能的 [configuration options](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html) 来提供凭证。
凭证应允许从 AMIRA 配置中指定的 SQS 队列读取和删除 SQS 消息,以及对存储 OSXCollector 输出文件的 S3 bucket 中对象的读取访问权限。
为了能够将分析结果上传回 AMIRA 配置文件中指定的 S3 bucket,凭证还应允许对该 bucket 的写入访问。
## AMIRA 架构
该服务使用 [S3 bucket event notifications](http://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html) 来触发分析。
您需要为 OSXCollector 输出文件配置一个 S3 bucket,以便当文件被添加到那里时,通知将被发送到 SQS 队列(在下图中为 `AmiraS3EventNotifications`)。
AMIRA 会定期检查队列中是否有新消息,一旦收到消息,它将从 S3 bucket 获取 OSXCollector 输出文件。
然后,它将在获取的文件上运行 Analyze Filter。
Analyze Filter 按顺序运行 OSXCollector Output Filters 包中包含的所有过滤器。其中一些与外部资源通信,如域名和哈希黑名单(或白名单)以及威胁情报 API,例如 [VirusTotal](https://github.com/Yelp/threat_intel#virustotal-api)、[OpenDNS Investigate](https://github.com/Yelp/threat_intel#opendns-investigate-api) 或 [ShadowServer](https://github.com/Yelp/threat_intel#shadowserver-api)。
原始的 OSXCollector 输出会通过所有这些信息进行扩展,而 Analyze Filter 运行的最后一个过滤器会将所有发现总结成人类可读的形式。过滤器运行完成后,分析结果将被上传到 Analysis Results S3 bucket。
整个过程的概览以及其中涉及的系统组件如下图所示:

## 使用 AMIRA
AMIRA 的主入口点位于 `amira/amira.py` 模块中。
您首先需要通过提供 AWS 区域名称(OSXCollector 输出 bucket 的事件通知所在的 SQS 队列位于该区域)以及 SQS 队列名称来创建一个 AMIRA 类的实例:
```
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 bucket 中吧!
标签:AMIRA, AMSI绕过, AWS S3, macOS取证, OSXCollector, PB级数据处理, Python, Yelp开源, 事件响应自动化, 云存储安全, 威胁检测, 安全运维, 库, 应急响应, 恶意软件事件响应与分析, 无后门, 网络扫描, 自动化分析服务, 自动化恶意软件分析, 逆向工具