Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
atomic-operator — Un package Python est utilisé pour exécuter des tests Atomic Red Team (Atomics) sur plusieurs environnements de systèmes d'exploitation. | Kitploit
Outils/GitHubGitHub/swimlane/atomic-operator
Outils DéfensifsScripting et AutomatisationTests d'IntrusionSécurité CloudApprentissage et ÉducationRed TeamingArchived
GitHubswimlane/atomic-operator

atomic-operator

Un package Python est utilisé pour exécuter des tests Atomic Red Team (Atomics) sur plusieurs environnements de systèmes d'exploitation.

Voir le dépôt
15631il y a 2 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

PyPI Status Python Version [License][license]

Read the documentation at https://atomic-operator.com/ Code Quality & Tests

Black

atomic-operator

Ce package Python permet d'exécuter les tests Atomic Red Team (Atomiques) sur plusieurs systèmes d'exploitation.

(Quoi de neuf ?)

Pourquoi ?

atomic-operator permet aux professionnels de la sécurité de tester leurs capacités de détection et de défense face aux techniques définies dans atomic-red-team. En utilisant un framework de test comme atomic-operator, vous pouvez identifier à la fois vos capacités défensives et les lacunes de votre couverture défensive.

De plus, atomic-operator peut être utilisé dans de nombreuses autres situations, comme :

  • Générer des alertes pour tester des produits
  • Tester les EDR et autres outils de sécurité
  • Identifier des moyens de contournement défensif du point de vue d'un adversaire
  • Et bien plus.

Fonctionnalités

  • Prise en charge de l'exécution locale et à distance des tests Atomic Red Team sur les systèmes Windows, macOS et Linux
  • Prend en charge l'exécution de tests atomiques contre iaas:aws
  • Peut demander des arguments d'entrée, mais ce n'est pas obligatoire
  • Aide au téléchargement du dépôt atomic-red-team
  • Peut être automatisé davantage à l'aide d'un fichier de configuration
  • Interface en ligne de commande et package Python importable
  • Sélectionnez des tests spécifiques lorsqu'une ou plusieurs techniques sont spécifiées
  • Recherche parmi tous les atomiques pour trouver le test parfait
  • Passez les input_arguments en entrée pour les tests via la ligne de commande
  • Et bien plus

Pour commencer

atomic-operator est un package uniquement Python hébergé sur PyPi et fonctionne avec Python 3.6 et plus.

Si vous souhaitez une version PowerShell, consultez Invoke-AtomicRedTeam.

root@kitploit:~
pip install atomic-operator

Les étapes suivantes vous guideront dans l'installation et l'exécution d'atomic-operator.

  • Obtenir les Atomiques Installer / cloner le dépôt Atomic Red Team
  • atomic-operator Comprendre les options disponibles dans atomic-operator
  • Exécuter des tests en ligne de commande ou Exécuter des tests dans un script
  • Exécuter des tests via un fichier de configuration

Installation

Vous pouvez installer atomic-operator 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.

Prérequis

Les bibliothèques suivantes sont requises et installées par atomic-operator :

root@kitploit:~
pyyaml==5.4.1
fire==0.4.0
requests==2.26.0
attrs==21.2.0
pick==1.2.0

macOS, Linux et Windows :

root@kitploit:~
pip install atomic-operator

macOS avec processeur M1

root@kitploit:~
git clone https://github.com/swimlane/atomic-operator.git
cd atomic-operator

# Satisfaire ModuleNotFoundError: No module named 'setuptools_rust'
brew install rust
pip3 install --upgrade pip
pip3 install setuptools_rust

# Retour à notre programme habituel...
pip install -r requirements.txt
python setup.py install

Installation à partir des sources

root@kitploit:~
git clone https://github.com/swimlane/atomic-operator.git
cd atomic-operator
pip install -r requirements.txt
python setup.py install

Exemple d'utilisation (ligne de commande)

