elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 23:42  


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo, raul338)
| | |-+  [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger  (Leído 1,884 veces)
Karcrack


Desconectado Desconectado

Mensajes: 2.192


Se siente observado ¬¬'


Ver Perfil
[ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
« en: 12 Marzo 2011, 13:45 »

Código
Option Explicit
'KERNEL32
Private Declare Sub GetStartupInfoW Lib "KERNEL32" (ByRef lpStartupInfo As Any)
 
'---------------------------------------------------------------------------------------
' Procedure : IsOdbg
' Author    : Karcrack
' Date      : 12/03/2011
' TestedOn  : OllyDbg 1.1 & OllyDbg 2.0.1(Alpha)
' Purpose   : Detect whether we are running inside OllyDbg or not.
'---------------------------------------------------------------------------------------
'
Public Function IsOdbg() As Boolean
   Dim bvStartupInfo(0 To 16)  As Long
   Call GetStartupInfoW(bvStartupInfo(0))
   IsOdbg = (bvStartupInfo(11) And &H80)
End Function


En línea

raul338
Moderador
***
Desconectado Desconectado

Mensajes: 2.371


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
« Respuesta #1 en: 12 Marzo 2011, 14:05 »

Y si cambian/desactivan esas lineas desde el ollydbg ? :xD (nunca lo he usado :P)


En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.192


Se siente observado ¬¬'


Ver Perfil
Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
« Respuesta #2 en: 12 Marzo 2011, 14:24 »

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...
En línea

philipjfry99

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
« Respuesta #3 en: 19 Marzo 2011, 23:30 »

lol this simple trick call works!!!! good work as amways....When will u be back in english scenes dude ;)
En línea
Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
« Respuesta #4 en: 20 Marzo 2011, 00:48 »

Good proyect dude, this code must be in all security programs, or malwares jeje
En línea
43H4FH44H45H4CH49H56H45H
Wiki

Desconectado Desconectado

Mensajes: 483



Ver Perfil
Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
« Respuesta #5 en: 20 Marzo 2011, 06:01 »

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
Option Explicit
'KERNEL32
Private Declare Sub GetStartupInfoW Lib "KERNEL32" (ByRef lpStartupInfo As Any)
 
'---------------------------------------------------------------------------------------
' Procedure : IsOdbg
' Author    : Karcrack
' Date      : 12/03/2011
' TestedOn  : OllyDbg 1.1 & OllyDbg 2.0.1(Alpha)
' Purpose   : Detect whether we are running inside OllyDbg or not.
'---------------------------------------------------------------------------------------
'
Public Function IsOdbg() As Boolean
   Dim bvStartupInfo(0 To 16)  As Long
   Call GetStartupInfoW(bvStartupInfo(0))
   IsOdbg = (bvStartupInfo(11) And &H80)
End Function
 
 
Private Sub Command1_Click()
If IsOdbg Then
MsgBox "Es Olly"
Else
MsgBox "No hay Olly"
End If
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:





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





Saluos  :P
En línea


-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W
Karcrack


Desconectado Desconectado

Mensajes: 2.192


Se siente observado ¬¬'


Ver Perfil
Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
« Respuesta #6 en: 20 Marzo 2011, 14:21 »

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...
En línea

43H4FH44H45H4CH49H56H45H
Wiki

Desconectado Desconectado

Mensajes: 483



Ver Perfil
Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
« Respuesta #7 en: 20 Marzo 2011, 15:13 »

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
En línea


-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W
Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
« Respuesta #8 en: 20 Marzo 2011, 15:23 »

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 ;)
En línea
43H4FH44H45H4CH49H56H45H
Wiki

Desconectado Desconectado

Mensajes: 483



Ver Perfil
Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
« Respuesta #9 en: 20 Marzo 2011, 17:44 »

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.
En línea


-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W
Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
« Respuesta #10 en: 20 Marzo 2011, 18:24 »

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.
En línea
raul338
Moderador
***
Desconectado Desconectado

Mensajes: 2.371


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
« Respuesta #11 en: 20 Marzo 2011, 18:31 »

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
En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.192


Se siente observado ¬¬'


Ver Perfil
Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
« Respuesta #12 en: 20 Marzo 2011, 20:24 »

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...
En línea

43H4FH44H45H4CH49H56H45H
Wiki

Desconectado Desconectado

Mensajes: 483



Ver Perfil
Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
« Respuesta #13 en: 20 Marzo 2011, 21:50 »

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?



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.





Ninguno fue dificil  :laugh:

Saluos.
En línea


-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W
Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Re: [ANTI] IsOdbg() - Saber si estas siendo debuggeado por el OllyDebugger
« Respuesta #14 en: 20 Marzo 2011, 22:35 »

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
En línea
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines