
IPレピュテーションと履歴データに基づいて脅威や悪意のあるウェブトラフィックを特定する、高度なリアルタイム脅威インテリジェンスフレームワーク。

ARTIFは、MISPの上位に新たな抽象化レイヤーを追加し、IPレピュテーションと履歴データに基づいて脅威や悪意のあるWebトラフィックを特定する、新しい高度なリアルタイム脅威インテリジェンスフレームワークです。また、さまざまな要素に基づいて観測可能なデータを収集、処理、相関させることで、自動的なエンリッチメントと脅威スコアリングを実行します。
ARTIFの主な機能は以下の通りです。
ユースケースの例:
なぜARTIFを使うのか? ARTIFは、MISPに存在しない悪意のあるIPであっても特定できるリアルタイムの脅威インテリジェンスフレームワークです。これにより、組織はサーバーに到達する悪意のあるWebトラフィックの透明性を確保し、防御の第一層を構築できます。
MISPより引用:MISPは、サイバーセキュリティインシデント分析やマルウェア分析に関するサイバーセキュリティ指標や脅威を収集、保存、配布、共有するためのオープンソースソフトウェアソリューションです。MISPは、インシデントアナリスト、セキュリティおよびICT専門家、またはマルウェアリバースエンジニアが、構造化された情報を効率的に共有する日常業務を支援するために設計されています。
MISPはソースコードまたは事前構築済みのAWSイメージを使用してインストールできます。MISPのインストールに関する詳細は、公式ウェブサイトで確認できます。
maxmind:
image: maxmindinc/geoipupdate
environment:
GEOIPUPDATE_ACCOUNT_ID: xxxxx
GEOIPUPDATE_LICENSE_KEY: xxxxxxxxxxxxxx
git clone https://github.com/CRED-CLUB/ARTIF/
sudo docker-compose build
sudo docker-compose up
以下が参照用のconfig example.yamlです。対応する値を自分の値に置き換えてください。
credentials:
MISP_URL: "https://127.0.0.1"
MISP_KEY: "qwertyuiopasdfghjk"
python3 /home/user/ARTIF/ip_rep/feed_ingestor/update_check.py -s
python3 /home/user/ARTIF/ip_rep/feed_ingestor/update_check.py
python3 manage.py crontab add
python3 manage.py runserver
これによりポート8000が開き、IPアドレスのメタデータを取得できます。特定のIPの脅威スコアを試すことができます。
curl 127.0.0.1:8000/ip/?ip=x.x.x.x
出力は次のようになります。
{"is_IoC": false, "is_Active": false, "metadata": {"asn": "AS165**", "country": "XXX", "org": "XXX"}, "score": 80.14671726301682, "description": "XXX", "blacklists": "", "type": "", "historical":false, verdict": "No action needed"}
スコアはIPのリスクが低いことを示しています(脅威スコアが高いほど、悪意のないIPであることを意味します)。スコアが高いほど、悪意のないIPである可能性が高くなります。
注: ARTIFのインストールには、8GB RAMのインスタンスを推奨します。
Dockerコンテナのセットアップ

ARTIFの起動

ARTIFはMISPとの同期をサポートしています。MISPフィードを同期し、settings.yamlから最新の設定を取得します。MISPから変更された新しいイベントはすべてsettings.yamlに反映されます。新しいIPを追加するには、MISPにログインして「フィードを追加」ページをクリックします。IPが追加されると、cronジョブがスケジュールに従ってそれを取得し、自動的に処理します。
ARTIFは脅威フレームワークとして、組織内のトラフィックの可視性に非常に役立ちます。完全にPythonで記述されており、さまざまなフィードからIPに関するインテリジェンスを収集します。次に、このデータを相関エンジンに送信して脅威スコアを生成します。この脅威スコアの計算では、履歴データも考慮される要素の1つです。
新しいIPがサービスにヒットするたびに、CeleryワーカーがそのIPのスコアをデータベースで更新するタスクを割り当てられます。ワーカーは相関エンジンと連携し、相関エンジンは複数のソースからデータを収集します。データが古くならないようにするため(デフォルトの「stale time」は24時間)、過去の「stale time」に更新されていないデータベース内の各IPに対してワーカーを実行します。他のすべてのパラメータと同様に、この値も設定可能です。脅威スコアの計算がすべての鍵であるため、これに多大な重点を置いています。MISP、Cortex、Alien Vault、VirusTotalなどのよく知られた脅威フィードや、一般的なIPブラックリストに加えて、ビジネスやセキュリティのユースケースに応じてカスタムフィードを追加することもできます。たとえば、顧客ロイヤルティを脅威スコア計算のパラメータとして使用することも可能です。
設定を容易にするため、ARTIFを実行するには以下の入力が必要です。
実行すると、データは処理され、MongoDBコンテナに保存されます。MongoDBコンテナには3つの重要なデータベースが含まれており、フィード内のIPに関する情報と、そのメタデータ(国/ASN、組織など)を保存します。データベースにIPが見つからない場合、それはサーバーに到達した新しいIPであり、その情報がMISPに存在しないことを意味します。その後、アルゴリズムと、地理的位置、ASN、組織などのさまざまなパラメータを使用して、特定のIPのリスクスコアを計算します。スコアリングエンジンの詳細については、こちらを参照してください。
ARTIFには、古いフィードを追跡する追加機能もあります。デフォルトの設定では、最新のフィードを24時間ごとに補充します。24時間後、古いフィードは別のコレクションに移動され、最新のフィードが追加されます。操作を容易にするために、出力には「historical」フィールドが追加されており、IPが過去に悪意があったかどうかを示します。falseの値は、IPが最近フィードに追加されたことを示し、trueの値は、IPが古いフィードにすでに存在していたため、履歴的に悪意のあるIPであることを示します。
すべての過去のIPは、デフォルトで7日後にデータベースから削除されます。

ARTIFを呼び出すには、ARTIFのバックボーンであるupdate_check.pyを使用する必要があります。
ubuntu@localhost:~/ARTIF/ip_rep/feed_ingestor$ python3 /home/user/ARTIF/ip_rep/feed_ingestor/update_check.py -h
usage: update_check.py [-h] [-s [S]] -k [KEY] -m MISP
IPレピュテーションプログラム
optional arguments:
-h, --help このヘルプメッセージを表示して終了
-s [S] 初回実行時にのみ必要
以下のコマンドを実行して、cronジョブを確認することもできます。
python3 manage.py crontab show
これによりフィードが自動更新されます。デフォルトでは24時間ごとにMISPの最新フィードを確認し、フィードから新しいIPを使用してDBを補充します。7日以上経過したIPはスケジューラによって削除されます。
これは、タグが既に存在するときに追加しようとしているために発生するエラーなので、安全に無視して構いません。その場合、上記のようなエラーが表示され、タグの削除はできません。MISPにはこれらの例外をキャッチする方法がないため、この方法に依存する必要があります。
確かに時間がかかることがあり、インターネット速度やRAMによって30分から90分かかる場合があります。これは基本的にすべてのフィードをMongoDBにダウンロードして処理するためであり、時間がかかりますが、一度だけの作業です。
解決策:そのような場合は、-s引数なしでupdate_check.pyファイルを実行してください。これにより、フィードからすべてのIPがダウンロードされます。このエラーは通常、update_check.pyの初期フェーズ中に実行を中断した場合に発生します。
コントリビューションはいつでも歓迎します!
開始方法についてはcontributing.mdを参照してください。このプロジェクトのcode of conductに従ってください。
チームとの最も簡単な連絡方法は、GitHub Issuesを介することです。
新しいIssue、機能リクエスト、提案がある場合は、新しいIssueを作成する前に、同様のオープン/クローズされた既存のIssueを検索してください。