Vous pouvez exécuter atomic-operator depuis la ligne de commande ou dans vos propres scripts Python. Pour utiliser atomic-operator en ligne de commande, entrez simplement la commande suivante dans votre terminal :

root@kitploit:~
atomic-operator --help
atomic-operator run -- --help

Veuillez noter que pour voir les détails de la commande run, exécutez atomic-operator run -- --help et PAS atomic-operator run --help

Récupération des tests Atomiques

Pour utiliser atomic-operator, vous devez disposer d'un ou plusieurs tests atomic-red-team (Atomiques) sur votre système local. atomic-operator vous offre la possibilité de télécharger le dépôt Atomic Red Team. Vous pouvez le faire en exécutant la commande suivante :

root@kitploit:~
atomic-operator get_atomics 
# Vous pouvez spécifier le répertoire de destination avec l'option --destination
atomic-operator get_atomics --destination "/tmp/some_directory"

Exécution de tests en local

Pour exécuter un test, vous devez fournir des propriétés supplémentaires (et des options si souhaité). La méthode principale pour exécuter des tests s'appelle run.

root@kitploit:~
# Ceci exécutera TOUS les tests compatibles avec votre système d'exploitation local
atomic-operator run --atomics-path "/tmp/some_directory/redcanaryco-atomic-red-team-3700624"

Vous pouvez sélectionner des tests individuels en fournissant une ou plusieurs techniques spécifiques. Par exemple, exécutez la commande suivante :

root@kitploit:~
atomic-operator run --techniques T1564.001 --select_tests

Cela invitera l'utilisateur avec une liste de sélection des tests associés à cette technique. L'utilisateur peut sélectionner un ou plusieurs tests en utilisant la barre d'espace pour mettre en surbrillance le test souhaité :

root@kitploit:~
 Select Test(s) for Technique T1564.001 (Hide Artifacts: Hidden Files and Directories)

 * Create a hidden file in a hidden directory (61a782e5-9a19-40b5-8ba4-69a4b9f3d7be)
   Mac Hidden file (cddb9098-3b47-4e01-9d3b-6f5f323288a9)
   Create Windows System File with Attrib (f70974c8-c094-4574-b542-2c545af95a32)
   Create Windows Hidden File with Attrib (dadb792e-4358-4d8d-9207-b771faa0daa5)
   Hidden files (3b7015f2-3144-4205-b799-b05580621379)
   Hide a Directory (b115ecaf-3b24-4ed2-aefe-2fcb9db913d3)
   Show all hidden files (9a1ec7da-b892-449f-ad68-67066d04380c)

Ce qui suit vous permet de fournir des arguments d'entrée personnalisés pour les tests. Pour ce faire, fournissez un dictionnaire de clés et de valeurs comme dictionnaire au paramètre input_arguments de la méthode run.

root@kitploit:~
atomic-operator run --techniques T1564.001 --input_arguments '{"project-id": "some_value", "another_key": "another value"}'
# Veuillez inclure des guillemets simples autour de la valeur input_arguments.

Exécution de tests à distance

Pour exécuter un test à distance, vous devez fournir des propriétés supplémentaires (et des options si souhaité). La méthode principale pour exécuter des tests s'appelle run.

root@kitploit:~
# Ceci exécutera TOUS les tests compatibles avec votre système d'exploitation local
atomic-operator run --atomics-path "/tmp/some_directory/redcanaryco-atomic-red-team-3700624" --hosts "10.32.1.0" --username "my_username" --password "my_password"

Lors de l'exécution de commandes à distance sur des hôtes Windows, vous devrez peut-être configurer PSRemoting. Voir les détails ici : Windows Remoting

Paramètres supplémentaires

Vous pouvez voir les paramètres supplémentaires en exécutant la commande suivante :

root@kitploit:~
atomic-operator run -- --help

Vous devriez voir une sortie similaire à ce qui suit :

root@kitploit:~
NAME
    atomic-operator run - The main method in which we run Atomic Red Team tests.

SYNOPSIS
    atomic-operator run <flags>

