Personal information:

A Coruña, Galicia, Spain

miércoles, 23 de junio de 2010

winXP (32bits) SP3 URLDownloadToFileA + CreateProcessA + ExitProcess ASM Code - 176 bytes

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-

2 comentarios:

  1. como lo ejecuto

    felicitaciones por tu trabajo

    ResponderEliminar
  2. Gracias Juan ;).

    Este 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 :)

    ResponderEliminar