22 Sep Wintriage: Rev. 20092020
Parece que fue ayer cuando estaba hablando en RootedCon 2020 por primera vez sobre WinTriage. Fue durante agosto de 2019 cuando me puse a trabajar en ello. A lo largo del año, en los meses en los que el trabajo es más fuerte y hay que atender más incidentes, cuando me fui dando cuenta de la necesidad real y urgente de tener una herramienta que, de un solo golpe, permitiera obtener las evidencias de una máquina viva, que habitualmente necesitaré para analizar posteriormente, sin necesidad de llevarme el disco entero. Esto tras la resolución de múltiples incidentes haciendo uso de Windows Live Response de BrimorLabs y de IRTriage siendo necesario complementar la adquisición de datos con FTK, para llevarme aquello que no he logrado sacar inicialmente.
La primera release que publiqué tuvo mucho trabajo, tanto de implementación, como de testing en diferentes sistemas operativos. Mis compañeros de Securízame me reportaron múltiples errores que fuimos reproduciendo y reparando. Asimismo, surgieron nuevas necesidades que en un primer momento no contemplé. Y cuando por fin creí que era imposible que faltara nada más y por supuesto que no fallara, la publiqué para libre descarga y utilización.
Muchas han sido las personas que durante estos meses la han usado para pruebas e investigaciones en incidentes reales, y por supuesto nosotros mismos, que han derivado en un To Do con nuevas cosas a implementar y a solucionar.
He ido procrastineando durante bastante tiempo, hasta que por fin este fin de semana le he dedicado unas cuantas horas al tema, a fin de poder publicar una nueva versión con más funcionalidad y varios fallos mejorados. Aun así, me quedan varias cosas pendientes, que dejo para un próximo confinamiento o «tiempo libre y decidido a ello».
En la versión 20092020, se incluyen las siguientes mejoras:
- Prefetch antes de ejecución de comandos: Si está seleccionado la extracción de ficheros de Prefetch, extraigo esta información tras terminar con la extracción de la memoria, ya que debido a la propia ejecución de múltiples comandos, hemos visto como el prefetch se llena de ficheros PF relativos a las ejecuciones de programas llamados por Wintriage, dando la posibilidad que se eliminen otros ficheros PF que podrían ser útiles en la investigación. Así, que siguiendo el orden de volatilidad imprescindible en toda adquisición forense, lo llevo a cabo antes.
- Soporte de la extracción de todos los perfiles de cada usuario en Google Chrome: Hasta ahora sólo extraía los datos relativos a caché, historial de navegación y cookies, del perfil «Default» de Chrome de cada usuario. Tuve una investigación en la que a partir de una adquisición offline (a partir de una unidad lógica montada en read-only con FTK), la información de navegación de Chrome de un usuario que me consta que lo utilizaba, me salía vacía. Esto es porque el usuario no utilizaba el perfil «Default», sino que usaba uno diferente. Ahora identifico en la ruta correspondiente del usuario los diferentes perfiles, y por cada uno de ellos, me llevo el historial, caché y cookies de cada perfil.
- Soporte de extracción de Microsoft Edge basado en Chromium y extracción de todos los perfiles: Hace tiempo que ya Microsoft Edge pasó a basarse en Chromium en vez del Edge que inicialmente publicó Microsoft. Hasta ahora no estaba soportado en Wintriage, y en una investigación no tenía datos de navegación. Habiendo implementado la extracción de perfiles de Chrome, fue trivial la implementación de Microsoft Edge, puesto que es igual ya que sólo cambia el nombre del directorio y subdirectorio. En vez de «Google\Chrome» es «Microsoft\Edge».
- Adquisición de información de unidades lógicas existentes en la máquina viva: Para diferentes cosas, he visto interesante que en una extracción viva se genere ahora en el directorio informes un fichero denominado drivesinfo.txt que contendrá, por cada unidad lógica conectada a la máquina el nombre y número de serie de volumen, así como el espacio libre y total de la misma.
- Herramientas de Sysinternals: Anteriormente indicaba en la documentación que se extrajese en el directorio Tools\SysinternalsSuite la extracción de TODAS las herramientas que este contenga. En realidad, si se quiere afinar, Wintriage sólo llama a las siguientes: handle.exe, handle64.exe, psfile.exe, psfile64.exe, psInfo.exe, psInfo64.exe, pslist.exe, pslist64.exe, psLoggedon.exe, PsLoggedon64.exe, sigcheck.exe, sigcheck64.exe, streams.exe y Tcpvcon.exe. Así se logra reducir el tamaño de las herramientas necesarias a copiar en este directorio.
Cosas pendientes
- Transporte de Alternate Data Streams (ADS): En una investigación me tocó extraer información contenida en papeleras de reciclaje de los usuarios de la máquina. El caso se iba a judicializar, por lo que decidí llevar a cabo una extracción con compresión en un único fichero, hash SHA-256 del mismo y certificación de la existencia de dicho hash a través de eGarante. Me traje a mi máquina el fichero 7z y, a lo largo de la investigación, en el análisis de la $MFT (Master File Table) ví que un fichero descargado de Internet debería estar en la papelera de reciclaje. Habitualmente, cuando un fichero se descarga con un navegador, este le añade un ADS. Y cuando se envía un fichero a la papelera o a otro directorio de un sistema de ficheros NTFS, los ADS viajan con él. Sin embargo, al descomprimirlo no me encuentro el ADS. En el pendrive original donde se extrajo la información, antes de comprimirlo, sí que estaba el ADS. ¿Dónde está el fallo? Pues tras analizar el tema, reparé en que 7Zip no es capaz de meter los ADS en un formato comprimido que sea de tipo 7z o zip. Sólo lo soporta en un formato denominado WIM (Windows Imaging Format). Tras diversas pruebas, identifiqué que efectivamente en wim lo hace, pero el tamaño resultante es mucho mayor que la compresión con formato 7Z. Por tanto, de momento lo he dejado en 7z, y para la siguiente me planteo hacer que Wintriage detecte en los ficheros extraídos si hay o no ADS. Si los hay, entonces que lo haga en formato WIM con el flag -sns para 7z, y si no los hay, que comprima en formato 7Z únicamente.
- Captura de tráfico de red: Varias personas me han dicho que estaría genial que mientras se hace el triage, se extrajera una captura de tráfico de red de la máquina durante un tiempo del que dura el triage. El problema de esto es que para poder generar una captura, la máquina ha de tener la librería WinPcap instalada. Esto es algo que me niego a hacer a no ser que no haya otra opción, a fin de evitar contaminar la evidencia de forma innecesaria. Tengo identificada la posibilidad de hacer una captura con la herramienta nativa de Windows netsh, pero el resultado que genera es un fichero ETL, no un PCAP o algo «friendly» para el análisis. Por otra parte estoy viendo la posibilidad de ejecutar SmartSniff de Nirsoft pero no he encontrado forma de indicarle mediante línea de comandos que escuche en un interfaz y lo deje en un fichero. Dicho esto, tampoco generará un PCAP, pero al menos el formato SSP que genera me parece más amigable para su posterior análisis que el de netsh. He escrito un correo a Nirsofer pidiéndole ayuda para ello. En cuanto sepa algo de esto lo implementaré.
- Bug no resuelto aún: Lo reconozco, es por pereza total, pero lo tengo que hacer. Si Wintriage se ejecuta desde una ruta que tenga espacios en el nombre de algún directorio o subdirectorio, dará múltiples errores. Lo he comprobado en varios cursos de DFIR de Windows que he impartido. «Oye esto da unos errores tremebundos en la adquisición». Respuesta: «¿Está Wintriage en una ruta en la que hay espacios? Si la respuesta es sí, quita los espacios y solucionado». Es mágico oye. Pero es cierto, tengo que arreglarlo en el código.
- Multi-idioma: Adoro el español. Creo que el que las herramientas estén en el idioma de uno, las acerca más a quienes tienen dificultades para hablar otros. No obstante, tengo claro que si se desea que una herramienta llegue a un público de analistas forenses que sea mayor, ha de estar al menos en inglés, y que en base al idioma de la máquina en la que se ejecuta, muestre la información en uno o en otro idioma. Lo tendré en cuenta para próximas revisiones.
De momento no hay nada más en el To Do de Wintriage. Creo que está lista para que la prueben mis alumnos del Curso híbrido de DFIR y Análisis Forense en Windows que impartiré en modo online en tiempo real este fin de semana del 25 al 27 de septiembre. Si quieres ver Wintriage en funcionamiento y que aprender qué valor aporta a la investigación los diferentes artifacts forenses extraídos, no dudes en apuntarte. Si vives en Latinoamérica, puedes hacerlo mediante el curso de DFIR y Análisis Forense en Windows en modalidad Online++.
DESCARGA WINTRIAGE.7Z EN ESTE ENLACE
SHA-256: b3b2c36b8e2e75049ccc9fae9eec69f18e9714e49c4e969c972e5fff236b9fe6
- Wintriage: la herramienta de triage para el dfirer en Windows
- Wintriage 20092020 (20/09/2020)
- Wintriage 24022021 (24/02/2021)
- Wintriage 30102021 (30/10/2021)
- Wintriage 02012022 (02/01/2022)
- Wintriage 18092022 (18/09/2022)
- Wintriage 09042023 (09/04/2023)