Tema destacado: Recuperar cuenta de Google, GMail, Youtube
Autor
|
Tema: Detectar inyecciones en procesos (Leído 3,226 veces)
|
50l3r
Desconectado
Mensajes: 758
Todo lo que se por la cuarta parte que desconozco
|
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
|
Si que se puede hacer en VB 
|
|
|
|
|
En línea
|
|
|
|
|
skapunky
|
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.htmlSaludos.
|
|
|
|
|
En línea
|
|
|
|
50l3r
Desconectado
Mensajes: 758
Todo lo que se por la cuarta parte que desconozco
|
hay que meter mano de asm no?
|
|
|
|
|
En línea
|
|
|
|
|
skapunky
|
No hace falta, puedes utilizar C  . 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
|
Teoricamente es igual de posible en C que en VB 
|
|
|
|
|
En línea
|
|
|
|
50l3r
Desconectado
Mensajes: 758
Todo lo que se por la cuarta parte que desconozco
|
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
|
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 
|
|
|
|
|
En línea
|
|
|
|
|
Karcrack
|
Lo del registro lo tiene claro, lo que quiere saber es como comprobar si ha sido 'comprometido' un proceso...
|
|
|
|
|
En línea
|
|
|
|
50l3r
Desconectado
Mensajes: 758
Todo lo que se por la cuarta parte que desconozco
|
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
|
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
Mensajes: 181
|
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 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
|
- 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
|
- 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
Mensajes: 181
|
- 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
|
|
|
|
|
|