Comprueba localmente la complejidad de tus contraseñas... o si no hay más remedio ofuscala un poco antes (mi arma)

El otro día un compi de la oficina me comentó que un auditor externo le pidió que introdujera su contraseña en un sitio web para ver si la complejidad era la adecuada. Evidentemente no voy a decir el nombre de la empresa, ni la ISO de seguridad (fina ironía) para la que se realizaba la auditoría, ni el sitio que utilizó para chequear el password, pero lo que no me cansaré de decir es que introducir las credenciales en un sitio web de Internet para comprobar si una cuenta ha sido comprometida o para ver la complejidad de la contraseña es de todo... menos seguro. 
 
Sí, ya sé que algunas páginas son confiables y sólo piden la contraseña y ningún dato adicional, pero créanme si os digo que es posible deducir el usuario a través de otros métodos, envenenar la caché DNS o falsificar ARP, hacer un MiTM y... bueno ya sabéis.
Además ¿a qué no dirías tu PIN de la tarjeta del banco a un desconocido aunque sea con un pasamontañas puesto en la cabeza? Claro que no, podría haberte reconocido por la ropa o porque te ha visto antes o (peor) obligarte a identificarte...

Para estos casos siempre lo mejor es el sentido común: si vas a tener que introducir tu contraseña en un sistema de terceros modifícala (ofúscala) antes. 


La forma más sencilla es primero, si tu contraseña está en un diccionario, date un par de latigazos y cámbiala por otra palabra de diccionario de la misma longitud de caracteres.
Luego si tiene una letra minúscula cámbiala por otra letra minúscula, si es un número cámbialo por otro número, si es un símbolo pues cámbialo por otro y así sucesivamente. 

Finalmente cambia el orden de algún carácter y tendrás una contraseña que no será idéntica a la tuya pero que tendrá la misma complejidad o muy similar (sobre todo si modificamos el orden de los caracteres según la secuencia resultante podremos obtener distintos niveles de complejidad).

Un ejemplo sería convertir mentalmente 'Perro123' a 'Gato123', 'Gato123' a 'Jero436' y finalmente 'Jero436' a '43eroJ6'.

Y para los más vagos podéis usar este script que han escrito mis sucias manos de programador de Python para generar automáticamente la password ofuscada:
import getpass
import random
import string

pwd=getpass.getpass("Enter Your Password Here: ")

def obfuscatepw (pw):
    obfuscatedpw = []

    for c in pw:
    #  print c
        if c.isdigit():
            obfuscatedpw += str(random.randrange(0, 9, 1))
        else:
            if c.isupper():
                obfuscatedpw += random.choice(string.ascii_uppercase)
            else:
                if c.islower():
                    obfuscatedpw += random.choice(string.ascii_lowercase)
                else:
                    if c.isspace():
                        obfuscatedpw += c
                    else:
                        obfuscatedpw += str(random.choice(string.punctuation))
    random.shuffle(obfuscatedpw)
    return obfuscatedpw

obfuscatedpw = "".join(obfuscatepw(pwd))
print obfuscatedpw
El resultado de ejecutar el script sería:

Enter Your Password Here: Prueba123#
B1pe#q62kh


Y sería la contraseña 'B1pe#q62kh' la que introduciríamos en el sitio web.

Por otro lado si te sientes hax0r y quieres hacerlo realmente bien, la forma de comprobar pr0fesionalmente las contraseñas sería localmente. Para ello te recomiendo usar cracklib-check en tu máquina linux (en Güindous también lo tienes)...

pruebas@kali:~$ sudo cracklib-check
test
test: it is too short
testing
testing: it is based on a dictionary word
123456
123456: it is too simplistic/systematic
abc123
abc123: it is too simplistic/systematic
Prueba
Prueba: it is based on a (reversed) dictionary word
D3finitive
D3finitive: it is based on a dictionary word
P43SAßðđæß3w23
P43SAßðđæß3w23: OKPaste your text here.

Por último deciros que también existen módulos pam de cracklib para forzar el uso de contraseñas seguras. Si alguien le interesa que levante la mano (comente) y escribimos un post más adelante.

2 comentarios :

  1. http://password.social-kaspersky.com/

    ResponderEliminar
  2. http://l33tpassword.890m.com/

    ResponderEliminar