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


Tema destacado: Personaliza-Escoge el diseño del foro que más te guste.

+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware (Moderadores: Karcrack, [Zero])
| | |-+  [SRC][FASM]Deteccion de Debugger utilizando ReadTimeStampCounter
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [SRC][FASM]Deteccion de Debugger utilizando ReadTimeStampCounter  (Leído 2,902 veces)
[L]ord [R]NA


Desconectado Desconectado

Mensajes: 1.507


El Dictador y Verdugo de H-Sec


Ver Perfil WWW
[SRC][FASM]Deteccion de Debugger utilizando ReadTimeStampCounter
« en: 10 Abril 2010, 03:32 »

Autor: R.N.A.

Descripcion: La funcion de esta pieza de codigo es comparar los ciclos del reloj del procesador en dos tiempos diferentes, entendiendo que si sobrepasa una cantidad de ciclos entre los dos intervalos de tiempo es posible que el codigo este siendo debuggeado.

Esta funcion se utilizara en el proyecto AthenaBot (Claro esta con algunas mejoras).

Código
TimingDebug:                    ;Verificando si estamos siendo Debuggeados usando el Ciclo del Reloj del procesador.
pushad                          ;Empujamos a la pila el valor de los registros.
rdtsc                           ;Devuelve el numero de ciclos totales del reloj del procesador en EDX:EAX)
xchg ecx, eax                   ;Movemos el valor de EAX a ECX
xchg ebx, edx                   ;Movemos el valor de EDX a EBX
push ecx                        ;Desde aqui agregamos una cierta cantidad de codigo basura o el codigo que no deseamos
                               ;que sea debuggeado.
inc esi
dec edi
xchg edi, esi
pop ecx
nop
push eax
pop eax
nop                             ;Aqui terminamos el codigo basura.
rdtsc                           ;Tomamos nuevamente el numero de ciclos del reloj del procesador.
cmp edx, ebx                    ;Comprobamos que EDX y EBX tengan el mismo valor.
ja _ifoundit                    ;Si EDX es mayor que EBX estamos siendo Debuggeados.
sub eax, ecx                    ;Restamos ECX a EAX.
cmp eax, $200                   ;Comparamos eax con 200h (En el caso de esa pequeña porcion de codigo... el valor puede variar)
ja _ifoundit                    ;Si EAX es mayor que 200h estamos siendo Debuggeados.
jmp __$end                      ;Saltamos al final.
_ifoundit:                      ;Etiqueta a la que se saltara si estamos siendo Debuggeados.
mov dword[esp+$1c],$1           ;Movemos el valor 1 a 1ch bytes con respecto a ESP.
__$end:                         ;Etiqueta para el fin de la funcion.
popad                           ;Retomamos de la pila el valor de los registros.
ret                             ;Retornamos el programa a despues de la llamada a la funcion.      
En línea

☺BADMAN

Desconectado Desconectado

Mensajes: 51


Este es un Moderador de CPH


Ver Perfil
Re: [SRC][FASM]Deteccion de Debugger utilizando ReadTimeStampCounter
« Respuesta #1 en: 10 Abril 2010, 04:03 »

  Perpicaz e inmaginativa manera de detectar el olly jeje  :-*
En línea

Experto en Biefrost.
Subseven User.
Especialista en crypters.
Tifa FAN
Batch Programer XD ;D
Karcrack
Moderador
***
Desconectado Desconectado

Mensajes: 2.190


Se siente observado ¬¬'


Ver Perfil
Re: [SRC][FASM]Deteccion de Debugger utilizando ReadTimeStampCounter
« Respuesta #2 en: 10 Abril 2010, 14:56 »

No es un método muy buena la verdad... Dependiendo del ordenador, de la cantidad de procesos que estén trabajando todo esto puede fallar...

Ademas que un Cracker con algo de practica al ver que le detecta el Olly simplemente se fijara un poco mas... vera el rdtsc y simplemente pondrá un BP un poco mas adelante de la comprobación...

Para el Athena curraros algo mejor! ;)
En línea

[L]ord [R]NA


Desconectado Desconectado

Mensajes: 1.507


El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Re: [SRC][FASM]Deteccion de Debugger utilizando ReadTimeStampCounter
« Respuesta #3 en: 10 Abril 2010, 15:32 »

En mi ordenador personalmente termina de hacer las instrucciones antes de los 50ciclos con varias aplicaciones abiertas (2WLM, FireFox, VLCMedia, FASM :xD, Olly, IDA y el OpenOffice Writer), por lo tanto no creo que exista un problema por los ciclos, ademas las tecnicas de anti-debugging no son 100% efectivas ninguna... la tarea de estas es complicar el analisis.

:xD estoy preparando algo con una idea que me dio Arkangel.
En línea

Karcrack
Moderador
***
Desconectado Desconectado

Mensajes: 2.190


Se siente observado ¬¬'


Ver Perfil
Re: [SRC][FASM]Deteccion de Debugger utilizando ReadTimeStampCounter
« Respuesta #4 en: 10 Abril 2010, 15:55 »

El problema de esta técnica es que necesitas que el Cracker este ejecutando el fichero instrucción por instrucción, y si ve el rdtsc y sigue con el F8 es que es un poco imbécil :laugh:

Lo mejor para saltarse el Olly es usar técnicas que se lo cargan, hay varios errores algunos públicos otros no... lo mejor es que hace muchisimo que no sacan actualizaciones :xD
En línea

[L]ord [R]NA


Desconectado Desconectado

Mensajes: 1.507


El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Re: [SRC][FASM]Deteccion de Debugger utilizando ReadTimeStampCounter
« Respuesta #5 en: 10 Abril 2010, 19:57 »

:xD TLS CallBack...  otro se encargara de eso
En línea

bizco


Desconectado Desconectado

Mensajes: 698


Ver Perfil
Re: [SRC][FASM]Deteccion de Debugger utilizando ReadTimeStampCounter
« Respuesta #6 en: 10 Abril 2010, 20:01 »

hay plugins para saltarse la deteccion con rdtsc y tb para el TLS CallBack.
En línea
[L]ord [R]NA


Desconectado Desconectado

Mensajes: 1.507


El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Re: [SRC][FASM]Deteccion de Debugger utilizando ReadTimeStampCounter
« Respuesta #7 en: 10 Abril 2010, 20:39 »

:xD el problema es que ninguna tecnica es 100% valida, incluso el TLSCallBack puedes deshabilitarlo desde un editor hexadecimal.
En línea

bizco


Desconectado Desconectado

Mensajes: 698


Ver Perfil
Re: [SRC][FASM]Deteccion de Debugger utilizando ReadTimeStampCounter
« Respuesta #8 en: 10 Abril 2010, 21:13 »

esta claro que 100% no existe nada, pero es menos evidente creo dejar codigo erroneo aproposito que genere una excepcion y asi controlar el flujo de ejecucion del programa. por ejemplo este pequeño codigo bajo un depurador ejecuta todo el rato las mismas instrucciones, sin depurador su ejecucion es correcta.

Código:
push TodoBien
push dword [fs:0]
mov [fs:0],esp
db 0F1h           ; generar single step
Mareo:            ;Desde aqui
push 0
push msg
push msg
push 0
call [MessageBox]
test eax,eax
jz $
jmp Mareo       ; Hasta aqui, es basura. no vale para nada el codigo y solo se ejecuta bajo un depurador.
TodoBien:
push 0
push t
push t
push 0
call [MessageBox]
push 0
call [ExitProcess]  
En línea
[Zero]
Moderador
***
Desconectado Desconectado

Mensajes: 1.059


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: [SRC][FASM]Deteccion de Debugger utilizando ReadTimeStampCounter
« Respuesta #9 en: 10 Abril 2010, 21:21 »

Tampoco es poco evidente, cuando en un virus ves un fs:[0] ya ves automáticamente que es lo que hay que hacer. Además el Olly te lo marca automáticamente como SEH Installation. El mejor método es el que no está documentado, pues sea cual sea, si no es nuevo, con una búsqueda en google encuentras como saltártelo. Pero bueno, el objetivo de los antidebug no es principalmente saltarse que analicen tu software con un debuger (que tambien), sinó más bien lo que se quiere evitar es el análisis heurístico de los AV, y es ahí en donde hay que probar si funciona  :P.

Saludos
En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
bizco


Desconectado Desconectado

Mensajes: 698


Ver Perfil
Re: [SRC][FASM]Deteccion de Debugger utilizando ReadTimeStampCounter
« Respuesta #10 en: 10 Abril 2010, 21:26 »

claro, pero eso es un ejemplo, se puede complicar mas la cosa. tb se puede descifrar zonas de codigo "a peticion", solo cuando necesiten ser ejecutadas mientras esa zona pude tener basura o simplemente nada. todo es imaginacion.
En línea
[L]ord [R]NA


Desconectado Desconectado

Mensajes: 1.507


El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Re: [SRC][FASM]Deteccion de Debugger utilizando ReadTimeStampCounter
« Respuesta #11 en: 10 Abril 2010, 21:44 »

Eso que propones seria otro tema, ya hablariamos de encriptacion.
En línea

RAID-MAM

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Re: [SRC][FASM]Deteccion de Debugger utilizando ReadTimeStampCounter
« Respuesta #12 en: 10 Abril 2010, 21:59 »

Ingenioso el metodo pero recordad recordad que existen mas debugger que el olly :xD
En línea
[L]ord [R]NA


Desconectado Desconectado

Mensajes: 1.507


El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Re: [SRC][FASM]Deteccion de Debugger utilizando ReadTimeStampCounter
« Respuesta #13 en: 10 Abril 2010, 22:05 »

Ingenioso el metodo pero recordad recordad que existen mas debugger que el olly :xD

:xD lo recuerdo cada dia de mi vida
En línea

☺BADMAN

Desconectado Desconectado

Mensajes: 51


Este es un Moderador de CPH


Ver Perfil
Re: [SRC][FASM]Deteccion de Debugger utilizando ReadTimeStampCounter
« Respuesta #14 en: 12 Abril 2010, 00:50 »

  Despues que el Bot caiga en las garras de los Crackers de Panda necesitaran mas que magia para que no saquen hasta la ultima cadena de caracter escondida .....

  Con seis programadores del proyecto athena se tendra que trabajar en turnos dobles las 24 horas del dia sacando parches y actualizando zombies para mantenerla ..  >:D
En línea

Experto en Biefrost.
Subseven User.
Especialista en crypters.
Tifa FAN
Batch Programer XD ;D
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

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