Fuzzer causa bloqueo. ¿Ahora que?

5

¿Puede alguien dirigirme a algunos buenos tutoriales sobre cómo identificar el tipo de vulnerabilidad según lo informado por! explotable y adónde ir desde allí?

Esencialmente, tengo una pequeña configuración de laboratorio y estoy tratando de ampliar mi comprensión de la investigación y el desarrollo de exploits. Así que tengo una aplicación que falla, informes explotables como EXPLOTABLE y una violación de acceso de escritura. Mi problema en este punto es que no estoy seguro de qué tipo de problema está ocurriendo y cómo proceder.

Hay muchos tutoriales de exploits, excepto que todos muestran desbordamientos de búfer ... No estoy seguro de que se trate de un desbordamiento de búfer. Al abrir el archivo difuso que provoca el bloqueo en Immunity Debugger, se produce el mismo bloqueo en la misma dirección de memoria que el informe! Explotable. Comparé el archivo limpio con el archivo difuso en una aplicación bindiffer y puedo ver el cambio hexadecimal exacto que está causando el bloqueo, pero podría usar algunos consejos sobre cómo proceder desde aquí para comenzar a armar el código de vulnerabilidad. He adjuntado la lectura explotable en caso de que alguien pueda brindarme más información sobre ella y cómo recopilar información significativa de ella.

(834.b7c): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=7fffffff ebx=00726afc ecx=0000c9f0 edx=02adc080 esi=02957b18 edi=00000000
eip=005ec57f esp=0187f810 ebp=0187f978 iopl=0         nv up ei pl nz ac pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010216
*** WARNING: Unable to verify timestamp for image00400000
*** ERROR: Module load completed but symbols could not be loaded for image00400000
image00400000+0x1ec57f:
005ec57f c704ca00000000  mov     dword ptr [edx+ecx*8],0 ds:0023:02b41000=????????
0:000> r;!exploitable -v;q
eax=7fffffff ebx=00726afc ecx=0000c9f0 edx=02adc080 esi=02957b18 edi=00000000
eip=005ec57f esp=0187f810 ebp=0187f978 iopl=0         nv up ei pl nz ac pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010216
image00400000+0x1ec57f:
005ec57f c704ca00000000  mov     dword ptr [edx+ecx*8],0 ds:0023:02b41000=????????
HostMachine\HostUser
Executing Processor Architecture is x86
Debuggee is in User Mode
Debuggee is a live user mode debugging session on the local machine
Event Type: Exception
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for ntdll.dll - 
Exception Faulting Address: 0x2b41000
First Chance Exception Type: STATUS_ACCESS_VIOLATION (0xC0000005)
Exception Sub-Type: Write Access Violation

Exception Hash (Major/Minor): 0x00020e6f.0x435e5a76

Stack Trace:
image00400000+0x1ec57f
image00400000+0x1ebe05
image00400000+0x1eb966
image00400000+0x1eb7f3
image00400000+0x64405
image00400000+0x63eae
image00400000+0x63d2f
image00400000+0x41ca5
image00400000+0x39022
image00400000+0x5d9fa
image00400000+0x5e63f
image00400000+0x38862
image00400000+0x3032
image00400000+0x11d91
Instruction Address: 0x00000000005ec57f

Description: User Mode Write AV
Short Description: WriteAV
Exploitability Classification: EXPLOITABLE
Recommended Bug Title: Exploitable - User Mode Write AV starting at    
image00400000+0x00000000001ec57f (Hash=0x00020e6f.0x435e5a76)

User mode write access violations that are not near NULL are exploitable. 
quit:
    
pregunta Stev0 14.10.2013 - 07:25
fuente

1 respuesta

5

Corelan tiene un par de buenos artículos sobre cómo hacer frente a la explotación:

enlace y enlace

Su metodología parece ser un caso de mirar el archivo semilla original que se utilizó para generar el mensaje difuso y cambiarlo lentamente en el mensaje difuso para identificar qué cambio (s) causa el bloqueo.

Una vez hecho esto, es un caso de determinar qué hace la aplicación que hace que se bloquee ejecutándolo con un depurador adjunto y observando dónde influye el cambio en el comportamiento de los programas. Con eso, usted está mirando para ver qué registros puede tomar (en última instancia, tratando de sobrescribir el EIP). O si se trata de un bloqueo basado en el montón, puede sobrescribir algunos punteros de función para que pueda apuntarlos a su carga útil.

    
respondido por el Colin Cassidy 14.10.2013 - 18:04
fuente

Lea otras preguntas en las etiquetas