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
go-shellcode — Um repositório de executores de Shellcode do Windows e utilitários de suporte. Os aplicativos carregam e executam Shellcode usando várias chamadas de API ou técnicas. | Kitploit
Ferramentas/GitHubGitHub/ne0nd0g/go-shellcode
Geração de PayloadsExploraçãoShellcodePós-ExploraçãoTestes de PenetraçãoRed TeamingDesenvolvimento de Payloads
GitHubne0nd0g/go-shellcode

go-shellcode

Um repositório de executores de Shellcode do Windows e utilitários de suporte. Os aplicativos carregam e executam Shellcode usando várias chamadas de API ou técnicas.

Ver Repositório
1.2k239há 4 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

go-shellcode

go-shellcode é um repositório de executores de Shellcode para Windows e utilitários de suporte. Os aplicativos carregam e executam Shellcode usando várias chamadas de API ou técnicas.

Os executores de Shellcode disponíveis incluem:

  • CreateFiber
  • CreateProcess
  • CreateProcessWithPipe
  • CreateRemoteThread
  • CreateRemoteThreadNative
  • CreateThread
  • CreateThreadNative
  • EarlyBird
  • EtwpCreateEtwThread
  • NtQueueApcThreadEx (local)
  • RtlCreateUserThread
  • Syscall
  • Shellcode Utils
  • UuidFromStringA

CreateFiber

Este aplicativo utiliza a função Windows CreateFiber da Kernel32.dll para executar shellcode no processo deste aplicativo. É útil quando se deseja evitar injeção em processo remoto e evitar chamar CreateThread. Este aplicativo NÃO utiliza funções do pacote golang.org/x/sys/windows. A diferença mais significativa é que este aplicativo carrega todas as DLLs e Procedures necessárias por conta própria e usa a função Call() da procedure.

NOTA: Ainda não descobri uma maneira de fazer o processo sair, e você terá que encerrá-lo manualmente.

O aplicativo pode ser compilado com o seguinte comando em um host Windows, a partir do diretório raiz do projeto:

set GOOS=windows GOARCH=amd64;go build -o CreateFiber.exe .\cmd\CreateFiber\main.go

CreateProcess

Este aplicativo utiliza a função Windows CreateProcess da Kernel32.dll. O processo é criado em estado suspenso, o AddressOfEntryPoint na estrutura IMAGE_OPTIONAL_HEADER é atualizado para executar shellcode no processo filho, e então o processo é retomado. Este é um tipo de processo oco (process hollowing), mas o PE existente NÃO é desmapeado e o ThreadContext NÃO é atualizado. A arquitetura do shellcode fornecido (ou seja, x86 ou x64) deve corresponder à arquitetura do processo filho.

O aplicativo pode ser compilado com o seguinte comando em um host Windows, a partir do diretório raiz do projeto:

set GOOS=windows GOARCH=amd64;go build -o CreateProcess.exe .\cmd\CreateProcess\main.go

CreateProcessWithPipe

Este aplicativo utiliza a função Windows CreateProcess da Kernel32.dll. O processo é criado em estado suspenso, o AddressOfEntryPoint na estrutura IMAGE_OPTIONAL_HEADER é atualizado para executar shellcode no processo filho, e então o processo é retomado. Este é um tipo de processo oco, mas o PE existente NÃO é desmapeado e o ThreadContext NÃO é atualizado. A arquitetura do shellcode fornecido (ou seja, x86 ou x64) deve corresponder à arquitetura do processo filho.

Este aplicativo difere do CreateProcess porque irá coletar quaisquer dados escritos para STDOUT ou STDERR no processo filho e retorná-los ao processo pai. Os dados são coletados usando a função CreatePipe para criar um pipe anônimo pelo qual o processo pai e o filho se comunicam. Isso é útil ao usar ferramentas como Donut para executar um assembly .NET em um processo filho como shellcode e recuperar a saída do programa executado. O seguinte comando pode ser usado para gerar shellcode independente de posição para executar Seatbelt com Donut v0.9.3:

