Redes Sociales

lunes, 16 de marzo de 2015

Descubre si tus conocidos han sido 'pwned'

Jugando un rato con Python se me ocurrio por una parte sacar las direcciones de correo de quienes me han escrito alguna vez a mi cuenta de gmail y buscarles luego en el servicio "have I been Pwned".

Para ello primero intenté sacar las direcciones de correo de mi cuenta de gmail con:

 #!/usr/bin/python

import imaplib
import sys
import email
import re

FOLDER='inbox'
LOGIN='martin.liras@gmail.com'
PASSWORD='XXXXXXXXX'
IMAP_HOST = 'imap.gmail.com'

email_list = []
email_unique = []

mail = imaplib.IMAP4_SSL(IMAP_HOST)
mail.login(LOGIN, PASSWORD)
mail.select(FOLDER) 

result, data = mail.search(None, 'ALL')
ids = data[0]
id_list = ids.split()
for i in id_list:
 typ, data = mail.fetch(i,'(RFC822)')
 for response_part in data:
  if isinstance(response_part, tuple):
   msg = email.message_from_string(response_part[1])
   sender = msg['from'].split()[-1]
   address = re.sub(r'[<>]','',sender)
# Ignore any occurences of own email address and add to list
 if not re.search(r'' + re.escape(LOGIN),address) and not address in email_list:
  email_list.append(address)
  print address

...código completamente copiado de http://www.terminalinflection.com/python-script-email/.

El problema aqui lo encontré en que NO HABIA FORMA DE QUE EL SCRIPT SE AUTENTICARA A GMAIL. Sin embargo la contraseña estaba bien, yo estaba logado... un rato dándole vueltas... hasta que de repente mi novia me reenvió un email... de Gmail diciéndole (a ella) que mi cuenta estaba intentando ser hackeada y que si era yo, redujera el nivel de seguridad de Gmail para las aplicaciones que acceden al servicio de correo (en https://www.google.com/settings/security/lesssecureapps ).

Este es el correo enviado por gmail.

Una vez reducido el nivel de seguridad de gmail, el script entró a la primera y empezó a chorrear direcciones de correo:

El proceso es largo, no en vano, yo tengo correos sin borrar (oh yeah, google knows everything about me) desde 2008. Tras mas de una hora de espera, se sacaron 163 contactos.

El siguiente paso consistía en usar la API de HaveIbeenPwned para consultar estas direcciones de correo. Existen al menos cuatro implementaciones en Python que atacan HaveIBeenPwned:

  • PwnedCheck
  • checkpwnedemails
  • PyPwned
  • PwnedConsole

Yo me quedé con la primera opción por simplicidad pero hay que reconocer que las otras son más completas y mejores. El programita en cuestion es MUUUUY simple:

import pwnedcheck
import sys

print pwnedcheck.check(sys.argv[1])

Finalmente aparentemente 21 de mis contactos han sido "pwned" todos ellos en la brecha de Adobe:

El caso es que del leak de Adobe se pueden descargar los 152 millones de contraseñas pwneadas (4Gb) via torrent y las contraseñas vienen cifradas en 3DES ECB... oh dear...

No hay comentarios:

Publicar un comentario