extraer atributos de archivos temporales de una lista / Sudo Null IT News

Imagínese: tiene varios miles de archivos y para cada uno necesita extraer metadatos: fechas de creación, modificaciones y último acceso. Por supuesto, puede sentarse y copiar manualmente estos datos desde Explorer. Un archivo, el segundo… Después de una hora de trabajo, mi cabeza ya da vueltas y todavía quedan cientos de archivos por delante. Pero todo esto se puede evitar.

Mi nombre es Maxim Antipov, soy especialista en informática forense y profesor en CyberEd. En este tutorial, le mostraré cómo automatizar el proceso de extracción de atributos de archivos usando un script VBA. Configuraremos Excel para que sea él mismo el que recopile datos sobre el tamaño, fecha de creación, modificación y último acceso de los archivos.

Problema

Al realizar una investigación de medios de almacenamiento, a menudo es necesario extraer marcas de tiempo de atributos de archivos de una tabla de archivos. Estos pueden ser parámetros como el tamaño del archivo, la fecha de creación o la última modificación. Con menos frecuencia, pero aún así, surge la tarea de recuperar la fecha del último acceso a un archivo o grupo de archivos. Si solo hay unos pocos archivos (una docena o dos), puede transferir manualmente los atributos necesarios sin prisas o utilizar un software especial. La solución a este problema es una operación típica, que no vale la pena discutir en detalle: una búsqueda en Internet arrojará instantáneamente una lista de programas para crear listados de archivos.

Sin embargo, en la práctica, los especialistas en informática forense se enfrentan a tareas que requieren un enfoque más profundo. Por ejemplo, ¿qué pasa si hay miles de archivos? ¿Y necesita extraer atributos no para todos los archivos de un directorio, sino solo para una lista específica seleccionada según algún criterio? En tales situaciones, las utilidades estándar para compilar listas de archivos ya no siempre son efectivas.

Ejemplos de tales tareas:

  1. Lista de archivos supuestamente maliciosos detectados por el antivirus. A veces puede haber varias docenas de archivos de este tipo y están dispersos por todo el sistema de archivos en los lugares más inesperados.

  2. Lista de archivos ejecutables del registro de auditoría de eventos. Los eventos con códigos 4688 y 4689 pueden proporcionar información sobre los procesos que se ejecutan en el sistema. Si se instaló Sysmon, su código de evento 1 proporcionará una lista completa de archivos ejecutables. Estos archivos requieren escaneo si la protección del sistema no ha detectado ninguna actividad sospechosa, pero se observan anomalías en el funcionamiento del sistema. Además, puede extraer hashes de archivos ejecutados, pero este es un tema para una discusión aparte.

  3. Una lista de documentos con palabras clave específicas después de la indexación. ¿Qué hacer si hay varios miles de documentos de este tipo y están dispersos en diferentes carpetas?

  4. Una lista de archivos seleccionados según ciertos criterios. De decenas de miles de archivos, sólo necesita extraer unos pocos miles que cumplan ciertos criterios. Es posible que estos archivos no estén distribuidos uniformemente en todo el sistema de archivos.

Soluciones estándar: desventajas

Puede intentar extraer los atributos de todos los archivos y luego escribir un script para filtrar por la lista deseada. Inicialmente pensé en seguir este camino, pero es engorroso y tiene múltiples capas. Primero, debe crear una lista de archivos seleccionados en Excel y luego agregar manualmente los atributos necesarios a la tabla. Esta solución es adecuada para usuarios cuyo trabajo se mide en horas detrás del monitor, pero existe una alta probabilidad de errores.

Sin embargo, no somos usuarios comunes y corrientes. Necesitamos una solución más eficiente: la automatización de procesos. Cuando surge una tarea periódicamente, por ejemplo, como es el caso de varios miles de archivos seleccionados según unos criterios determinados, uno empieza a preguntarse: ¿es posible automatizar este proceso en Excel? Después de todo, copiar atributos manualmente es una tarea que puede y debe evitarse. La única pregunta es cómo organizar esta automatización.

La solución es escribir un script VBA para Excel que realice tres tareas sencillas:

  1. Itera por todas las celdas de la lista con rutas de archivos.

  2. Extraiga automáticamente los atributos requeridos de la tabla de archivos.

  3. Inserta estos atributos en las celdas de la tabla especificadas.

Solución

Entonces, tenemos un archivo de Excel con una tabla, donde la columna “A” ya contiene una lista de los archivos requeridos. La tarea consiste en extraer los valores de los siguientes atributos del sistema de archivos para cada archivo:

  • La columna “B” es el tamaño del archivo en bytes.

  • La columna “C” es la fecha en que se creó el archivo.

  • La columna “D” es la fecha de la última modificación.

  • La columna “E” es la fecha del último acceso.

El primer paso es determinar cuántas filas ocupa la columna “A”. Esto nos dará la cantidad de archivos con los que trabajar.

Para ello utilizamos la línea:

LastRow = Cells.SpecialCells(xlLastCell).Row

Ahora necesitamos un objeto para trabajar con archivos: FileSystemObject. Con su ayuda podemos acceder a los atributos del archivo. La variable “i” servirá como contador en el bucle FOR donde recorreremos cada celda de la columna “A”, leyendo la ruta del archivo y luego extrayendo sus atributos.

