
Un paquet Python pour interagir avec le framework MITRE ATT&CK
.______ ____ ____ ___ .___________.___________. ______ __ ___
| _ \ \ \ / / / \ | | | / || |/ /
| |_) | \ \/ / / ^ \ `---| |----`---| |----`| ,----'| ' /
| ___/ \_ _/ / /_\ \ | | | | | | | <
| | | | / _____ \ | | | | | `----.| . \
| _| |__| /__/ \__\ |__| |__| \______||__|\__\
Un paquet Python pour interagir avec les frameworks MITRE ATT&CK
La version actuelle est 7.1.1
pyattck est un framework léger pour les frameworks MITRE ATT&CK. Ce paquet extrait les détails des frameworks Enterprise, PRE-ATT&CK, Mobile et ICS de MITRE.
pyattck aide les organisations et les individus à accéder aux frameworks MITRE ATT&CK de manière programmatique. Cela signifie que vous pouvez accéder à tous les acteurs, malwares, mitigations, tactiques, techniques et outils définis par les frameworks Enterprise, Mobile, Pre-Attck et ICS via un utilitaire en ligne de commande ou en l'intégrant dans votre propre code.
Il existe de nombreuses raisons pour lesquelles vous voudriez accéder à ces données de manière automatisée (scriptée/codée), mais quelques exemples sont :
Il existe d'autres avantages que pyattck offre également, notamment la possibilité de fournir des données contextuelles supplémentaires. Vous trouverez plus d'informations sur ces données ici mais l'essentiel est que pyattck utilise plusieurs dépôts open-source pour collecter des données contextuelles supplémentaires comme les commandes utilisées pour exécuter une technique, le pays et autres détails sur un acteur malveillant, d'autres variantes de malware similaires à un outil/malware défini, etc.
Ce contexte supplémentaire est ce qui rend pyattck vraiment puissant et permet aux gens de construire des tests et des validations plus robustes de leurs règles de détection, de valider les hypothèses de test, etc. Il existe vraiment d'innombrables façons d'utiliser pyattck pour aider les équipes bleues, rouges et violettes à défendre les organisations (et elles-mêmes).
Le paquet pyattck récupère toutes les tactiques, techniques, acteurs, malwares, outils et mitigations des frameworks MITRE ATT&CK ainsi que toutes les relations définies dans l'ensemble de données MITRE ATT&CK (y compris les sous-techniques).
De plus, les techniques, acteurs et outils (le cas échéant) disposent désormais de données collectées à partir de ressources tierces accessibles via différentes propriétés. Pour plus d'informations détaillées sur ces fonctionnalités, voir Jeux de données externes.
Le paquet pyattck vous permet de :
Vous pouvez installer pyattck sur OS X, Linux ou Windows. Vous pouvez également l'installer directement à partir des sources. Pour installer, voir les commandes sous l'en-tête du système d'exploitation correspondant ci-dessous.
pip install pyattck
git clone https://github.com/swimlane/pyattck.git
cd pyattck
python setup.py install
Pour utiliser pyattck, vous devez instancier un objet Attck. Bien que vous puissiez interagir directement avec chaque classe, l'utilisation prévue se fait via un objet Attck :
from pyattck import Attck
attack = Attck()
Par défaut, les sous-techniques sont accessibles sous chaque objet technique. Vous pouvez désactiver ce comportement en passant nested_techniques=False lors de la création de votre objet Attck.
Par exemple, le comportement par défaut ressemble à l'exemple suivant :
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)
Vous pouvez accéder aux propriétés principales suivantes sur votre objet Attck :
Une fois que vous spécifiez le framework MITRE ATT&CK, vous pouvez accéder à des propriétés supplémentaires.
Voici les objets accessibles sous la propriété Enterprise :
Pour plus d'informations sur les types d'objets sous la propriété enterprise, voir Enterprise.
Voici les objets accessibles sous la propriété PreAttck :
Pour plus d'informations sur les types d'objets sous la propriété preattck, voir PreAttck.
Voici les objets accessibles sous la propriété Mobile :
Pour plus d'informations sur les types d'objets sous la propriété mobile, voir Mobile.
Voici les objets accessibles sous la propriété ICS :
Pour plus d'informations sur les types d'objets sous la propriété ics, voir ICS.
Pour utiliser le nouveau système de menu interactif dans pyattck, vous devez définir interactive sur True. Ce faisant, il lancera le système de menu interactif en console.
En utilisant un script, vous pouvez le lancer en exécutant :
from pyattck import Attck
Attck(interactive=True)
Ou vous pouvez également exécuter le mode interactif en ligne de commande :
pyattck --interactive
Découvrez un exemple en gif ci-dessous :