DESCRIPTION
    The main method in which we run Atomic Red Team tests.

FLAGS
    --techniques=TECHNIQUES
        Type: list
        Default: ['all']
        One or more defined techniques by attack_technique ID. Defaults to 'all'.
    --test_guids=TEST_GUIDS
        Type: list
        Default: []
        One or more Atomic test GUIDs. Defaults to None.
    --select_tests=SELECT_TESTS
        Type: bool
        Default: False
        Select one or more tests from provided techniques. Defaults to False.
    --atomics_path=ATOMICS_PATH
        Default: '/U...
        The path of Atomic tests. Defaults to os.getcwd().
    --input_arguments={}
        Default: {}
        A dictionary of input arguments to pass to the test.
    --check_prereqs=CHECK_PREREQS
        Default: False
        Whether or not to check for prereq dependencies (prereq_comand). Defaults to False.
    --get_prereqs=GET_PREREQS
        Default: False
        Whether or not you want to retrieve prerequisites. Defaults to False.
    --cleanup=CLEANUP
        Default: False
        Whether or not you want to run cleanup command(s). Defaults to False.
    --copy_source_files=COPY_SOURCE_FILES
        Default: True
        Whether or not you want to copy any related source (src, bin, etc.) files to a remote host. Defaults to True.
    --command_timeout=COMMAND_TIMEOUT
        Default: 20
        Timeout duration for each command. Defaults to 20.
    --debug=DEBUG
        Default: False
        Whether or not you want to output details about tests being ran. Defaults to False.
    --prompt_for_input_args=PROMPT_FOR_INPUT_ARGS
        Default: False
        Whether you want to prompt for input arguments for each test. Defaults to False.
    --return_atomics=RETURN_ATOMICS
        Default: False
        Whether or not you want to return atomics instead of running them. Defaults to False.
    --config_file=CONFIG_FILE
        Type: Optional[]
        Default: None
        A path to a conifg_file which is used to automate atomic-operator in environments. Default to None.
    --config_file_only=CONFIG_FILE_ONLY
        Default: False
        Whether or not you want to run tests based on the provided config_file only. Defaults to False.
    --hosts=HOSTS
        Default: []
        A list of one or more remote hosts to run a test on. Defaults to [].
    --username=USERNAME
        Type: Optional[]
        Default: None
        Username for authentication of remote connections. Defaults to None.
    --password=PASSWORD
        Type: Optional[]
        Default: None
        Password for authentication of remote connections. Defaults to None.
    --ssh_key_path=SSH_KEY_PATH
        Type: Optional[]
        Default: None
        Path to a SSH Key for authentication of remote connections. Defaults to None.
    --private_key_string=PRIVATE_KEY_STRING
        Type: Optional[]
        Default: None
        A private SSH Key string used for authentication of remote connections. Defaults to None.
    --verify_ssl=VERIFY_SSL
        Default: False
        Whether or not to verify ssl when connecting over RDP (windows). Defaults to False.
    --ssh_port=SSH_PORT
        Default: 22
        SSH port for authentication of remote connections. Defaults to 22.
    --ssh_timeout=SSH_TIMEOUT
        Default: 5
        SSH timeout for authentication of remote connections. Defaults to 5.
    Additional flags are accepted.
        If provided, keys matching inputs for a test will be replaced. Default is None.

Exécution d'atomic-operator avec un fichier de configuration

En plus de pouvoir passer des paramètres avec atomic-operator, vous pouvez également passer le chemin vers un config_file qui contient tous les tests atomiques et leurs entrées potentielles. Vous pouvez voir un exemple de ce fichier de configuration ici :

root@kitploit:~
atomic_tests:
  - guid: f7e6ec05-c19e-4a80-a7e7-241027992fdb
    input_arguments:
      output_file:
        value: custom_output.txt
      input_file:
        value: custom_input.txt
  - guid: 3ff64f0b-3af2-3866-339d-38d9791407c3
    input_arguments:
        second_arg:
          value: SWAPPPED argument
  - guid: 32f90516-4bc9-43bd-b18d-2cbe0b7ca9b2

