Las redes sociales actualmente estan en boom, lo grande de lo grande con la aparición de Facebook, G+, Twitter en alguna de ellas el control ante el uso indebido de la tecnología no es controlado en su totalidad llevando con ello a que existan menores usando estas redes, el motivo de crear esta entrada fue porque esta semana una niña que no pasa de los 10 años dijo que tiene Facebook, su hermana mayor lo creo y tiene 500 amigos, me lo dijo toda orgullosa    al escuchar eso me  puse a pensar una niña de esa edad 500 amigos..

Cuantos son reales? cuantos en realidad son niños, se tiene un control de sus amigos, pues la respuesta es un no, estas redes sociales esta mas que dicho que no debe de ser usada por niños pero todos sabemos pongo 1990 y ya puedo tener cuenta aunque tenga 12 años porque engañar al tío Sam es fácil.

Así que luego de ello me puse a hablar con su mamá y a la vez con la niña fue gratificante que haya entendido los peligro que corre la pequeña al estar en una red social de ese modo, asi que me puse manos a la obra y pensé porque no facilitar una red social exclusivamente para la niña (redes sociales para niños) aunque no se tiene un control general de algunas redes sociales las cuales son específicas por ejemplo solo para chicas como es el caso de Sweetyhigh pero no tienen un control mas a fondo sobre el mismo pudiendo crear una cuenta falsa y hacerse pasar.


Ahora si las redes sociales para niños que le di una mirada son las siguientes:


CLUB PENGUIN -> www.clubpenguin.com/es/
MOSHI MONSTERS -> www.moshimonsters.com/
MI CUEVA -> www.micueva.com/


Cada una tiene un control parental para poder tener un control del circulo de amigos que lleguen a tener los niños , pero también en estas otras redes sociales para niños específicamente se puede dar el caso de adulterar una edad y no validar, por lo cual algunas redes se toman el trabajo de llamar al padre verificar y validar los datos que fueron  se llega, a dar un caso asi puede ser no es totalmente seguro por ello es mejor siempre andar monitoreando a los pequeños.

Algo que debemos de tomar en cuenta es de poder concientizar a los niños, a nuestros hermanos menores primos sobrinos conocidos, que debe de pensar antes de subir una foto, ya sea de ellos o de sus amigos porque cualquier persona puede verlos y que toda informacion que es subida a la nube no se puede eliminar, por mas que se realize la eliminacion de la cuenta no se sabe si andan circulando copias de las mismas
Recuérdeles a sus hijos que la información que publican en línea no se puede eliminar. No 
Aunque elimine la información de un sitio, tendrá muy poco control sobre las antiguas versiones que quedan registradas en las computadoras de otras personas que pueden circularlas en línea.

Pero estos puntos son mayores los cuales iremos tomando mas a fondo y a la vez se creara una entrada con todos estos puntos que se tienen que tener cuidado, cuando los niños acceden a redes sociales y aun mas a un computador.


Sin mas que decir, sniferl4bs regresa!!

Regards,
Snifer


Leer Mas

Ya retornamos nuevamente con el blog ya paso un problema personal, el cual salio todo bien, pasare este fin de semana con mi familia para que desde el lunes vuelva al trabajo :) pero antes de ello quiero pasar por el blog y retomarlo es por ello que el dia de hoy, volvemos con los post diarios gracias a todos por el apoyo... 

Hubo un cambio general en la vida, para bien cambiando el rumbo es por ello que deje de postear en el blog, no ando tan activo en los foros como antes y en el twitter solo cuando tengo algo de tiempo twittetereteo algo, pero ya nuevamente andare molestando con mis ideas :)



Regards,
SNIFER


Leer Mas











Buenas a todos, ya hace un tiempo que no escribo algún que otro articulo y hoy aburrido hablando con unos amigos por whatsapp me quedo la duda de si whatsapp guardaba los logs de todo lo que hicíera y efectivamente whatsapp lo hacia.

Viendo la de cositas que se estaban guardando :
      - Conversaciones de tlfn a tlfn
      - Chats activos
      - Fotos de los perfiles que mire
      - Imágenes, audios, videos que me pasarón o que pase

      (Por ejemplo).

Pues me apetecio hacerle un forense y al tiempo que lo hago os haré una demo del forense a un whatsapp y vereís todos los datos que podemos sacar de utilidad.

