fuerza bruta SMF

Iniciado por kilodepala2, 29 Octubre 2016, 01:48 AM

0 Miembros y 1 Visitante están viendo este tema.

kilodepala2

que tal gente...

la cuestion es que programe un script en python que lo que hace es hacer fuerza bruta a un foro SMF protegido por cloudflare.

el script funciona bien, lo he testeado con una pass facil y la consiguio en algunos minutos.
ahora el problema, es que para conseguir una contrase;a real podria tomarme mucho tiempo.

el algoritmo de generacion de password funciona de la siguiente manera:



charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.-_"
cadena = ['','','','','']

def generar(cadena, indice, largo):
    for x in xrange(0, len(charset)):
        cadena[indice] = charset[x]
        if indice < (largo-1):
            generar(cadena, indice+1, largo)
        else:
            cad = ''.join(cadena)
            probar_cuenta(cad)

def fuerzabruta():
     for i in xrange(6, 15):
         cadena.extend('x')
         generar(cadena, 0, i)



como veran, si la contrase;a tiene mas de 6 caracteres, deberiamos esperar a que finalize el algoritmo completo con 6 caracteres para probar con 7, y asi hasta llegar al largo correcto de la pass.
esto tomaria demasiado tiempo, suficiente para darse por vencido.

tengo 2 ideas:

crear multiples hilos y enlazarlos a una lista de cadenas.
en un hilo principal generar las contrase;as, y ir asignandolas de a una a cada hilo.
cada hilo haria la consulta mediante curl con su propio proxy, acelerando asi el proceso, pudiendo probar mas cantidad de contrase;as a la vez.

la otra idea es, igual que la anterior, pero en vez de cada hilo tener una lista, cada hilo iria generando contrase;as por su cuenta, de diferentes largos, y asi tener mas posibilidades de encontrar la pass.

que opinan de esto?
como podria optimizar mi script para acelerar el proceso al maximo posible?



engel lex

en serio la gente nunca se detiene a hacer matemáticas antes de intentar esto?... realmente?... -.-

lo dejaré de la siguiente manera

tienes un charset 64 caracteres = 26
tienes un password de 6 caracteres...

las posibilidades son 26*6=236=68.719.476.736 posibilidades

imaginemos que puedes probar 1.000.000 de posibilidades por segundo = 68.719s... unas 19 horas... eso es lo que tardarás en pasar 6 caracteres completos...

ahora calculemos 7...
las posibilidades son 26*7=242= 4.398.046.511.104 posibilidades

las mismas condiciones.... 1221 horas.... eso es lo que tardarás pasar 7 caracteres... (si quieres saber 8 multiplica por 64)

ahora... para probar 1.000.000 de posibilidades por segundo, asumamos que la transferencia de ida y vuelta del login es en total 1KB (por hacer algo pequeño)... 1KB*1.000.000 = 1GB... necesitas tener una red de 1GBps para poder hacer esa cantidad... y ten por seguro que si tienes es red y haces eso, la pagina cae por saturar el servidor con un DoS grande


ahora te pregunto... cuantas horas tienes disponibles y que velocidad de red tienes contratada?

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

kilodepala2

Cita de: engel lex en 29 Octubre 2016, 03:03 AM
en serio la gente nunca se detiene a hacer matemáticas antes de intentar esto?... realmente?... -.-

lo dejaré de la siguiente manera

tienes un charset 64 caracteres = 26
tienes un password de 6 caracteres...

las posibilidades son 26*6=236=68.719.476.736 posibilidades

imaginemos que puedes probar 1.000.000 de posibilidades por segundo = 68.719s... unas 19 horas... eso es lo que tardarás en pasar 6 caracteres completos...

ahora calculemos 7...
las posibilidades son 26*7=242= 4.398.046.511.104 posibilidades

las mismas condiciones.... 1221 horas.... eso es lo que tardarás pasar 7 caracteres... (si quieres saber 8 multiplica por 64)

ahora... para probar 1.000.000 de posibilidades por segundo, asumamos que la transferencia de ida y vuelta del login es en total 1KB (por hacer algo pequeño)... 1KB*1.000.000 = 1GB... necesitas tener una red de 1GBps para poder hacer esa cantidad... y ten por seguro que si tienes es red y haces eso, la pagina cae por saturar el servidor con un DoS grande


ahora te pregunto... cuantas horas tienes disponibles y que velocidad de red tienes contratada?



amigo, las matematicas yo las hice, y es por eso que hice este tema....

tome tiempo en segundos de cuanto tardaba en realizar una sola prueba al servidor SMF...
mediante ese resultado fui calculando cuanto tardaria en terminar el charset completo para 6 caracteres, lo que me dio como resultado mas de 8 a;os...

