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


Tema destacado: Recuperar cuenta de Google, GMail, Youtube

+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware (Moderadores: Karcrack, [Zero])
| | |-+  Detectar inyecciones en procesos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Detectar inyecciones en procesos  (Leído 3,226 veces)
50l3r


Desconectado Desconectado

Mensajes: 758


Todo lo que se por la cuarta parte que desconozco


Ver Perfil WWW
Detectar inyecciones en procesos
« en: 25 Abril 2010, 17:20 »

Bueno, nose si me he explicado muy bien la verdad con el tema

Estoy desarrollando un software, que detecte todas las claves del registro donde se puedan iniciar cosas, los paths de inicio, y quisiera tambien que detectase si un proceso a sido modificado para iniciar un malware

Sabeis si eso podria ser posible hechandole mano de vb 6.0?

un saludo
En línea

Karcrack
Moderador
***
Desconectado Desconectado

Mensajes: 2.186


Se siente observado ¬¬'


Ver Perfil
Re: Detectar inyecciones en procesos
« Respuesta #1 en: 25 Abril 2010, 19:54 »

Si que se puede hacer en VB ;)
En línea

skapunky
Electronik Engineer &
CoAdmin
***
Desconectado Desconectado

Mensajes: 3.424



Ver Perfil WWW
Re: Detectar inyecciones en procesos
« Respuesta #2 en: 25 Abril 2010, 20:53 »

Imagino que quieres hacer algo similar a esto.

Para mirar eso en los procesos debes mirar como acceder a la tabla de llamadas del sistema y dependiendo el SO hay cambios. Yo lo intenté hacer en vb y tube problemas aunque bueno, mi idea era leer los primeros bytes de los servicios para ver si habían modificaciones. De hecho con solo hacer esto no garantizas detectar por ejemplo toda clase de rootkits pero es una de las maneras ya que algúnos realizan jumps para inyectarse y lo hacen en esos primeros bytes.

Aquí te dejo la tabla de llamadas, falta la de windows 7 que la saqué de otra página.

http://www.metasploit.com/users/opcode/syscalls.html

Saludos.
En línea

50l3r


Desconectado Desconectado

Mensajes: 758


Todo lo que se por la cuarta parte que desconozco


Ver Perfil WWW
Re: Detectar inyecciones en procesos
« Respuesta #3 en: 25 Abril 2010, 20:55 »

hay que meter mano de asm no?
En línea

skapunky
Electronik Engineer &
CoAdmin
***
Desconectado Desconectado

Mensajes: 3.424



Ver Perfil WWW
Re: Detectar inyecciones en procesos
« Respuesta #4 en: 25 Abril 2010, 20:56 »

No hace falta, puedes utilizar C  :xD. Bueno ya te digo, yo en VB no me acabó de funcionar, pero me parece que es porque en mi caso, lo hice con windows 7 y la tabla no se si era correcta o yo que debería cometer algún error.
En línea

Karcrack
Moderador
***
Desconectado Desconectado

Mensajes: 2.186


Se siente observado ¬¬'


Ver Perfil
Re: Detectar inyecciones en procesos
« Respuesta #5 en: 25 Abril 2010, 20:57 »

Teoricamente es igual de posible en C que en VB :-\
En línea

50l3r


Desconectado Desconectado

Mensajes: 758


Todo lo que se por la cuarta parte que desconozco


Ver Perfil WWW
Re: Detectar inyecciones en procesos
« Respuesta #6 en: 25 Abril 2010, 21:03 »

en si no tengo ni idea de como hacer lo que me decis, algun tutorial para ello, o unicamente como deberia buscarlos

estoy haciendo un software que detecta todo lo que se inicia, y quisiera hacer esto tambien posible

saludos
En línea

skapunky
Electronik Engineer &
CoAdmin
***
Desconectado Desconectado

Mensajes: 3.424



