
msticpy v3.0.2
Microsoft 위협 인텔리전스 보안 도구
MSTIC Jupyter 및 Python 보안 도구
Microsoft 위협 인텔리전스 Python 보안 도구.
msticpy는 Jupyter Notebook에서 정보 보안 조사 및 헌팅을 위한 라이브러리입니다. 다음과 같은 기능을 포함합니다:
- 여러 소스에서 로그 데이터 쿼리
- 위협 인텔리전스, 지리적 위치 및 Azure 리소스 데이터로 데이터 보강
- 로그에서 활동 지표(IoA) 추출 및 인코딩된 데이터 압축 풀기
- 비정상 세션 탐지 및 시계열 분해와 같은 정교한 분석 수행
- 대화형 타임라인, 프로세스 트리 및 다차원 모프 차트를 사용하여 데이터 시각화
또한 쿼리 시간 경계 설정, 목록에서 항목 선택 및 표시, 노트북 환경 구성을 위한 위젯과 같은 시간 절약형 노트북 도구도 포함되어 있습니다.

msticpy 패키지는 원래 Microsoft Sentinel용 Jupyter Notebook 작성을 지원하기 위해 개발되었습니다. Azure Sentinel이 여전히 우리 작업의 큰 초점이지만, 데이터 쿼리/수집 구성 요소를 확장하여 다른 소스(현재 Splunk, Microsoft Defender for Endpoint 및 Microsoft Graph가 지원되지만 다른 SIEM 플랫폼의 데이터 지원을 위해 적극적으로 작업 중입니다)에서 로그 데이터를 가져오고 있습니다. 대부분의 구성 요소는 모든 소스의 데이터와 함께 사용할 수 있습니다. Pandas DataFrame은 거의 모든 구성 요소의 보편적인 입력 및 출력 형식으로 사용됩니다. 또한 로컬 CSV 파일과 피클된 DataFrame에서 데이터를 쉽게 처리할 수 있는 데이터 공급자도 있습니다.
이 패키지는 보안 조사자와 헌터를 위한 세 가지 핵심 요구 사항을 해결합니다:
- 데이터 수집 및 보강
- 데이터 분석
- 데이터 시각화
피드백, 버그 신고, 새로운 기능 제안 및 기여를 환영합니다.
Installing
핵심 설치:
pip install msticpy
또는 최신 개발 빌드
pip install git+https://github.com/microsoft/msticpy
Upgrading
msticpy를 최신 공용 비베타 릴리스로 업그레이드하려면 다음을 실행하세요:
pip install --upgrade msticpy
참고: msticpyconfig.yaml을 복사하여 msticpy 폴더 외부의 디스크에 저장하고 환경 변수에서 참조하는 것이 좋습니다. 이렇게 하면 msticpy 설치를 업데이트할 때마다 구성을 잃는 것을 방지할 수 있습니다.
Documentation
전체 문서는 ReadTheDocs에 있습니다.
많은 모듈의 샘플 노트북은 docs/notebooks 폴더 및 함께 제공되는 노트북에 있습니다.
또한 이 문서 끝에 참조된 샘플 노트북을 탐색하여 컨텍스트에서 사용된 일부 기능을 볼 수 있습니다. mybinder.org의 이 대화형 데모에서 패키지 기능 중 일부를 사용해 볼 수 있습니다.
Log Data Acquisition
QueryProvider는 Microsoft Sentinel/Log Analytics, Microsoft XDR, Splunk, OData 및 기타 로그 데이터 소스를 대상으로 하는 확장 가능한 쿼리 라이브러리입니다. 또한 Mordor 데이터 세트 및 로컬 데이터 사용에 대한 특별 지원이 있습니다.
내장된 매개 변수화된 쿼리를 사용하면 단일 함수 호출로 복잡한 쿼리를 실행할 수 있습니다. 간단한 YAML 스키마를 사용하여 자체 쿼리를 추가하세요.
Data Enrichment
Threat Intelligence providers
TILookup 클래스는 여러 TI 공급자에서 IoC를 조회할 수 있습니다. 내장 공급자에는 AlienVault OTX, IBM XForce, VirusTotal 및 Azure Sentinel이 포함됩니다.
입력은 단일 IoC 관찰 가능 항목이거나 여러 관찰 가능 항목을 포함하는 pandas DataFrame일 수 있습니다. 공급자에 따라 계정과 API 키가 필요할 수 있습니다. 일부 공급자는 특히 무료 티어의 경우 스로틀링을 적용하여 대량 조회 수행에 영향을 줄 수 있습니다.
TIProviders 및 TILookup Usage Notebook
GeoLocation Data
GeoIP 조회 클래스를 사용하면 다음 중 하나를 사용하여 IP 주소의 지리적 위치를 매칭할 수 있습니다:
- GeoLiteLookup - Maxmind Geolite (https://www.maxmind.com 참조)
- IPStackLookup - IPStack (https://ipstack.com 참조)

Azure Resource Data, Storage and Azure Sentinel API
AzureData 모듈에는 Azure API를 통해 노출된 추가 호스트 세부 정보로 Azure 호스트 세부 정보에 대한 데이터를 보강하는 기능이 포함되어 있습니다. AzureSentinel 모듈을 사용하면 인시던트를 쿼리하고 탐지기 및 헌팅 쿼리를 검색할 수 있습니다. AzureBlogStorage를 사용하면 blob 저장소에서 데이터를 읽고 쓸 수 있습니다.
Azure Resource APIs, Azure Sentinel APIs, Azure Storage
Security Analysis
이 하위 패키지에는 보안 조사 및 헌팅 작업에 유용한 여러 모듈이 포함되어 있습니다:
Anomalous Sequence Detection
Office, Active Directory 또는 기타 로그 데이터에서 비정상적인 이벤트 시퀀스를 탐지합니다. 세션(예: 동일한 계정에 의해 시작된 활동)을 추출하고 비정상적인 활동 시퀀스를 식별 및 시각화할 수 있습니다. 예를 들어, 공격자가 누군가의 사서함에 메일 전달 규칙을 설정하는 것을 탐지합니다.
Anomalous Sessions 및 Anomalous Sequence Notebook
Time Series Analysis
시계열 분석을 사용하면 정상적인 계절적 변동(예: 하루 시간, 요일별 이벤트의 규칙적인 증감)을 고려하여 로그 데이터에서 비정상적인 패턴을 식별할 수 있습니다. 분석과 시각화를 모두 사용하면 모든 데이터 세트에서 비정상적인 트래픽 흐름 또는 이벤트 활동을 강조할 수 있습니다.

Visualization
Event Timelines
모든 로그 이벤트를 대화형 타임라인에 표시합니다. Bokeh Visualization Library를 사용하여 타임라인 컨트롤을 사용하면 하나 이상의 이벤트 스트림을 시각화하고, 특정 시간 슬롯으로 대화형 확대/축소를 하고, 플로팅된 이벤트의 세부 정보를 볼 수 있습니다.

Process Trees
프로세스 트리 기능에는 두 가지 주요 구성 요소가 있습니다:
- 프로세스 트리 생성 - 호스트의 프로세스 생성 로그를 가져와 데이터 세트의 프로세스 간 부모-자식 관계를 구축합니다.
- 프로세스 트리 시각화 - 처리된 출력을 사용하여 Bokeh 플롯으로 대화형 프로세스 트리를 표시합니다.
처리된 데이터 세트에서 개별 및 부분 트리를 추출하는 유틸리티 함수 세트가 있습니다.

Process Tree 및 Process Tree Notebook
Data Manipulation and Utility functions
Pivot Functions
MSTICPy 기능을 "엔터티 중심" 방식으로 사용할 수 있습니다. 특정 엔터티 유형(예: Host, IpAddress, Url)과 관련된 모든 함수, 쿼리 및 조회는 해당 엔터티 클래스의 메서드로 함께 수집됩니다. 따라서 IP 주소로 작업하려면 IpAddress 엔터티를 로드하고 해당 메서드를 찾아보면 됩니다.
Pivot Functions 및 Pivot Functions Notebook
base64unpack
Base64 및 아카이브(gz, zip, tar) 추출기입니다. base64로 인코딩된 문자열을 식별하고 디코딩을 시도합니다. 결과가 지원되는 아카이브 유형 중 하나처럼 보이면 내용의 압축을 풉니다. 각 디코딩/압축 풀기 결과는 추가 base64 콘텐츠가 있는지 지정된 깊이까지 다시 확인됩니다.
Base64 Decoding 및 Base64Unpack Notebook
iocextract
정규 표현식을 사용하여 침해 지표(IoC) 패턴(IP 주소, URL, DNS 도메인, 해시, 파일 경로)을 찾습니다. 입력은 단일 문자열 또는 pandas DataFrame일 수 있습니다.