Exemple d'utilisation (scripts)

Pour utiliser atomic-operator, vous devez instancier un objet AtomicOperator.

root@kitploit:~
from atomic_operator import AtomicOperator

operator = AtomicOperator()

# Ceci téléchargera une copie locale du dépôt atomic-red-team

print(operator.get_atomics('/tmp/some_directory'))

# ceci exécutera les tests sur votre système local
operator.run(
    technique: str='All', 
    atomics_path=os.getcwd(), 
    check_dependencies=False, 
    get_prereqs=False, 
    cleanup=False, 
    command_timeout=20, 
    debug=False,
    prompt_for_input_args=False,
    **kwargs
)

Obtenir de l'aide

Veuillez créer un issue si vous avez des questions ou rencontrez des problèmes.

Construit avec

  • carcass - Modèle de packaging Python

Contribuer

Veuillez lire CONTRIBUTING.md pour plus de détails sur notre code de conduite et le processus de soumission de pull requests.

Gestion de version

Nous utilisons SemVer pour la gestion de version.

Auteurs

  • Josh Rickard - Travail initial - MSAdministrator

Voir aussi la liste des contributeurs qui ont participé à ce projet.

Licence

Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails

Remerciements

  • Merci à keithmccammon pour avoir aidé à identifier des problèmes avec les processeurs macOS M1 et fourni un correctif
Télécharger l’outil
Nom du paramètreTypeValeur par défautDescription
techniqueslistallUne ou plusieurs techniques définies par ID attack_technique.
test_guidslistNoneUn ou plusieurs GUID de tests atomiques.
select_testsboolFalseSélectionner un ou plusieurs tests atomiques à exécuter lorsque des techniques sont spécifiées.
atomics_pathstros.getcwd()Le chemin des tests atomiques.
input_argumentsdict{}Un dictionnaire d'arguments d'entrée à passer au test.
check_prereqsboolFalseIndique s'il faut vérifier les dépendances préalables (prereq_comand).
get_prereqsboolFalseIndique si vous souhaitez récupérer les prérequis.
cleanupboolFalseIndique si vous souhaitez exécuter les commandes de nettoyage.
copy_source_filesboolTrueIndique si vous souhaitez copier les fichiers source associés (src, bin, etc.) vers un hôte distant.
command_timeoutint20Durée de chaque commande avant expiration du délai.
debugboolFalseIndique si vous souhaitez afficher les détails des tests exécutés.
prompt_for_input_argsboolFalseIndique si vous souhaitez être invité à fournir des arguments d'entrée pour chaque test.
return_atomicsboolFalseIndique si vous souhaitez retourner les atomiques au lieu de les exécuter.
config_filestrNoneChemin vers un fichier de configuration utilisé pour automatiser atomic-operator dans des environnements.
config_file_onlyboolFalseIndique si vous souhaitez exécuter les tests uniquement sur la base du fichier de configuration fourni.
hostslistNoneUne liste d'un ou plusieurs hôtes distants sur lesquels exécuter un test.
usernamestrNoneNom d'utilisateur pour l'authentification des connexions distantes.
passwordstrNoneMot de passe pour l'authentification des connexions distantes.
ssh_key_pathstrNoneChemin vers une clé SSH pour l'authentification des connexions distantes.
private_key_stringstrNoneChaîne de clé SSH privée utilisée pour l'authentification des connexions distantes.
verify_sslboolFalseIndique s'il faut vérifier le SSL lors de la connexion via RDP (Windows).
ssh_portint22Port SSH pour l'authentification des connexions distantes.
ssh_timeoutint5Délai d'expiration SSH pour l'authentification des connexions distantes.
**kwargsdictNoneSi des indicateurs supplémentaires sont passés à la commande run, nous tenterons de les faire correspondre aux entrées définies dans les tests atomiques et de remplacer leur valeur par la valeur fournie.