Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Karcrack en 12 Marzo 2011, 13:45 pm



Título: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
Publicado por: Karcrack en 12 Marzo 2011, 13:45 pm
Código
  1. Option Explicit
  2. 'KERNEL32
  3. Private Declare Sub GetStartupInfoW Lib "KERNEL32" (ByRef lpStartupInfo As Any)
  4.  
  5. '---------------------------------------------------------------------------------------
  6. ' Procedure : IsOdbg
  7. ' Author    : Karcrack
  8. ' Date      : 12/03/2011
  9. ' TestedOn  : OllyDbg 1.1 & OllyDbg 2.0.1(Alpha)
  10. ' Purpose   : Detect whether we are running inside OllyDbg or not.
  11. '---------------------------------------------------------------------------------------
  12. '
  13. Public Function IsOdbg() As Boolean
  14.    Dim bvStartupInfo(0 To 16)  As Long
  15.    Call GetStartupInfoW(bvStartupInfo(0))
  16.    IsOdbg = (bvStartupInfo(11) And &H80)
  17. End Function


Título: Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
Publicado por: raul338 en 12 Marzo 2011, 14:05 pm
Y si cambian/desactivan esas lineas desde el ollydbg ? :xD (nunca lo he usado :P)


Título: Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
Publicado por: Karcrack en 12 Marzo 2011, 14:24 pm
Pues si van debuggeando instruccion por instruccion hasta encontrar la llamada a DllFuncionCall() con "KERNEL32" y "GetStartupInfoW"... Pueden parchear la comparacion y devolver False.. pero para ello deben saber que STARTUPINFO.dwFlags tiene un flag distinto dentro de OllyDbg...


Título: Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
Publicado por: philipjfry99 en 19 Marzo 2011, 23:30 pm
lol this simple trick call works!!!! good work as amways....When will u be back in english scenes dude ;)


Título: Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
Publicado por: Edu en 20 Marzo 2011, 00:48 am
Good proyect dude, this code must be in all security programs, or malwares jeje


Título: Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
Publicado por: 43H4FH44H45H4CH49H56H45H en 20 Marzo 2011, 06:01 am
En realidad saltarse este truco es muy sencillo  >:D, solo viendo que api es llamada luego de que detecte a olly (eso deacuerdo al programa si lanza un msgbox o finaliza el programa por ejemplo) podemos llegar a la funcion que se encarga de la deteccion, para saltarse este truco solo basta lo siguiente:
Código
  1. Option Explicit
  2. 'KERNEL32
  3. Private Declare Sub GetStartupInfoW Lib "KERNEL32" (ByRef lpStartupInfo As Any)
  4.  
  5. '---------------------------------------------------------------------------------------
  6. ' Procedure : IsOdbg
  7. ' Author    : Karcrack
  8. ' Date      : 12/03/2011
  9. ' TestedOn  : OllyDbg 1.1 & OllyDbg 2.0.1(Alpha)
  10. ' Purpose   : Detect whether we are running inside OllyDbg or not.
  11. '---------------------------------------------------------------------------------------
  12. '
  13. Public Function IsOdbg() As Boolean
  14.    Dim bvStartupInfo(0 To 16)  As Long
  15.    Call GetStartupInfoW(bvStartupInfo(0))
  16.    IsOdbg = (bvStartupInfo(11) And &H80)
  17. End Function
  18.  
  19.  
  20. Private Sub Command1_Click()
  21. If IsOdbg Then
  22. MsgBox "Es Olly"
  23. Else
  24. MsgBox "No hay Olly"
  25. End If
  26. End Sub

Luego de encontrar la funcion que valida si olly esta presente, localizamos la Api que lo detecta, luego de colocar un BP, vemos lo siguiente:

