
Mitre ATT&CK Frameworkと対話するためのPythonパッケージ
.______ ____ ____ ___ .___________.___________. ______ __ ___
| _ \ \ \ / / / \ | | | / || |/ /
| |_) | \ \/ / / ^ \ `---| |----`---| |----`| ,----'| ' /
| ___/ \_ _/ / /_\ \ | | | | | | | <
| | | | / _____ \ | | | | | `----.| . \
| _| |__| /__/ \__\ |__| |__| \______||__|\__\
MITRE ATT&CK フレームワークと対話するための Python パッケージ
現在のバージョンは 7.1.1 です
pyattck は MITRE ATT&CK フレームワークのための軽量なフレームワークです。このパッケージは、MITRE Enterprise、PRE-ATT&CK、Mobile、および ICS フレームワークから詳細を抽出します。
pyattck は、組織や個人が MITRE ATT&CK フレームワークにプログラムでアクセスできるように支援します。つまり、Enterprise、Mobile、Pre-Attck、ICS フレームワークで定義されたすべてのアクター、マルウェア、緩和策、戦術、技法、ツールに、コマンドラインユーティリティを介して、あるいは自分のコードベースに組み込んでアクセスできるということです。
このデータに自動化された(スクリプト化/コーディングされた)方法でアクセスしたい理由は数多くありますが、いくつかの例を挙げます。
pyattck が提供する他の利点としては、追加のコンテキストデータを提供できることもあります。このデータの詳細についてはこちらを参照してください。基本的には、pyattck は複数のオープンソースリポジトリを利用して、技法の実行に使用されるコマンド、悪意のあるアクターの国やその他の詳細、定義されたツール/マルウェアに類似したマルウェアの他の亜種など、追加のコンテキストデータを収集します。
この追加のコンテキストこそが、pyattck を真に強力なものにし、人々が検出ルールのより堅牢なテストと検証を構築したり、テストの仮定を検証したりすることを可能にします。実際、pyattck をブルーチーム、レッドチーム、パープルチームが組織(そして自身)を守るために活用できる方法は無数にあります。
pyattck パッケージは、MITRE ATT&CK フレームワークからすべての戦術、技法、アクター、マルウェア、ツール、緩和策と、MITRE ATT&CK データセット内で定義されたすべての関係(サブ技法を含む)を取得します。
さらに、技法、アクター、ツール(該当する場合)には、サードパーティのリソースから収集されたデータが含まれるようになり、さまざまなプロパティを介してアクセスできます。これらの機能の詳細については、外部データセットを参照してください。
pyattck パッケージでは次のことが可能です。
pyattck は OS X、Linux、Windows にインストールできます。また、ソースから直接インストールすることもできます。インストールするには、該当するオペレーティングシステムの見出しの下にあるコマンドを参照してください。
pip install pyattck
git clone https://github.com/swimlane/pyattck.git
cd pyattck
python setup.py install
pyattck を使用するには、Attck オブジェクトをインスタンス化する必要があります。各クラスを直接操作することもできますが、意図された使用方法は Attck オブジェクトを介することです。
from pyattck import Attck
attack = Attck()
デフォルトでは、sub-techniques は各技法オブジェクトの下でアクセス可能です。この動作をオフにするには、Attck オブジェクトを作成するときに nested_techniques=False を渡します。
例として、デフォルトの動作は次のようになります。
from pyattck import Attck
attack = Attck()
for technique in attack.enterprise.techniques:
print(technique.id)
print(technique.name)
for subtechnique in technique.techniques:
print(subtechnique.id)
print(subtechnique.name)
Attck オブジェクトでは、次の main プロパティにアクセスできます。
MITRE ATT&CK フレームワークを指定すると、追加のプロパティにアクセスできます。
Enterprise プロパティの下でアクセス可能なオブジェクトは次のとおりです。
enterprise プロパティの下のオブジェクトタイプの詳細については、Enterprise を参照してください。
PreAttck プロパティの下でアクセス可能なオブジェクトは次のとおりです。
preattck プロパティの下のオブジェクトタイプの詳細については、PreAttck を参照してください。
Mobile プロパティの下でアクセス可能なオブジェクトは次のとおりです。
mobile プロパティの下のオブジェクトタイプの詳細については、Mobile を参照してください。
ICS プロパティの下でアクセス可能なオブジェクトは次のとおりです。
ics プロパティの下のオブジェクトタイプの詳細については、ICS を参照してください。
pyattck 内の新しい対話型メニューシステムを利用するには、interactive を True に設定する必要があります。そうすると、対話型コンソールメニューシステムが起動します。
スクリプトを使用して、次のように実行して起動できます。
from pyattck import Attck
Attck(interactive=True)
または、コマンドラインで対話モードを実行することもできます。
pyattck --interactive
以下の gif の例を確認してください。

pyattck では、外部データを保存するかどうか、およびその保存場所を設定できます。
from pyattck import Attck
attck = Attck(
nested_techniques=True,
use_config=False,
save_config=False,
config_file_path='~/pyattck/config.yml',
data_path='~/pyattck/data',
enterprise_attck_json="https://swimlane-pyattck.s3.us-west-2.amazonaws.com/merged_enterprise_attck_v1.json",
pre_attck_json="https://swimlane-pyattck.s3.us-west-2.amazonaws.com/merged_pre_attck_v1.json",
mobile_attck_json="https://swimlane-pyattck.s3.us-west-2.amazonaws.com/merged_mobile_attck_v1.json",
ics_attck_json="https://swimlane-pyattck.s3.us-west-2.amazonaws.com/merged_ics_attck_v1.json",
nist_controls_json="https://swimlane-pyattck.s3.us-west-2.amazonaws.com/merged_nist_controls_v1.json",
generated_nist_json="https://swimlane-pyattck.s3.us-west-2.amazonaws.com/attck_to_nist_controls.json",
**kwargs
)
デフォルトでは、pyattck は(現在)HTTP GET リクエストを使用して、それぞれの場所から最新の外部データを取得します。pyattck は現在、以下の場所からデータを取得しています。