horas disponibles... la verdad ese punto no me interesa.
lo que estoy tratando ahora es de minimizar lo maximo posible el tiempo que tarde en completarse el algoritmo para cada largo de cadena.

sobre la velocidad de conexion, tengo una conexion de 5 mbps, aunque puedo crackear redes vecinas con WEP y WPS activado, no se que velocidad manejaran estas.

no te ofendas, pero la idea original de este tema fue conseguir gente experimentada que me diga mediante que metodos podria mejorar el programa para que sea mas eficiente y disminuya el tiempo requerido al minimo posible.
que el metodo que utilizo ahora llevara mucho tiempo, ya lo se, y ya hice los calculos correspondientes.

tu comentario me parecio arrogante y fuera de lugar, disculpa, pero esa es la sensacion que me causo al leer lo que escribiste...

me diste a entender:
"yo se todo sobre todo, esta gente estupida no sabe calcular, yo les mostrare como se calcula el tiempo porque yo lo se todo,que gente ignorante"

si hice este tema fue para tratar de minimizar el tiempo al minimo posible... quedate tranquilo, que los calculos ya los hice y es justamente por eso por lo que busco consejos para mejorar mi algoritmo.

ademas tu calculo es erroneo, puesto que no tienes en cuenta el tiempo que puede tardar mi conexion en recibir las respuestas del servidor, ademas de que el foro SMF que tengo como objetivo limita las consultas a 2 segundos, por lo que debo esperar 2 segundos antes de volver a intentar otra password

engel lex

ese es el defecto de la fuerza bruta... incluso en local probando millones de casos por segundo es inutil el uso de esta... tu podrás probar como mucho usando multi hilo, y como mucho haras unas cientos intentos por segundo... (claro que si el foro te limita a cada 2 segundos, entonces el multihilo no es util)

Citarademas tu calculo es erroneo, puesto que no tienes en cuenta el tiempo que puede tardar mi conexion en recibir las respuestas del servidor, ademas de que el foro SMF que tengo como objetivo limita las consultas a 2 segundos

exacto!!! fíjate que mi caso hipotético es con una red de 1GBps sin latencia y aún así la aplicación es inútil...

lo de los cálculos es porque normalmente la gente espera hacer un ataque a fuerza bruta a 8 caracteres y optimizarlo a minutos, pero eso no es posible...

resumen... no es posible optimizar fuerza bruta... su nombre bien deja en claro lo que es...



Citarsobre la velocidad de conexion, tengo una conexion de 5 mbps, aunque puedo crackear redes vecinas con WEP y WPS activado, no se que velocidad manejaran estas.
por otro lado el foro no apoya comportamiento ilegal o no etico, solo lo dejo aclarado de antemano



El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

kilodepala2

Cita de: engel lex en 29 Octubre 2016, 07:49 AM
ese es el defecto de la fuerza bruta... incluso en local probando millones de casos por segundo es inutil el uso de esta... tu podrás probar como mucho usando multi hilo, y como mucho haras unas cientos intentos por segundo... (claro que si el foro te limita a cada 2 segundos, entonces el multihilo no es util)

exacto!!! fíjate que mi caso hipotético es con una red de 1GBps sin latencia y aún así la aplicación es inútil...

lo de los cálculos es porque normalmente la gente espera hacer un ataque a fuerza bruta a 8 caracteres y optimizarlo a minutos, pero eso no es posible...

resumen... no es posible optimizar fuerza bruta... su nombre bien deja en claro lo que es...


por otro lado el foro no apoya comportamiento ilegal o no etico, solo lo dejo aclarado de antemano





pero esta te garantiza que algun dia vas a dar con la pass, es asi?

por ejemplo, un ataque de diccionario podria tardar  alrededor de 20 horas para terminar de probar todas las contrase;as, y mas (o menos) dependiendo del diccionario.
pero nada te asegura de que la pass este en el diccionario, por lo tanto tambien es inutil no?

hay que tener mucho ojete para acertar una pass de un diccionario, mas si este esta en ingles u otro idioma

kilodepala2

Cita de: engel lex en 29 Octubre 2016, 07:49 AM
ese es el defecto de la fuerza bruta... incluso en local probando millones de casos por segundo es inutil el uso de esta... tu podrás probar como mucho usando multi hilo, y como mucho haras unas cientos intentos por segundo... (claro que si el foro te limita a cada 2 segundos, entonces el multihilo no es util)

exacto!!! fíjate que mi caso hipotético es con una red de 1GBps sin latencia y aún así la aplicación es inútil...

lo de los cálculos es porque normalmente la gente espera hacer un ataque a fuerza bruta a 8 caracteres y optimizarlo a minutos, pero eso no es posible...

