Hace ya algunas semanas, durante una labor de Information Gathering que realizaba me llegó la hora de identificar y recopilar ficheros de ofimática para posteriormente procesarlos y extraer sus metadatos, desde donde probablemente pueda evidenciar información relevante y potencial.

Pero antes de adentrarnos, debemos aclarar ¿qué es esto de los metadatos? Los metadatos en ficheros digitales son un conjunto de información relativa y asociada al fichero desde donde se extraen. La definición literal sería “sobre dato”, es decir son datos que describen otros datos.
Entre la información que se ofrece en los metadatos está el producto origen desde donde fue generado el fichero y los datos del autor o autores que se vieron involucrado en la creación del mismo, por citar un par de ejemplos. En otra palabras, por defecto todo fichero generado digitalmente deja un rastro de información que normalmente “no es visible” para un usuario final, sin embargo a través del uso de herramientas especializada podemos llegar a esta información si ésta no ha sido manipulada o removida en origen. A continuación un ejemplo de metadatos en un fichero docx.

Bien, volviendo de esta inmersión teórica, normalmente empleo la herramienta ExifTool para el procesamiento de esta información (metadatos), de ello ya hablé en un anterior post (ver Tratamiento de Metadatos con ExifTool en Parrot Security OS). El problema que he tenido hasta ese momento es que siempre me debo sumergir en una labor manual y un tanto tediosa, dependiendo siempre del objetivo de análisis. Me explico, si nosotros tenemos como target por ejemplo la Agencia Nacional de Hidrocarburos de Bolivia, lo normal es que empleemos las siguientes Dorks para llegar a los ficheros de ofimática públicos de la institución (por citar algunas dorks):

site:anh.gob.bo filetype:docx
site:anh.gob.bo filetype:pdf
site:anh.gob.bo filetype:xlsx

Primero en Google por ejemplo y ya después vayamos a través de otros motores de búsqueda Bing, Yahoo, DuckDuckGo, entre otros. Si se da la situación como este caso de ejemplo, nuestra labor de recopilar estos ficheros nos puede tornar varios minutos, incluso horas.

Eso tomando en cuenta que no hemos empezado ni a mirar los metadatos aún, estamos en una labor previa necesaria; Lo siguiente será descargar cada fichero (hay quien lo hace 1 a 1 a golpe de click) y ya finalmente ponerse a mirar los metadatos.
Hasta este momento disponía de un script muy básico que tirando de Wget dentro de un bucle for lo hacía por mí, pero claro, debía proporcionarle el listado de URLs, algo como esto:

for var in $(cat ../$fichero); do wget $var ; done

La ultima parte del proceso que era el análisis ya como tal de los ficheros mediante ExifTool, la tenía ya preparada, me faltaba encontrar la forma de automatizar la búsqueda de ficheros de ofimática desde buscadores, unificar resultados para no descargar ficheros duplicados (por ejemplo 2 buscadores distintos pueden devolver los mismos ficheros) y posteriormente generar las descargas indicando la totalidad de ficheros obtenidos finalmente (algunos podrían no ser descargado por distintos motivos).
De casualidad la semana pasada llegue a una herramienta que “solucionaba” esta necesidad que tenía, se trata del proyecto PowerMeta del polifacético Beau Bullock (@dafthack), por supuesto que queda altamente recomendada dicha herramienta optimizada para Windows a través de PowerShell.

Lo que realicé con BashMeta (ya comprenden por qué el nombre), es una suerte de fork que aunque en realidad no he tirado del código de dafthack, si que me he apoyado en sus ideas para la extracción de los resultados de los motores de búsqueda (Google y Bing), en este caso a través de cURL he generado las outputs que posteriormente “parseo” para extraer las URLs identificadas. Tal vez la parte del parseo es la que mas tiempo me ha llevado tratar e incluso los filtros resultantes pueden no ser los más ortodoxos, aunque son funcionales. Cualquier sugerencia es bienvenida desde luego.

Bien, como he comentado anteriormente el resto del código ya lo tenía preparado por tanto lo integré, generé algunas pequeñas modificaciones de tratamiento en el proceso, puse algunos comentarios informativos para el usuario y finalmente aquí el resultado. Les dejo una demo de uso y les invito a descargarla desde el repositorio de GitHub para usarla.

Repositorio de GitHub: https://github.com/und3sc0n0c1d0/BashMeta

Tomar en cuenta que la herramienta además de mostrar en pantalla el resultado de los metadatos procesado, centrando en localizar nombres de usuarios, títulos de software y sus versiones empleados en la institución y los paquetes de idioma, nos generará un directorio que contendrá todos los ficheros localizados a través de los motores de búsqueda y que hayan sido descargados; Por otro lado también nos entrega el listado de URLs desde donde se obtuvieron los ficheros. Toda esta información nos servirá para nuestro reporte o simplemente para alimentar nuestra labor en esta parte de la fase de reconocimiento.

Espero que podáis aprovecharla. Atento me quedo a vuestros comentarios. Hasta la próxima.