【ATTCK】开源项目-mitreattack-python

2023-11-08 18:52

本文主要是介绍【ATTCK】开源项目-mitreattack-python,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        mitreattack-python是用来处理ATT&CK数据的python开源工具。

        开源地址:GitHub - mitre-attack/mitreattack-python: A python module for working with ATT&CK

安装

pip3 install mitreattack-python #使用清华源pip3 install mitreattack-python  -i https://pypi.tuna.tsinghua.edu.cn/simple/

使用教程

1、下载attck json数据文件

https://raw.githubusercontent.com/mitre/cti/master/enterprise-attack/enterprise-attack.json

https://raw.githubusercontent.com/mitre/cti/master/mobile-attack/mobile-attack.json

https://raw.githubusercontent.com/mitre/cti/master/ics-attack/ics-attack.json

2、将下载的文件复制到当前工作目录

        不然会报文件不存在的错误,或指定文件目录。

>>> mitre_attack_data = MitreAttackData("enterprise-attack.json")Traceback (most recent call last):File "<stdin>", line 1, in <module>File "C:\Users\xxxxxx\.conda\envs\attck\lib\site-packages\mitreattack\stix20\MitreAttackData.py", line 85, in __init__self.src.load_from_file(stix_filepath)File "C:\Users\xxxxxx\.conda\envs\attck\lib\site-packages\stix2\datastore\memory.py", line 148, in load_from_filereturn self.source.load_from_file(*args, **kwargs)File "C:\Users\xxxxxx\.conda\envs\attck\lib\site-packages\stix2\datastore\memory.py", line 363, in load_from_filewith io.open(os.path.abspath(file_path), "r", encoding=encoding) as f:FileNotFoundError: [Errno 2] No such file or directory: 'D:\\opt\\attck\\enterprise-attack.json'

3、加载数据文件

(attck) D:\opt\attck>pythonPython 3.10.13 | packaged by conda-forge | (main, Oct 26 2023, 18:01:37) [MSC v.1935 64 bit (AMD64)] on win32Type "help", "copyright", "credits" or "license" for more information.>>> from mitreattack.stix20 import MitreAttackData>>> mitre_attack_data = MitreAttackData("enterprise-attack.json")4、常见用法

4、使用案例

get_object_by_stix_id

>>> G0075 = mitre_attack_data.get_object_by_stix_id("intrusion-set--f40eb8ce-2a74-4e56-89a1-227021410142")>>> print(G0075.serialize(pretty=True)){"type": "intrusion-set","id": "intrusion-set--f40eb8ce-2a74-4e56-89a1-227021410142","created_by_ref": "identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5","created": "2018-10-17T00:14:20.652Z","modified": "2020-03-30T19:15:49.217Z","name": "Rancor","description": "[Rancor](https://attack.mitre.org/groups/G0075) is a threat group that has led targeted campaigns against the South East Asia region. [Rancor](https://attack.mitre.org/groups/G0075) uses politically-motivated lures to entice victims to open malicious documents. (Citation: Rancor Unit42 June 2018)","aliases": ["Rancor"],"external_references": [{"source_name": "mitre-attack","url": "https://attack.mitre.org/groups/G0075","external_id": "G0075"},{"source_name": "Rancor","description": "(Citation: Rancor Unit42 June 2018)"},{"source_name": "Rancor Unit42 June 2018","description": "Ash, B., et al. (2018, June 26). RANCOR: Targeted Attacks in South East Asia Using PLAINTEE and DDKONG Malware Families. Retrieved July 2, 2018.","url": "https://researchcenter.paloaltonetworks.com/2018/06/unit42-rancor-targeted-attacks-south-east-asia-using-plaintee-ddkong-malware-families/"}],"object_marking_refs": ["marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168"],"x_mitre_domains": ["enterprise-attack"],"x_mitre_modified_by_ref": "identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5","x_mitre_version": "1.2"}>>>

get_object_by_attack_id