Ver Perfil WWW
Re: Detectar inyecciones en procesos
« Respuesta #7 en: 25 Abril 2010, 21:29 »

Para poder ver todo lo que se inicia debes leer las claves del registro donde se crean los valores de las aplicaciónes que se inician y crear un bucle que lea todas. Puedes hacerlo con el objeto WMI o por ejemplo mediante script "regread".

Me estás sorpendiendo, como hiciste el troyano y sin saber hacer todo esto  :P
En línea

Karcrack
Moderador
***
Desconectado Desconectado

Mensajes: 2.186


Se siente observado ¬¬'


Ver Perfil
Re: Detectar inyecciones en procesos
« Respuesta #8 en: 25 Abril 2010, 22:17 »

Lo del registro lo tiene claro, lo que quiere saber es como comprobar si ha sido 'comprometido' un proceso...
En línea

50l3r


Desconectado Desconectado

Mensajes: 758


Todo lo que se por la cuarta parte que desconozco


Ver Perfil WWW
Re: Detectar inyecciones en procesos
« Respuesta #9 en: 25 Abril 2010, 22:19 »

como deciais en otros posts, hacer un troyano no es nada del otro mundo

quizas me este liando y sea algo que es facil hacer pero que aun no lo he cogido

en el tema de la memoria de la cpu no ando metido
En línea

Hendrix
In The Kernel Land
Colaborador
***
Desconectado Desconectado

Mensajes: 2.271



Ver Perfil WWW
Re: Detectar inyecciones en procesos
« Respuesta #10 en: 26 Abril 2010, 01:08 »

Te refieres a algo parecido a esto: https://foro.elhacker.net/seguridad/hook_detector_by_hendrix-t221586.0.html;msg1071968 ???

Lo que yo hice fue muy sencillo (lo hice con una Dll, pero se puede hacer perfectamente sin Dll).

Lo que hace es lo siguiente:

- Crea una lista de la IAT con las API's que usa dicho proceso
- Por cada API, lee de memoria virtual los primeros opcodes y los compara con los de algún salto (aunque se podría comparar los primeros X bytes de la API con los primeros X bytes reales de la misma API, si no coinciden hay Hook).
- Si hay hook, sobrescribe la memoria con los bytes reales de la API.

Para extraer los bytes reales de la API, la cargas con LoadLibrary, luego lees la memoria del proceso con ReadProcessMemory y lo reparas con WriteProcessMemory. Yo unicamente trabajé con estas API's (y las de lectura de ficheros y estructuras para leer la IAT).

Ale, te dejo la tarea de documentarte a ti, ya te e dado la idea principal, ahora te toca a ti picar código  ;)

Un Saludo  :)
En línea

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
biribau

Desconectado Desconectado

Mensajes: 181


Ver Perfil
Re: Detectar inyecciones en procesos
« Respuesta #11 en: 26 Abril 2010, 02:08 »

No sé porqué no caí en la cuenta hasta ahora, será que la noche me confunde y la madrugada me ilumina
Pero puedes hacerlo en python!!(no lo voy a negar, odio vb)
Sólo busca pydbg, es un debugger programático con el que jugué hace algún tiempo, y hasta posteé algo por aquí(e incluso te podría echar una mano)
Con todo lo que tiene python, hasta dissasemblers y pe-loaders puedes hacer cosas wapas con mucho menos esfuerzo(y menos esfuerzo = más tiempo para hacer más cosas), y no hay mejor excusa para aprender python.
Yo llegué a hacer*(una pijada pero bueno) un nuevo tipo de breakpoints no detectables por métodos antidebug, nada más simple que en vez de int3 colocaba
Código:
xor eax,eax
mov[eax], eax
y saltaba una excepcion de acceso invalido, hombre me costó un poco porque generaba una serie de problemas, pero eso que tu quieres se podría hacer mucho más fácil, ya te digo que yo para hacer eso tuve que entender el codigo fuente del pydbg yte puedo decir que está super claro, es la manera de saber como funciona un debugger en windows.
Concluyo: tírate a python(en el mejor sentido de la expresion xD)
python+pydbg+pefile+pdisasm(este no existe pero hay varios) = 50l3r  FTW!!!

