ANY.RUNで分析した情報をMISPに格納します。
ANY.RUNの標準機能でMISPフォーマットファイルをダウンロードすることが可能ですが、このファイルにはIOC以外の情報も多く含まれます。 本スクリプトでは、ANY.RUNからダウンロードできるMISPフォーマットファイルをベースとしつつ、分析に不要と思われる情報を省き、IOCと参考情報に絞ってMISPへ登録を行います。
このソフトウェアはBSDライセンスの下でリリースされています。 同梱のLICENSE.txtを参照してください。
- python3.6以降
- Pymisp2.4.135.3以降
- MISP2.4.135以降
pip3 install pymisp
pip3 install requests
ANY.RUNにログインし、データ取得対象アカウントのAPIキーを確認してください。 ここで確認した内容は、以後の項目で利用します。
const.pyを開き、以下設定を行ってください。
「1 ANY.RUNのAPIキー確認」 で確認したAPIキーを下記定数に設定してください。
対象定数:
ANYRUN_APIKEY
下記定数に指定したフォルダ以下に、ANY.RUNからダウンロードしたファイルが保存されます。
対象定数:
DOWNLOAD_DIRECTORY
格納されるファイル:
- 分析履歴ファイル: 分析結果ごとに後述の各ファイルのダウンロードリンクが記載されているファイル
- ダウンロードURL:https://api.any.run/v1/analysis/?skip=0
- MISPフォーマットファイル: 分析結果情報をMISPでインポートできる形にしたファイル
- サマリファイル: 分析結果のサマリを記載したJSONファイル。現状は本スクリプトでは利用していないが参考のためにダウンロードしている
- IOCファイル: 分析結果から、IOC部分だけを抽出したファイル
- ダウンロードURL:https://api.any.run/report/分析ID/ioc/json
下記定数で定義したファイルに、MISP登録を完了したANY.RUN分析結果の中で最新の分析日付を保存しておき、次回処理時にはその日付より新しい分析結果のみをMISP登録します。
対象定数:
EVENT_DATE_DAT
下記定数に、登録先MISPと、登録に利用するユーザの認証キー情報を設定してください。 尚、ここで設定するユーザには、「タグ追加」の権限が必要です。
対象定数:
- MISPのURL
MISP_URL
- ユーザ認証キー
MISP_AUTHKEY
下記の各定数を定義する事でメール通知が行われます。 メール通知が不用な場合は、MAIL_TOをNoneとしてください。 SMTPサーバ情報については、利用可能なご自身のメールアカウント情報をご確認ください。
対象定数:
- メール送信元
MAIL_FROM
- メール送信先
MAIL_TO
- メール件名
- ここで設定した文字列に実行日時を連結した件名でメールが送信されます
MAIL_SUBJECT
- SMTPサーバ接続先
MAIL_SMTP_SERVER
- SMTPサーバユーザ名
MAIL_SMTP_USER
- SMTPサーバパスワード
MAIL_SMTP_PASSWORD
下記コマンドで実行可能です。
python3 anyrun_to_misp.py
- スクリプト実行後にスクリプトと同ディレクトリ内に作成されるevent_date_datファイルは、MISPインポート済みデータの管理のために必要です。原則操作しないでください
- 新規に登録を行うイベントのuuidが既にMISPに登録されている場合、そのイベントはスキップされ登録を行いません。その際「Event already exists」という出力が行われることがありますが、動作結果に影響ありません。
- MISPインポート時、ANY.RUNからダウンロードした分析結果データにMISP上に存在しないタグが設定されている場合は、タグを新規追加します。そのため、インポートに利用するユーザには、「タグ追加」の権限が必要となります
- 初回コマンド実行時、登録データが多いと途中で処理がエラーになる場合があります。その場合はevent_date_datファイルが作成されているかを確認し、作成されていれば削除してから、再度コマンドを実行してください。
(エラーが発生するまでのイベントの登録は出来ているため、それらは無視して、未取り込みの分析結果をMISP登録します)
- MISPプロジェクト : http://www.misp-project.org/
- ANY.RUN : https://app.any.run/