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
Shellcode-Injection-Techniques — Implementações em C# de técnicas de injeção de shellcode, incluindo injeção clássica, hijacking de thread, process hollowing e atom bombing, usando payloads Meterpreter criptografados com AES para pesquisa de evasão de AV. | Kitploit
Ferramentas/GitHubGitHub/plackyhacker/shellcode-injection-techniques
ExploraçãoShellcodePós-ExploraçãoRed Teaming
GitHubplackyhacker/shellcode-injection-techniques

Shellcode-Injection-Techniques

Implementações em C# de técnicas de injeção de shellcode, incluindo injeção clássica, hijacking de thread, process hollowing e atom bombing, usando payloads Meterpreter criptografados com AES para pesquisa de evasão de AV.

Ver Repositório

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
46692há 4 anosRevisado pelo Kitploit

Técnicas de Injeção de Shellcode

Uma coleção de técnicas de injeção de shellcode em C#. Todas as técnicas usam um payload meterpreter criptografado com AES.

Irei expandir este projeto à medida que aprendo, descubro ou desenvolvo mais técnicas.

Nota: O projeto não deve ser usado como está. Se for utilizar alguma das técnicas, há uma maior probabilidade de contornar o AV se criar um projeto mais pequeno e personalizado com a técnica escolhida.

Se usar algum código destes repositórios, mantenha-o dentro da legalidade!

Assembly Injection

Pode usar uma técnica de injeção de assembly PowerShell se quiser evitar escrever binários .Net em disco.

Executor de Shellcode

ShellcodeRunner.cs : Esta técnica não é estritamente uma técnica de injeção (porque executamos o shellcode no mesmo processo), mas é a mais simples de todas. Garantimos que o shellcode usa uma localização de memória fixa num contexto unsafe. Alteramos a proteção na página onde o shellcode está localizado para o podermos executar. Em seguida, usamos uma função delegada em C# para executar o shellcode.

root@kitploit:~
[+] Using technique: ShellcodeInjectionTechniques.ShellcodeRunner
[+] VirtualProtect() - set to PAGE_EXECUTE_READWRITE, shellcode address: 0x20D000418E0
[+] Executing shellcode - memory address: 0x20D000418E0

Injeção Clássica

ClassicInjection.cs : Esta técnica aloca memória no processo alvo, injeta o shellcode e inicia uma nova thread.

root@kitploit:~
[+] Found process: 24484
[+] Using technique: ShellcodeInjectionTechniques.ClassicInjection
[+] VirtualAllocEx(), assigned: 0x23642220000
[+] WriteProcessMemory() - remote address: 0x23642220000
[+] CreateRemoteThread() - thread handle: 0x380

Sequestro de Thread

ThreadHijack.cs : Esta técnica sequestra uma thread injetando código no processo alvo, suspende a thread sequestrada, define o ponteiro de instrução (RIP) para o nosso código injetado e depois retoma a thread.

root@kitploit:~
[+] Found process: 11508
[+] Using technique: ShellcodeInjectionTechniques.ThreadHijack
[+] Found thread: 9344
[+] OpenThread() - thread handle: 0x378
[+] VirtualAllocEx(), assigned: 0x1D17AB80000
[+] WriteProcessMemory() - remote address: 0x1D17AB80000
[+] SuspendThread() - thread handle: 0x378
[+] GetThreadContext() - thread handle: 0x378
[+] RIP is: 0x7FFA77D21104
[+] SetThreadContext(), RIP assigned: 0x1D17AB80000
[+] ResumeThread() - thread handle: 0x378

Sequestro de Thread Local

LocalThreadHijack.cs : Esta técnica cria uma nova thread local em estado suspenso, depois sequestramos a thread, definimos o ponteiro de instrução (RIP) para o nosso código injetado e retomamos a thread.

root@kitploit:~
[+] Using technique: ShellcodeInjectionTechniques.LocalThreadHijack
[+] CreateThread() - thread handle: 0x374
[+] VirtualProtect() - set to PAGE_EXECUTE_READWRITE, shellcode address: 0x270800418E0
[+] GetThreadContext() - thread handle: 0x374
[+] RIP is: 0x7FFA79EE2630
[+] SetThreadContext(), RIP assigned: 0x270800418E0
[+] ResumeThread() - thread handle: 0x374

Injeção por Chamada de Procedimento Assíncrona

ACPInjection.cs : Esta técnica é semelhante à técnica de Sequestro de Thread. Injetamos o shellcode numa thread remota e depois colocamos um objeto APC na fila da thread. Quando a thread entra num estado alertável (quando chama SleepEx, SignalObjectAndWait, MsgWaitForMultipleObjectsEx, WaitForMultipleObjectsEx, ou WaitForSingleObjectEx) executa o nosso shellcode apontado pelo nosso objeto APC na fila.

root@kitploit:~
[+] Found process: 25320
[+] Using technique: ShellcodeInjectionTechniques.APCInjection
[+] Found thread: 23796
[+] OpenThread() - thread handle: 0x378
[+] VirtualAllocEx(), assigned: 0x24E064D0000
[+] WriteProcessMemory() - remote address: 0x24E064D0000
[+] QueueUserAPC() - thread handle: 0x378

