
Un script de Python para examinar los registros de eventos de Ivanti Secure Connect (ICS), diseñado para respaldar investigaciones sobre las vulnerabilidades CVE-2025-0282, CVE-2023-46805 y CVE-2024-21887.
Este repositorio proporciona un script de Python diseñado para convertir archivos de registro .vc0 de Ivanti Secure Connect al formato CSV para informática forense digital y respuesta a incidentes. En particular, el analizador:
.vc0).
La herramienta se desarrolló originalmente mientras se investigaba CVE-2025-0282 (una vulnerabilidad de ejecución remota de código no autenticada que afecta a ciertos dispositivos de Ivanti). Los informes de Mandiant y de otros indican que los actores de amenazas pueden eliminar o alterar las entradas de registro para ocultar sus actividades. Al analizar e interpretar estos archivos .vc0, los investigadores pueden detectar más fácilmente evidencias de compromiso, eliminaciones inusuales u otro comportamiento sospechoso.

Durante múltiples intervenciones de respuesta a incidentes que involucran a Ivanti Secure Connect, se descubrió que ciertos dispositivos presentaban registros incompletos o manipulados: algunos no mostraban ninguna entrada hasta que se detectó la explotación de CVE-2025-0282 y se reinició el dispositivo. Además, las comprobaciones de integridad integradas, que normalmente se ejecutan cada dos horas, pueden ser deshabilitadas o alteradas por un atacante. Al convertir los archivos .vc0 a un formato CSV más fácil de usar, esta herramienta ayuda a los investigadores a identificar anomalías, como entradas de registro faltantes, intentos de autenticación inesperados y posibles señales de manipulación de datos.

PS F:\Case20250109001> python .\ics_logs_parser.py -h
usage: ics_logs_parser.py [-h] --input INPUT --output OUTPUT --mapfile MAPFILE
Process .vc0 files and convert them to .csv files.
options:
-h, --help show this help message and exit
--input INPUT Directory containing .vc0 files
--output OUTPUT Directory to save .csv files
--mapfile MAPFILE CSV file mapping [MessageCode, MessageType, Description]
python .\ics_logs_parser.py --input "F:\Case20250109001\root_runtime.img\[root]\runtime\logs" --output .\logs\ --map .\logmessages_map.csv
--input: Directorio que contiene los archivos de registro .vc0 extraídos de Ivanti Secure Connect.--output: Directorio donde se guardarán los archivos CSV.--mapfile: Archivo CSV que asigna cada código de mensaje a un tipo de mensaje y una descripción.
logmessages_map.csv almacena los códigos de mensaje conocidos y sus correspondientes tipos y descripciones de mensaje. Si bien esta lista (obtenida de la documentación pública de Ivanti y de investigaciones de la comunidad) es extensa, es posible que no incluya todos los códigos de mensaje existentes. Recomendamos a los usuarios revisar o personalizar la asignación según sea necesario para su entorno. Consulte la sección de Recursos para ver las referencias originales.
De forma predeterminada, las marcas de tiempo se convierten a UTC. Si necesita localizarlas o formatearlas de otra manera, puede modificar la llamada a datetime.fromtimestamp(...) en la función process_subline().

Si tiene preguntas, sugerencias o necesita ayuda, no dude en contactarnos en [email protected].