Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
atomic-operator — Um pacote Python é usado para executar testes Atomic Red Team (Atomics) em múltiplos ambientes de sistemas operacionais. | Kitploit
Ferramentas/GitHubGitHub/swimlane/atomic-operator
Ferramentas DefensivasScripting e AutomaçãoTestes de PenetraçãoSegurança na NuvemAprendizado e EducaçãoRed TeamingArchived
GitHubswimlane/atomic-operator

atomic-operator

Um pacote Python é usado para executar testes Atomic Red Team (Atomics) em múltiplos ambientes de sistemas operacionais.

Ver Repositório
15631há 2 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

PyPI Status Python Version [License][license]

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

Black

atomic-operator

Este pacote Python é usado para executar testes do Atomic Red Team (Atomics) em vários ambientes de sistema operacional.

(O que há de novo?)

Por quê?

O atomic-operator permite que profissionais de segurança testem suas capacidades de detecção e defesa contra técnicas prescritas definidas no atomic-red-team. Ao utilizar um framework de teste como o atomic-operator, você pode identificar tanto suas capacidades defensivas quanto lacunas na cobertura defensiva.

Além disso, o atomic-operator pode ser usado em muitas outras situações, como:

  • Gerar alertas para testar produtos
  • Testar EDR e outras ferramentas de segurança
  • Identificar maneiras de realizar evasão defensiva de uma perspectiva adversária
  • E muito mais.

Funcionalidades

  • Suporte à execução local e remota de testes do Atomic Red Team em sistemas Windows, macOS e Linux
  • Suporte à execução de testes atômicos contra iaas:aws
  • Pode solicitar argumentos de entrada, mas não é obrigatório
  • Ajuda no download do repositório atomic-red-team
  • Pode ser automatizado ainda mais com base em um arquivo de configuração
  • Pacote Python utilizável via linha de comando e importável
  • Selecione testes específicos quando uma ou mais técnicas forem especificadas
  • Pesquise em todos os atômicos pelo teste perfeito
  • Passe input_arguments como entrada para testes via linha de comando
  • E muito mais

Primeiros Passos

O atomic-operator é um pacote exclusivo Python hospedado no PyPi e funciona com Python 3.6 ou superior.

Se você deseja uma versão PowerShell, confira o Invoke-AtomicRedTeam.

root@kitploit:~
pip install atomic-operator

As próximas etapas irão guiá-lo na configuração e execução do atomic-operator.

  • Obter Atomics Instalar / clonar o repositório Atomic Red Team
  • atomic-operator Entender as opções disponíveis no atomic-operator
  • Executar Testes na Linha de Comando ou Executar Testes Dentro de um Script
  • Executar Testes via Arquivo de Configuração

Instalação

Você pode instalar o atomic-operator no OS X, Linux ou Windows. Você também pode instalá-lo diretamente a partir da fonte. Para instalar, veja os comandos abaixo, sob o cabeçalho do sistema operacional relevante.

Pré-requisitos

As seguintes bibliotecas são necessárias e instaladas pelo 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 e Windows:

root@kitploit:~
pip install atomic-operator

macOS com processador M1

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

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

# Back to our regularly scheduled programming . . .  
pip install -r requirements.txt
python setup.py install

Instalando a partir da fonte

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

Exemplo de uso (linha de comando)

Você pode executar o atomic-operator a partir da linha de comando ou dentro de seus próprios scripts Python. Para usar o atomic-operator na linha de comando, basta digitar o seguinte no seu terminal:

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

Observe que para ver detalhes sobre o comando run, execute atomic-operator run -- --help e NÃO atomic-operator run --help

Recuperando Testes Atômicos

Para usar o atomic-operator, você deve ter um ou mais testes atomic-red-team (Atomics) no seu sistema local. O atomic-operator fornece a capacidade de baixar o repositório Atomic Red Team. Você pode fazer isso executando o seguinte na linha de comando:

root@kitploit:~
atomic-operator get_atomics 
# Você pode especificar o diretório de destino usando a flag --destination
atomic-operator get_atomics --destination "/tmp/some_directory"

Executando Testes Localmente

Para executar um teste, você deve fornecer algumas propriedades adicionais (e opções, se desejado). O método principal para executar testes é chamado run.

root@kitploit:~
# Isso executará TODOS os testes compatíveis com o seu sistema operacional local
atomic-operator run --atomics-path "/tmp/some_directory/redcanaryco-atomic-red-team-3700624"

Você pode selecionar testes individuais ao fornecer uma ou mais técnicas específicas. Por exemplo, executando o seguinte na linha de comando:

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