Recrearemos un entorno en el que dispongo de acceso físico a un terminal.
El whatsapp es una buena forma de extraer información sobre el día día de la persona, se podría aplicar algo como "Dime con quien andas y te diré quien eres" pero convertido al método geek.


Empezamos con la DEMO :

Bueno, los ficheros de whatsapp se guardan por defecto en /storage/sdcard0/WhatsApp/ , y yo me enviaré los ficheros con Airdroid, una estupenda app para compartir archivos PC - Smartphone vía wifi.



























Para pasar a estar conectados en "Modo de conexión remota" como ahí podeís ver solo hay que acceder a web.android.com y te logueas con tu cuenta.

















Y tan solo te queda acceder al directorio y descargar los arhivos de los que extraeremos los metadatos.

















Una vez descargados los ficheros voy a proceder a comentaros que podemos encontrar en cada uno de los directorios y cómo podríamos extraerles el jugo.

Tenemos "Databases", "Media" y "Profile Pictures", he hecho un script para que extraiga los metadatos de los db.crypt, tambien extrae los ficheros de la carpeta media(imágenes, audios, videos) y tambien extrae las imágenes encontradas en Profile Pictures.

Databases : Aqui podremos encontrarnos una serie de ficheros con extensión "db.crypt", Whatsapp cifra los archivos SQLite con AES pero siempre usa la misma key "346a23652a46392b4d73257c67317e352e3372482177652c" y de este modo podré decodificarlos.

Media : Aqui nos encontramos con una seríe de archivos (imágenes, audios, videos y wallpapers).

Profile Pictures : Aqui nos encontraremos con todas las imágenes de perfil(de usuario) que hemos mirado desde nuestro whatsapp.


NOTA IMPORTANTE : Para extraer la información de todos estos archivos que hemos obtenido he codeado un script que automatiza todo el proceso (a excepción del proceso de obtención de los ficheros , puesto que se supone que tenemos acceso físico al terminal.)
































Ahora os mostraré un esquema en forma de arbol para comprender un poco como funciona el script que he preparado:

· WhatsApp Metadata Extractor :
       - main_manage.py (main de consola en forma de cliente)
       - DB_Extractor.py (extrae los metadatos de la BD)
       - metaimg_extractor.py (extrae los metadatos de los .jpg encontrados)


He dividido el proyecto en 3 scripts, main_manage es el encargado de interactuar con el cliente (el que debemos ejecutar), DB_Extractor es el encargado de realizar las consultas con la BD para extraer toda la información(la que nos interesa) y metaimg_extractor es el encargado de buscar en "Media" y en "Profile Pictures" en busca de metadatos en los archivos .jpg (La mayoria vienen con ellos eliminados por defecto pero no me digas por qué algunas imágenes no se filtran y son subidas sin filtrarse).

Sin más os dejo los codes :

main_manage.py :

# -*- coding: utf-8 *-*
import DB_Extractor, metaimg_extractor

class WhatsApp_Extractor():

    def __init__(self):
        self.__opt()

    def __opt(self):
        #Uncomment the OPTION that you want to use

        #self.__opt1()  #-> DB METADATA EXTRACTOR
        #self.__opt2()  #-> IMG METADATA EXTRACTOR
        #self.__opt3()  #-> BOTH, OPT1 AND OPT2

    def __opt1(self):
        print "DB METADATA"
        print "------------"
        DB_Extractor.DB_Extractor()
        print "------------"

    def __opt2(self):
        print "IMG META"
        print "------------"
        metaimg_extractor.IMG_Meta()
        print "------------"

    def __opt3(self):
        print "DB METADATA"
        print "------------"
        DB_Extractor.DB_Extractor()
        print "------------"
        print "\nIMG META"
        print "------------"
        metaimg_extractor.IMG_Meta()
        print "------------"

WhatsApp_Extractor()

DB_Extractor.py :

# -*- coding: utf-8 *-*
#Script to extract the metadata from the WhatsApp crypted DB

import sqlite3
from Crypto.Cipher import AES

