Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
atomic-operator — Se utiliza un paquete de Python para ejecutar pruebas de Atomic Red Team (Atomics) en múltiples entornos de sistemas operativos. | Kitploit
Herramientas/GitHubGitHub/swimlane/atomic-operator
Herramientas DefensivasScripting y AutomatizaciónPruebas de PenetraciónSeguridad en la NubeAprendizaje y EducaciónRed TeamingArchived
GitHubswimlane/atomic-operator

atomic-operator

Se utiliza un paquete de Python para ejecutar pruebas de Atomic Red Team (Atomics) en múltiples entornos de sistemas operativos.

Ver Repositorio
15631hace 2 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

PyPI Status Python Version [License][license]

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

Black

atomic-operator

Este paquete de Python se utiliza para ejecutar pruebas de Atomic Red Team (Atómicas) en múltiples entornos de sistemas operativos.

(¿Qué hay de nuevo?)

¿Por qué?

atomic-operator permite a los profesionales de seguridad probar sus capacidades de detección y defensa contra las técnicas prescritas definidas en atomic-red-team. Al utilizar un marco de pruebas como atomic-operator, puedes identificar tanto tus capacidades defensivas como las brechas en la cobertura defensiva.

Además, atomic-operator se puede utilizar en muchas otras situaciones como:

  • Generar alertas para probar productos
  • Probar EDR y otras herramientas de seguridad
  • Identificar formas de evadir la defensa desde una perspectiva adversaria
  • Y más.

Características

  • Soporta ejecución local y remota de pruebas de Atomic Red Team en sistemas Windows, macOS y Linux
  • Soporta la ejecución de pruebas atómicas contra iaas:aws
  • Puede solicitar argumentos de entrada pero no es obligatorio
  • Ayuda a descargar el repositorio de atomic-red-team
  • Se puede automatizar aún más basándose en un archivo de configuración
  • Paquete de Python ejecutable desde la línea de comandos e importable
  • Selecciona pruebas específicas cuando se especifican una o más técnicas
  • Busca entre todas las atómicas para encontrar la prueba perfecta
  • Pasa input_arguments como entrada para las pruebas a través de la línea de comandos
  • Y más

Cómo empezar

atomic-operator es un paquete exclusivo de Python alojado en PyPi y funciona con Python 3.6 y superior.

Si deseas una versión de PowerShell, consulta Invoke-AtomicRedTeam.

root@kitploit:~
pip install atomic-operator

Los siguientes pasos te guiarán en la configuración y ejecución de atomic-operator.

  • Obtener Atómicas Instalar / clonar el repositorio de Atomic Red Team
  • atomic-operator Comprender las opciones disponibles en atomic-operator
  • Ejecutar pruebas en la línea de comandos o Ejecutar pruebas dentro de un script
  • Ejecutar pruebas mediante un archivo de configuración

Instalación

Puedes instalar atomic-operator en OS X, Linux o Windows. También puedes instalarlo directamente desde el código fuente. Para instalarlo, consulta los comandos correspondientes al sistema operativo relevante a continuación.

Prerrequisitos

Las siguientes bibliotecas son requeridas e instaladas por 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 y Windows:

root@kitploit:~
pip install atomic-operator

macOS con procesador M1

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

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

# Volviendo a nuestra programación habitual . . .  
pip install -r requirements.txt
python setup.py install

Instalación desde el código fuente

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

Ejemplo de uso (línea de comandos)

Puedes ejecutar atomic-operator desde la línea de comandos o dentro de tus propios scripts de Python. Para usar atomic-operator en la línea de comandos, simplemente ingresa lo siguiente en tu terminal:

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

Ten en cuenta que para ver los detalles del comando run, ejecuta atomic-operator run -- --help y NO atomic-operator run --help

Obteniendo pruebas atómicas

Para usar atomic-operator, debes tener una o más pruebas de atomic-red-team (Atómicas) en tu sistema local. atomic-operator te proporciona la capacidad de descargar el repositorio de Atomic Red Team. Puedes hacerlo ejecutando lo siguiente en la línea de comandos:

root@kitploit:~
atomic-operator get_atomics 
# Puedes especificar el directorio de destino usando la bandera --destination
atomic-operator get_atomics --destination "/tmp/some_directory"

Ejecutando pruebas localmente

Para ejecutar una prueba, debes proporcionar algunas propiedades adicionales (y opciones si lo deseas). El método principal para ejecutar pruebas se llama run.

root@kitploit:~
# Esto ejecutará TODAS las pruebas compatibles con tu sistema operativo local
atomic-operator run --atomics-path "/tmp/some_directory/redcanaryco-atomic-red-team-3700624"

Puedes seleccionar pruebas individuales al proporcionar una o más técnicas específicas. Por ejemplo, ejecutando lo siguiente en la línea de comandos:

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

Se le presentará al usuario una lista de selección de pruebas asociadas con esa técnica. Un usuario puede seleccionar una o más pruebas usando la barra espaciadora para resaltar la prueba deseada:

