Communitygithub.com

análisis-de-archivos-prefetch-para-historial-de-ejecución

Analiza archivos Prefetch de Windows (versiones 17, 23, 26, 30) con herramientas como PECmd, WinPrefetchView o python-prefetch para determinar el historial de ejecución de programas, incluyendo conteos de ejecución, marcas de tiempo y archivos/DLLs referenciados.

¿Qué es análisis-de-archivos-prefetch-para-historial-de-ejecución?

Esta habilidad permite analizar archivos Prefetch de Windows para reconstruir el historial de ejecución de programas en un sistema. Los archivos Prefetch, almacenados en `C:\Windows\Prefetch\`, son generados por el sistema operativo para acelerar la carga de aplicaciones y contienen información crítica como el nombre del ejecutable, el número de ejecuciones, las últimas marcas de tiempo de ejecución (hasta 8 en Windows 10) y los archivos/DLLs referenciados durante los primeros segundos de ejecución. La habilidad soporta el análisis con PECmd (Eric Zimmerman), WinPrefetchView (NirSoft) o la librería python-prefetch para sistemas Linux, cubriendo todas las versiones del formato Prefetch (17, 23, 26 y 30). Es útil en investigaciones forenses para confirmar la ejecución de binarios sospechosos, construir líneas de tiempo de actividad de atacantes, detectar herramientas anti-forenses y correlacionar evidencia de ejecución con otros artefactos como Shimcache o Amcache. El flujo de trabajo incluye extraer y preservar los archivos .pf, parsearlos con scripts o herramientas especializadas, identificar patrones sospechosos mediante búsquedas de herramientas conocidas (Mimikatz, PsExec, etc.) y generar cronologías de ejecución exportables a JSON y CSV.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/analyzing-prefetch-files-for-execution-history

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Análisis de Archivos Prefetch para Historial de Ejecución

Cuándo Usar

  • Cuando se necesita determinar qué programas se ejecutaron en un sistema Windows y cuándo
  • Durante investigaciones de malware para confirmar la ejecución de binarios sospechosos
  • Para establecer una línea de tiempo de uso de aplicaciones durante un incidente
  • Al correlacionar la ejecución de programas con otros artefactos forenses
  • Para identificar herramientas anti-forenses o software no autorizado que se haya ejecutado

Requisitos Previos

  • Acceso al directorio Prefetch de Windows (C:\Windows\Prefetch) desde una imagen forense
  • PECmd (Eric Zimmerman), WinPrefetchView o el analizador python-prefetch
  • Comprensión del formato del archivo Prefetch (versiones 17, 23, 26, 30)
  • Sistema Windows con Prefetch habilitado (por defecto en SO cliente, deshabilitado en servidores)
  • Conocimiento de las convenciones de nomenclatura de Prefetch (APPNAME-HASH.pf)

Flujo de Trabajo

Paso 1: Extraer Archivos Prefetch de la Imagen Forense

# Montar la imagen forense
mount -o ro,loop,offset=$((2048*512)) /cases/case-2024-001/images/evidence.dd /mnt/evidence

# Copiar todos los archivos prefetch
mkdir -p /cases/case-2024-001/prefetch/
cp /mnt/evidence/Windows/Prefetch/*.pf /cases/case-2024-001/prefetch/

# Contar y listar archivos prefetch
ls -la /cases/case-2024-001/prefetch/ | wc -l
ls -la /cases/case-2024-001/prefetch/ | head -30

# Generar hash de todos los archivos prefetch para integridad
sha256sum /cases/case-2024-001/prefetch/*.pf > /cases/case-2024-001/prefetch/pf_hashes.txt

# Nota: El formato del nombre del archivo Prefetch es NOMBRE_EJECUTABLE-XXXXXXXX.pf
# El hash (XXXXXXXX) se basa en la ruta del ejecutable
# El mismo ejecutable desde diferentes rutas crea diferentes archivos prefetch

Paso 2: Analizar Archivos Prefetch con PECmd

# Usando PECmd de Eric Zimmerman (Windows o mediante Mono/Wine en Linux)
# Descargar desde https://ericzimmerman.github.io/

# Analizar un solo archivo prefetch
PECmd.exe -f "C:\cases\prefetch\POWERSHELL.EXE-A]B2C3D4.pf"

# Analizar todos los archivos prefetch y exportar a CSV
PECmd.exe -d "C:\cases\prefetch\" --csv "C:\cases\analysis\" --csvf prefetch_results.csv

# Analizar con salida JSON
PECmd.exe -d "C:\cases\prefetch\" --json "C:\cases\analysis\" --jsonf prefetch_results.json

# La salida incluye para cada archivo:
# - Nombre y ruta del ejecutable
# - Número de ejecuciones
# - Último tiempo de ejecución (hasta 8 marcas de tiempo en Windows 10)
# - Archivos y directorios referenciados durante la ejecución
# - Información del volumen (número de serie, fecha de creación)
# - Hora de creación del archivo Prefetch

Paso 3: Analizar con Python para Análisis en Linux

pip install prefetch

python3 << 'PYEOF'
import os
import json
from datetime import datetime

# Analizar archivos prefetch usando python
import struct

def parse_prefetch(filepath):
    """Analiza un archivo Prefetch de Windows."""
    with open(filepath, 'rb') as f:
        data = f.read()

    # Verificar formato comprimido MAM (Windows 10)
    if data[:4] == b'MAM\x04':
        import lznt1  # o usar DecompressBuffer
        # Los archivos prefetch de Windows 10 están comprimidos
        print(f"  [Formato Win10 comprimido - usar PECmd para análisis completo]")
        return None

    # Versión 17 (XP), 23 (Vista/7), 26 (8.1), 30 (10)
    version = struct.unpack('<I', data[0:4])[0]
    signature = data[4:8]

    if signature != b'SCCA':
        print(f"  Firma de Prefetch inválida")
        return None

    file_size = struct.unpack('<I', data[8:12])[0]
    exec_name = data[16:76].decode('utf-16-le').strip('\x00')
    run_count = struct.unpack('<I', data[208:212])[0] if version >= 23 else struct.unpack('<I', data[144:148])[0]

    result = {
        'version': version,
        'executable': exec_name,
        'file_size': file_size,
        'run_count': run_count,
    }

    # Extraer últimas marcas de tiempo de ejecución
    if version == 23:  # Vista/7 - 1 marca de tiempo
        ts = struct.unpack('<Q', data[128:136])[0]
        result['last_run'] = filetime_to_datetime(ts)
    elif version >= 26:  # Win8+ - hasta 8 marcas de tiempo
        timestamps = []
        for i in range(8):
            ts = struct.unpack('<Q', data[128+i*8:136+i*8])[0]
            if ts > 0:
                timestamps.append(filetime_to_datetime(ts))
        result['last_run_times'] = timestamps

    return result

def filetime_to_datetime(ft):
    """Convierte FILETIME de Windows a cadena de fecha y hora."""
    if ft == 0:
        return None
    timestamp = (ft - 116444736000000000) / 10000000
    try:
        return datetime.utcfromtimestamp(timestamp).strftime('%Y-%m-%d %H:%M:%S UTC')
    except (OSError, ValueError):
        return None

# Procesar todos los archivos prefetch
prefetch_dir = '/cases/case-2024-001/prefetch/'
results = []

for filename in sorted(os.listdir(prefetch_dir)):
    if filename.lower().endswith('.pf'):
        filepath = os.path.join(prefetch_dir, filename)
        print(f"\n=== {filename} ===")
        result = parse_prefetch(filepath)
        if result:
            print(f"  Ejecutable: {result['executable']}")
            print(f"  Núm. Ejecuciones: {result['run_count']}")
            if 'last_run' in result:
                print(f"  Última Ejecución: {result['last_run']}")
            elif 'last_run_times' in result:
                for i, ts in enumerate(result['last_run_times']):
                    print(f"  Hora Ejecución {i+1}: {ts}")
            results.append(result)

# Guardar resultados
with open('/cases/case-2024-001/analysis/prefetch_analysis.json', 'w') as f:
    json.dump(results, f, indent=2)
PYEOF

Paso 4: Identificar Evidencia de Ejecución Sospechosa

# Buscar nombres de herramientas maliciosas conocidas en prefetch
ls /cases/case-2024-001/prefetch/ | grep -iE \
   '(MIMIKATZ|PSEXEC|WMIC|COBALT|BEACON|PWDUMP|PROCDUMP|LAZAGNE|RUBEUS|BLOODHOUND|SHARPHOUND|CERTUTIL|BITSADMIN)'

# Buscar intérpretes de scripts (posible ejecución maliciosa)
ls /cases/case-2024-001/prefetch/ | grep -iE \
   '(POWERSHELL|CMD\.EXE|WSCRIPT|CSCRIPT|MSHTA|REGSVR32|RUNDLL32|MSIEXEC)'

# Buscar herramientas de acceso remoto
ls /cases/case-2024-001/prefetch/ | grep -iE \
   '(TEAMVIEWER|ANYDESK|LOGMEIN|VNC|SPLASHTOP|SCREENCONNECT|AMMYY)'

# Buscar herramientas de exfiltración de datos
ls /cases/case-2024-001/prefetch/ | grep -iE \
   '(RAR|7Z|ZIP|RCLONE|MEGA|DROPBOX|ONEDRIVE|GDRIVE|FTP|CURL|WGET)'

# Encontrar archivos prefetch creados recientemente (ejecutables más nuevos)
ls -lt /cases/case-2024-001/prefetch/ | head -20

# Cruzar referencias con Shimcache y Amcache para confirmación
# La existencia de Prefetch = el programa se ejecutó al menos una vez

Paso 5: Construir Línea de Tiempo de Ejecución

# Crear línea de tiempo a partir de datos prefetch
python3 << 'PYEOF'
import json
import csv

with open('/cases/case-2024-001/analysis/prefetch_analysis.json') as f:
    data = json.load(f)

timeline = []
for entry in data:
    if 'last_run_times' in entry:
        for ts in entry['last_run_times']:
            if ts:
                timeline.append({
                    'timestamp': ts,
                    'executable': entry['executable'],
                    'run_count': entry['run_count'],
                    'source': 'Prefetch'
                })
    elif 'last_run' in entry and entry['last_run']:
        timeline.append({
            'timestamp': entry['last_run'],
            'executable': entry['executable'],
            'run_count': entry['run_count'],
            'source': 'Prefetch'
        })

# Ordenar cronológicamente
timeline.sort(key=lambda x: x['timestamp'])

# Escribir CSV de la línea de tiempo
with open('/cases/case-2024-001/analysis/execution_timeline.csv', 'w', newline='') as f:
    writer = csv.DictWriter(f, fieldnames=['timestamp', 'executable', 'run_count', 'source'])
    writer.writeheader()
    writer.writerows(timeline)

# Imprimir ventana de tiempo sospechosa
for entry in timeline:
    if '2024-01-15' in entry['timestamp'] or '2024-01-16' in entry['timestamp']:
        print(f"  {entry['timestamp']} | {entry['executable']} (x{entry['run_count']})")
PYEOF

Conceptos Clave

ConceptoDescripción
PrefetchOptimización de rendimiento de Windows que precarga datos de aplicaciones y rastrea la ejecución
Firma SCCABytes mágicos que identifican un archivo Prefetch válido
Hash de rutaHash basado en CRC de la ruta del ejecutable que forma parte del nombre del archivo .pf
Número de ejecucionesNúmero de veces que se ha lanzado el ejecutable (puede reiniciarse)
Marcas de tiempo de última ejecuciónWindows 8+ almacena hasta 8 marcas de tiempo de ejecución más recientes
Archivos referenciadosLista de archivos y directorios accedidos durante los primeros 10 segundos de ejecución
Información del volumenNúmero de serie de la unidad y fecha de creación que identifican el volumen de origen
Compresión MAMLos archivos Prefetch de Windows 10 usan compresión MAM4 que requiere descompresión antes del análisis

Herramientas y Sistemas

HerramientaPropósito
PECmdAnalizador de Prefetch de Eric Zimmerman con salida CSV/JSON
WinPrefetchViewHerramienta GUI de NirSoft para ver archivos Prefetch
python-prefetchLibrería Python para analizar archivos Prefetch
Prefetch Hash CalculatorHerramienta para calcular el hash esperado a partir de rutas de ejecutables
KAPERecopilación automatizada de artefactos, incluyendo Prefetch
AutopsyPlataforma forense con módulo de análisis de Prefetch
Plaso/log2timelineHerramienta de super-línea de tiempo que incluye analizador de Prefetch
VelociraptorAgente de endpoint con artefactos de recopilación y análisis de Prefetch

Escenarios Comunes

Escenario 1: Confirmar Ejecución de Malware Buscar en el directorio Prefetch el nombre del ejecutable de malware, confirmar la ejecución mediante la existencia del Prefetch, extraer el número de ejecuciones y la última hora de ejecución, identificar DLLs referenciados para entender el comportamiento del malware, correlacionar con entradas de ejecución automática del registro.

Escenario 2: Línea de Tiempo de Uso de Herramientas del Atacante Identificar archivos Prefetch de PsExec, Mimikatz, BloodHound y otras herramientas del atacante, construir una línea de tiempo cronológica de la ejecución de herramientas, determinar la secuencia del ataque (reconocimiento, robo de credenciales, movimiento lateral), coincidir marcas de tiempo con registros de conexión de red.

Escenario 3: Preparación y Exfiltración de Datos Buscar entradas Prefetch de herramientas de compresión (7z, WinRAR, zip), identificar ejecución de utilidades de transferencia de archivos (rclone, clientes FTP), verificar ejecución de clientes de almacenamiento en la nube, cronologizar cuándo ocurrieron la preparación y transferencia de datos.

Escenario 4: Detección de Anti-Forense Verificar la ejecución de herramientas anti-forenses conocidas (CCleaner, Eraser, SDelete), identificar si el directorio Prefetch fue limpiado recientemente (menos archivos de los esperados para un sistema activo), anotar marcas de tiempo de ejecución de herramientas anti-forenses en relación con otra evidencia.

Formato de Salida

Resumen de Análisis Prefetch:
  Sistema: Windows 10 Pro (Build 19041)
  Archivos Prefetch: 234
  Período de Análisis: Todo el historial de ejecución disponible

  Estadísticas de Ejecución:
    Ejecutables únicos totales: 234
    Primera ejecución: 2023-06-15 (instalación del sistema)
    Última ejecución: 2024-01-18 23:45 UTC

  Ejecuciones Sospechosas:
    MIMIKATZ.EXE-5F2A3B1C.pf
      Núm. Ejecuciones: 3 | Última: 2024-01-16 02:30:15 UTC
    PSEXEC.EXE-AD70946C.pf
      Núm. Ejecuciones: 7 | Última: 2024-01-16 02:45:30 UTC
    RCLONE.EXE-1F3E5A2B.pf
      Núm. Ejecuciones: 2 | Última: 2024-01-17 03:15:00 UTC
    POWERSHELL.EXE-022A1004.pf
      Núm. Ejecuciones: 145 | Última: 2024-01-18 14:00:00 UTC

  Línea de Tiempo del Ataque (desde Prefetch):
    2024-01-15 14:32 - POWERSHELL.EXE (acceso inicial)
    2024-01-16 02:30 - MIMIKATZ.EXE (robo de credenciales)
    2024-01-16 02:45 - PSEXEC.EXE (movimiento lateral)
    2024-01-17 03:15 - RCLONE.EXE (exfiltración de datos)

  Informe: /cases/case-2024-001/analysis/execution_timeline.csv

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-dpapi-for-credential-access

Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys) online or offline using SharpDPAPI, SharpChrome, Mimikatz, or Impacket

abusing-shadow-credentials-for-privesc

Take over Active Directory accounts by writing attacker-controlled public keys to msDS-KeyCredentialLink (Shadow Credentials) with pyWhisker, Whisker, or Certipy, then authenticate via PKINIT to recover the target

achieving-cmmc-level-2-compliance

>-

acquiring-disk-image-with-dd-and-dcfldd

Create forensically sound bit-for-bit disk images with dd or dcfldd on a Linux forensic workstation, preserving evidence integrity through hash verification (MD5/SHA) during acquisition. Use when imaging a suspect drive, USB device, or memory card for investigation, preserving volatile disk evidence during incident response, or producing a verified copy for legal or law-enforcement proceedings before any destructive analysis.

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-bootkit-and-rootkit-samples

Analyzes bootkit and advanced rootkit malware infecting the Master

analyzing-browser-forensics-with-hindsight

Parse Chromium-based browser databases with Hindsight to extract and correlate browsing history, downloads, cookies, cached content, autofill data, saved passwords, and extensions from Chrome, Edge, Brave, Opera, and Vivaldi into a unified timeline (XLSX, JSON, or SQLite output). Use during incident response, insider-threat investigations, or criminal cases when you need to reconstruct a user

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

Skills relacionados