TP3 - Consulta

0 views
Skip to first unread message

Eduardo

unread,
Oct 12, 2009, 12:00:09 AM10/12/09
to Programación II (Grupo 01)
Profe pura vida!!!!!

Para lo de la inyeccion de codigo, tiene que ver en algo el concepto
de "proceso remoto" y "proceso externo"...?????

Roberto Ulloa

unread,
Oct 12, 2009, 11:00:03 AM10/12/09
to ci-12...@googlegroups.com
Eso depende del contexto. ¿Dónde lo leyo?

Suena como ataque en red. Nosotros estamos trabajando únicamente el
ataque local.

Roberto
--

"Hágale el amor a la vida"
                            Evolución

Eduardo

unread,
Oct 12, 2009, 8:51:10 PM10/12/09
to Programación II (Grupo 01)
Lo lei aca: http://www.clubdelphi.com/foros/showthread.php?t=55924

Ahi lo hacen con Delphi pero tambien lo vi en otras paginas... Solo
que no tengo los links de esas otras...

Roberto Ulloa

unread,
Oct 12, 2009, 9:01:03 PM10/12/09
to ci-12...@googlegroups.com
"Proceso externo o remoto", en el contexto del link, se refiere simplemente al proceso vulnerable:
- El que tiene la pulga
- Al que le vamos a inyectar código
- Del cuál nos vamos a aprovechar

¿Lo está pensando hacer en delphi?

¿Todo el mundo está claro con el concepto de proceso? ¿Alguien que nos ilustre?

Eduardo

unread,
Oct 12, 2009, 9:16:29 PM10/12/09
to Programación II (Grupo 01)
No en delphi no, seguro en C. Creo que en C usted dijo que era
mejor... Aunque si no llega a ser dificil en delphi talvez podria
hacerlo.... Por ahora solo estoy investigando, para entender bien
bien.

Lo que aun no tengo bien claro es exactamente lo de las preguntas que
salen en la pag:

"""Si consideamos que cuando llamamos rutinas dentro de nuestro
programa estamos referenciando a direcciones de memoria en el espacio
de direcciones de nuestra aplicación, la primera dificultad que nos
salta a la vista es : Y como se localizan esas direcciones desde la
rutina que vamos a inyectar si esta estará EJECUTANDOSE EN UN ESPACIO
DE DIRECCIONES DIFERENTE ?. Y Si la rutina a inyectar TIENE SU
DIRECCION de memoria en NUESTRO ESPACIO,

COMO PUEDE EL OTRO PROCESO REFERENCIARLA y ejecutarla en
su propio espacio ?"""

Roberto Ulloa

unread,
Oct 12, 2009, 9:27:27 PM10/12/09
to ci-12...@googlegroups.com
Por rutina entiéndase un llamado a un método en C.

Son básicamente las mismas preguntas que hice en clase.
Recuerde que cuando se llama a una función, la dirección
de retorno al código donde se llamo la función queda en la
pila (RET). Entonces:

"cómo se localizan esas direcciones desde la rutina que vamos
a inyectar si esta estará EJECUTANDOSE EN UN ESPACIO DE
DIRECCIONES DIFERENTE ?"

En realidad, el espacio de direcciones no varía de ejecución a
ejecución a menos que otro programa se ejecute entre dos
ejecuciones del mismo. Esto es válido para Sistemas Operativos
viejos

Con un debugger (gdb) podemos saber las direcciones para una
ejecución.


"Y  Si la rutina a inyectar TIENE SU  DIRECCION de memoria en
NUESTRO ESPACIO"

Mmm... por eso es que la inyectamos: ¡para que esté en el
espacio del programa! Si no no podríamos...


"COMO PUEDE EL OTRO PROCESO REFERENCIARLA y ejecutarla en
su propio espacio ?"

Se la inyectamos, modificamos la dirección de retorno para que apunte
al código inyectado.

Eduardo

unread,
Oct 12, 2009, 9:49:20 PM10/12/09
to Programación II (Grupo 01)
Entonces nosotros corremos nuestro programa para lograr desbordar el
buffer y caerle con nuestro shellcode a la instruccion de ret del
otro programa que se estara corriendo.

Digamos seria algo asi:

-Correr el programa que queremos vulnerar
-Correr nuestro programa
-Cuando termine el otro programa y devuelva la instruccion de ret el
control seria nuestro hasta que queramos finalizar, con una funcion
exev() o alguna parecida creo...

Roberto Ulloa

unread,
Oct 12, 2009, 10:23:36 PM10/12/09
to ci-12...@googlegroups.com

Entonces nosotros corremos nuestro programa

vulnerable
 
para lograr desbordar el
buffer y caerle  con nuestro shellcode
.
 
a la
 
direccion

de ret

le caemos con la direccion del shellcode que inyectamos


Digamos seria algo asi:

-Correr el programa que queremos vulnerar 
-Correr nuestro programa

Nuestro programa es el que queremos vulnerar... nosotros mismo corremos
el programa que vamos a vulnerar
 
-Cuando termine el otro programa y devuelva la instruccion de ret

Los programas no devuelven direcciones de retorno

(dirección de retorno, no instrucción de retorno)

Cuando el programa vulnerable retorna de la función que fue atacada, lee la dirección
de retorno que nosotros le enviamos y que apunta al shellcode... no es cuando
el programa termina...
 
el
control seria nuestro hasta que queramos finalizar, con una funcion
exev() o alguna parecida creo...

exev es el que abre una consola

Eduardo

unread,
Oct 12, 2009, 11:01:00 PM10/12/09
to Programación II (Grupo 01)
Ah ok profe, pura vida!!!!

Por cierto aca tambien habia visto lo del proceso externo. Pero igual
eso ya quedo claro y creo que lo que disguten es lo mismo que usted
nos ha venido diciendo, no se que tanto sirva o no pero ahi la pongo
por si le quieren hechar un OJO...

http://foro.hackhispano.com/showthread.php?t=34745

Ah y es cierto lo del comando exev, es que lo confundi con otros
comandos como exec o funciones execl, execve, etc.. de C, que salen
aqui y "las funciones “WinExec” [para ejecutar la cmd] y
“ExitProcess” [con la cual saldremos del programa], ambas se
encuentran en la dll “kernel32″."

Tuanis....
Reply all
Reply to author
Forward
0 new messages