Foro de elhacker.net

Seguridad Informática => Bugs y Exploits => Mensaje iniciado por: Init en 18 Febrero 2018, 01:16 am



Título: Mi primer shellcode en Windows . Ayuda
Publicado por: Init en 18 Febrero 2018, 01:16 am
Me gustaria que me respondan varias dudas que tengo de este trozo de codigo ... Quiero crear mi primer shellcode para windows pero me he encontrado con una gran obstaculo al empezar y eso es encontrar la dirección de memoria de kernel32.dll. Hasta ahora he probado solo un shellcode que me funciono y es este:

Me parece que ya es muy conocida esta forma de encontrar kernel32:

Syntax NASM

xor     dword    edx, edx
mov    byte      dl, 0x30
mov    dword   edx, [fs:edx]     => (1) A que direccion o a que estructura apunta fs ?? Siempre he visto que cambia de valor. Viendolo con Ollydbg.
mov    dword   edx, [edx + 0xc]     => ? (2)
mov    dword   edx, [edx + 0x1c]   => ? (3)

SEARCH_KERNEL:
       mov  eax, [edx + 0x8], eax    => Busca la cadena KERNEL32.dll
       mov  esi,  [edx + 0x20]          =>
       mov  edx, [edx]                                                         |¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨|
       cmp byte [esi], 0x33             => Espera encontrar el "3" de la cadena kernel 3 2.dll
       jne SEARCH_KERNEL
 
     ....  Esta es la parte que no entiendo :::

Bueno una vez que lo encuentra la dirección de kernel32 se encuentra en el registro "eax"

(1)(2)(3)  Mi primera duda es que dirección esta el "fs" ?? y luego hay alguna estructura en C que me diga el tamaño de cada dato que hay ahí (RESUMIENDO QUIERO QUE ME EXPLIQUEN QUE ESTA HACIENDO LAS 5 PRIMERAS LINEAS)... Me parece que hay mas formas de encontrar esa dirección ... Si podrían pasarme link donde pueda ver como obtener . Y bueno GRACIAS a los que se han dado la molestia de leer hasta aquí.   (Disculpen mis faltas ortográficas T_T).


Título: Re: Mi primer shellcode en Windows . Ayuda
Publicado por: MCKSys Argentina en 18 Febrero 2018, 02:07 am
Hola!

Básicamente el códgio usa FS:0x30 (1) para sacar la addr de la PEB.
Luego, en PEB+0xc (2) saca el puntero a PPEB_LDR_DATA.
Después, en PPEB_LDR_DATA+0x1c (3) accede a puntero a FullDllName de la estructura.

Te dejo info para que leas:

FS: https://en.wikipedia.org/wiki/Win32_Thread_Information_Block (https://en.wikipedia.org/wiki/Win32_Thread_Information_Block)
PEB: https://msdn.microsoft.com/es-es/library/windows/desktop/aa813706(v=vs.85).aspx (https://msdn.microsoft.com/es-es/library/windows/desktop/aa813706(v=vs.85).aspx)
PEB_LDR_DATA: https://msdn.microsoft.com/es-es/library/windows/desktop/aa813708(v=vs.85).aspx (https://msdn.microsoft.com/es-es/library/windows/desktop/aa813708(v=vs.85).aspx)

Saludos!


Título: Re: Mi primer shellcode en Windows . Ayuda
Publicado por: Init en 18 Febrero 2018, 02:11 am
Hola!

Básicamente el códgio usa FS:0x30 (1) para sacar la addr de la PEB.
Luego, en PEB+0xc (2) saca el puntero a PPEB_LDR_DATA.
Después, en PPEB_LDR_DATA+0x1c (3) accede a puntero a FullDllName de la estructura.

Te dejo info para que leas:

FS: https://en.wikipedia.org/wiki/Win32_Thread_Information_Block (https://en.wikipedia.org/wiki/Win32_Thread_Information_Block)
PEB: https://msdn.microsoft.com/es-es/library/windows/desktop/aa813706(v=vs.85).aspx (https://msdn.microsoft.com/es-es/library/windows/desktop/aa813706(v=vs.85).aspx)
PEB_LDR_DATA: https://msdn.microsoft.com/es-es/library/windows/desktop/aa813708(v=vs.85).aspx (https://msdn.microsoft.com/es-es/library/windows/desktop/aa813708(v=vs.85).aspx)

Saludos!

Gracias por darte la molestia de leer mi PROBLEMA y darme una respuesta n_n ... Revisare los links que me brindaste . GRACIAS.