.\donut.exe -o donut_v0.9.3_Seatbelt.bin -x 2 -c Seatbelt.Program -m Main -p "ARPTable" Seatbelt.exe

O aplicativo pode ser compilado com o seguinte comando em um host Windows, a partir do diretório raiz do projeto:

set GOOS=windows GOARCH=amd64;go build -o CreateProcessWithPipe.exe .\cmd\CreateProcessWithPipe\main.go

CreateRemoteThread

Este aplicativo utiliza a função Windows CreateRemoteThread da Kernel32.dll para executar shellcode em um processo remoto. O aplicativo exige que o processo alvo a ser injetado já esteja em execução. O PID (Identificador de Processo) alvo pode ser fornecido em tempo de execução para teste usando a flag de linha de comando -pid. Hardcode o PID na seguinte linha de código para uso operacional, substituindo o 0 pelo PID alvo:

pid := flag.Int("pid", 0, "Process ID to inject shellcode into")

Este aplicativo utiliza funções do pacote golang.org/x/sys/windows, quando viável, como windows.OpenProcess(). O aplicativo pode ser compilado com o seguinte comando em um host Windows, a partir do diretório raiz do projeto:

set GOOS=windows GOARCH=amd64;go build -o CreateRemoteThread.exe .\cmd\CreateRemoteThread\main.go

CreateRemoteThreadNative

Este aplicativo utiliza a função Windows CreateRemoteThread da Kernel32.dll para executar shellcode em um processo remoto. O aplicativo exige que o processo alvo a ser injetado já esteja em execução. O PID (Identificador de Processo) alvo pode ser fornecido em tempo de execução para teste usando a flag de linha de comando -pid. Hardcode o PID na seguinte linha de código para uso operacional, substituindo o 0 pelo PID alvo:

pid := flag.Int("pid", 0, "Process ID to inject shellcode into")

Este aplicativo NÃO utiliza funções do pacote golang.org/x/sys/windows. A diferença mais significativa é que este aplicativo carrega todas as DLLs e Procedures necessárias por conta própria e usa a função Call() da procedure. O aplicativo pode ser compilado com o seguinte comando em um host Windows, a partir do diretório raiz do projeto:

set GOOS=windows GOARCH=amd64;go build -o CreateRemoteThreadNative.exe .\cmd\CreateRemoteThreadNative\main.go

CreateThread

Este aplicativo utiliza a função Windows CreateThread da Kernel32.dll para executar shellcode no processo deste aplicativo. É útil quando se deseja evitar injeção em processo remoto. Este aplicativo utiliza funções do pacote golang.org/x/sys/windows, quando viável, como windows.VirtualAlloc(). O aplicativo pode ser compilado com o seguinte comando em um host Windows, a partir do diretório raiz do projeto:

set GOOS=windows GOARCH=amd64;go build -o CreateThread.exe .\cmd\CreateThread\main.go

CreateThreadNative

Este aplicativo utiliza a função Windows CreateThread da Kernel32.dll para executar shellcode no processo deste aplicativo. É útil quando se deseja evitar injeção em processo remoto. Este aplicativo NÃO utiliza funções do pacote golang.org/x/sys/windows. A diferença mais significativa é que este aplicativo carrega todas as DLLs e Procedures necessárias por conta própria e usa a função Call() da procedure. O aplicativo pode ser compilado com o seguinte comando em um host Windows, a partir do diretório raiz do projeto:

set GOOS=windows GOARCH=amd64;go build -o CreateThreadNative.exe .\cmd\CreateThreadNative\main.go

EarlyBird

O aplicativo utiliza a função Windows CreateProcess para criar um processo em estado suspenso. Uma vez que o processo filho está suspenso, a função Windows QueueUserAPC é usada para adicionar um UserAPC ao processo filho que aponta para o shellcode alocado. Em seguida, ResumeThread é chamado, que por sua vez chama a função não documentada NtTestAlert, que executará o UserAPC criado e, consequentemente, o shellcode. Isso é útil porque o shellcode será executado antes que o AV/EDR possa enganchar funções para suportar detecção. Referência: New 'Early Bird' Code Injection Technique Discovered. O aplicativo pode ser compilado com o seguinte comando em um host Windows, a partir do diretório raiz do projeto:

