

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はAWSとのインターフェースにboto3を使用します。認証情報は、利用可能な設定オプションのいずれかを使用して提供できます。
認証情報は、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が実行する最後のフィルターがすべての調査結果を人間が読める形式に要約します。フィルターの実行が完了すると、分析結果はAnalysis Results S3バケットにアップロードされます。
プロセス全体とそれに関わるシステムコンポーネントの概要を以下に示します:

AMIRAへの主要なエントリポイントはamira/amira.pyモジュールです。まず、OSXCollector出力バケットのイベント通知があるSQSキューのAWSリージョン名と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バケットに現れるのを待ちましょう!