>>> T1134 = mitre_attack_data.get_object_by_attack_id("T1134", "attack-pattern")>>> mitre_attack_data.print_stix_object(T1134, pretty=True){"type": "attack-pattern","id": "attack-pattern--dcaa092b-7de9-4a21-977f-7fcb77e89c48","created_by_ref": "identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5","created": "2017-12-14T16:46:06.044Z","modified": "2023-03-30T21:01:47.762Z","name": "Access Token Manipulation","description": "Adversaries may modify access tokens to operate under a different user or system security context to perform actions and bypass access controls. Windows uses access tokens to determine the ownership of a running process. A user can manipulate access tokens to make a running process appear as though it is the child of a different process or belongs to someone other than the user that started the process. When this occurs, the process also takes on the security context associated with the new token.\n\nAn adversary can use built-in Windows API functions to copy access tokens from existing processes; this is known as token stealing. These token can then be applied to an existing process (i.e. [Token Impersonation/Theft](https://attack.mitre.org/techniques/T1134/001)) or used to spawn a new process (i.e. [Create Process with Token](https://attack.mitre.org/techniques/T1134/002)). An adversary must already be in a privileged user context (i.e. administrator) to steal a token. However, adversaries commonly use token stealing to elevate their security context from the administrator level to the SYSTEM level. An adversary can then use a token to authenticate to a remote system as the account for that token if the account has appropriate permissions on the remote system.(Citation: Pentestlab Token Manipulation)\n\nAny standard user can use the <code>runas</code> command, and the Windows API functions, to create impersonation tokens; it does not require access to an administrator account. There are also other mechanisms, such as Active Directory fields, that can be used to modify access tokens.","kill_chain_phases": [{"kill_chain_name": "mitre-attack","phase_name": "defense-evasion"},{"kill_chain_name": "mitre-attack","phase_name": "privilege-escalation"}],"external_references": [{"source_name": "mitre-attack","url": "https://attack.mitre.org/techniques/T1134","external_id": "T1134"},{"source_name": "BlackHat Atkinson Winchester Token Manipulation","description": "Atkinson, J., Winchester, R. (2017, December 7). A Process is No One: Hunting for Token Manipulation. Retrieved December 21, 2017.","url": "https://www.blackhat.com/docs/eu-17/materials/eu-17-Atkinson-A-Process-Is-No-One-Hunting-For-Token-Manipulation.pdf"},{"source_name": "Microsoft Command-line Logging","description": "Mathers, B. (2017, March 7). Command line process auditing. Retrieved April 21, 2017.","url": "https://technet.microsoft.com/en-us/windows-server-docs/identity/ad-ds/manage/component-updates/command-line-process-auditing"},{"source_name": "Microsoft LogonUser","description": "Microsoft TechNet. (n.d.). Retrieved April 25, 2017.","url": "https://msdn.microsoft.com/en-us/library/windows/desktop/aa378184(v=vs.85).aspx"},{"source_name": "Microsoft DuplicateTokenEx","description": "Microsoft TechNet. (n.d.). Retrieved April 25, 2017.","url": "https://msdn.microsoft.com/en-us/library/windows/desktop/aa446617(v=vs.85).aspx"},{"source_name": "Microsoft ImpersonateLoggedOnUser","description": "Microsoft TechNet. (n.d.). Retrieved April 25, 2017.","url": "https://msdn.microsoft.com/en-us/library/windows/desktop/aa378612(v=vs.85).aspx"},{"source_name": "Pentestlab Token Manipulation","description": "netbiosX. (2017, April 3). Token Manipulation. Retrieved April 21, 2017.","url": "https://pentestlab.blog/2017/04/03/token-manipulation/"}],"object_marking_refs": ["marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168"],"x_mitre_attack_spec_version": "2.1.0","x_mitre_contributors": ["Tom Ueltschi @c_APT_ure","Travis Smith, Tripwire","Robby Winchester, @robwinchester3","Jared Atkinson, @jaredcatkinson"],"x_mitre_data_sources": ["Process: OS API Execution","Command: Command Execution","User Account: User Account Metadata","Process: Process Metadata","Process: Process Creation","Active Directory: Active Directory Object Modification"],"x_mitre_defense_bypassed": ["Windows User Account Control","Heuristic Detection","System Access Controls","Host Forensic Analysis"],"x_mitre_deprecated": false,"x_mitre_detection": "If an adversary is using a standard command-line shell, analysts can detect token manipulation by auditing command-line activity. Specifically, analysts should look for use of the <code>runas</code> command. Detailed command-line logging is not enabled by default in Windows.(Citation: Microsoft Command-line Logging)\n\nIf an adversary is using a payload that calls the Windows token APIs directly, analysts can detect token manipulation only through careful analysis of user network activity, examination of running processes, and correlation with other endpoint and network behavior. \n\nThere are many Windows API calls a payload can take advantage of to manipulate access tokens (e.g., <code>LogonUser</code> (Citation: Microsoft LogonUser), <code>DuplicateTokenEx</code>(Citation: Microsoft DuplicateTokenEx), and <code>ImpersonateLoggedOnUser</code>(Citation: Microsoft ImpersonateLoggedOnUser)). Please see the referenced Windows API pages for more information.\n\nQuery systems for process and thread token information and look for inconsistencies such as user owns processes impersonating the local SYSTEM account.(Citation: BlackHat Atkinson Winchester Token Manipulation)\n\nLook for inconsistencies between the various fields that store PPID information, such as the EventHeader ProcessId from data collected via Event Tracing for Windows (ETW), Creator Process ID/Name from Windows event logs, and the ProcessID and ParentProcessID (which are also produced from ETW and other utilities such as Task Manager and Process Explorer). The ETW provided EventHeader ProcessId identifies the actual parent process.","x_mitre_domains": ["enterprise-attack"],"x_mitre_effective_permissions": ["SYSTEM"],"x_mitre_is_subtechnique": false,"x_mitre_modified_by_ref": "identity--c78cb6e5-0c4b-4611-8297-d1b8b55e40b5","x_mitre_permissions_required": ["User","Administrator"],"x_mitre_platforms": ["Windows"],"x_mitre_version": "2.0"}

