
Un script de Windows Batch y un script de Unix Bash para recopilar de manera exhaustiva datos forenses del host durante la respuesta a incidentes.
ir-rescue consta de dos scripts hermanos que recopilan una gran cantidad de datos forenses de sistemas Windows de 32 y 64 bits (ir-rescue-win) y de sistemas Unix (ir-rescue-nix). Los scripts respetan el orden de volatilidad y los artefactos que se modifican con la ejecución (p. ej., archivos prefetch en Windows) y están diseñados para su uso en respuesta a incidentes en diferentes etapas del proceso de análisis e investigación. Cada uno se describe a continuación:
ir-rescue-win está completamente escrito en Batch y puede configurarse para realizar adquisiciones exhaustivas y personalizadas de tipos específicos de datos en vivo y de datos históricos a partir de las copias disponibles del Servicio de Instantáneas de Volumen (VSS). ir-rescue-win utiliza comandos integrados de Windows y utilidades de terceros conocidas de Sysinternals y NirSoft, por ejemplo, algunas de código abierto. No se utilizan PowerShell ni la Instrumentación de Administración de Windows (WMI) para que ir-rescue-win sea transversalmente compatible.
ir-rescue-nix está escrito en Bash (v4+) y utiliza comandos integrados de Unix. Algunos comandos utilizados pueden no ser compatibles con POSIX y, por lo tanto, pueden no estar disponibles en algunos sistemas tipo Unix o variantes, especialmente en sistemas operativos más antiguos.
ir-rescue está diseñado para agrupar las recopilaciones de datos según el tipo de dato. Por ejemplo, todos los datos relacionados con redes, como los recursos compartidos abiertos y las conexiones del Protocolo de Control de Transmisión (TCP), se agrupan juntos, mientras que los procesos, servicios y tareas en ejecución se agrupan bajo malware. La adquisición de tipos de datos y otras opciones generales se especifican en un archivo de configuración simple. Cabe señalar que los scripts lanzan una gran cantidad de comandos y herramientas, dejando así una considerable (, cadenas en la memoria, archivos prefetch, cachés de ejecución de programas) en el sistema. El tiempo de ejecución varía según la potencia de cómputo, el rendimiento de escritura del disco y las configuraciones establecidas. El rendimiento del disco es especialmente importante si se configura la eliminación segura y al volcar memoria de 64 bits (generalmente de 8 GB de tamaño), lo que puede llevar una cantidad considerable de tiempo.
ir-rescue ha sido escrito para analistas de respuesta a incidentes y forenses, así como para profesionales de seguridad, y se utiliza en empresas como Cisco, PepsiCo, SaskTel, Praetorian y Counteractive Security. Representa un esfuerzo por agilizar la recopilación de datos del host, independientemente de las necesidades de investigación, y depender menos del soporte en el sitio cuando el acceso remoto o el análisis en vivo no están disponibles. Por lo tanto, puede utilizarse para aprovechar las herramientas y comandos ya incluidos durante las actividades forenses.
ir-rescue depende de varias utilidades de terceros para recopilar datos específicos de los hosts. Las versiones de las herramientas se enumeran en la última sección y se proporcionan con el paquete tal cual, por lo que sus licencias y acuerdos de usuario deben aceptarse antes de ejecutar ir-rescue. Tenga en cuenta que las utilidades de Sysinternals no se pueden redistribuir para que otros las copien según los Términos de Licencia de Software de Sysinternals. Debido a esto, ir-rescue ya no se publica junto con las utilidades de Sysinternals, por lo que todas las entradas enumeradas en la sección Lista de Herramientas de Terceros y Referencias deben descargarse del Repositorio en Vivo de Sysinternals y moverse a sus carpetas correspondientes para que el script funcione.
A continuación se presentan las descripciones y la organización del conjunto de herramientas, con versiones de 32 y 64 bits de las herramientas de Windows incluidas en carpetas adyacentes, si corresponde:
tools-nix/: carpeta de herramientas de terceros para ir-rescue-nix:
ascii/: archivos de arte ASCII en formato *.txt;cfg/: archivos de configuración:
ir-rescue-nix.conf: archivo de configuración principal para ir-rescue-nix;nonrecursive-(hidden|md5sum).txt: archivos ocultos y ubicaciones no recursivas de md5sum;nonrecursive.txt: ubicaciones no recursivas para múltiples herramientas;recursive-(exec|hidden|md5sum).txt: ejecutables, archivos ocultos y ubicaciones recursivas de md5sum;recursive.txt: ubicaciones recursivas para múltiples herramientas;mem/: herramientas de memoria:
AVML-0.21 (ELF de 64 bits): vuelca la memoria;tools-win\: carpeta de herramientas de terceros para ir-rescue-win:
activ\: herramientas de análisis de artefactos de actividad de usuario y sistema;
exiftool.exe: analiza archivos de enlace (LNK);JLECmd.exe: analiza listas de accesos directos de destinos automáticos y personalizados;LastActivityView.exe: muestra una mini línea de tiempo de la actividad del usuario y del sistema, como inicios y cierres de sesión;rifiuti-vista[64].exe: analiza archivos de la papelera de reciclaje;USBDeview[64].exe: lista dispositivos USB conectados anteriormente y actualmente;ascii\: archivos de arte ASCII en formato *.txt;cfg\: archivos de configuración:
ir-rescue-win.conf: archivo de configuración principal de ir-rescue-win;data\: carpeta de datos creada durante la ejecución con los datos recopilados:
<HOSTNAME>-<DATE>\: <DATE> sigue el formato YYYYMMDD:
ir-rescue-win: carpeta para datos relacionados con ir-rescue
ir-rescue-win.log: archivo de registro detallado de mensajes de estado;ir-rescue-win-global.log: archivo de registro global con comandos de ir-rescue-win ejecutados anteriormente;screenshot-#: capturas de pantalla numeradas solo para ir-rescue-win;ir-rescue-win debe ejecutarse en una consola de línea de comandos con derechos de administrador, mientras que ir-rescue-nix debe ejecutarse en una ventana de línea de comandos con privilegios de root. Ambos no requieren argumentos y utilizan un archivo de configuración respectivo para establecer las opciones deseadas. Por lo tanto, la ejecución de los scripts simplemente requiere invocar los archivos de la siguiente manera:
ir-rescue-win-v1.w.x.bat, o./ir-rescue-nix-v1.y.z.sh.Algunas herramientas que realizan búsquedas o escaneos recursivos están configuradas solo para recurrir en carpetas específicas. Esto hace que la recopilación de datos sea más dirigida, teniendo en cuenta el rendimiento en tiempo de ejecución, ya que las carpetas especificadas son ubicaciones probables para el análisis debido al uso extensivo por parte del malware. Las ubicaciones para la búsqueda recursiva y la búsqueda no recursiva para sistemas Windows y Unix se pueden cambiar libremente en los archivos de texto respectivos dentro de las carpetas de configuración. Algunas herramientas tienen archivos dedicados con ubicaciones específicas en las que recurrir o no. Estos se denominan recursive-<tool>.txt y nonrecursive-<tool>.txt, donde <tool> se reemplaza por el nombre de la herramienta. Cada archivo debe tener una ubicación como ruta completa por línea sin barras invertidas ni diagonales al final.
Durante la ejecución, todos los caracteres impresos en los canales de Salida Estándar (STDOUT) y Error Estándar (STDERR) se registran en archivos de texto codificados en UTF-8. Esto significa que la salida de las herramientas se almacena en carpetas y archivos de texto correspondientes. Los mensajes de estado ASCII todavía se imprimen en la consola para verificar el progreso de la ejecución. Se utiliza una carpeta temporal creada en %TEMP%\ir-rescue-win o /tmp/ir-rescue-nix para almacenar datos en tiempo de ejecución (p. ej., controladores de volcado de memoria y enlaces a copias VSS) y se elimina al finalizar. Las carpetas de datos se crean como marcadores de posición durante la inicialización. Después de la recopilación, las carpetas vacías pueden eliminarse si no se recopilaron datos (p. ej., caché de navegador vacía). Al final, los datos se comprimen en un archivo protegido por contraseña y se eliminan posteriormente, si está configurado para hacerlo.
El archivo de configuración de ir-rescue-win y ir-rescue-nix está compuesto principalmente por directivas binarias simples (true o false) para el comportamiento general de los scripts, qué tipos de datos recopilar y qué herramientas avanzadas ejecutar. Las líneas precedidas por un signo de almohadilla (#) se consideran comentarios. Estos se utilizan para describir brevemente lo que hace cada opción, enumerar carpetas, archivos o claves de registro importantes para proporcionar algo de contexto, así como para listar herramientas relevantes. Las descripciones a continuación se aplican solo a ir-rescue-win, pero sirven como ejemplo para comprender el enfoque general y el archivo de configuración de ir-rescue-nix.
Para ir-rescue-win, los datos se agrupan en los tipos dados por las siguientes directivas:
activity: esta opción establece la recopilación de datos de actividad del usuario;disk: esta opción establece la recopilación de datos de disco;events: esta opción establece la recopilación de registros de eventos de Windows;filesystem: esta opción establece la recopilación de datos relacionados con NTFS y archivos;malware: esta opción establece la recopilación de datos del sistema que pueden usarse para detectar malware;memory: esta opción establece la recopilación de la memoria;network: esta opción establece la recopilación de datos de red;registry: esta opción establece la recopilación del registro del sistema y del usuario;system: esta opción establece la recopilación de información relacionada con el sistema;web: esta opción establece la recopilación del historial de navegación y las cachés.Por un lado, el uso de herramientas avanzadas establecidas por las opciones sigcheck, density, iconsext y yara es independiente de las configuraciones realizadas para la recopilación de tipos de datos. Por otro lado, las directivas bajo las opciones principales respectivas de los tipos de datos están vinculadas a ellas, lo que significa que se ignoran si las principales están configuradas como false. Por ejemplo, memory-dump=true, la opción que indica a la herramienta que vuelque la Memoria de Acceso Aleatorio (RAM), se ignora si memory=false. Lo mismo ocurre con la opción <option>-all, que establece todas las opciones de un determinado tipo de dato en true por conveniencia, excepto <option>-vss. El script admite la recuperación de datos de todas las copias VSS disponibles mediante la creación de enlaces duros a las copias a través del espacio de nombres del kernel de Windows, una función que se puede activar con vss=true. Cada una de las opciones principales tiene su propia opción <option>-vss, que habilita o deshabilita la adquisición de datos VSS para ese tipo de dato en particular. Tenga en cuenta que los datos recopilados por las opciones malware-startup y web-(chrome|ie|mozilla) también están protegidos con contraseña, siendo la contraseña "infected" sin comillas. Todas las opciones no encontradas o comentadas en el archivo de configuración se establecen como false durante la ejecución, incluida la contraseña para el archivo comprimido final.
Tenga en cuenta además que la opción iconsext es útil para buscar binarios compilados con marcos inusuales que establecen iconos PE (p. ej., Python). Además, las reglas YARA deben tener una extensión de archivo *.yar y colocarse en la carpeta tools-win\yara\rules\. La salida de todas las herramientas avanzadas se almacena en la carpeta resultante malware.
A continuación se muestra un ejemplo mínimo del archivo de configuración que establece la recopilación de la RAM, incluida la memoria paginada en vivo e histórica, el registro del sistema y los registros de eventos de Windows en formato de texto, así como la compresión de la carpeta de datos final con la contraseña "infected" (sin comillas). Tenga en cuenta que esta configuración omite la recopilación de archivos de registro del sistema históricos.```
killself=false sdelete=false zip=true zpassword=infected ascii=false
events=true memory=true registry=true
vss=true
events-all=false events-txt=true
memory-all=false memory-vss=true memory-dump=true memory-pagefile=true
registry-all=false registry-vss=false registry-system=true
# Lista de herramientas de terceros y referencias
## Windows
* **Sysinternals**: las herramientas [Sysinternals](https://technet.microsoft.com/en-us/sysinternals/ "Sitio web de Sysinternals") han sido desarrolladas principalmente por Mark Russinovich y son de uso gratuito bajo los [Términos de licencia de software de Sysinternals](https://docs.microsoft.com/en-us/sysinternals/license-terms "Términos de licencia de software de Sysinternals"). La lista completa de herramientas utilizadas por *ir-rescue-win* es `accesschk[64].exe` (v6.02), `autoruns[64].exe` (v13.62), `autorunsc[64].exe` (v13.61), `handle[64].exe` (v4.1), `Listdlls[64].exe` (v3.2), `logonsessions[64].exe` (v1.4), `ntfsinfo[64].exe` (v1.2), `psfile[64].exe` (v1.03), `PsGetsid[64].exe` (v1.45), `Psinfo[64].exe` (v1.78), `pslist[64].exe` (v1.4), `psloggedon[64].exe` (v1.35), `psloglist.exe` (v2.71), `PsService[64].exe` (v2.25), `sdelete(32|64).exe` (v2.0), `sigcheck[64].exe` (v2.52) y `tcpvcon.exe` (v3.01).
* **NirSoft**: el conjunto de herramientas [NirSoft](http://www.nirsoft.net/ "Sitio web de NirSoft") ha sido desarrollado por Nir Sofer y se distribuye como utilidades gratuitas. La lista completa de herramientas utilizadas por *ir-rescue-win* es `AlternateStreamView[64].exe` (v1.51), `BrowserAddonsView[64].exe` (v1.05), `BrowsingHistoryView[64].exe` (v1.86), `ChromeCacheView.exe` (v1.67), `DriverView[64].exe` (v1.47), `iconsext.exe` (v1.47), `IECacheView.exe` (v1.58), `LastActivityView.exe` (v1.16), `MozillaCacheView.exe` (v1.69), `nircmdc[64].exe` (v2.81), `OfficeIns[64].exe` (v1.20), `USBDeview[64].exe` (v2.61) y `WinPrefetchView[64].exe` (v1.35).
* **The Sleuth Kit (TSK)** (v4.4.1): el [TSK](http://www.sleuthkit.org/ "Sitio web de TSK") es una herramienta forense de código abierto para analizar discos duros a nivel de sistema de archivos, utilizada por *ir-rescue-win* para recorrer la MFT con `fls.exe`, volcar los sectores de arranque del disco con `mmcat.exe` y mostrar información de la tabla de particiones del disco con `mmls.exe`.
* **winpmem_1.6.2** (v1.6.2): el conjunto [Pmem](https://github.com/google/rekall "Repositorio de GitHub de Rekall") es parte del framework de análisis de memoria de código abierto Recall, utilizado por *ir-rescue-win* para volcar la memoria.
* **md5deep[64].exe** (v4.4): la utilidad [md5deep](http://md5deep.sourceforge.net/ "Sitio web de md5deep") es de código abierto y está mantenida por Jesse Kornblum.
* **EDD.exe** (v2.0.1): el [Detector de discos cifrados](https://www.magnetforensics.com/free-tool-encrypted-disk-detector/) es una herramienta gratuita de Magnet Forensics que detecta software específico de cifrado de discos.
* **exiftool.exe** (v10.55)]: [ExifTool](http://owl.phy.queensu.ca/~phil/exiftool/ "Sitio web de ExifTool") es un analizador y editor gratuito de metadatos de varios formatos de archivo, como los archivos LNK, creado por Phil Harvey.
* **JLECmd.exe** (v0.9.6.1): [JLECmd](https://github.com/EricZimmerman/JLECmd "Repositorio de GitHub de JLECmd") es un analizador de código abierto con licencia MIT para listas de saltos automáticas y personalizadas, compatible con Windows 7 a Windows 10. Esta utilidad ha sido desarrollada por Eric Zimmerman y requiere .NET v4.6.
* **RawCopy[64].exe** (v1.0.0.15) y **ExtractUsnJrnl[64].exe** (v1.0.0.3): [RawCopy](https://github.com/jschicht/RawCopy "Repositorio de GitHub de RawCopy") (esencialmente, una combinación de **ifind** e **icat** de TSK) y [ExtractUsnJrnl](https://github.com/jschicht/ExtractUsnJrnl "Repositorio de GitHub de ExtractUsnJrnl") son utilidades NTFS de código abierto para extraer datos y archivos especiales, desarrolladas por Joakim Schicht.
* **rifiuti-vista[64].exe** (v.0.6.1): [Rifiuti2](https://github.com/abelcheung/rifiuti2 "Repositorio de GitHub de Rifiuti2") es un analizador de código abierto para la papelera de reciclaje, publicado bajo la licencia BSD.
* **densityscout[64].exe** (build 45): la utilidad [DensityScout](https://www.cert.at/downloads/software/densityscout_en.html "Sitio web de DensityScout") para calcular la entropía fue escrita por Christian Wojner y se publica bajo la licencia ISC.
* **YARA** (v3.5.0): [YARA](http://virustotal.github.io/yara/ "Sitio web de Yara") es un sistema de firmas de código abierto para malware que puede utilizarse para realizar escaneos de indicadores específicos.
* **Cygwin**: el proyecto [Cygwin](http://www.cygwin.com/ "Sitio web de Cygwin") es de código abierto y es utilizado por *ir-rescue-win* únicamente para filtrar salidas con las utilidades GNU `tr.exe` (v8.24-3) y `grep.exe` (v2.21), utilizando las DLL de 32 bits.
* **7za.exe** (v9.20): [7-Zip](http://www.7-zip.org/) es una utilidad de compresión de código abierto desarrollada por Igor Pavlov y publicada bajo la licencia GNU LGPL.
## Unix
* **AVML-0.21** (Adquirir memoria volátil para Linux): [AVML](https://github.com/microsoft/avml) es una herramienta de adquisición de memoria volátil en espacio de usuario para X86_64, escrita en Rust y diseñada para distribuirse como un binario estático. AVML puede utilizarse para adquirir memoria sin conocer de antemano la distribución del sistema operativo objetivo o el kernel. No se necesita compilación en el destino ni recolección de huellas. AVML se compiló [según lo descrito](https://github.com/microsoft/avml#building-on-ubuntu) en una máquina virtual Ubuntu 18.04.5 LTS. El binario debería funcionar en muchos [sistemas y versiones de kernel](https://github.com/microsoft/avml#tested-distributions).
# Historial de cambios
* ***ir-rescue-win-v1.4.4***: se movieron algunas opciones de `filesystem` a una nueva opción `disk` que también incluye el nuevo `disk-encryption` que prueba una variedad de software de cifrado de discos.
* ***ir-rescue-win-v1.4.3***: los argumentos de los procesos ahora se filtran de la salida de `malware-dlls` a un archivo separado, se reemplazó `filesystem-table` por una opción más completa (`filesystem-info`) que recupera información del disco y las particiones, se intercambió [LECmd.exe (v0.9.2.0)](https://github.com/EricZimmerman/LECmd "Repositorio de GitHub de LECmd") por [exiftool.exe (v10.55)](http://owl.phy.queensu.ca/~phil/exiftool/ "Sitio web de ExifTool") para analizar archivos LNK, y se añadieron algunos comandos más.
* ***ir-rescue-win-v1.4.2***: se eliminó RegRipper (`registry-parse`) (demasiado pesado y es mejor procesar posteriormente los archivos de registro).
* ***ir-rescue-win-v1.4.1***: se añadió la recolección de volcados de fallos de aplicaciones (`memory-appdumps`), se añadió la exportación de texto y análisis de archivos de registro (`registry-text` y `registry-parse`), se añadió el volcado y análisis del sector de arranque (`filesystem-boot` y `filesystem-table`), y se realizaron algunas mejoras generales.
* ***ir-rescue-win-v1.4.0***: se reestructuró el orden de recolección de datos y la salida, se amplió la funcionalidad con opciones configurables (`outpath`, `rm-glog`, `vss-limit` y `drives-limit`), y se añadieron NirSoft `BrowserAddonsView[64].exe` y un archivo de registro global menos detallado.
# Autor
[@dfernan__](https://twitter.com/dfernan__)
nonrecursive-(acl|iconsext|md5deep).txt: ubicaciones no recursivas de accesschk[64].exe, iconsext.exe y md5deep[64].exe;nonrecursive.txt: ubicaciones no recursivas para múltiples herramientas;recursive-(acl|iconsext|md5deep).txt: ubicaciones recursivas de accesschk[64].exe, iconsext.exe y md5deep[64].exe;recursive.txt: ubicaciones recursivas para múltiples herramientas;cygwin\: herramientas Cygwin y Bibliotecas de Enlace Dinámico (DLL):
tr.exe: se utiliza para eliminar caracteres no imprimibles;grep.exe: se utiliza para filtrar fechas con expresiones regulares;disk\: herramientas de disco:
EDD.exe: prueba la presencia de software de cifrado de disco;evt\: herramientas de eventos de Windows:
psloglist.exe: extrae registros de eventos de Windows;fs\: herramientas del sistema de archivos:
tsk\: herramientas y DLL de The Sleuth Kit (TSK):
fls.exe: recorre la Tabla de Archivos Maestra (MFT);mcat.exe: muestra el contenido de una partición;mmls.exe: muestra información sobre las tablas de particiones del disco (DOS, GPT);AlternateStreamView[64].exe: lista Flujos de Datos Alternativos (ADS);ExtractUsnJrnl[64].exe: extrae el archivo C:\$Extend\$UsnJrnl (diario NTFS) sin los ceros dispersos;md5deep[64].exe: calcula valores hash Message Digest 5 (MD5);ntfsinfo[64].exe: muestra información sobre NTFS;RawCopy[64].exe: extrae datos a nivel de NTFS;mal\: herramientas de malware:
autoruns[64].exe: vuelca ubicaciones de ejecución automática al formato binario de autoruns;autorunsc[64].exe: lista ubicaciones de ejecución automática;BrowserAddonsView[64].exe: lista complementos y extensiones de múltiples navegadores;densityscout[64].exe: calcula una medida basada en entropía para detectar empaquetadores y cifradores;DriverView[64].exe: lista controladores de kernel cargados;handle[64].exe: lista identificadores de objetos;iconsext.exe: extrae iconos de Ejecutables Portátiles (PE);Listdlls[64].exe: lista DLL cargadas;OfficeIns[64].exe: lista complementos instalados de Microsoft Office;pslist[64].exe: lista procesos en ejecución;PsService[64].exe: lista servicios;sigcheck[64].exe: verifica firmas digitales dentro de PE;WinPrefetchView[64].exe: muestra el contenido de los archivos prefetch;mem\: herramientas de memoria:
winpmem_1.6.2.exe: vuelca la memoria;net\: herramientas de red:
psfile[64].exe: lista archivos abiertos de forma remota;tcpvcon.exe: lista conexiones y puertos TCP y puertos UDP;sys\: herramientas del sistema:
accesschk[64].exe: lista permisos de usuario de las ubicaciones especificadas;logonsessions[64].exe: lista sesiones de inicio de sesión activas actualmente;PsGetsid[64].exe: traduce entre Identificadores de Seguridad (SID) y nombres de usuario y viceversa;Psinfo[64].exe: muestra información de software y hardware del sistema;psloggedon[64].exe: lista usuarios con inicio de sesión local que tienen su perfil en el registro;web\: herramientas web:
BrowsingHistoryView[64].exe: lista el historial de navegación de múltiples navegadores;ChromeCacheView.exe: muestra la caché de Google Chrome;IECacheView.exe: muestra la caché de Internet Explorer;MozillaCacheView.exe: muestra la caché de Mozilla Firefox;yara\: herramientas y firmas YARA:
rules\: carpeta de reglas *.yar;yara(32|64).exe: ejecutable principal de YARA;yarac(32|64).exe: compilador de reglas YARA;7za.exe: comprime archivos y carpetas;nircmdc[64].exe: ofrece una amplia funcionalidad, entre ellas la captura de pantallas;sdelete(32|64).exe: elimina archivos y carpetas de forma segura;