domingo, 15 de marzo de 2009

Metadatos I: Nociones básicas

Saludos lectores!


Antes de empezar quisiera pedir perdón por no haber posteado en estos últimos días, pero lo primero es la vida real y despues la virtual; y en este caso me ha tocado tomarme unos días para ver qué hacía con mi vida...


Dejando de lado mi descuido reciente en la publicación del blog, hoy vamos a hablar de los metadatos. Sí, ya sé que tengo pendiente lo de CSS Attacks, pero me han dicho "POstea algo rápido esta noche", y pss aprovechando que estaba con Lix hablando me he decidido a postear sobre este tema.

La idea ya me rondaba hacía tiempo... y entre el artículo sobre enumeración que voy a hacer para CPH (y por supuesto para el blog :P), las lecturas del blog de Chema Alonso (que por cierto no me van a dejar asistir a una charla suya en la USAL, en unas jornadas de puertas abiertas... que de puertas abiertas los cojones, he ido a informarme y por estar matriculado en Biología me han dicho que no puedo...), y en último lugar el próximo proyecto que vamos a comenzar Lix y yo (esperemos que salga algo tan interesante como lo fue en su momento "HTTP al descubierto") sobre metadatos.


Empezaremos desde 0 para aquellos que no tienen ni idea de lo que son Metadatos. Son datos que aparecen dentro de un archivo (sea de las características que sea: .html, .doc, .xls, .pdf, .jpeg...) y cuyo contenido informa del propio archivo. Estas informaciones son variadas, y pueden abarcar desde el autor o el programa con el que si hizo el archivo, hasta impresoras remotas instaladas en nuestra red, pasando por rutas locales... etc.

Para aquellos que alguna vez se han codeado una web, conocerán los elementos html conocidos como "meta". Estos elementos de primeras pueden parecer que no sirven, pero hay aplicaciones (como los buscadores) que extraen algunas informaciones de estos elementos. Algunas cosas que se suelen poner en los meta de la cabecera del documento son el autor, la descripción de la página y alguna otra información trivial, como correo de contacto.


En esta serie de artículos nos vamos a centrar en el trabajo de archivos de caracter ofimático y de imagen, ya que son los más difundidos sin tener cuidado y además hay más posibilidad de encontrar "algo".

Ya sabemos lo que son los metadatos, y te preguntarás para qué queremos conocerlos. Tranquilo, aunque al principio probablemente te parecerá que no son interesantes, a la larga comprenderás la importancia que tienen. Básicamente los vamos a emplear en una de las etapas que comprende cualquier ataque a una organización, la enumeración. En esta etapa lo que se hace es recabar todas las informaciones relevantes, como servicios que corren, puertos abiertos, versiones de aplicaciones, OS, nombres de usuario, estructura de la red interna, etc...

Si analizamos los metadatos de todos los archivos ofimáticos que hay colgados en la web de alguna organización interesante, seguro, seguro que obtenemos informaciones realmente jugosas. En "El Arte de la Intrusión" (el artículo para CPH) aparecerán ejemplos descargables para practicar todo estoy comprobar en nuestro ordenador como podemos llegar a sacar cosas interesantes.

Mi intención es publicar primero esta introducción, mañana o pasado hablar sobre los metadatos en aplicaciones MS-Office, despues OpenOffice y por último poner unas cuantas herramientas para que tengais.

Para abrir boca, vamos a usar un pequeño script codeado en perl que usa Win32::OLE para sacar algunos datos. En nuestro caso, lo único interesante con lo que vamos a encontrarnos es con el autor... ya que en la mayoría de las ocasiones coincide con el nombre de la cuenta de usuario que creó ese archivo, por lo que es algo importante:


#########DataFoS.pl /Ejemplo nº 1#########
# Codex by The X-C3LL #
# Blog: http://0verl0ad.blogspot.com/ #
# Ejemplo de extractor de datos básicos #
# "El Arte de la Enumeración #
# #
############Flaming Our Skills############



#Declaramos los módulos a usar. Usaremos Win32::OLE para interactuar (la usaremos sobre todo
#Cuando analicemos archivos de MS-Office

use strict;
use warnings;
use Win32::OLE;

if (!$ARGV[1]){
exit();
}

#Seteamos las variables con las que vamos a trabajar
my $ruta = $ARGV[0];
my $arch = $ARGV[1];


my $shell = Win32::OLE->new("Shell.Application") || die;
my $folder = $shell->NameSpace($ruta) || die;
my $file = $folder->ParseName($arch) || die;


#Montamos un array con los 34 campos que contienen info
my @info = ("Name","Size","Type","Date Modified","Date Create", "Date Accessed", "Attributes","Status", "Owner", "Author", "Title", "Subject", "Category", "Pages", "Comments", "Copyright", "Artist", "Album Title","Year", "Track Number", "Genre", "Duration", "Bit Rate", "Protected", "Camera Model", "Date Picture Taken", "Dimensions", "Empty", "Empty", "Empty", "Company", "Description", "File Version", "Product Name", "Product Version");

#Creamos un bucle while para sacar todos los campos
#http://www.microsoft.com/technet/scriptcenter/guide/sas_fil_lunl.mspx?mfr=true

#Con un bucle mostramos la info
my $count = 0;
foreach my $campo (@info){
my $data = $folder->GetDetailsOf($file, $count);
print $campo." : ".$data."\n";
$count++;
}


El code lo he hecho en 10 minutos, así que no me he preocupado de que comprobase las extensiones, por lo que muestra todos los campos, y lógicamente los que son sólo para archivos multimedia (como canciones) van a estar vacíos.

Reitero que esto es para abrir boca sólo y porque me han pedido que postease algo, ya mañana o pasado empezamos con lo interesante!
5 0verl0ad Labs: Metadatos I: Nociones básicas Saludos lectores! Antes de empezar quisiera pedir perdón por no haber posteado en estos últimos días, pero lo primero es la vida rea...
< >