class DB_Extractor():

    def __init__(self):
        self._manage_do()

    def _manage_do(self):
        try:
            self.__DB_Breaker('msgstore.db.crypt')
            self.__DB_conn()
            self.__SQL_Consulter()
            #Log exporter
        except:
            print "Error starting the script"

    def __DB_Breaker(self, DBPath):
        self.DBPath = DBPath
        #breaking the hash
        f = open(self.DBPath, 'rb')
        key = "346a23652a46392b4d73257c67317e352e3372482177652c"
        #triying to break the hash
        try:
            key = key.decode('hex')
            cipher = AES.new(key, 1)
            decoded = cipher.decrypt(f.read())
            #Saving into a new db file
            try:
                decoded_DB = open('metadb.db', 'wb')
                decoded_DB.write(decoded)
                decoded_DB.close()
                print "metadb.db has been created in the same directory"
            except:
                print "An error has ocurred creating the decoded DB"
        except:
            print "Error decoding the hash"


    def __DB_conn(self):
        #triying to connect with the sqlite database
        try:
            self.conn = sqlite3.connect('metadb.db')
            self.consult = self.conn.cursor()
        except:
            print "An error has ocurred connecting with the SQLite DB"


    def __SQL_Consulter(self):
        #Divided in :
            # Messages
            # Chat_list

        def __Messages():
            #SQLConsult
            try:
                self.consult.execute("SELECT key_remote_jid, key_from_me, \
                remote_resource, status, datetime(timestamp), data, media_url, media_mime_type, \
                media_size, latitude, longitude FROM messages;")

            except:
                print "An error has ocurred doing the SQL Consult"

            def __Shower():
                #Message details
                #nota : parsear status, comprobar si yo envio o recivo

                for data in self.consult:
                    try:
                        print "\nMessages Details:"
                        print "----------------------"

                        if str(data[2]):
                            if str(data[1]) == '1':
                                print "From: me"
                                print "To: %s(group), integrant: %s"%(str(data[0]), str(data[2]))
                            else:
                                print "From: %s(group), integrant: %s"%(str(data[0]), str(data[2]))
                                print "To: me"
                        else:
                            if str(data[1]) == '1':
                                print "From: me"
                                print "To: " + str(data[0])
                            else:
                                print "From: " + str(data[0])
                                print "To: me"

                        print "Status: " + str(data[3])
                        print "Timestamp: " + str(data[4])
                        print "Message: " + str(data[5])
                        print "Media content: %s, type: %s, size: %s"%(str(data[6]), str(data[7]), str(data[8]))
                        print "Location(Lat: %s, Long: %s)"%(str(data[9]), str(data[10]))
                        print "----------------------"

                    except:
                        continue
                        print "ERROR showing message details"

            __Shower()


        def __Chat_list():
            #SQLConsult
            try:
                self.consult.execute("SELECT id, \
                key_remote_jid FROM chat_list;")

            except:
                print "An error has ocurred doing the SQL Consult"

            def __Shower():
                #Chat list details
                for data in self.consult:
                    try:
                        print "\nChat_list"
                        print "ID: " + str(data[0])
                        print "Number: " + str(data[1])
                        print "----------------------"
                    except:
                        continue
                        print "ERROR showing chat list details"

            __Shower()

        #Initializing
        __Messages()
        __Chat_list()


metaimg_extractor.py :

# -*- coding: utf-8 *-*
import os, exif

class IMG_Meta():

    def __init__(self):
        try:
            self.__Media_extractor()
            print "------------------------------------------------------\n"
            self.__Profile_extractor()
        except:
            print "An error has ocurred starting the script"
    def __Media_extractor(self):
        try:
            images = os.listdir('Media/WhatsApp Images/')
        except:
            print "An error has ocurred listing the files into the directory"

        def __Shower():
            for i in images:
                print "-------------"
                print i
                obj = exif.extract_EXIF('Media/WhatsApp Images/%s' % i)
                print "-------------"

        __Shower()

    def __Profile_extractor(self):
        try:
            images = os.listdir('Profile Pictures/')
        except:
            print "An error has ocurred listing the files into the directory"

        def __Shower():
            for i in images:
                print "-------------"
                print i
                obj = exif.extract_EXIF('Profile Pictures/%s' % i)
                print "-------------"

        __Shower()


Unas imágenes trabajando :


DB_Extractor :




























IMG extractor :




























El archivo "Exif" que importamos en el metaimg_extractor podemos encontrarlo en el proyecto de grampus en bitbucket

PD : El Forense podría llegar a hacerse en mayor profundidad, en este caso solo tratamos los datos que podrían ser más relevantes como conversaciones, envio de archivos y el análisis de los metadatos de las imágenes.

En fin, esto es todo, el script os automatizará todo el trabajo "duro"


Saludos !! , Sanko.
Leer Mas