Isso solicitará ao usuário uma lista de seleção de testes associados àquela técnica. O usuário pode selecionar um ou mais testes usando a barra de espaço para destacar o teste desejado:

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)

O seguinte permitirá que você forneça argumentos de entrada personalizados para os testes. Você faz isso fornecendo um dicionário de chaves e valores como um dicionário para o parâmetro input_arguments no método run.

root@kitploit:~
atomic-operator run --techniques T1564.001 --input_arguments '{"project-id": "some_value", "another_key": "another value"}'
# Inclua aspas simples ao redor do valor de input_arguments.

Executando Testes Remotamente

Para executar um teste remotamente, você deve fornecer algumas propriedades adicionais (e opções, se desejado). O método principal para executar testes é chamado run.

root@kitploit:~
# Isso executará TODOS os testes compatíveis com o seu sistema operacional 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"

Ao executar comandos remotamente em hosts Windows, pode ser necessário configurar o PSRemoting. Veja detalhes aqui: Windows Remoting

Parâmetros adicionais

Você pode ver parâmetros adicionais executando o seguinte comando:

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

Você deve ver uma saída semelhante à seguinte:

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.

Executando atomic-operator usando um config_file

Além da capacidade de passar parâmetros com atomic-operator, você também pode passar um caminho para um config_file que contém todos os testes atômicos e suas possíveis entradas. Você pode ver um exemplo deste arquivo de configuração aqui:

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

Exemplo de uso (scripts)

Para usar o atomic-operator, você deve instanciar um objeto AtomicOperator.

root@kitploit:~
from atomic_operator import AtomicOperator

operator = AtomicOperator()

# This will download a local copy of the atomic-red-team repository

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

# this will run tests on your local system
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
)

Obtendo Ajuda

Por favor, crie uma issue se você tiver dúvidas ou encontrar problemas.

Construído com

  • carcass - Modelo de empacotamento Python

Contribuindo

Por favor, leia CONTRIBUTING.md para detalhes sobre nosso código de conduta e o processo para enviar pull requests para nós.

Versionamento

Usamos SemVer para versionamento.

Autores

  • Josh Rickard - Trabalho inicial - MSAdministrator

Veja também a lista de contribuidores que participaram deste projeto.

Licença

Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes

Agradecimento

  • Obrigado ao keithmccammon por ajudar a identificar problemas com processadores macOS M1 e fornecer uma correção
Baixar ferramenta
Nome do ParâmetroTipoPadrãoDescrição
techniqueslistallUma ou mais técnicas definidas pelo ID attack_technique.
test_guidslistNoneUm ou mais GUIDs de teste atômico.
select_testsboolFalseSelecionar um ou mais testes atômicos para executar quando técnicas são especificadas.
atomics_pathstros.getcwd()O caminho dos testes Atômicos.
input_argumentsdict{}Um dicionário de argumentos de entrada para passar ao teste.
check_prereqsboolFalseSe deve ou não verificar dependências de pré-requisitos (prereq_comand).
get_prereqsboolFalseSe você deseja ou não recuperar pré-requisitos.
cleanupboolFalseSe você deseja ou não executar comandos de limpeza.
copy_source_filesboolTrueSe você deseja ou não copiar arquivos de origem relacionados (src, bin, etc.) para um host remoto.
command_timeoutint20Duração do tempo para cada comando antes do timeout.
debugboolFalseSe você deseja ou não exibir detalhes sobre os testes sendo executados.
prompt_for_input_argsboolFalseSe você deseja ou não solicitar argumentos de entrada para cada teste.
return_atomicsboolFalseSe você deseja ou não retornar atômicos em vez de executá-los.
config_filestrNoneUm caminho para um arquivo de configuração usado para automatizar o atomic-operator em ambientes.
config_file_onlyboolFalseSe você deseja ou não executar testes com base apenas no config_file fornecido.
hostslistNoneUma lista de um ou mais hosts remotos para executar um teste.
usernamestrNoneNome de usuário para autenticação de conexões remotas.
passwordstrNoneSenha para autenticação de conexões remotas.
ssh_key_pathstrNoneCaminho para uma chave SSH para autenticação de conexões remotas.
private_key_stringstrNoneUma string de chave SSH privada usada para autenticação de conexões remotas.
verify_sslboolFalseSe deve ou não verificar SSL ao conectar via RDP (Windows).
ssh_portint22Porta SSH para autenticação de conexões remotas.
ssh_timeoutint5Timeout SSH para autenticação de conexões remotas.
**kwargsdictNoneSe flags adicionais forem passadas para o comando run, tentaremos combiná-las com entradas definidas nos testes Atômicos e substituir seu valor pelo valor fornecido.