export GOOS=windows GOARCH=amd64;go build -o goEarlyBird.exe cmd\EarlyBird\main.go

EtwpCreateEtwThread

Este aplicativo utiliza a função Windows EtwpCreateEtwThread da ntdll.dll para executar shellcode no processo deste aplicativo. Trabalho original de TheWover. É útil quando se deseja evitar injeção em processo remoto. Este aplicativo NÃO utiliza funções do pacote golang.org/x/sys/windows. A diferença mais significativa é que este aplicativo carrega todas as DLLs e Procedures necessárias por conta própria e usa a função Call() da procedure. O aplicativo pode ser compilado com o seguinte comando em um host Windows, a partir do diretório raiz do projeto:

set GOOS=windows GOARCH=amd64;go build -o EtwpCreateEtwThread.exe .\cmd\EtwpCreateEtwThread\main.go

NtQueueApcThreadEx (local)

Este aplicativo usa a função não documentada NtQueueApcThreadEx para criar um "Special User APC" na thread atual do processo atual para executar shellcode. Como o shellcode é carregado e executado no processo atual, é "local". Esta mesma técnica pode ser usada para um processo remoto. NOTA: Isso só funcionará no Windows 7 ou posterior. Referência: APC Series: User APC API.

export GOOS=windows GOARCH=amd64;go build -o goNtQueueApcThreadEx-Local.exe cmd\NtQueueApcThreadEx-Local\main.go

RtlCreateUserThread

Este aplicativo utiliza a função Windows RtlCreateUserThread da ntdll.dll para executar shellcode em um processo remoto. O aplicativo exige que o processo alvo a ser injetado já esteja em execução. O PID (Identificador de Processo) alvo pode ser fornecido em tempo de execução para teste usando a flag de linha de comando -pid. Hardcode o PID na seguinte linha de código para uso operacional, substituindo o 0 pelo PID alvo:

pid := flag.Int("pid", 0, "Process ID to inject shellcode into")

Este aplicativo NÃO utiliza funções do pacote golang.org/x/sys/windows. A diferença mais significativa é que este aplicativo carrega todas as DLLs e Procedures necessárias por conta própria e usa a função Call() da procedure. O aplicativo pode ser compilado com o seguinte comando em um host Windows, a partir do diretório raiz do projeto:

set GOOS=windows GOARCH=amd64;go build -o RtlCreateUserThread.exe .\cmd\RtlCreateUserThread\main.go

Syscall

Este aplicativo executa Shellcode no processo atual em execução fazendo uma Syscall no ponto de entrada do Shellcode. Este aplicativo NÃO utiliza funções do pacote golang.org/x/sys/windows. O aplicativo pode ser compilado com o seguinte comando em um host Windows, a partir do diretório raiz do projeto:

set GOOS=windows GOARCH=amd64;go build -o Syscall.exe .\cmd\Syscall\main.go

UuidFromStringA

Este aplicativo utiliza a função Windows UuidFromStringA para carregar shellcode em um endereço de memória e então chama a função EnumSystemLocalesA para executar o shellcode. Este método de carregar e executar shellcode foi derivado do artigo da nccgroup RIFT: Analysing a Lazarus Shellcode Execution Method. Neste aplicativo, a memória é alocada no heap e não usa VirtualAlloc. O aplicativo pode ser compilado com o seguinte comando em um host Windows, a partir do diretório raiz do projeto:

set GOOS=windows GOARCH=amd64;go build -o UuidFromString.exe .\cmd\UuidFromString\main.go

ShellcodeUtils

Este aplicativo é usado para transformar arquivos binários de shellcode. O programa depende que o arquivo de entrada seja um arquivo binário (.bin) que contenha os bytes hexadecimais do shellcode. ShellcodeUtils pode apenas codificar em base64 seu arquivo de entrada ou pode criptografá-lo com XOR, RC4 ou AES256-GCM. As ferramentas também podem ser usadas para descriptografar arquivos.