Ocultação de Processo

ProcessHollow.cs : Esta técnica inicia outro processo em estado suspenso (svchost.exe), encontra o ponto de entrada da thread principal, injeta o nosso shellcode nele e depois retoma a thread.

root@kitploit:~
[+] Using technique: ShellcodeInjectionTechniques.ProcessHollow
[+] CreateProcess(): C:\Windows\System32\svchost.exe
[+] Pointer to ImageBase: 0xD31E956010
[+] ReadProcessMemory() - image base pointer: 0xD31E956010
[+] ImageBase: 0x7FF6116C0000
[+] ReadProcessMemory() - svchost base: 0x7FF6116C0000
[+] EntryPoint: 0xD31E956010
[+] WriteProcessMemory(): 0x7FF6116C4E80
[+] ResumeThread() - thread handle: 0x454

Vista Mapeada Entre Processos

InterProcessMappedView.cs : Esta técnica cria uma nova secção na memória, cria uma vista mapeada local da secção, copia o nosso shellcode para a vista mapeada local e cria uma vista mapeada remota da vista mapeada local no processo alvo. Finalmente, criamos uma nova thread no processo alvo com a vista mapeada como ponto de entrada.

root@kitploit:~
[+] Found process: 23740
[+] Using technique: ShellcodeInjectionTechniques.InterProcessMappedView
[+] NtCreateSection() - section handle: 0x37C
[+] NtMapViewOfSection() - local view: 0x20CB8E40000
[+] Marshalling shellcode
[+] NtMapViewOfSection() - remote view: 0x22D90310000
[+] RtlCreateUserThread() - thread handle: 0x384

Bomba de Átomo

AtomBomb.cs : Esta técnica é interessante na forma como escrevemos shellcode no processo alvo. Usamos a Tabela de Átomos Global que nos permite escrever strings terminadas em nulo com um tamanho máximo de 255 bytes. Encontramos uma cave de código para escrever o nosso shellcode, depois usamos chamadas APC para acionar o processo alvo a ler os Nomes de Átomo na memória. Finalmente, usamos algumas chamadas APC para alterar a proteção de memória do alvo e executar o shellcode.

O meu código difere da técnica original Atom Bombing, escrita em C/C++. Primeiro, encadeio Nomes de Átomo juntos, usando múltiplos APCs, para formar um shellcode maior que 255 bytes. Não uso cadeias ROP para forçar o processo alvo a chamar VirtualProtect e depois executar o código, uso a fila APC.

Este código requer que a thread principal entre num estado alertável para executar a fila APC e não faço limpeza após a execução do shellcode, o processo alvo torna-se instável. Planeio melhorar esta técnica (procurando threads alertáveis e limpando depois), mas como PoC funciona bem.

root@kitploit:~
[+] Found process: 14140
[+] Using technique: ShellcodeInjectionTechniques.AtomBomb
[+] Found thread: 5940
[+] OpenThread() - thread handle: 0xD0
[+] FindWritablePages() - number found: 2
[+] Found a suitable code cave - pWritable: 0x2CE60031
[+] GetProcAddress() - pGlobalGetAtomNameW: 0x7FFE20EB2680
[+] GlobalAddAtom() - ATOM: 0xC091
[+] NtQueueApcThread() - pWritable: 0x2CE60031
[+] GlobalAddAtom() - ATOM: 0xC06F
[+] NtQueueApcThread() - pWritable: 0x2CE600F9
[+] GlobalAddAtom() - ATOM: 0xC080
[+] NtQueueApcThread() - pWritable: 0x2CE601C1
[+] GlobalAddAtom() - ATOM: 0xC088
[+] NtQueueApcThread() - pWritable: 0x2CE60289
[+] GlobalAddAtom() - ATOM: 0xC084
[+] NtQueueApcThread() - pWritable: 0x2CE60351
[+] GetProcAddress() - pVirtualProtect: 0x7FFE20EBBC70
[+] NtQueueApcThread() PAGE_EXECUTE_READWRITE - codeCave: 0x2CE60031
[+] QueueUserAPC() - codeCave: 0x2CE60031

Notas

A técnica Bomba de Átomo coloca strings terminadas em nulo na Tabela de Átomos Global, o que significa que deve usar shellcode que não contenha caracteres 0x00.

Lembre-se de que precisará de iniciar um processo para injetar, exceto quando usar o executor de shellcode, a técnica de sequestro de thread local ou a técnica de ocultação de processo (esta técnica inicia um novo processo em estado suspenso).

root@kitploit:~
[!] Unable to find process to inject into!

Ao usar o executor de shellcode, a técnica de sequestro de thread local ou a técnica de ocultação de processo, terá de comentar o código em Program.cs que procura o processo para injetar:

root@kitploit:~
/*
Process[] processes = Process.GetProcessesByName("notepad");

if(processes.Length == 0)
{
  Debug("[!] Unable to find process to inject into!");
  return;
}

Debug("[+] Found process: {0}", new string[] { processes[0].Id.ToString() });
target = processes[0];
*/
Baixar ferramenta