Communitygithub.com

Análise de Arquivos Prefetch para Histórico de Execução

Analisar arquivos Prefetch do Windows (versões 17, 23, 26, 30) com ferramentas como PECmd, WinPrefetchView ou python-prefetch para determinar o histórico de execução de programas, incluindo contagem de execuções, timestamps e arquivos/DLLs referenciados. Use para construir uma linha do tempo de execução em um sistema Windows, confirmar se um binário suspeito foi executado ou correlacionar evidências de execução com outros artefatos forenses durante uma investigação.

O que é Análise de Arquivos Prefetch para Histórico de Execução?

Esta skill automatiza a análise de arquivos Prefetch do Windows (versões 17, 23, 26, 30) para recuperar o histórico de execução de programas. Ela é essencial para perícias digitais, investigações de malware e resposta a incidentes, pois permite confirmar a execução de binários suspeitos, construir linhas do tempo de execução e correlacionar evidências com outros artefatos forenses como Shimcache e Amcache. A skill suporta múltiplas plataformas através de ferramentas como PECmd (Eric Zimmerman), WinPrefetchView e a biblioteca Python `prefetch`. O fluxo de trabalho inclui a extração de arquivos Prefetch de uma imagem forense, análise detalhada (contagem de execuções, timestamps, arquivos referenciados), identificação de execuções suspeitas (ferramentas de ataque, scripts, exfiltração) e geração de uma linha do tempo cronológica em CSV. A automação é fornecida tanto para ambientes Windows (PECmd) quanto Linux (scripts Python), garantindo flexibilidade em diferentes configurações de análise forense.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Analisando Arquivos Prefetch para Histórico de Execução

Quando Usar

  • Quando for necessário determinar quais programas foram executados em um sistema Windows e quando
  • Durante investigações de malware para confirmar a execução de binários suspeitos
  • Para estabelecer uma linha do tempo de uso de aplicativos durante um incidente
  • Ao correlacionar a execução de programas com outros artefatos forenses
  • Para identificar ferramentas anti-forenses ou software não autorizado que foi executado

Pré-requisitos

  • Acesso ao diretório Prefetch do Windows (C:\Windows\Prefetch) a partir de uma imagem forense
  • PECmd (Eric Zimmerman), WinPrefetchView ou um analisador python-prefetch
  • Compreensão do formato do arquivo Prefetch (versões 17, 23, 26, 30)
  • Sistema Windows com Prefetch habilitado (padrão em sistemas cliente, desabilitado em servidores)
  • Conhecimento das convenções de nomenclatura do Prefetch (APPNAME-HASH.pf)

Fluxo de Trabalho

Passo 1: Extrair Arquivos Prefetch da Imagem Forense

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

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

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