root@kitploit:~
 Seleccione Test(s) para la Técnica T1564.001 (Ocultar Artefactos: Archivos y Directorios Ocultos)

 * Crear un archivo oculto en un directorio oculto (61a782e5-9a19-40b5-8ba4-69a4b9f3d7be)
   Archivo oculto en Mac (cddb9098-3b47-4e01-9d3b-6f5f323288a9)
   Crear archivo de sistema de Windows con Attrib (f70974c8-c094-4574-b542-2c545af95a32)
   Crear archivo oculto de Windows con Attrib (dadb792e-4358-4d8d-9207-b771faa0daa5)
   Archivos ocultos (3b7015f2-3144-4205-b799-b05580621379)
   Ocultar un directorio (b115ecaf-3b24-4ed2-aefe-2fcb9db913d3)
   Mostrar todos los archivos ocultos (9a1ec7da-b892-449f-ad68-67066d04380c)

Lo siguiente te permitirá proporcionar argumentos de entrada personalizados para las pruebas. Para ello, proporciona un diccionario de claves y valores como un diccionario al parámetro input_arguments en el método run.

root@kitploit:~
atomic-operator run --techniques T1564.001 --input_arguments '{"project-id": "some_value", "another_key": "another value"}'
# Por favor, incluye comillas simples alrededor del valor de input_arguments.

Ejecutando pruebas de forma remota

Para ejecutar una prueba de forma remota, debes proporcionar algunas propiedades adicionales (y opciones si lo deseas). El método principal para ejecutar pruebas se llama run.

root@kitploit:~
# Esto ejecutará TODAS las pruebas compatibles con tu sistema operativo 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"

Al ejecutar comandos de forma remota en hosts de Windows, es posible que necesites configurar PSRemoting. Consulta los detalles aquí: Remoting en Windows

Parámetros adicionales

Puedes ver parámetros adicionales ejecutando el siguiente comando:

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

Deberías ver una salida similar a la siguiente:

root@kitploit:~
NOMBRE
    atomic-operator run - El método principal para ejecutar pruebas de Atomic Red Team.

SINOPSIS
    atomic-operator run <flags>

DESCRIPCIÓN
    El método principal para ejecutar pruebas de Atomic Red Team.

BANDERAS
    --techniques=TECHNIQUES
        Tipo: list
        Valor por defecto: ['all']
        Una o más técnicas definidas por ID de attack_technique. Por defecto 'all'.
    --test_guids=TEST_GUIDS
        Tipo: list
        Valor por defecto: []
        Uno o más GUIDs de pruebas atómicas. Por defecto None.
    --select_tests=SELECT_TESTS
        Tipo: bool
        Valor por defecto: False
        Seleccionar una o más pruebas de las técnicas proporcionadas. Por defecto False.
    --atomics_path=ATOMICS_PATH
        Valor por defecto: '/U...
        La ruta de las pruebas atómicas. Por defecto os.getcwd().
    --input_arguments={}
        Valor por defecto: {}
        Un diccionario de argumentos de entrada para pasar a la prueba.
    --check_prereqs=CHECK_PREREQS
        Valor por defecto: False
        Indica si se deben verificar las dependencias de requisitos previos (prereq_comand). Por defecto False.
    --get_prereqs=GET_PREREQS
        Valor por defecto: False
        Indica si deseas obtener los requisitos previos. Por defecto False.
    --cleanup=CLEANUP
        Valor por defecto: False
        Indica si deseas ejecutar comandos de limpieza. Por defecto False.
    --copy_source_files=COPY_SOURCE_FILES
        Valor por defecto: True
        Indica si deseas copiar los archivos fuente relacionados (src, bin, etc.) a un host remoto. Por defecto True.
    --command_timeout=COMMAND_TIMEOUT
        Valor por defecto: 20
        Duración de tiempo de espera para cada comando. Por defecto 20.
    --debug=DEBUG
        Valor por defecto: False
        Indica si deseas mostrar detalles sobre las pruebas que se están ejecutando. Por defecto False.
    --prompt_for_input_args=PROMPT_FOR_INPUT_ARGS
        Valor por defecto: False
        Indica si deseas solicitar argumentos de entrada para cada prueba. Por defecto False.
    --return_atomics=RETURN_ATOMICS
        Valor por defecto: False
        Indica si deseas devolver atómicas en lugar de ejecutarlas. Por defecto False.
    --config_file=CONFIG_FILE
        Tipo: Optional[]
        Valor por defecto: None
        Una ruta a un archivo de configuración que se utiliza para automatizar atomic-operator en entornos. Por defecto None.
    --config_file_only=CONFIG_FILE_ONLY
        Valor por defecto: False
        Indica si deseas ejecutar pruebas basadas únicamente en el archivo de configuración proporcionado. Por defecto False.
    --hosts=HOSTS
        Valor por defecto: []
        Una lista de uno o más hosts remotos para ejecutar una prueba. Por defecto [].
    --username=USERNAME
        Tipo: Optional[]
        Valor por defecto: None
        Nombre de usuario para la autenticación de conexiones remotas. Por defecto None.
    --password=PASSWORD
        Tipo: Optional[]
        Valor por defecto: None
        Contraseña para la autenticación de conexiones remotas. Por defecto None.
    --ssh_key_path=SSH_KEY_PATH
        Tipo: Optional[]
        Valor por defecto: None
        Ruta a una clave SSH para la autenticación de conexiones remotas. Por defecto None.
    --private_key_string=PRIVATE_KEY_STRING
        Tipo: Optional[]
        Valor por defecto: None
        Una cadena de clave SSH privada utilizada para la autenticación de conexiones remotas. Por defecto None.
    --verify_ssl=VERIFY_SSL
        Valor por defecto: False
        Indica si se debe verificar SSL al conectarse a través de RDP (Windows). Por defecto False.
    --ssh_port=SSH_PORT
        Valor por defecto: 22
        Puerto SSH para la autenticación de conexiones remotas. Por defecto 22.
    --ssh_timeout=SSH_TIMEOUT
        Valor por defecto: 5
        Tiempo de espera SSH para la autenticación de conexiones remotas. Por defecto 5.
    Se aceptan banderas adicionales.
        Si se proporcionan, las claves que coincidan con las entradas de una prueba serán reemplazadas. Por defecto es None.