Menu de ajuda do ShellcodeUtils:

root@kitploit:~
  -base64
        Codifica a saída em Base64. Pode ser usado com ou sem criptografia
  -i string
        Caminho do arquivo de entrada do arquivo binário
  -key string
        Chave de criptografia
  -mode string
        Modo de operação a ser executado no arquivo de entrada [encrypt,decrypt] (padrão "encrypt")
  -nonce string
        Nonce, em hexadecimal, usado para descriptografar um arquivo de entrada AES256. Usado apenas durante a descriptografia
  -o string
        Caminho do arquivo de saída
  -salt string
        Salt, em hexadecimal, usado para gerar uma chave AES256 de 32 bytes através do Argon2. Usado apenas durante a descriptografia
  -type string
        O tipo de criptografia a ser usado [xor, aes256, rc4, null]
  -v    Ativa saída detalhada

Exemplo de apenas codificação em Base64 do arquivo de entrada e salvando-o em um arquivo de texto:

root@kitploit:~
PS C:\Users\bob> .\ShellcodeUtils.exe -i C:\Users\bob\calc.bin -o C:\Users\bob\calc.b64.txt -base64 -v
[-]Output directory: C:\Users\bob\
[-]Output file name: calc.b64.txt
[-]File contents (hex): 505152535657556a605a6863616c6354594883ec2865488b32488b7618488b761048ad488b30488b7e3003573c8b5c17288b741f204801fe8b541f240fb72c178d5202ad813c0757696e4575ef8b741f1c4801fe8b34ae4801f799ffd74883c4305d5f5e5b5a5958c3
[-]No encryption type provided, continuing on...
[+]Output (string):
UFFSU1ZXVWpgWmhjYWxjVFlIg+woZUiLMkiLdhhIi3YQSK1IizBIi34wA1c8i1wXKIt0HyBIAf6LVB8kD7csF41SAq2BPAdXaW5Fde+LdB8cSAH+izSuSAH3mf/XSIPEMF1fXltaWVjD
[+] encrypt input and wrote 140 bytes to: C:\Users\bob\calc.b64.txt

Exemplo de criptografia XOR do arquivo de entrada com uma chave de Sh3!1z E codificação em Base64 da saída:

root@kitploit:~
PS C:\Users\bob> .\ShellcodeUtils.exe -i C:\Users\bob\calc.bin -o C:\Users\bob\calc.xor.b64.txt -mode encrypt -type xor -key Sh3!1z -v
[-]Output directory: C:\Users\bob\
[-]Output file name: calc.xor.b64.txt
[-]File contents (hex): 505152535657556a605a6863616c6354594883ec2865488b32488b7618488b761048ad488b30488b7e3003573c8b5c17288b741f204801fe8b541f240fb72c178d5202ad813c0757696e4575ef8b741f1c4801fe8b34ae4801f799ffd74883c4305d5f5e5b5a5958c3
[-]XOR encrypting input file with key: Sh3!1z
[+]Output (hex):
03396172672d0602537b5919320450756832d0841b4479f16120b8572932d81e23699c32d8587baa4f4a503f0faa6d6d7be3473e11325296b8752e5e5cdf1f36bc2851c5b21d362d3a067654def127772f693084d85c9d69308dca97e469b2be63356c7f6a200a30f0
[+]xor encrypt input and wrote 105 bytes to: C:\Users\bob\calc.xor.b64.txt

Exemplo de criptografia AES256-GCM do arquivo de entrada com uma senha de Sh3!1z SEM codificação Base64 na saída:

root@kitploit:~
PS C:\Users\bob> .\ShellcodeUtils.exe -i C:\Users\bob\calc.bin -o C:\Users\bob\calc.aes.bin -mode encrypt -type aes256 -key Sh3!1z -v
[-]Output directory: C:\Users\bob\
[-]Output file name: calc.aes.bin
[-]File contents (hex): 505152535657556a605a6863616c6354594883ec2865488b32488b7618488b761048ad488b30488b7e3003573c8b5c17288b741f204801fe8b541f240fb72c178d5202ad813c0757696e4575ef8b741f1c4801fe8b34ae4801f799ffd74883c4305d5f5e5b5a5958c3
[-]AES256 encrypting input file
[+]Argon2 salt (hex): db6126d3ac640f8aaa67cda74b8cf1d2c54513db7bf4fbe3422d1b276af1367e
[+]AES256 key (32-bytes) derived from input password Sh3!1z (hex): 096a40f1aef38dd9b5d63284acc19727c4420dd98f21ea052112bef63eb7d94a
[+]AES256 nonce (hex): 13802153c4b2fb6a3e545ff4
[+]Output (hex):
44a974233e37b460dc2181b16846f265e8e3a07959abf9c8760f7d0ac8029575e67571ea5b313bc8b011739db57c690ec156a4b0bba4e4d632c35c1490aeaac24f5ae05e90934adf57798ee3c702a3c27073fe976fbcc6ee5db355da186c1add58913e41a8c5716a0fcfc27371f0cae906e50e680366496a00
[+]aes256 encrypt input and wrote 121 bytes to: C:\Users\bob\calc.aes.bin

AES256 requer uma chave de 32 bytes. Este programa usa o algoritmo Argon2 ID para obter a senha fornecida com o parâmetro de entrada -key para derivar uma chave de 32 bytes, usando um salt gerado aleatoriamente. Você precisará da mesma senha de entrada e do salt usado com o algoritmo Argon2 e do mesmo nonce usado com o algoritmo AES256 para descriptografar o arquivo com sucesso. Alternativamente, a função de descriptografia poderia ser atualizada para usar apenas a chave Argon2 de 32 bytes em vez da senha de entrada e do salt.

NOTA: Cabe ao operador decidir se deve usar apenas a chave Argon2 gerada ou usar a senha e o salt que geram a senha.

Exemplo de descriptografia AES256 do arquivo de entrada:

root@kitploit:~
PS C:\Users\bob> .\ShellcodeUtils.exe -i C:\Users\bob\calc.aes.bin -o C:\Users\bob\calc.aes.decrypted.bin -mode decrypt -type aes256 -key Sh3!1z -nonce 13802153c4b2fb6a3e545ff4 -salt db6126d3ac640f8aaa67cda74b8cf1d2c54513db7bf4fbe3422d1b276af1367e -v
[-]Output directory: C:\Users\bob\
[-]Output file name: calc.aes.decrypted.bin
[-]File contents (hex): 44a974233e37b460dc2181b16846f265e8e3a07959abf9c8760f7d0ac8029575e67571ea5b313bc8b011739db57c690ec156a4b0bba4e4d632c35c1490aeaac24f5ae05e90934adf57798ee3c702a3c27073fe976fbcc6ee5db355da186c1add58913e41a8c5716a0fcfc27371f0cae906e50e680366496a00
[-]AES256 decrypting input file
[-]Argon2 salt (hex): db6126d3ac640f8aaa67cda74b8cf1d2c54513db7bf4fbe3422d1b276af1367e
[-]AES256 key (hex): 096a40f1aef38dd9b5d63284acc19727c4420dd98f21ea052112bef63eb7d94a
[-]AES256 nonce (hex): 13802153c4b2fb6a3e545ff4
[+]Output (hex):
505152535657556a605a6863616c6354594883ec2865488b32488b7618488b761048ad488b30488b7e3003573c8b5c17288b741f204801fe8b541f240fb72c178d5202ad813c0757696e4575ef8b741f1c4801fe8b34ae4801f799ffd74883c4305d5f5e5b5a5958c3
[+]aes256 decrypt input and wrote 105 bytes to: C:\Users\bob\calc.aes.decrypted.bin

O aplicativo pode ser compilado com o seguinte comando em um host Windows, a partir do diretório raiz do projeto:

set GOOS=windows GOARCH=amd64;go build -o ShellcodeUtils.exe .\cmd\ShellcodeUtils\main.go

Baixar ferramenta