03 Mar Wintriage Rev. 24022021
Esta semana hará un año que presenté Wintriage en RootedCON 2020. Se trata de una herramienta específica para la fase de adquisición de evidencias de un sistema Windows, fundamentalmente para una máquina viva, aunque también lo permite, a partir de una imagen de disco.
En septiembre 2020 publiqué una nueva versión. En ella parcheaba varias cositas menores e incluía alguna nueva funcionalidad como expliqué en este post. Además indicaba que no estaba implementado todo lo que tenía pendiente, y dejaba varias ideas en el tintero.
Hoy, puedo decir que la versión 24022021, que presento en este artículo, implementa TODO lo que tenía en la lista de pendientes, ya sea por corrección de errores, por ideas que me han sugerido profesionales usuarios de la herramienta y alumnos, así como nuevas cosas que he ido viendo su necesidad a la hora de enfrentarnos a determinados casos en los que siempre dices ¿A que estaría guay que Wintriage hiciera esto?
La versión 24022021, incluye las siguientes mejoras:
- Captura de tráfico de red: Esta funcionalidad me la propusieron dos alumnos distintos como algo interesante y a tener en cuenta. Mientras estás haciendo el triage, poder capturar tráfico de red «durante un rato», sería interesante a fin de poder identificar si en las comunicaciones de la máquina se observa algo irregular. Cierto. El problema es que estamos acostumbrados a analizar tráfico en formato PCAP, y para poder hacer esto de forma directa, era necesaria la instalación de WinPcap o NPcap, aunque sea de forma temporal. Esto, con la diferencia de lo que hace Windows Live Response, es algo que he querido evitar a toda costa. Tanto es así que contacté con Nir Sofer, creador de innumerables herramientas forenses de la marca Nirsoft. Le pregunté si existía la posibilidad de llevar a cabo lo necesario vía línea de comandos con la herramienta SmartSniff. Sin embargo, y por muy educado que fue mi correo, nunca fue contestado. No todo el mundo sabe que Windows, desde que implementa el comando netsh, con la opción trace, permite crear capturas de tráfico de red en formato ETL. Si bien no es el mejor de los formatos, la herramienta Microsoft Network Monitor permite convertir un fichero ETL en PCAP, que aunque no es directo, nos permite extraer tráfico de red de la máquina a analizar.
- Soporte de la extracción de navegadores Brave y Opera: En un curso que impartí, me preguntaron qué artifacts forenses se podían analizar en un usuario que navegara haciendo uso del navegador Brave. En ese momento no sabía la respuesta, pero analizando con FTK Imager la estructura de directorios y ficheros dentro del perfil del usuario, observé una topología muy similar a la de Google Chrome. Posteriormente, con más calma, pude comprobar que está basado en Chromium, por lo que fue trivial añadir soporte para este navegador, al haberlo hecho antes con Edge Chromium. Ya que estaba en ello, implementé también soporte para la navegación hecha con el popular Opera.
- Extracción de $MFT, LogFile y $J (UsnJrnl) de todos los sistemas de ficheros NTFS de tipo «FIXED» que tenga el sistema vivo. Hasta ahora se extraía sólo desde el sistema de ficheros de la unidad C:. Debido a que en un par de casos que hemos tenido últimamente, en los que analizar la actividad de la información de los sistemas de ficheros de otras unidades era imprescindible, y nos tocó volver a conectarnos al sistema a extraer dichos artifacts con FTK, decidí implementar esta sencilla característica.
- Extracción de Papelera de Reciclaje de los usuarios de todas las unidades NTFS. Enlazado al punto anterior, cuando un usuario borra un fichero en una unidad con sistema de ficheros NTFS que no es la C:, se crea un subdirectorio con su SID dentro del directorio $Recycle.Bin de dicha unidad lógica, donde se mueve el fichero eliminado. Anteriormente sólo sacaba las papeleras de la unidad C:, y ahora la saco de todas las unidades NTFS en las que exista o haya existido información eliminada en la papelera de reciclaje de usuarios.
- Listado de ficheros/directorios y Alternate Data Streams de todas las unidades NTFS de tipo «FIXED». Y la última relacionada con lo anterior, se amplía la extracción de evidencias existentes en sistemas de ficheros NTFS de todas las unidades que no sean extraíbles, y se obtiene un listado de todos ficheros y directorios, así como de todos los ADS (Alternate Data Streams) existentes en todas ellas.
- Timestamp de ficheros de PreFetch extraídos: El comportamiento normal, cuando se copia un fichero de un directorio a otro, es que el timestamp de creación tipo Si (Standard Information) del fichero copiado se actualiza con la fecha/hora de la copia, manteniéndose el timestamp del fichero original de modificación Si (SiModTime). Esto que es lo normal, en los ficheros de Prefetch, hace que al abrirlo posteriormente con WinPrefetchView, nos muestre como fecha/hora de creación de fichero la del momento de la extracción, perdiéndose un valor que puede ser muy importante a la hora de un análisis forense y/o de la respuesta ante un incidente. No obstante, los valores de los timestamps Si (Standard Information) son modificables vía API de Windows. Por este motivo, desde esta versión de Wintriage, cuando se copian los ficheros de PreFetch del sistema origen, se extrae el valor del timestamp de cada fichero y se asigna al fichero copiado. Como resultado, tenemos los ficheros con idénticos valores de timestamps de creación y modificación que los originales.
- Compresión en formato WIM si hay Alternate Data Streams en la extracción. Esto era una tarea pendiente de la revisión anterior. En una investigación que tuvimos, el contenido de la papelera de un usuario era vital, al analizar la $MFT veíamos que se generaba un ADS de tipo Zone.Identifier. Esto, que es típico cuando un fichero ha sido descargado desde un navegador, también puede darse cuando un fichero con ADS se mueve o copia entre sistemas de ficheros que soportan esta característica, puesto que los ADS viajan con la copia. Sin embargo, en el análisis de los ficheros extraídos de la papelera de reciclaje, veíamos el fichero, pero no los ADS. En ese caso además, dadas las perspectivas de que pudiera terminar en un juicio, desde el principio se llevó a cabo una extracción con compresión 7zip, SHA-256 + eGarante. Al extraer la información del fichero 7z, no había ADS. Revisando la documentación de 7za, se indica que el formato 7z actual no incluye los ADS. Asimismo, te da la opción que para se mantengan los ADS se compacten los ficheros en otro con formato WIM. Como desventaja, este formato comprime muy poco si lo comparamos con 7z, que es una maravilla. Así que lo que hago ahora es detectar si hay ADS dentro de todos los ficheros extraídos, y si es así lo comprimo en formato WIM, y posteriormente ejecuto 7za sobre el WIM, dejándolo en un 7z eliminando el WIM intermedio. Ahí sí que se nota la compresión. En caso que no haya ADS en el listado de los ficheros extraídos originalmente, lo comprimo en 7z, sin paso intermedio a WIM.
- Selección de usuarios: Hasta ahora, Wintriage sólo permitía con la selección en un checkbox si queríamos extraer artifacts relativos a cada usuario que tuviera un perfil existente en el sistema. Sin embargo, hay muchos casos en los que nos dicen «sospechamos de la actividad de este usuario», y utilizamos Wintriage para la extracción de evidencias en un sistema Live. Hasta ahora teníamos que llevarnos la actividad de todos los usuarios de la máquina. A partir de esta nueva versión, aparece un botón al lado de la opción «Info de Usuarios» que nos permite elegir a quiénes le extraeremos los artefactos de usuario. Además, se elimina la extracción de información de perfiles de usuario «plantilla» o no usados por cuentas reales, como «All Users», «Default», «Public», etc,… que no aportaban nada a la investigación. Esta opción sólo está disponible en la versión GUI, puesto que en la ejecución por línea de comandos se me hacía muy complicado y aparatoso para la ejecución por parte del usuario.
Muestro una imagen de cómo queda, a continuación.
- Soporte Multi-idioma (español-inglés). Cuando hice Wintriage, inicialmente pensé en crear una herramienta que nos sirviera para nuestras investigaciones e incidentes en Securízame. Cuando ví que podía ser útil para más analistas y peritos, decidí que fuera pública para que quien quisiera, pudiera descargarla, así como sus dependencias, y usarla en otros casos. Lo que no pensé es que me llegaran tantos mensajes de colegas no hispano-hablantes interesados en ver cómo poder usar la herramienta en sus casos, pero que el idioma fuese al menos, en inglés. Así que aunque tenía todos los textos hardcodeados en español, tanto los mensajes, errores, etiquetas, etc,… me he pegado una buena paliza haciendo que si detecta que la instalación de Windows se hizo desde un medio en español (en cualquiera de sus variantes) se muestre y genere todo en español; y si es cualquier otro código de idioma, lo haga en inglés. Bajo estas líneas se puede ver una captura de pantalla de Wintriage ejecutándose en un sistema operativo Windows 10 instalado desde un ISO en alemán, descargado desde la web de Microsoft.
En cuanto a corrección de fallos, la versión 24022021 soluciona los siguientes:
- Funcionamiento correcto en un entorno en el que el nombre de la ruta de Wintriage contiene espacios. Parece una tontería, pero sorprende la cantidad de veces que pasa esto. La solución fue fácil (por si os pasa en otros programas): Si detectáis que la ruta contiene espacios, haced la llamada al nombre corto de Windows, y con esto ya no fallará.
- Crash indeterminado en algunas instalaciones, en la detección de sistemas de ficheros cifrados: Varias personas me habían reportado un fallo que no había podido replicar en múltiples sistemas Windows de prueba. Así, me era imposible de tracear qué es lo que lo hace saltar. Por cosas de la vida, rebuscando entre máquinas virtuales, se me ocurrió probar en un viejo Windows 7 de 32 bits y apareció el mismo error, en el que pude identificar el origen del problema. En concreto, el acceso a una propiedad de un objeto que al parecer no existe en todas las versiones de Windows, hacía que aquello diese un error y no se recuperase. Una vez identificado el fallo, ahora pregunto primero si existe la propiedad en el objeto, y si no es así, no pregunto el valor.
- Error si el sistema operativo no tiene .NET 3.5 instalado: Aprovechando que se publicó la versión 3.0 de Magnet Forensics EDD (Encrypted Disk Detector) la añadí a la lista de dependencias, para que sea llamada por WinTriage a la hora de identificar si hay sistemas de ficheros cifrados, montados en la instalación de Windows en la que se ejecuta. En mi caso iba perfecto, pero algunas personas me reportaron que Wintriage les daba un error de falta de .NET en medio de la ejecución. Identificada la falta de este software (en concreto de la versión 3.5), y teniendo en cuenta que no voy a instalar nada en la máquina de la que estamos obteniendo evidencias, si no existe esta versión de .NET (no sirve de nada que sí se tenga una versión superior), lo que hago es llamar a la versión anterior de EDD, que no tiene dicha dependencia. Es menos preciso, pero al menos sigue siendo funcional.
¿Y ahora qué? ¿Qué te falta por hacer? ¿Qué hay en el roadmap?
Pues sinceramente, el roadmap de la herramienta, después de todas las mejoras y bugfixes aplicadas, está vacío. He implementado todo aquello que tenía pendiente. He arreglado todos los errores que tenía identificados. Creo que saca todo lo que necesito que obtenga para las investigaciones que hacemos en Securízame.
Así que de momento, sólo puedo pedir ayuda a la comunidad. Que se use Wintriage, si se echa en falta alguna funcionalidad en la extracción de evidencias, si falla al hacer alguna acción, o si simplemente se desea hablar de ello, que por favor nos escriban a contacto@securizame.com indicándonoslo, y estaremos encantados de escuchar sus inquietudes.
Nosotros seguiremos usando Wintriage en nuestras investigaciones, peritajes y formaciones. Si encontramos algo que creamos interesante que Wintriage debería extraer, lo añadiremos al To Do, y en la siguiente revisión lo implementaré.
Los alumnos que vengan al curso online en directo de DFIR y Análisis Forense en Windows que impartiré en tiempo real el fin de semana del 16 al 18 de abril 2021, aprenderán a sacarle todo el jugo a los artifacts extraídos por Wintriage y a entender su utilidad e correlación en un incidente de seguridad. Si vives en Latinoamérica puedes llevar a cabo el curso de DFIR y Análisis Forense en Windows en modalidad Online++.
Hemos hecho un amplio set de pruebas en diferentes entornos (Windows XP, 2003, 2012, 7 y 10) y todo ha ido bien, aunque donde mejor se puede probar es «in the wild», así que:
Descarga Wintriage. Es gratis!
Descarga la última versión desde aquí -> https://cursos.securizame.com/extra/Wintriage.7z
SHA-256: b3b2c36b8e2e75049ccc9fae9eec69f18e9714e49c4e969c972e5fff236b9fe6