Buenas a todos.
Este es un posible código fuente, más bien del montón, para un shellcode que descarga un fichero desde un host remoto, lo ejecuta y sale del proceso.
El código calcula la longitudd el nombre del archivo, para mas tarde sumarsela como desplazamiento a un CALL para corregir la distancia a la que se encuentra, que varía con la longitud del nombre del archivo que queremos descargar.
Mas tarde consigue los desplazamientos de memoria en los que esta situada la URL y el nombre del archivo a descargar, los almacena , procede a llamar a las APIs que se encargan de todo.
Aquí lo tenéis (UPDATED: EXPLOIT-DB aquí), para masm32, seguramente pueda reducirse bastante su tamaño:
Si observáis los opcodes habrá multitud de bytes nulos jeje así que recomiendo encodear la shellcode antes de usarla, y acoplarle alguna rutina de descifrado que se ejecute antes que la shellcode, claro...
-H4ppyH4ck1n9-
como lo ejecuto
ResponderEliminarfelicitaciones por tu trabajo
Gracias Juan ;).
ResponderEliminarEste código fue programado en RadASM (un IDE de masm32), aunque si creas un proyecto nuevo y lo ejecutas no funcionará, ya que tienes que sustituir las instrucciones NOP del final:
FILE_:
call ebx
nop ;FILE NAME HERE
URL:
lea ebx,OFFURL
call ebx
nop ;URL HERE
por las strings respectivas en hexadecimal, el primero con el nombre del archivo y el segundo con el nombre de la url, que son los argumentos para URLDownloadToFIleA.
Esto puedes hacerlo con el OllyDBG fácilmente, con el copy/paste binario o editando los bytes directamente :)