P.D.: lo cierto es que la iluuminación me vino con la frase de hendrix "lee de la memoria virtual", y se me encendió esa bombillita, misterios del subconsciente
P.P.D.: *Perdón por el momento off-topic-batallita
P.P.P.D.: Es curioso también, que habiendo manejado esa herramienta sólo la haya utilizado para cosas... ejem... poco éticas, o que directamente sólo me beneficiaban a mí(como debugueo de mis programas), nunca pensé en una buena utilización de ella, como esta, pero es que se ajusta perfectamente
En línea
skapunky
Electronik Engineer &
CoAdmin
***
Desconectado Desconectado

Mensajes: 3.424



Ver Perfil WWW
Re: Detectar inyecciones en procesos
« Respuesta #12 en: 26 Abril 2010, 13:38 »

Citar
- Por cada API, lee de memoria virtual los primeros opcodes y los compara con los de algún salto (aunque se podría comparar los primeros X bytes de la API con los primeros X bytes reales de la misma API, si no coinciden hay Hook).

Eso es a lo que me referia, en mi caso leia los primeros 6 bytes.

El problema es que este método no es valido siempre ya que los rootkits también utilizan otras formas para inyectarse.
En línea

Hendrix
In The Kernel Land
Colaborador
***
Desconectado Desconectado

Mensajes: 2.271



Ver Perfil WWW
Re: Detectar inyecciones en procesos
« Respuesta #13 en: 26 Abril 2010, 13:53 »

Citar
- Por cada API, lee de memoria virtual los primeros opcodes y los compara con los de algún salto (aunque se podría comparar los primeros X bytes de la API con los primeros X bytes reales de la misma API, si no coinciden hay Hook).

Eso es a lo que me referia, en mi caso leia los primeros 6 bytes.

El problema es que este método no es valido siempre ya que los rootkits también utilizan otras formas para inyectarse.

En caso del API Hooking a nivel de usuario, con realizar un checksum de toda el espacio de memoria de la API sabrás si se ha modificado o no la API en cuestión (Puedes ver cuantos bytes ocupa la API debuggeandola, por ejemplo).

Un Saludo  :)
En línea

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
biribau

Desconectado Desconectado

Mensajes: 181


Ver Perfil
Re: Detectar inyecciones en procesos
« Respuesta #14 en: 26 Abril 2010, 15:31 »

Citar
- Por cada API, lee de memoria virtual los primeros opcodes y los compara con los de algún salto (aunque se podría comparar los primeros X bytes de la API con los primeros X bytes reales de la misma API, si no coinciden hay Hook).

Eso es a lo que me referia, en mi caso leia los primeros 6 bytes.

El problema es que este método no es valido siempre ya que los rootkits también utilizan otras formas para inyectarse.

En caso del API Hooking a nivel de usuario, con realizar un checksum de toda el espacio de memoria de la API sabrás si se ha modificado o no la API en cuestión (Puedes ver cuantos bytes ocupa la API debuggeandola, por ejemplo).

Un Saludo  :)
Y el checksum tiene que estar en una base de datos/fichero y sería una para cada version de SO(porque puede que al cargarla tu tambien este hookeada), en este caso tambien valdría buscar los bytes por un salto.
Y quizás haya tambien alguna manera de desinfectarse on-the-fly? en el mismo proceso es facil, pero desde otro proceso no se, bueno siempre se podría hookear y bypasear ReadProcessMemory, que para eso es un rootkit. Coneso tu desde tu proceso no verias ningun hook
En línea
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿como detectar nuevos procesos en ejecucion?
Programación C/C++
theghost_te 8 1,822 Último mensaje 23 Diciembre 2010, 05:18
por Karman
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines