domingo, 29 de diciembre de 2013

Deep Sqlite I (El análisis)

Cada día se ve mas Sqlite como base de datos  gracias a los "smartphone" y no solo a ellos a firefox, skype, dropbox y muchos mas utiliza esta tecnología para almacenar su información.

Esta vez nos vamos a centrar en la cabecera de cualquier archivo sqlite (que no este cifrado), en los 100 primeros bytes encontramos informacion imporante de sqlite (The SQLite Database File Format).

Figura 1. Cabecera de un archivo Sqlite
Ahora que tenemos la estructura de la cabecera vamos a ver un ejemplo abriendo con un editor hexadecimal para analizar los primeros 100 bytes, en este ejemplo vamos a ver una base de datos de Skype (main.db)

Figura 2. Cabecera Sqlite

53 51 4C 69 74 65 20 66 6F 72 6D 61 74 20 33 00 : Cadena escrita que termina con "00"
10 00 : Tamaño de la página 4096 bytes
01: No dispone de modo WAL para escritura
01: No dispone de modo WAL para lectura
0000134C: El fichero ha sido cambiado 4.940 veces
0000011D: El fichero contiene 285 páginas
00000119: Número de la primera página libre troncal
00000001: Codificación de texto UTF-8
00000000: Al estar todo a 0, no hay auto-vacuum
002DE225 : Equivale a la version de la Base de datos

Write Ahead Logging es un método de rollback desde la versión 3.x , el cual invierte el proceso tradicional de rollback. En teoría los cambios de una base de datos son escritos en el mismo archivo original llevando un control en un registro de modificaciones en otro fichero del cual podrá ser recuperado si algo no fue escrito de forma correcta por algún problema.

La tecnología WAL crea un nuevo fichero con el mismo nombre agregando el (-wal) al final, donde se harán los cambios y se sobrescribirá el original cuando de se ejecute la orden de sobrescritura.

En el siguiente post, vamos hablar de las "hojas", arboles y demás ;)





viernes, 20 de diciembre de 2013

Destripando Skype (Análisis Forense Digital)

Dejamos el "hacking" por un lado (muy cerca , no tan lejos ) y continuamos con lo que es el análisis forense digital , en este caso nos enfocaremos en el cliente de mensajería, Chat , VoIP  llamado Skype.

Muchas veces cuando se realiza un análisis forense digital y necesitamos extraer información de los clientes de mensajería no se cuenta con una herramienta "amigable" que permite llevar acabo un análisis en este caso de la relación de información almacenada en una base de datos.

Encontré una que otra herramienta (script) escritos en python (love it) , pero no son tan amigables , decidí crear una herramienta que permite realizar el análisis de una forma mas fácil y amigable , estas son algunas de sus funciones:
  1. Crear un perfil del o de los usuarios de Skype de un determinado Equipo
  2. Lista de Contactos de Skype  (Nombre , User , Pais ,Fecha de relación de amistad ) 
  3. Lista de Conversaciones (Chat)
  4. Relación de conversaciones  (Conversación entre usuarios , fecha , Usuario)
  5. Transferencia de archivos (Quien envió a quien , fecha , archivo enviado , nombre del archivo , donde se encontraba, fecha de envio , tamaño del archivo)
  6. Vídeo llamadas (Participantes, duración de la vídeo conferencia , ip de llamadas )
  7. Generar un Hash (MD5 y SHA1) del archivo analizado , preservación de la evidencia
  8. Reportes de las funcionalidades en formato .xls
Por el momento considero que le falta madurar a la herramienta , dentro de algunos días soltare la versión Free de la herramienta.

El Splash de mi App (me quedo de 10 )
Bueno para no ser diseñador me quedo bien ! , continuando  con la aplicación tenemos la opción principal de abrir la base de datos (SQLITE) una vez cargada la BD se procede a analizar y relacionar la información.
Seleccionando la base de datos para analizar
 Por el momento estas son las funciones con las que cuenta mi aplicación, a medida que vaya madurando se vera la necesidad de implementar algunas nuevas funciones.
Las funciones de la aplicación 
Una de las funciones importantes desde mi humilde punto de vista es la de transferencia de archivos , si bien usuarios "inteligentes" borran sus conversaciones de la base de datos no se borran , entonces podríamos determinar si existe fuga de información (si utilizan este medio para hacerlo).

Algo que me llamo la atención fue las direcciones IP que se registran en las vídeo llamadas ya que con eso podemos determinar la ubicación geográfica de los participantes

La herramienta esta en su fase de desarrollo , no  soy muy bueno con la interfaz si alguien me da la mano con eso Bienvenido!.

Espero liberar pronto la version Free, saludos!

EOF


viernes, 13 de diciembre de 2013

Tras las huellas del Zorro I

Los navegadores web son una fuente importante de información desde el punto de vista de un análisis forense, ya que en ellos podemos llegar a recuperar datos que posteriormente analizados podemos reconstruir lo sucedido.

En esta oportunidad vamos a analizar Firefox uno de los navegadores mas utilizados,existen muchos puntos en los cuales van a diferir de acuerdo al sistema operativo , lo cual dificulta el análisis hasta cierto punto, uno de los puntos a favor en este caso del forense es que todo se almacena con una tecnología, en este caso la mas utilizada por aplicaciones de teléfonos y por este navegador web Sqlite.

 Firefox por defecto se instala en la siguientes direcciones (esto no es algo que este escrito en piedra el usuario puede decidir donde instalarlo)

Windows XP

C:\Documents and Settings\[User]\Application Data\Mozilla\ Firefox\Profiles\xxxxxxxx.default\
C:\Documents and Settingd\[user]\Local Settings\Application Data\ Firefox\Profiles\xxxxxxxx.default\Cache\

Windows 7 y 8

C:\Users\[User]\AppData]Local\Mozilla\Firefox\Profiles\xxxxxxxx.default\Cache\
C:\Users\[User]\AppData\Roaming\Mozilla\Firefox\Profiles\xxxxxxxx.default\

Linux

~/.mozilla/firefox/xxxxxxxx.default/

Mac

~/Library/Application Support/Firefox/Profiles/xxxxxxxx.default/
~/Library/Application Support/Mozilla/Extensions
~/Library/Caches/Firefox/Profiles/xxxxxxxx.default/Cache/

Las tareas básicas de un navegador

Los navegadores son las aplicaciones mas utilizadas ya que con ellas podemos acceder a recursos (paginas web) en Internet , navegar,enviar y recibir información , vamos a ver las principales características de un navegador.
  1. Interfaz de usuario : Toda la pantalla del navegador
  2. Motor del navegador : El que se encarga de interpretar los .css , .html 
  3. Motor de Renderizado :  se encarga formatear la información  de tal manera que puedan ser visualizados en nuestro navegador
  4. Networking : se encargar de realizar las consultas mediante el protocolo HTTP
  5. Motor de Javascript :  se encarga de interpretar el contenido de los archivos .js (javascript,jQuery,etc)
  6. Almacenamiento de la información :  es la capa que se encarga de almacenar la información de nuestro navegador en el disco duro (nuestro objetivo).

Cuando uno ingresa una dirección URL en la barra de direcciones el navegador lo que hace es comunicarse con un servidor de de nombre (DNS) para resolver una dirección IP y acceder al servidor web apropiado, una vez conectado mediante los comandos del protocolo HTTP puede realizar consultas y recibir la información.

El navegador lee el codigo HTML , desplegando la información de los recursos solicitados,esos recursos pueden ser paginas html , pdf, archivos de diferentes extensiones o formatos, el navegador web almacena la información en su cache para reducir el uso de ancho de banda y la carga de recursos desde los servidores.

Ubicación del Cache en Firefox

Se almacenan metadatos , la ubicación del cache de firefox mozilla es la siguiente.

C:\Users\[User]\AppData\Local\Mozilla\Firefox\Profiles\xxxxxxxx.default\Cache
C:\Users\[User]\AppData\Local\Mozilla\Firefox\Profiles\xxxxxxxx.default\jumplistCache
C:\Users\[User]\AppData\Local\Mozilla\Firefox\Profiles\xxxxxxxx.default\OfflineCache
C:\Users\[User]\AppData\Local\Mozilla\Firefox\Profiles\xxxxxxxx.default\startupCache

En el directorio C:\Users\[User]\AppData\Local\Mozilla\Firefox\Profiles\xxxxxxxx.default\Cache se encuentran 4 archivos primarios que son los siguientes.
  1. _CACHE_001_ :  almacenamiento de metadatos de bloques de 512  bytes
  2. _CACHE_002_ :  almacenamiento de metadatos de bloques de 1204 bytes
  3. _CACHE_003_:  almacenamiento de metadatos de bloques de 4096 bytes
  4. _CAHCE_MAP_: este archivo se encarga de cruzar la informacion de metadatos y datos
Por el momento concluimos con la parte teórica, ya que viene una segunda parte con un poco de teoría y una tool ;) 

Related Posts Plugin for WordPress, Blogger...