Este código foi desenvolvido para fins educativos e de pesquisa em segurança. Não o utilize para propósitos maliciosos.
Este projeto demonstra o uso de syscalls indiretos através da biblioteca ntdll.dll. para execução de uma shellcode em um processo alvo.
-
RC4 para Descriptografia da Shellcode:
Uma shellcode criptografada é armazenada no código. A funçãoRC4DECutiliza o algoritmo RC4 para descriptografar a shellcode antes de sua execução, impedindo que o código esteja em texto claro na memória. -
Recuperação de Syscalls:
O código usa a funçãoobterSSNeEnderecopara identificar o System Service Number (SSN) e o endereço das syscalls específicas (comoNtOpenProcess,NtAllocateVirtualMemory, etc.) e armazena essas informações para o uso. -
Abertura do Processo Alvo:
Após localizar o processo alvo pelo nome, o código utilizaNtOpenProcesspara obter um handle com as permissões necessárias para execução de código remoto. -
Alocação e Escrita de Memória no Processo Alvo:
UtilizandoNtAllocateVirtualMemory, uma região de memória é alocada no processo alvo, onde a shellcode descriptografada é escrita comNtWriteVirtualMemory. -
Execução da Shellcode:
Após a escrita da shellcode na memória do processo alvo,NtCreateThreadExé utilizada para iniciar a execução em uma nova thread.NtWaitForSingleObjecté chamada para aguardar a conclusão da execução.
-
GetProcessIdByName:
Função que encontra o ID do processo alvo com base no nome. -
RC4DEC:
Implementa o algoritmo de criptografia RC4 para descriptografar a shellcode antes de sua execução. -
obterSSNeEndereco:
Esta função obtém o System Service Number (SSN) e o endereço da syscall especificada.
As chamadas indiretas são executadas utilizando SSNs e endereços específicos das funções dentro da ntdll.dll, e não através de chamadas de API padrão. Isso inclui funções críticas como:
-
NtOpenProcess:
Abre o processo alvo e obtém permissões para a execução de código. -
NtAllocateVirtualMemory:
Aloca memória no processo alvo para armazenar a shellcode. -
NtWriteVirtualMemory:
Escreve a shellcode descriptografada na memória do processo alvo. -
NtCreateThreadEx:
Cria uma nova thread no processo alvo, iniciando a execução da shellcode na memória do processo. -
NtWaitForSingleObject:
Aguarda a conclusão da execução da shellcode.
