Yelp/amira

GitHub: Yelp/amira

基于 AWS 的 macOS 恶意软件自动化分析服务,将 OSXCollector 取证数据与多源威胁情报联动,实现端到端的自动化事件响应。

Stars: 151 | Forks: 37

![amira](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/14c19c56c7011222.png) [![PyPI](https://img.shields.io/pypi/v/amira.svg)](https://pypi.python.org/pypi/amira) [![Build Status](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/12ef9c001c011223.svg)](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。 整个过程的概览以及其中涉及的系统组件如下图所示: ![component diagram](https://github.com/Yelp/amira/raw/master/doc/component_diagram.png "Component Diagram") ## 使用 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开源, 事件响应自动化, 云存储安全, 威胁检测, 安全运维, 库, 应急响应, 恶意软件事件响应与分析, 无后门, 网络扫描, 自动化分析服务, 自动化恶意软件分析, 逆向工具