resumen... no es posible optimizar fuerza bruta... su nombre bien deja en claro lo que es...


por otro lado el foro no apoya comportamiento ilegal o no etico, solo lo dejo aclarado de antemano


con crackear me referia a golpearle la puerta y pedirle la pass de wifi ya que mi compania me dejo sin internet 5 dias

GGZ

#6
La fuerza bruta te sirviría en caso de lograr acceder a la db y que la contraseña estuviese cifrada, para eso si que es útil.

En alguna ocasión Chema Alonso habló de lo innecesario que es poner contraseñas complejas a nivel web debido a los distintos sistemas de protección que hay además de la contraseña.
Por otro lado, queda todo guardado cuando hacés un ataque de BruteForce, cualquiera que mira los archivos de logs se da cuenta de inmediato lo que estás intentando de hacer, ¿planeabas usar tor o algo parecido?

En conclusión, hacer un ataque de fuerza bruta es prácticamente inútil a nivel web (se usa como última opción), hay muchas cosas antes que podrías intentar. Creo que hasta un DDoS es más eficiente, jaja.

Y veo que tenés problemas con la ñ, si estás en GNU/Linux abrí la consola y escribí setxkbmap es

¡Saludos!
LET'S DO STUFF!!

#!drvy

#7
Multihilo y que cada uno acceda con una IP diferente igual cuela. Claro que, eso aumentaría los tiempos de conexión y si dices que usa cloudflare, lo mismo los acabe haciendo pasar un challange, aunque al mismo tiempo te saltas el limite.

Por otro lado, no sean escépticos, en la mayoría de los casos, no hace falta resolver el charset entero. Esos cálculos asumen que la contraseña es el ultimo charset generado de todas las posibilidades y todos sabemos que casi nunca (por no decir nunca) se da ese caso.

Yo lo intentaría antes con un diccionario.. los de fuerza bruta por generador son para cuando los diccionarios no funcionan. Hay muchos diccionarios en español y otros especialmente hechos para contraseñas de servicios web. Busquedas en Google facilitas.

Ahora que recuerdo, SMF aunque no recuerdo si era el 1.x o el 2.x guardaba el login del usuario en una COOKIE salteada con 4 caracteres. Lo mismo, en vez de hacer fuerza bruta al login, puedes generar strings sha1 aleatorios que suelen tener si o si 40 caracteres con el siguente esquema:

sha1 (nombreUsuario + stringAleatorio + stringAleatoriode4Caracteres)

O si no te interesa un usuario en concreto simplemente generar hex de 40 caracteres de fijo.

Saludos

GGZ

Cita de: #!drvy en 29 Octubre 2016, 11:59 AM
Ahora que recuerdo, SMF aunque no recuerdo si era el 1.x o el 2.x guardaba el login del usuario en una COOKIE salteada con 4 caracteres. Lo mismo, en vez de hacer fuerza bruta al login, puedes generar strings sha1 aleatorios que suelen tener si o si 40 caracteres con el siguente esquema:

sha1 (nombreUsuario + stringAleatorio + stringAleatoriode4Caracteres)

O si no te interesa un usuario en concreto simplemente generar hex de 40 caracteres de fijo.

¿Cómo es eso?, nunca lo escuché, pero no creo que sea muy eficiente tampoco.
LET'S DO STUFF!!

kilodepala2

Cita de: GGZ en 29 Octubre 2016, 10:38 AM
La fuerza bruta te sirviría en caso de lograr acceder a la db y que la contraseña estuviese cifrada, para eso si que es útil.

En alguna ocasión Chema Alonso habló de lo innecesario que es poner contraseñas complejas a nivel web debido a los distintos sistemas de protección que hay además de la contraseña.
Por otro lado, queda todo guardado cuando hacés un ataque de BruteForce, cualquiera que mira los archivos de logs se da cuenta de inmediato lo que estás intentando de hacer, ¿planeabas usar tor o algo parecido?

En conclusión, hacer un ataque de fuerza bruta es prácticamente inútil a nivel web (se usa como última opción), hay muchas cosas antes que podrías intentar. Creo que hasta un DDoS es más eficiente, jaja.

Y veo que tenés problemas con la ñ, si estás en GNU/Linux abrí la consola y escribí setxkbmap es

¡Saludos!

el servidor en cuestion tiene el puerto ssh abierto, y tambien la base de datos mariadb te deja acceder desde cualquier host.
tenia pensado algun exploit para esa version de ssh o de mariadb pero no encontre nada.

sobre los logs, las pruebas las realize detras de un proxy gratuito (vpnbook).

(por lo de la ; (enie) ya me acostumbre a escribir asi y si cambio el teclado despues me confundo las llaves y los corchetes)