(http://www.imagengratis.org/images/2bv4jb.jpg)

(http://www.imagengratis.org/images/3oz9po.jpg)

Y solo basta con cambiar un numero  :xD para que ya no lo detecte...

(http://www.imagengratis.org/images/4dq5kd.jpg)

(http://www.imagengratis.org/images/5zs3fz.jpg)

Saluos  :P


Título: Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
Publicado por: Karcrack en 20 Marzo 2011, 14:21 pm
No tiene ningun merito quitar la proteccion si esta te avisa de que te ha detectado... pero imagina que dependiendo de que te detecta hace unas acciones u otras... Ahi ya tendrias mas dificil (Sin saber que con esa llamada se puede detectar) encontrar que esta pasando...


Título: Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
Publicado por: 43H4FH44H45H4CH49H56H45H en 20 Marzo 2011, 15:13 pm
Como escribi antes, el programa puede tomar una accion u otra (msgbox o finalizar el programa por ejemplo), pero a la final tendra que realizar algun prodedimiento que se puede interceptar.
Que mejor si haces un Crack Me y vemos que tan dificil puede ser quitar esta u otra protección.
Saluos  :P


Título: Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
Publicado por: Edu en 20 Marzo 2011, 15:23 pm
Pero vs te das cuenta q tiene ese codigo de Karcrack una vez q ya se uso, y en vez del mensajito puede que haga una maldad para no ser analizado ;)


Título: Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
Publicado por: 43H4FH44H45H4CH49H56H45H en 20 Marzo 2011, 17:44 pm
Si el programa hiciera la "maldad" ya tendria el punto para empezar a buscar de donde se llamo a su funcion. Obviamente esto no tiene porque preocupar a cualquier persona que tenga un minimo de conocimiento de como proteger su equipo contra "maldades", pero viendo tu comentario tú si tendrias de que preocuparte  :P
Saluos.


Título: Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
Publicado por: Edu en 20 Marzo 2011, 18:24 pm
Yo no uso el ollydbg asique no te puedo discutir, pero me interesa el tema a ver si me puedes explicar.

Asique si yo meto ese codigo en mi malware, para q cuando este analizandose en ollybdg cierre todo, bloquee teclado, elimine los puntos de restauracion, elimine archivos importantes para el inicio de el SO, y se reinicie forzosamente.. ahi puedes hacer algo? Teniendo en cuenta q vs no sabias q tenia este codigo, q solo te darias cuenta al intentar analizarlo y como dije antes pasaria todo eso y entonces no podrias hacer nada, q podes hacer ahi?

Esq yo decia para q no lo analizen, ya q desp de eso como consigues el malware otra vez?

pd: Repito, no he usado olly pero se mas o menos para q sirve y lo mismo con los malwares, asique talvez estoy mal pero eso es lo q pense desde hoy, y seria lo q (aunque talvez de otra forma seguramente) karcrack penso.


Título: Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
Publicado por: raul338 en 20 Marzo 2011, 18:31 pm
Y si cambian/desactivan esas lineas desde el ollydbg ? :xD (nunca lo he usado :P)

A eso me referia 43H4FH44H45H4CH49H56H45H(Codelive), Supongo que tienes 2 formas de debuguear, a mano (viendo linea por linea) y "ejecutando" cosa que ahi no te daras cuenta, y no hara nada "malo" para no levantar sospechas :P


Título: Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
Publicado por: Karcrack en 20 Marzo 2011, 20:24 pm
Que mejor si haces un Crack Me y vemos que tan dificil puede ser quitar esta u otra protección.
No tiene sentido hacer un CrackMe si ya sabes la tecnica que utiliza para protegerse... la dificultad de este metodo reside en que es desconocido, por lo tanto tu nunca sabrias en que parte del codigo se hace la busqueda del OllyDbg... asi que no podras parchear :)
Respecto a las acciones... imagina que infecto el calc.exe inyectando codigo en el binario original... añado la comparacion y si no estamos en el olly busco otros ejecutables e infecto, pero si estamos en el olly ejecuto el calc.exe con normalidad...


Título: Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
Publicado por: 43H4FH44H45H4CH49H56H45H en 20 Marzo 2011, 21:50 pm
Asique si yo meto ese codigo en mi malware, para q cuando este analizandose en ollybdg cierre todo, bloquee teclado, elimine los puntos de restauracion, elimine archivos importantes para el inicio de el SO, y se reinicie forzosamente.. ahi puedes hacer algo? Teniendo en cuenta q vs no sabias q tenia este codigo, q solo te darias cuenta al intentar analizarlo y como dije antes pasaria todo eso y entonces no podrias hacer nada, q podes hacer ahi?

Esq yo decia para q no lo analizen, ya q desp de eso como consigues el malware otra vez?

(http://www.imagengratis.org/images/1kk7wk.jpg)

Este programa esta protegido por un par de packers que en cuanto detectan al olly, te hacen causan algunos daños y luego reinician la pc, ya lo modifique para que no haga cambios en mi SO y tampoco reinicie, solo me falta eliminar un par de llamadas y podre desempacarlo para modificarlo  :rolleyes: , como dije anteriormente los daños que cause no me preocupan en absoluto  :laugh:

A eso me referia 43H4FH44H45H4CH49H56H45H(Codelive), Supongo que tienes 2 formas de debuguear, a mano (viendo linea por linea) y "ejecutando" cosa que ahi no te daras cuenta, y no hara nada "malo" para no levantar sospechas :P

Creo que en este caso debriamos dividir en dos tipos de análisis, puesto que si fuera un soft comercial obviamente yo notaria las diferencias cuando se ejecuta en Olly y cuando se ejecuta normalmente.

En caso de malware, la técnica cambia, puesto que para que harian un programa que haga nada o solo abra otro programa  ;D ademas de que una de las caracterisiticas de la mayoria de los malware's es tener el menor tamaño posible.

No tiene sentido hacer un CrackMe si ya sabes la tecnica que utiliza para protegerse...
Que mejor si haces un Crack Me y vemos que tan dificil puede ser quitar esta u otra protección.

la dificultad de este metodo reside en que es desconocido, por lo tanto tu nunca sabrias en que parte del codigo se hace la busqueda del OllyDbg... asi que no podras parchear :)

Hay cientos de programas con técnicas desconocidas pero igual se van rompiendo sus protecciones,el que sea desconocida no implica que no sea crackeable...
En el caso de Vb, es uno de los mas sencillos de debuggear, uso Olly como una herramienta secundaria (en vb) que utilizo solo para la modificación, antes puedo utilizar vb decompiler, p32dasm, etc...
Si utilizo un decompiler (que hay varios), ahi ya puedo saber las Api's que utiliza el programa y tener una aproximacion de que es lo que hace para luego debuggearlo con Olly, de ahi es pan comido.

Solo los packers pueden dar una mayor protección, pero igual pueden vencerse  :P

Respecto a las acciones... imagina que infecto el calc.exe inyectando codigo en el binario original... añado la comparacion y si no estamos en el olly busco otros ejecutables e infecto, pero si estamos en el olly ejecuto el calc.exe con normalidad...

Tratandose de análisis de malware, en mi caso puedo utilizar regshot1_7_2, un fileSystemWatcher que tengo creado (uno en .NET, otro C++) con eso me bastaria para tener una aproximación de que hace el malware.


En conclusión primero debo saber que tipo de análisis hacer al programa, luego puedo descompilarlo para tener una aproximación de código, ejecutarlo para saber que cambios realiza en el sistema y por ultimo debuggearlo para modificar algunas cosas (si lo necesito). Esto puedo hacerlo en un VM o en mi mismo S.O. que esta preparado para eso, estos son algunos de los archivos que me toco analizar hace un tiempo para obtener el nivel de daño en un S.O.

(http://www.imagengratis.org/images/2fs5hf.jpg)

(http://www.imagengratis.org/images/3fj1ef.jpg)

Ninguno fue dificil  :laugh:

Saluos.


Título: Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
Publicado por: Edu en 20 Marzo 2011, 22:35 pm
Jeje, entonces como funciona la cosa? vs para analizar un programa q no sabes si es malware o solo un simple software.. lo ejecutas en una maquina virtual o analisas todo ahi. Pero te fuiste a un nivel mas avanzado a lo q pensaba yo xD
Yo decia alguien q tenga el olly en su propia pc ( no en una VM) y ponga a debuggear el programa y este realize todo lo q ya he dicho antes. Para eso decia q me podia servir a mi, para q no me analizen el malware, solo q si lo agarra un experto como vs ya se como ira.
Gracias por la leccion xD


Título: Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
Publicado por: Karcrack en 21 Marzo 2011, 16:19 pm
43H4FH44H45H4CH49H56H45H a ver si tengo un rato durante la semana y te dedico un CrackMe :laugh:


Título: Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
Publicado por: 43H4FH44H45H4CH49H56H45H en 21 Marzo 2011, 17:34 pm
Siempre y cuando sea lo único que me dediques  :xD
Mejor si es de horas 4:00 - 8:00 (hora del foro), que es cuando toy en casa  :P
Saluos.