get_software_used_by_group

 

 # get software used by G0019>>> group_stix_id = "intrusion-set--2a158b0a-7ef8-43cb-9985-bf34d1e12050">>> software_used_by_g0019 = mitre_attack_data.get_software_used_by_group(group_stix_id)>>> print(f"Software used by G0019 ({len(software_used_by_g0019)}):")Software used by G0019 (15):>>> for s in software_used_by_g0019:...         software = s["object"]...         print(f"* {software.name} ({mitre_attack_data.get_attack_id(software.id)})")...* ftp (S0095)* Net (S0039)* Ping (S0097)* netsh (S0108)* Systeminfo (S0096)* PsExec (S0029)* Tasklist (S0057)* WinMM (S0059)* RainyDay (S0629)* Nebulae (S0630)* RARSTONE (S0055)* HDoor (S0061)* Sys10 (S0060)* SslMM (S0058)* Aria-body (S0456)>>>

这篇关于【ATTCK】开源项目-mitreattack-python的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/371830

相关文章

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

Python包管理工具pip的升级指南

《Python包管理工具pip的升级指南》本文全面探讨Python包管理工具pip的升级策略,从基础升级方法到高级技巧,涵盖不同操作系统环境下的最佳实践,我们将深入分析pip的工作原理,介绍多种升级方... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

Python中将嵌套列表扁平化的多种实现方法

《Python中将嵌套列表扁平化的多种实现方法》在Python编程中,我们常常会遇到需要将嵌套列表(即列表中包含列表)转换为一个一维的扁平列表的需求,本文将给大家介绍了多种实现这一目标的方法,需要的朋... 目录python中将嵌套列表扁平化的方法技术背景实现步骤1. 使用嵌套列表推导式2. 使用itert

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker