pyattck: un paquete en Python para interactuar con el framework MITRE ATT&CK

Si te dedicas a threat hunting y tienes el foco en las tácticas, técnicas y procedimientos (TTP) utilizados por ciertos actores/grupos, entonces ya sabes que el framework de MITRE ATT&CK es muy valioso...


MITRE proporciona una guía con un diseño simple y directo, pero puede ser útil también usarlo mediante programación para medir (o asignar) ciertos controles de seguridad utilizando su framework. Afortunadamente el equipo de investigación de Swimlane ha lanzado pyattck, un paquete Python para interactuar con el framework Mitre ATT&CK de una manera bastante sencilla y que nos permitirá identificar relaciones conocidas entre todas las verticales en MITRE ATT&CK.

Imagina que queremos asegurarnos que estamos protegidos contra las TTP relacionadas con Dragonfly y en lugar de mirar a través de un mapa visual la información sobre este actor, podremos usar pyattck para extraer las herramientas, el malware y las técnicas asociadas o utilizadas por este grupo. Entonces, para recuperar las técnicas usadas por Dragonfly podemos instalar pyattck (pip install pyattck) y programar un sencillo script como este:
import sys
from pyattck import Attck
attack = Attck()
for actor in attack.actors:
 if sys.argv[1] in actor.name:
  for technique in actor.techniques:
   print(technique.name)

Y basta con ejecutarlo para obtener las técnicas:
$ python actor.py Dragonfly
Masquerading
Permission Groups Discovery
User Execution
Command-Line Interface
Standard Application Layer Protocol
Create Account
Disabling Security Tools
Modify Registry
Template Injection
Email Collection
Drive-by Compromise
Credential Dumping
Remote System Discovery
Indicator Removal on Host
Scheduled Task
File and Directory Discovery
Network Share Discovery
Valid Accounts
Data from Local System
Query Registry
Forced Authentication
Scripting
Screen Capture
System Network Configuration Discovery
File Deletion
Remote File Copy
Shortcut Modification
Web Shell
Spearphishing Attachment
Brute Force
Spearphishing Link
External Remote Services
Registry Run Keys / Startup Folder
Remote Desktop Protocol
PowerShell
System Owner/User Discovery
Data Staged
Account Manipulation
Commonly Used Port
Account Discovery
Data Compressed

Luego, si queremos saber como mitigar unas de estas técnicas podemos usar este otro script:
import sys
from pyattck import Attck
attack = Attck()
for technique in attack.techniques:
 if sys.argv[1] in technique.name:
  for mitigation in technique.mitigation:
   print(mitigation.description)

Especificando una concreta:
python mitigation.py 'Spearphishing Link'
Because this technique involves user interaction on the endpoint, it's difficult to fully mitigate. However, there are potential mitigations. Users can be trained to identify social engineering techniques and spearphishing emails with malicious links. Other mitigations can take place as [User Execution](https://attack.mitre.org/techniques/T1204) occurs.

Y esto son sólo unos ejemplos. Actualmente, pyattck admite la identificación de las siguientes relaciones (y se agregarán más):

Actores
  • Herramientas utilizadas por el actor o grupo.
  • Malware utilizado por el actor o grupo.
  • Técnicas utilizadas por el actor o grupo.
Malware
  •  Actor o grupo que utiliza este malware.
  • Técnicas con las que se utiliza este malware.
Mitigación
  • Técnicas relacionadas con un conjunto específico de sugerencias de mitigación.
Táctica
  • Técnicas encontradas en una táctica específica (fase).
Técnica
  • Tácticas en las que se encuentra una técnica.
  • Sugerencias de mitigación para una técnica dada.
  • Actor o grupo (s) identificado (s) utilizando esta técnica.
 Herramientas
  • Técnicas utilizadas dentro de las herramientas especificadas.
  • Actor o grupo (s) utilizando una herramienta específica.
Fuentes:

https://pyattck.readthedocs.io/en/latest/
https://github.com/swimlane/pyattck

Comentarios