Ejecutando atomic-operator usando un archivo de configuración

Además de la capacidad de pasar parámetros con atomic-operator, también puedes pasar una ruta a un config_file que contiene todas las pruebas atómicas y sus posibles entradas. Puedes ver un ejemplo de este archivo de configuración aquí:

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

Ejemplo de uso (scripts)

Para usar atomic-operator debes instanciar un objeto AtomicOperator.

root@kitploit:~
from atomic_operator import AtomicOperator

operator = AtomicOperator()

# Esto descargará una copia local del repositorio atomic-red-team

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

# esto ejecutará pruebas en tu sistema 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
)

Obtener ayuda

Por favor, crea un issue si tienes preguntas o encuentras algún problema.

Construido con

  • carcass - Plantilla de empaquetado de Python

Contribuir

Por favor, lee CONTRIBUTING.md para obtener detalles sobre nuestro código de conducta y el proceso para enviar pull requests.

Versionado

Usamos SemVer para el versionado.

Autores

  • Josh Rickard - Trabajo inicial - MSAdministrator

Consulta también la lista de contribuidores que participaron en este proyecto.

Licencia

Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENSE para más detalles.

Agradecimientos

  • Gracias a keithmccammon por ayudar a identificar problemas con el procesador macOS M1 y proporcionar una solución.
Descargar herramienta
Nombre del ParámetroTipoValor por DefectoDescripción
techniqueslistallUna o más técnicas definidas por ID de attack_technique.
test_guidslistNoneUno o más GUIDs de pruebas atómicas.
select_testsboolFalseSeleccionar una o más pruebas atómicas para ejecutar cuando se especifican técnicas.
atomics_pathstros.getcwd()La ruta de las pruebas atómicas.
input_argumentsdict{}Un diccionario de argumentos de entrada para pasar a la prueba.
check_prereqsboolFalseIndica si se deben verificar las dependencias de requisitos previos (prereq_comand).
get_prereqsboolFalseIndica si deseas obtener los requisitos previos.
cleanupboolFalseIndica si deseas ejecutar comandos de limpieza.
copy_source_filesboolTrueIndica si deseas copiar los archivos fuente relacionados (src, bin, etc.) a un host remoto.
command_timeoutint20Duración de tiempo para cada comando antes del tiempo de espera.
debugboolFalseIndica si deseas mostrar detalles sobre las pruebas que se están ejecutando.
prompt_for_input_argsboolFalseIndica si deseas solicitar argumentos de entrada para cada prueba.
return_atomicsboolFalseIndica si deseas devolver atómicas en lugar de ejecutarlas.
config_filestrNoneUna ruta a un archivo de configuración que se utiliza para automatizar atomic-operator en entornos.
config_file_onlyboolFalseIndica si deseas ejecutar pruebas basadas únicamente en el archivo de configuración proporcionado.
hostslistNoneUna lista de uno o más hosts remotos para ejecutar una prueba.
usernamestrNoneNombre de usuario para la autenticación de conexiones remotas.
passwordstrNoneContraseña para la autenticación de conexiones remotas.
ssh_key_pathstrNoneRuta a una clave SSH para la autenticación de conexiones remotas.
private_key_stringstrNoneUna cadena de clave SSH privada utilizada para la autenticación de conexiones remotas.
verify_sslboolFalseIndica si se debe verificar SSL al conectarse a través de RDP (Windows).
ssh_portint22Puerto SSH para la autenticación de conexiones remotas.
ssh_timeoutint5Tiempo de espera SSH para la autenticación de conexiones remotas.
**kwargsdictNoneSi se pasan banderas adicionales al comando run, intentaremos emparejarlas con las entradas definidas en las pruebas atómicas y reemplazar su valor con el valor proporcionado.