pyattck vous permet de configurer si vous stockez des données externes et où elles sont stockées.
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
)
Par défaut, pyattck va désormais récupérer les dernières données externes depuis leurs emplacements respectifs en utilisant des requêtes HTTP GET. pyattck récupère actuellement depuis les emplacements suivants :
Vous avez plusieurs options lors de l'instanciation de l'objet Attck. À partir de 4.0.0, vous pouvez désormais spécifier l'une des options suivantes :
True, pyattck tentera de récupérer la configuration spécifiée dans l'emplacement config_file_path. Si ce fichier est corrompu ou introuvable, nous utiliserons par défaut la récupération des données depuis les emplacements *_attck_json spécifiés.True, pyattck enregistrera le fichier de configuration à l'emplacement spécifié par config_file_path. De plus, nous enregistrerons tous les fichiers téléchargés à l'emplacement data_path spécifié. Si vous avez spécifié un chemin local au lieu d'une URL de téléchargement pour l'un des paramètres *_attck_json, nous enregistrerons cet emplacement dans notre configuration et ferons référence à cet emplacement à l'avenir.~/pyattck/config.yml~/pyattck/dataDe plus, vous pouvez spécifier l'emplacement pour chaque fichier *_attck_json individuel en passant soit une URI, soit un chemin de fichier local. Si vous avez passé un chemin de fichier local, nous lirons simplement à partir de ce fichier.
Si vous avez utilisé les valeurs par défaut ou spécifié un emplacement URI alternatif pour récupérer ces fichiers JSON, vous pouvez également passer **kwargs qui seront transmis au paquet Python Requests lors de l'exécution de requêtes HTTP.
Nous comprenons qu'il existe de nombreux projets open-source différents publiés, même quotidiennement, mais nous voulions fournir un paquet Python simple qui permette à l'utilisateur d'identifier les relations connues entre tous les volets du framework MITRE ATT&CK.
Si vous n'êtes pas familier avec le framework MITRE ATT&CK, il y a quelques composants clés à bien comprendre. Le premier est les Tactiques et Techniques. En regardant le framework MITRE ATT&CK, les Tactiques sont les colonnes et représentent les différentes phases d'une attaque.
Le framework MITRE ATT&CK n'est PAS une carte de couverture de sécurité exhaustive/de facto - c'est plutôt un CADRE et d'autres voies doivent également être considérées lors de l'évaluation de votre posture de sécurité.
Les Techniques sont les lignes du framework et sont catégorisées sous des Tactiques spécifiques (colonnes). Ce sont des points de données dans le framework qui fournissent des conseils lors de l'évaluation de vos lacunes de sécurité. De plus, la plupart des Techniques contiennent des conseils d'atténuation ainsi que des informations sur leur relation avec des outils, des malwares et même des acteurs/groupes qui ont utilisé cette technique lors d'attaques enregistrées.
Cela signifie que si votre organisation se concentre sur les TTP (Tactiques, Techniques et Procédures) utilisées par certains acteurs/groupes, alors le framework MITRE ATT&CK est parfait pour vous. Si vous n'en êtes pas à ce niveau de maturité en sécurité dans votre organisation, pas de souci ! Le framework ATT&CK fournit toujours de très bons conseils dans une mise en page simple et directe, mais programmatiquement, ce n'est pas simple - surtout si vous voulez mesurer (ou cartographier) vos contrôles de sécurité à l'aide du framework.
Vous pouvez ajouter des fonctionnalités ou des bogues, ou exécuter le code dans un environnement de développement.
Pour mettre en place un environnement de développement et de test, utilisez ce Dockerfile.
Pour utiliser le Dockerfile, placez-vous dans le répertoire de ce dépôt et exécutez :
docker build --force-rm -t pyattck .
docker run pyattck
L'exécution de cette commande appelle le fichier python de test dans bin/test.py.
Les tests de ce projet devraient couvrir toutes les propriétés et méthodes disponibles. À mesure que ce projet grandira, les tests deviendront plus robustes, mais pour l'instant, nous testons qu'ils existent et qu'ils renvoient des sorties.
Veuillez lire CONTRIBUTING.md pour plus de détails sur notre code de conduite et le processus de soumission de pull requests.
Nous utilisons SemVer pour la gestion des versions.
Pour les détails sur les fonctionnalités d'une version spécifique de pyattck, voir le CHANGELOG.md.
Voir aussi la liste des contributeurs.
Ce projet est sous licence MIT License.
Tout d'abord, je tiens à remercier tous ceux qui contribuent aux projets open-source, en particulier les mainteneurs et créateurs de ces projets. Sans eux, cette capacité ne serait pas possible.
Cet ensemble de données est généré à partir de nombreuses sources différentes. Alors que nous continuons à ajouter plus de sources, nous continuerons à les ajouter ici. Encore une fois, merci à tous ces projets. Dans aucun ordre particulier, pyattck utilise les données des projets suivants :
.. toctree::
:titlesonly:
configuration
pyattck/attck
Dataset <https://github.com/swimlane/pyattck-data>
Data Models <https://github.com/swimlane/pyattck-data>
enterprise/enterprise
preattck/preattck
mobile/mobileattck
ics/icsattck