lunes, 29 de agosto de 2011

Gmail Security Center

Gmail, el servicio sobre el que pivotan otros tantos servicios de Google y que mucha gente emplea como 'cuenta principal' y tienen asociada a servicios como Twitter, Facebook o cosas mas serias como bancos, compañías telefónicas, servicios de hosting, etc.

Se podría decir que para mucha gente es su activo mas valioso en su 'ciber-vida', por lo que protegerlo debería de ser algo importante.

Hace algún tiempo liberamos una pequeña guía de seguridad para Gmail y hoy vamos a presentar una herramienta que permita monitorizar el uso de una cuenta en Gmail.

Como probablemente todo el mundo sepa, Gmail tiene de serie un histórico de uso que permite comprobar el uso reciente de la cuenta

El problema es que solo registra los 10 últimos accesos, por lo que, o tomas la sana costumbre de revisar esa información casi a diario, o probablemente perderás información. No existe forma de consultar un histórico de actividad mas allá de esos 10 últimos accesos.

Dándole un par de vueltas a esto se me ocurrió crear una herramienta que hiciese tres cosas:

  • Poder generar un histórico de accesos a la cuenta virtualmente 'infinito' para consultar los accesos según fuese necesario
  • Ampliar la información que ofrece Gmail, no solo con IP / País sino también ciudad e ISP
  • Tener la posibilidad de enviar alertas en función de la nueva actividad que se generase en esa cuenta (accesos)

Y la solución a esos problemas la he llamado 'Gmail Security Center' y está basada en este excelente ejemplo sobre como usar el módulo 'mechanize' en Python que he modificado para acceder a la información de actividad, añadido soporte para enviar 'tweets' para las alertas en tiempo real e incorporado el uso de Geolocalización .

# This Python file uses the following encoding: latin-1

import mechanize
import cookielib
import re
import sys
import getpass
import time
import GeoIP
import commands
import tweepy

#Twitter Auth

CONSUMER_KEY = ''
CONSUMER_SECRET = ''
ACCESS_KEY = ''
ACCESS_SECRET = ''

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
api = tweepy.API(auth)

#Geoip

gi = GeoIP.open("GeoLiteCity.dat",GeoIP.GEOIP_STANDARD)

# Browser
br = mechanize.Browser()

# Cookie Jar
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)

# Browser options
br.set_handle_equiv(True)
#br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)

# Follows refresh 0 but not hangs on refresh > 0
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)

# User-Agent (this is cheating, ok?)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]

# The site we will navigate into, handling it's session
br.open('http://gmail.com')

# Select the first (index zero) form
br.select_form(nr=0)

# User credentials

print "Gmail Security Center [ Security By Default http://www.securitybydefault.com ]"

login = raw_input("Login:")
password = getpass.getpass("Password: ")

br.form['Email'] = login
br.form['Passwd'] = password

# Login
br.submit()

req = br.click_link(text='Información detallada')
br.open(req)

ips = []

while 1==1:

html = br.response().read()

ipscitas = re.findall('(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})', html)

if ipscitas:

for resultado in ipscitas:

if not ips.count(resultado):

ips.append(resultado)

command_str = 'whois %s | grep "desc"' % resultado

whoisret= commands.getoutput(command_str)

whoisret = whoisret[1:-1].split('\n')

m =re.search("(escr|descr): (.+)", whoisret[0])

isp= m.group(2)

gir = gi.record_by_name(resultado)


if gir != None:

print resultado, gir['country_name'], gir['city'], gir['region_name'], isp

twittersend = resultado + " " + str(gir['country_name']) + " " + str(gir['city']) + " " + str(gir['region_name']) + " " + isp

try:
api.send_direct_message(screen_name= '@YJesus', text = twittersend )

except :

pass

br.reload()

time.sleep(900)



Para poder usarlo, primero debéis tener instalado en el sistema el módulo 'mechanize', lo mas fácil para instalar ese y otros módulos ajenos al core de Python es usar el comando -como root- 'easy_install' disponible en el paquete python-setuptools (al menos en Fedora)



# easy_install mechanize



Una vez instalado ese módulo, hay que dar soporte GeoIP instalando la librería en C de Maxmind y su bind a python (información para hacerlo aquí) y descargar una base de datos actualizada



Finalmente, viene la parte mas engorrosa de todo el asunto y es que Twitter, cuando forzó a usar OAuth en todo aquello que tuviese que interactuar con el, hizo que enviar tweets desde una aplicación fuese un proceso bastante laborioso. Aquí hay un tutorial bastante bueno sobre como registrar una aplicación hecha en Python para poder usar Twitter



De lo que se trata es de poder rellenar los siguientes campos en el script:



CONSUMER_KEY = ''

CONSUMER_SECRET = ''


ACCESS_KEY = ''


ACCESS_SECRET = ''



Una vez hecho eso, el script monitorizará la actividad de la cuenta GMail y cuando vea nueva actividad enviará alertas parecidas a esta:









Que serán cómodamente recibidas y procesadas vía Twitter, adicionalmente se puede sacar un histórico volcando la salida del script a un fichero



Fuente: http://www.securitybydefault.com/

No hay comentarios:

Publicar un comentario