shard: una herramienta para comprobar si se utiliza la misma contraseña en varios sitios

Si hay algo imperativo en la sociedad digital actual es NO REUTILIZAR la misma contraseña para distintos servicios. La razón es simple: si uno de ellos es comprometido por ende cualquiera podrá obtener acceso al resto. No obstante, ya sea por la dificultad de recordar tantas contraseñas o por desconocimiento pura vagancia, son muchos los usuarios que todavía ponen la misma contraseña en varios de sus perfiles en redes sociales como Facebook, Twitter, LinkedIn, etc.

Y precisamente hoy vemos Shard, una herramienta para que los atacantes podamos detectar contraseñas compartidas desde la línea de comandos. Se trata de un fat jar (contiene todas las clases necesarias para hacerlo lo más portable posible) que si queréis podéis compilar vosotros mismos con sbt assembly, y también tiene una segunda implementación en python.

Uso

Sólo tenemos que indicar las credenciales a comprobar y la herramienta automatizará el proceso:
$ java -jar shard-1.2.jar -u username-here -p password-here
21:16:25.950 [+] Running in single credential mode
21:16:30.302 [+] username-here:password-here - Reddit, Instagram

También es posible probar múltiples credenciales (ummm leaks...) indicando un fichero de texto que contenga cada línea con el formato "username":"password". Incluso se puede personalizar el formato con la opción --format.
$ java -jar shard-1.2.jar -f /tmp/creds.txt
21:16:39.501 [+] Running in multi-credential mode
21:16:39.516 [+] Parsed 2 credentials
21:16:42.794 [+] username1:password1 - Reddit, Instagram
21:16:45.189 [+] username2:password2 - Facebook, LinkedIn, Twitter

Módulos

Actualmente soporta los siguientes módulos:
$ java -jar shard-1.2.jar -l
Available modules:
        Facebook
        LinkedIn
        Reddit
        Twitter
        Instagram

Aunque si queréis podéis añadir vuestros propios módulos fácilmente creando una nueva clase heredada de AbstractModule y añadiendo el módulo a ModuleFactory.
El AbstractModule tiene un método abstracto:

  def tryLogin(creds: Credentials): Boolean

Este método toma un objeto de credenciales y devuelve un valor booleano que indica un inicio de sesión correcto. Se recomienda el uso de la TwitterModule como plantilla.

Dependencias

     JSoup se utiliza para la comunicación HTTP y análisis de HTML
     spray-json se utiliza para el manejo de JSON

Github: https://github.com/philwantsfish/shard

3 comentarios :

  1. OMG AHORA las credenciales obtenidas con phishing no solo seran para una sola pagina 7u7 GRACIAS!!!!!!!!!!!

    ResponderEliminar
  2. Duda: ¿No sería suficiente con CURL? ¿Java no es un poco ineficaz?

    ResponderEliminar