# Calcular hashes de todos os arquivos prefetch para integridade
sha256sum /cases/case-2024-001/prefetch/*.pf > /cases/case-2024-001/prefetch/pf_hashes.txt

# Nota: O formato do nome do arquivo Prefetch é NOME_EXECUTAVEL-XXXXXXXX.pf
# O hash (XXXXXXXX) é baseado no caminho do executável
# O mesmo executável de caminhos diferentes cria arquivos prefetch diferentes

Passo 2: Analisar Arquivos Prefetch com PECmd

# Usando PECmd de Eric Zimmerman (Windows ou via Mono/Wine no Linux)
# Download em https://ericzimmerman.github.io/

# Analisar um único arquivo prefetch
PECmd.exe -f "C:\cases\prefetch\POWERSHELL.EXE-A]B2C3D4.pf"

# Analisar todos os arquivos prefetch e gerar saída CSV
PECmd.exe -d "C:\cases\prefetch\" --csv "C:\cases\analysis\" --csvf prefetch_results.csv

# Analisar com saída JSON
PECmd.exe -d "C:\cases\prefetch\" --json "C:\cases\analysis\" --jsonf prefetch_results.json

# A saída inclui para cada arquivo:
# - Nome e caminho do executável
# - Contagem de execuções
# - Último horário de execução (até 8 timestamps no Windows 10)
# - Arquivos e diretórios referenciados durante a execução
# - Informações de volume (número de série, data de criação)
# - Data de criação do arquivo Prefetch

Passo 3: Analisar com Python para Análise Baseada em Linux

pip install prefetch

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

# Analisa arquivos prefetch usando python
import struct

def parse_prefetch(filepath):
    """Analisa um arquivo Windows Prefetch."""
    with open(filepath, 'rb') as f:
        data = f.read()

    # Verifica formato comprimido MAM (Windows 10)
    if data[:4] == b'MAM\x04':
        import lznt1  # ou use DecompressBuffer
        # Arquivos prefetch do Windows 10 são comprimidos
        print(f"  [Formato Win10 comprimido - use PECmd para análise completa]")
        return None

    # Versão 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"  Assinatura 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,
    }

    # Extrai timestamps de última execução
    if version == 23:  # Vista/7 - 1 timestamp
        ts = struct.unpack('<Q', data[128:136])[0]
        result['last_run'] = filetime_to_datetime(ts)
    elif version >= 26:  # Win8+ - até 8 timestamps
        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):
    """Converte Windows FILETIME em string datetime."""
    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

# Processa todos os arquivos 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"  Executável: {result['executable']}")
            print(f"  Execuções:  {result['run_count']}")
            if 'last_run' in result:
                print(f"  Último Run: {result['last_run']}")
            elif 'last_run_times' in result:
                for i, ts in enumerate(result['last_run_times']):
                    print(f"  Execução {i+1}: {ts}")
            results.append(result)

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

Passo 4: Identificar Evidências de Execução Suspeita

# Procurar por nomes de ferramentas maliciosas conhecidas nos prefetch
ls /cases/case-2024-001/prefetch/ | grep -iE \
   '(MIMIKATZ|PSEXEC|WMIC|COBALT|BEACON|PWDUMP|PROCDUMP|LAZAGNE|RUBEUS|BLOODHOUND|SHARPHOUND|CERTUTIL|BITSADMIN)'

# Procurar por interpretadores de script (potencial execução maliciosa)
ls /cases/case-2024-001/prefetch/ | grep -iE \
   '(POWERSHELL|CMD\.EXE|WSCRIPT|CSCRIPT|MSHTA|REGSVR32|RUNDLL32|MSIEXEC)'

# Procurar por ferramentas de acesso remoto
ls /cases/case-2024-001/prefetch/ | grep -iE \
   '(TEAMVIEWER|ANYDESK|LOGMEIN|VNC|SPLASHTOP|SCREENCONNECT|AMMYY)'

# Procurar por ferramentas de exfiltração de dados
ls /cases/case-2024-001/prefetch/ | grep -iE \
   '(RAR|7Z|ZIP|RCLONE|MEGA|DROPBOX|ONEDRIVE|GDRIVE|FTP|CURL|WGET)'

# Encontrar arquivos prefetch criados recentemente (executáveis mais novos)
ls -lt /cases/case-2024-001/prefetch/ | head -20

# Correlacionar com Shimcache e Amcache para confirmação
# Existência de Prefetch = programa foi executado pelo menos uma vez

Passo 5: Construir Linha do Tempo de Execução

# Criar linha do tempo a partir dos dados 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 cronologicamente
timeline.sort(key=lambda x: x['timestamp'])

# Escrever CSV da linha do tempo
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 janela de tempo suspeita
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

Conceitos Chave

ConceitoDescrição
PrefetchOtimização de desempenho do Windows que pré-carrega dados de aplicativos e rastreia execução
Assinatura SCCABytes mágicos que identificam um arquivo Prefetch válido
Hash do caminhoHash baseado em CRC do caminho do executável formando parte do nome do arquivo .pf
Contagem de execuçõesNúmero de vezes que o executável foi iniciado (pode sofrer wrap)
Timestamps de última execuçãoWindows 8+ armazena até 8 timestamps de execução mais recentes
Arquivos referenciadosLista de arquivos e diretórios acessados durante os primeiros 10 segundos de execução
Informações de volumeNúmero de série da unidade e data de criação identificando o volume de origem
Compressão MAMArquivos Prefetch do Windows 10 usam compressão MAM4 que requer descompressão antes da análise

Ferramentas e Sistemas

FerramentaFinalidade
PECmdAnalisador Prefetch de Eric Zimmerman com saída CSV/JSON
WinPrefetchViewFerramenta GUI NirSoft para visualizar arquivos Prefetch
python-prefetchBiblioteca Python para analisar arquivos Prefetch
Calculadora de Hash PrefetchFerramenta para calcular o hash esperado a partir de caminhos de executáveis
KAPEColeta automatizada de artefatos, incluindo Prefetch
AutopsyPlataforma forense com módulo de análise Prefetch
Plaso/log2timelineFerramenta de super-linha do tempo que inclui analisador Prefetch
VelociraptorAgente de endpoint com artefatos de coleta e análise Prefetch

Cenários Comuns

Cenário 1: Confirmar Execução de Malware Pesquise no diretório Prefetch pelo nome do executável do malware, confirme a execução pela existência do Prefetch, extraia a contagem de execuções e o último horário, identifique DLLs referenciadas para entender o comportamento do malware, correlacione com entradas de inicialização automática do registro.

Cenário 2: Linha do Tempo de Uso de Ferramentas do Atacante Identifique arquivos Prefetch para PsExec, Mimikatz, BloodHound e outras ferramentas do atacante, construa uma linha do tempo cronológica da execução das ferramentas, determine a sequência do ataque (reconhecimento, roubo de credenciais, movimento lateral), combine timestamps com logs de conexão de rede.

Cenário 3: Estágio e Exfiltração de Dados Procure entradas Prefetch de ferramentas de compressão (7z, WinRAR, zip), identifique execução de utilitários de transferência de arquivos (rclone, clientes FTP), verifique execução de clientes de armazenamento em nuvem, timeline de quando o estágio e a transferência de dados ocorreram.

Cenário 4: Detecção Anti-Forense Verifique a execução de ferramentas anti-forenses conhecidas (CCleaner, Eraser, SDelete), identifique se o diretório Prefetch foi limpo recentemente (menos arquivos do que o esperado para um sistema ativo), observe timestamps de execução de ferramentas anti-forenses em relação a outras evidências.

Formato de Saída

Resumo da Análise Prefetch:
  Sistema: Windows 10 Pro (Build 19041)
  Arquivos Prefetch: 234
  Período de Análise: Todo o histórico de execução disponível

  Estatísticas de Execução:
    Total de executáveis únicos: 234
    Primeira execução: 2023-06-15 (instalação do sistema)
    Última execução: 2024-01-18 23:45 UTC

  Execuções Suspeitas:
    MIMIKATZ.EXE-5F2A3B1C.pf
      Execuções: 3 | Última: 2024-01-16 02:30:15 UTC
    PSEXEC.EXE-AD70946C.pf
      Execuções: 7 | Última: 2024-01-16 02:45:30 UTC
    RCLONE.EXE-1F3E5A2B.pf
      Execuções: 2 | Última: 2024-01-17 03:15:00 UTC
    POWERSHELL.EXE-022A1004.pf
      Execuções: 145 | Última: 2024-01-18 14:00:00 UTC

  Linha do Tempo do Ataque (a partir do Prefetch):
    2024-01-15 14:32 - POWERSHELL.EXE (acesso inicial)
    2024-01-16 02:30 - MIMIKATZ.EXE (roubo de credenciais)
    2024-01-16 02:45 - PSEXEC.EXE (movimento lateral)
    2024-01-17 03:15 - RCLONE.EXE (exfiltração de dados)

  Relatório: /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,

Habilidades Relacionadas