Para hacer esto, agregue las siguientes líneas:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile(Range("A" & CStr(i)))

Escribiendo un guión

Ahora presentamos el script VBA final con comentarios para cada parte. Este script revisará todas las filas de la columna “A”, comprobará la presencia del archivo y extraerá los atributos deseados.

Sub ATTR1()
    ' Определяем количество строк в столбце активного листа
    LastRow = Cells.SpecialCells(xlLastCell).Row
    
    ' Запускаем цикл перебора ячеек от первой до последней строки
    For i = 1 To LastRow
        ' Инициализируем объект FileSystemObject для работы с файлами
        Set FSO = CreateObject("Scripting.FileSystemObject")
        
        ' Пробуем получить доступ к файлу, путь к которому указан в ячейке "A"
        If FSO.FileExists(Range("A" & CStr(i))) Then
            ' Если файл существует, извлекаем его атрибуты
            Set File = FSO.GetFile(Range("A" & CStr(i)))
            ' Записываем размер файла в байтах в столбец "B"
            Range("B" & CStr(i)).Value = File.Size
            ' Записываем дату создания файла в столбец "C"
            Range("C" & CStr(i)).Value = File.DateCreated
            ' Записываем дату последней модификации файла в столбец "D"
            Range("D" & CStr(i)).Value = File.DateLastModified
            ' Записываем дату последнего доступа к файлу в столбец "E"
            Range("E" & CStr(i)).Value = File.DateLastAccessed
        Else
            ' Если файл не найден, выводим сообщение в столбец "B"
            Range("B" & CStr(i)).Value = "File not found"
        End If
    Next i
End Sub

¿Qué hace este script?

  1. Define el número de líneas. en la columna “A” para saber cuántos archivos se van a procesar.

  2. PARA Bucle recorre cada línea, comenzando por la primera.

  3. Objeto del sistema de archivos comprueba si el archivo existe en la ruta especificada.

  4. Si se encuentra el archivose extraen sus atributos:

    • El tamaño del archivo se ingresa en la columna “B”.

    • La fecha de creación está en la columna “C”.

    • La fecha de la última modificación se encuentra en la columna “D”.

    • La fecha del último acceso se encuentra en la columna “E”.

  5. Si no se encuentra el archivoaparece el mensaje “Archivo no encontrado” en la columna “B”.

Pruebas, ¿dónde estaríamos sin ellas?

Lanzamos la máquina de prueba, buscamos archivos adecuados y comenzamos a probar.

Transferir la lista de archivos a Excel.

Abra el editor VBA, cree una nueva macro e inserte nuestro script en ella para automatizar la extracción de atributos del archivo. Intentemos ejecutarlo.

El script se ejecutó correctamente y ahora tenemos una tabla preparada a la que podemos agregar encabezados y transferirlos al informe.

Sin duda, abra las propiedades de uno de los archivos y verifique los valores de los atributos para asegurarse de que se extraigan correctamente.

Características del atributo “Último acceso”

Las pruebas realizadas muestran que el atributo «Último acceso» (fecha del último acceso) es bastante poco fiable. Esto explica por qué rara vez se utiliza. En algunos casos, es posible que este atributo no se actualice, especialmente si el archivo se abrió en modo de solo lectura. Si la fecha del último acceso no es necesaria para la investigación, simplemente se puede excluir del script comentando o eliminando la línea correspondiente.

Si los archivos están ubicados en una imagen montada en modo de solo lectura, tiene sentido examinar estos archivos también y agregar sus atributos a la tabla.

Puntos a considerar

Parecería que el problema está resuelto: se extraen los atributos, se realiza el trabajo de rutina y se puede seguir adelante. Sin embargo, como suele ocurrir, las dificultades no terminan ahí.

  1. Comprobar si los archivos se leyeron correctamente
    Para la estabilidad del script, es importante asegurarse de que cada archivo se lea correctamente. Esto es necesario para que el script no se detenga cuando ocurren errores, por ejemplo, si el archivo está dañado o es inaccesible.

  2. Contabilidad de zonas horarias
    Tanto Excel como Windows Explorer recuperan atributos de archivos temporales según la configuración de zona horaria actual. Para el usuario medio, esto no suele plantear dudas. Sin embargo, es importante que los científicos forenses recuerden que los sistemas de archivos como NTFS almacenan marcas de tiempo en formato UTC+00:00. Muchas utilidades forenses trabajan con esta hora o le permiten configurar la zona horaria deseada en los informes. Si no tienes en cuenta este punto, puedes confundirte a la hora de analizar las marcas de tiempo, especialmente si los dispositivos se encuentran en diferentes zonas horarias.

Conclusión

Desde que comencé a enseñar, los estudiantes suelen preguntar: ¿Necesitas saber programación para trabajar como especialista en informática forense?¿metro? La respuesta a esta pregunta es obvia: estas habilidades no sólo son útiles, sino que se vuelven necesarias. Esta tarea es un ejemplo de cómo la programación ayuda a resolver incluso tareas rutinarias de manera eficiente, lo que ahorra tiempo y reduce la probabilidad de errores.

En el próximo artículo intentaremos tener en cuenta la presencia de un cambio de zona horaria en los atributos y convertir automáticamente las marcas de tiempo a UTC+00:00. Haga sus preguntas en los comentarios y permanezca atento a las actualizaciones: ¡será interesante!

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *