
Inyecta código en ejecutables ELF después de la compilación.

drow es una utilidad de línea de comandos que se utiliza para inyectar código y enganchar el punto de entrada de ejecutables ELF (post-compilación). Toma ejecutables ELF sin modificar como entrada y exporta un ELF modificado que contiene un payload suministrado por el usuario que se ejecuta en tiempo de ejecución.
Drow realiza los siguientes pasos para crear el nuevo ELF parcheado:
sh_size del encabezado de la última sección (en el segmento) y p_memsz/ del encabezado de programa en
el tamaño del payload proporcionado por el usuariop_fileszsh_offset de los encabezados de sección y los p_offset de los encabezados de programa (desplaza secciones y segmentos hacia abajo para hacer espacio
para el payload y un pequeño "stub de stager")e_shoff, e_phoff, etc..)e_entry del encabezado ELF (desplazamiento del punto de entrada ELF) para que apunte al código inyectadoAdemás de inyectar el payload proporcionado por el usuario, drow inyecta un pequeño stub de código que se antepone al inicio del
payload. Este stub está diseñado para llamar al payload. Si el payload está escrito para devolver el control al llamante, después de que
el payload retorna, el stager realiza una llamada tail a _start, restaurando la ejecución para que el programa pueda ejecutarse según lo previsto.
Instale gcc y scons. Luego ejecute scons desde la raíz del directorio.
Además de compilar drow, este proyecto también compila un payload Linux x86-64 llamado rappers_delight.bin que simplemente
imprime en stdout. Esto se puede usar para pruebas. Actualmente, drow solo funciona con archivos ELF64 destinados a x86-64.
Se ha realizado mucho trabajo de código abierto en este dominio. Le animo a que también consulte los siguientes proyectos y publicaciones asociadas: