Higiene de Metadatos: Limpiando EXIF, PDF y Office antes de Publicar
Como eliminar metadatos que filtran identidad, GPS y autoria de imagenes, PDFs y documentos Office antes de publicar en linea.
Un investigador anonimo publico un PDF de 12 paginas denunciando un fraude corporativo. En menos de 48 horas su nombre circulaba en Twitter. No fue ingenieria social: fue el campo Author del PDF, generado automaticamente por LibreOffice, mas la marca de tiempo de modificacion que coincidia con su horario laboral. Los metadatos son el talon de Aquiles de cualquier publicacion sensible, y la mayoria de las suites de oficina embeben identificacion por defecto sin avisar. El equipo Basilisk trata la sanitizacion de metadatos como control obligatorio antes de cualquier drop publico, al mismo nivel que revisar IPs y huellas de navegador. Si vienes de la practica de OPSEC para Investigadores de Seguridad: Modelo de Amenaza Personal, ya lo sabes: la parte tecnica es la mas facil.
Empieza por lo basico: EXIF en imagenes. Un JPEG de movil moderno carga coordenadas GPS con precision de 5 metros, modelo del aparato, numero de serie de la lente y hasta orientacion del giroscopio en el momento del disparo. La herramienta estandar sigue siendo ExifTool de Phil Harvey. Para auditoria usa exiftool -a -G1 -s archivo.jpg y veras categorias EXIF, XMP, IPTC, MakerNotes y ICC_Profile. Para limpieza agresiva, exiftool -all= -overwrite_original *.jpg lo elimina todo, pero guarda una copia original fuera del directorio publico. En PNG el problema son los chunks tEXt y zTXt dejados por Photoshop o GIMP, a menudo con nombre de usuario y ruta completa del archivo origen.
El PDF es el caso mas traicionero porque carga metadatos en tres capas: diccionario /Info, stream XMP y propiedades de objetos incrementales cuando el archivo se edito sin linealizar. exiftool resuelve las dos primeras, pero para la tercera necesitas qpdf --linearize --object-streams=generate salida.pdf entrada.pdf, que reescribe la estructura completa y descarta historiales de revision. Hay tambien el caso de PDFs generados por escaneres corporativos: muchos embeben el numero de serie de la multifuncion en el campo Producer. Si el documento vino impreso y escaneado, considera el ataque de tracking dots amarillos de las impresoras laser, documentado por la EFF y fundamental para quien trabaja como en Seguridad Personal para Objetivos Visibles: Periodistas, Activistas y Ejecutivos.
Los documentos Office son un zoologico. DOCX, XLSX y PPTX son en realidad ZIPs con XML dentro, y el archivo docProps/core.xml lista autor, ultima modificacion, revision y empresa. Word ademas mantiene rsid (revision save IDs) que permiten correlacionar fragmentos de texto entre documentos distintos del mismo autor, ataque conocido como rsid fingerprinting. Para limpieza fiable, usa Word con Inspect Document seguido de Remove All, o en LibreOffice File > Properties > Reset Properties combinado con Tools > Options > Security > Remove personal information on saving. Para automacion en lote, oxml-document-cleaner en Python o mat2 (Metadata Anonymisation Toolkit) cubren el 95% de los casos sin abrir GUI.
mat2 merece atencion propia porque lo hicieron personas que piensan en modelo de amenaza real, mantenido por el equipo de Tails. mat2 --inplace documento.pdf actua sobre mas de 30 formatos incluyendo SVG, MP4, FLAC y EPUB. El modo --check lista lo que queda. Combinalo con torsocks si vas a subir via Tor, segun la practica descrita en Anonimato Real con Tor: Lo que Funciona y lo que es Mito en 2026. Para imagenes que vienen directas del movil, considera convertir a un formato intermedio: pasar JPEG por ImageMagick con -strip elimina perfiles ICC y EXIF, pero ImageMagick tambien reordena bytes de cuantizacion de forma identificable, asi que para casos serios prefiere jpegtran -copy none que preserva la tabla original.
Existen trampas que ninguna herramienta automatica detecta. Capturas de pantalla de monitores con frecuencia variable dejan microartefactos de codec que identifican el modelo de la GPU. Los PDFs generados por LaTeX embeben firma del paquete hyperref incluyendo fecha de compilacion en UTC, delatando zona horaria. Videos MP4 cargan atom moov con timestamp del filesystem del creador. Para limpieza completa el flujo Basilisk es: generar contenido en VM desechable con zona horaria UTC, exportar via clipboard o network share aislada, sanitizar con mat2 en la maquina anfitriona, validar con exiftool -a -G1 -s y solo entonces publicar. Este mismo patron aparece en Compartimentacion Digital: Identidades Separadas sin Filtrar Metadatos y en Tails, Whonix o Qubes OS: Cual Elegir para Cada Escenario de OPSEC.
La validacion adversarial cierra el ciclo. Antes de publicar, sube el archivo final a un servicio de inspeccion publico como metadata2go o ejecuta pdfid.py y pdf-parser.py de Didier Stevens. Compara la salida con lo que esperas ver: idealmente ningun campo de autoria, timestamps en cero o en 1970-01-01, y ningun stream embebido mas alla de lo necesario. Documenta el checklist y versionalo junto con el contenido. Takeaway practico: crea un alias en tu shell llamado clean-doc que ejecute mat2 --inplace seguido de exiftool -a -G1 -s sobre el resultado, y nunca publiques nada sin correr ese alias y leer la salida. Tres segundos de disciplina valen mas que tres anos de proceso judicial.
Por ultimo, recuerda que los metadatos no son solo un problema de publicacion: correos, adjuntos compartidos en Slack y hasta uploads a buckets S3 publicos cargan el mismo riesgo. Los equipos maduros tratan la sanitizacion como pipeline, no como paso manual. Integra mat2 en pre-commit hooks de repos que aceptan contribuciones anonimas y en gateways de upload de plataformas de denuncia. La higiene de metadatos no protege contra un adversario con recursos de estado, pero elimina la clase entera de error autoinfligido que suele tumbar investigadores antes incluso de que la investigacion empiece. Aplica una vez, automatiza siempre.