
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()
기본적으로 하위 기술은 각 기술 객체 아래에서 접근 가능합니다. 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 객체에서 다음 주요 속성에 접근할 수 있습니다:
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은 현재 다음 위치에서 데이터를 가져옵니다: