lunes, 16 de marzo de 2009

Metadatos II: Destripando .DOC

Saludos!


Ya estamos aquí de nuevo para darle caña a esto de los metadatos. Hoy vamos a hablar un poco sobre los metadatos en documentos word y hojas de cálculo excel, porque creo que son los tipos de archivos ofimáticos que más se pueden exponer, en el sentido de que son los que más se cuelgan en las webs para su descarga.


Como ya dije con anterioridad, existen múltiples herramientas que nos sacan los metadatos en un plis plás, pero yo lo que pretendo con estos pocos artículos (y con el que voy a hacer con Lix) es enseñaros qué son los metadatos, como podemos verlos, y daros unas pistas de cómo podeis codear vosotros una herramienta que se adapte a vuestras necesidades.


Los metadatos, como ya dijimos, contienen distintas informaciones acerca de nuestro documento, ya sean datos de la manipulación del documento, estructura, o descripciones sobre el contenido del mismo. En el caso de los archivos ofimáticos creado con MS-Office, esta información se incorpora de forma automática a nuestro propio archivo, es decir, que en nuestro documento tenemos a parte de nuestro texto, esta información. Como es lógico, si no la eliminamos, cualquier persona a la cual le suministremos nuestro documento podrá analizarlo y extraer datos de cierta relevancia sobre nosotros.


La forma de extraer estos datos es múltiple, desde simplemente abrir el documento con un editor hexa y buscar información, hasta sacar objetos OLE (como ejemplo el script que hice en el artículo Metadata I: Nociones básicas ). Otra opción puede ser pasar el archivo a otro formato... en el caso de .doc a .rtf (Rich Text Format) donde podremos ver mejor los metadatos....

El caso es que de primeras, para observar que esto de los metadatos es algo real, coged un editor hexadecimal y abrid cualquier documento Word que tengais a mano:





Si buscais un poquito podreis encontrar cosas como esta, donde podemos ver el nombre de usuario y el programa creador del documento. Si seguis viendo encontrareis otras cosas, en mi caso, puse un link a un recurso compartido y si observamos podemos encontrar el link:



Quedaros con eso de PID_HLINKS, ya hablaremos de eso más adelante. Si os fijais también podeis encontrar la compañía (Dark). Como veis aparece una cosa interesante como puede ser \\maquina003\PoC\ejemplo C3LL ... sería una cosa bastante interesante dar con algo como esto :D


Tras este primer vistazo, podemos entender porqué son importantes estos metadatos. Podemos llegar a esquematizar la estructura interna de una organización a partir de las rutas relativas, los dominios internos, las rutas de las imagenes que haya linkeadas, las impresoras externas; y además también podemos saber algunos software que usan, el tipo de impresora, etc... lo que si encontramos algo sobre lo que haya ya publicado en algun Bugtraq vulnerabilidades... tenemos la mitad del camino hecho.

A parte, también podemos sacar patrones de conductas y datos personales (nombres y apellidos, correo electrónicos, etc.) muy útiles a la hora de aplicar un poco de ingeniería social y de saber, por ejemplo, qué clase de permisos tiene cada usuario.

Bien, pero aún podemos extraer más datos. Al exportar un archivo .doc sucio (es decir, sin haber limpiado los metadatos) a formato .rtf (Rich Text Format), y abrirlo con un block de notas optendremos una marañana de datos... entre los cuales encontraremos nuestros queridísimos metadatos:




Por si alguien no sabe como pasar a .rtf, simplemente abre el documento word, dale a guardar como y selecciones el formato RTF. Bien, si nadais entre ese cúmulo de caracteres sin sentido aparente (y sólo aparente) encontrareis las mísmas cosas que antes... pero si os fijais más aún y comprobais con otros documentos... vereis que hay una serie de coincidencias, a partir de las cuales podrás sacar datos intereantes:

-Generator: es el programa que ha generado el documento (EJ: {\*\generator Microsoft Word 11.0.0000;} )
-Author: El usuario que creo el archivo (EJ:{\author usuario})
-Company: Compañía (EJ: {\*\company Dark})
-Revtbl: Usuarios que han creado/editado el archivo


Y despues hay otra serie de datos... tan sólo hechad un vistazo por ahí.


(Continuará)

5 0verl0ad Labs: marzo 2009 Saludos! Ya estamos aquí de nuevo para darle caña a esto de los metadatos. Hoy vamos a habla...

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: marzo 2009 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...
< >