CommunityPesquisa e Análise de Dadosgithub.com

guelfoweb/analise-malware-estatica

Habilidade Codex para análise estática de malware em binários suspeitos.

O que é analise-malware-estatica?

Esta habilidade do Codex é especializada em análise estática de malware, automatizando a engenharia reversa de binários suspeitos de múltiplas plataformas — Windows PE, ELF, Mach-O, APKs, documentos Office e payloads web. Ela orienta o agente a realizar análises profundas e autônomas, rastreando fluxo de controle e dados, decodificando blobs, extraindo configurações de C2 e reconstruindo lógicas de descriptografia sem interromper o usuário para ações óbvias. A habilidade gerencia versões automaticamente, verifica ferramentas disponíveis por tipo de amostra e mantém arquivos persistentes de caso (AGENTS.md e REPORT.md) para documentar todo o processo. Projetada para evitar execução direta do malware, a skill prioriza análises offline e só pergunta ao usuário quando decisões críticas de instalação, rede ou segurança são necessárias.

Funciona com✓Claude Code✓Codex CLI~Cursor
npx skills add guelfoweb/malware-analysis-static

Installed? Explore more Pesquisa e Análise de Dados skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Perguntar na sua IA favorita

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

Documentação

Análise de Malware

Mostre este aviso antes de iniciar a análise:

Aviso: a análise de malware deve ser realizada em uma máquina de laboratório isolada ou VM descartável, não em uma estação de trabalho pessoal ou de produção.

Controle de Versão e Verificação de Atualização

Esta habilidade usa versionamento explícito.

Comportamento de inicialização:

  1. leia a versão local da habilidade no frontmatter
  2. se o acesso à rede estiver disponível e o usuário não tiver proibido o uso da rede, busque o SKILL.md remoto de:
    • https://raw.githubusercontent.com/guelfoweb/malware-analysis-static/main/SKILL.md
  3. leia o campo version remoto do frontmatter e compare com a versão local
  4. se a habilidade instalada estiver desatualizada, informe claramente ao usuário que existe uma versão mais recente e pergunte se deseja atualizar a habilidade antes de continuar
  5. se o usuário recusar a atualização, continue a análise com a versão local atual
  6. se o arquivo remoto estiver indisponível ou o frontmatter não puder ser interpretado, continue normalmente e registre que a verificação de atualização não pôde ser concluída

Regras:

  • não bloqueie a análise se a verificação de atualização falhar
  • não atualize automaticamente de forma silenciosa
  • só pergunte ao usuário sobre atualização quando uma versão mais nova estiver realmente disponível
  • se as versões coincidirem, continue sem exibir conversas desnecessárias sobre atualização

Escopo

Use esta habilidade para:

  • Binários PE do Windows, DLLs e assemblies .NET
  • Binários ELF do Linux
  • Binários Mach-O do macOS
  • APKs Android
  • Documentos Office
  • Payloads web como HTML, HTM, MHTML, SVG, XML e XSL com script embutido ou lógica de contrabando
  • Scripts e payloads de código-fonte como JS, JSE, VBS, VBE, VBA, HTA, WSF, WSH, PowerShell, BAT, CMD, scripts shell, Python, PHP, Perl, Ruby, Lua, AutoIt, loaders Node.js, webshells e cadeias de downloader

O modo principal é a análise estática. Se o usuário solicitar explicitamente análise dinâmica, prepare ou use apenas um laboratório descartável isolado. Nunca execute malware em uma estação de trabalho pessoal, sistema de produção ou sistema operacional host que contenha credenciais reais ou dados do usuário.

Objetivos

Para cada caso, tente determinar:

  • tipo de arquivo e arquitetura
  • MD5, SHA1 e SHA256
  • provável família de malware, cluster ou kit de ferramentas, se apoiado por evidências
  • infraestrutura C2
  • URLs de queda e URLs de estágio
  • endpoints de configuração e configuração embutida
  • comportamento de persistência e antianálise
  • estágios embutidos, descartados ou baixados
  • métodos de ofuscação, empacotamento, codificação, compressão e criptografia
  • lógica de decodificação, descriptografia, desempacotamento e estagiamento

Declare a incerteza explicitamente. Não faça afirmações sem suporte.

Mandato de Engenharia Reversa

Faça engenharia reversa real de malware, não apenas extração de IOCs.

Regra de autonomia:

  • prossiga automaticamente para a próxima etapa analítica razoável sempre que estiver dentro do escopo autorizado, das ferramentas disponíveis e do contexto seguro do laboratório
  • não pare para perguntar ao usuário se deve continuar com a próxima ação de análise óbvia
  • não pergunte ao usuário para escolher entre etapas analíticas seguintes equivalentes quando uma pode ser tentada imediatamente
  • se a recuperação remota não estiver já autorizada, continue automaticamente com a análise offline mais profunda disponível, em vez de oferecer a recuperação como uma escolha
  • prefira a continuação offline por padrão sempre que a recuperação remota exigir autorização adicional
  • só interrompa o fluxo para perguntar ao usuário quando uma decisão real for necessária:
    • uma ferramenta ausente precisa ser instalada
    • uma etapa de recuperação de rede ou execução excederia o escopo já autorizado
    • a próxima ação cria uma decisão significativa de segurança ou custo
    • o progresso é bloqueado por uma dependência externa não resolvida

Exemplos do que deve ser feito automaticamente:

  • analisar o próximo fluxo, objeto, recurso, macro, bloco de script ou overlay suspeito
  • recuperar e analisar o próximo estágio quando uma URL de queda ou URL de estágio já estiver no escopo
  • seguir referências cruzadas de strings suspeitas para o código
  • decodificar o próximo blob quando o código pai definir claramente o decodificador
  • inspecionar o próximo artefato relevante na cadeia de execução ou comprometimento

Quando ambos estiverem disponíveis:

  • análise offline mais profunda ou engenharia reversa de artefatos já disponíveis
  • recuperação remota que ainda não foi explicitamente autorizada

O Codex deve escolher o caminho offline automaticamente e continuar trabalhando sem perguntar.

Mentalidade necessária:

  • rastreie o fluxo de controle e o fluxo de dados quando as strings forem insuficientes
  • passe da triagem para a reversão mais profunda quando a lógica interessante estiver oculta
  • inspecione imports, referências cruzadas, recursos, overlays, blobs de configuração e rotinas de decodificação
  • reconstrua a lógica de decodificação, descriptografia, descompressão e estagiamento quando viável
  • use desmontagem, descompilação, ferramentas de engenharia reversa headless e pequenos scripts auxiliares conforme necessário
  • preserve todos os resultados importantes em arquivos de evidência, AGENTS.md e REPORT.md

Não pare no primeiro obstáculo. Se um método falhar:

  1. tente uma ferramenta equivalente
  2. tente uma visão de nível inferior, como desmontagem, seções, recursos, blobs brutos ou metadados
  3. tente uma abordagem diferente de extração ou decodificação
  4. documente o que falhou, por que falhou e o que foi tentado
  5. continue até que o bloqueador restante seja real e claramente explicado

Exemplos de escalação válidos:

  • strings -> strings decodificadas -> referências cruzadas -> desmontagem -> descompilação
  • revisão de manifesto -> código descompilado -> smali -> inspeção de biblioteca nativa
  • extração de macro -> reconstrução de script -> emulação de decodificador -> extração de estágio
  • metadados PE -> imports -> extração de blob de configuração -> análise headless do Ghidra

Só pare quando:

  • o escopo solicitado estiver completo
  • o bloqueador restante não puder ser resolvido com as ferramentas e permissões disponíveis
  • o progresso adicional exigir execução que o usuário não autorizou

Política de Descoberta e Instalação de Ferramentas

Esta habilidade deve funcionar como um único SKILL.md. Não presuma que scripts auxiliares existam ao lado dele.

Antes da análise:

  1. detecte o SO e o ambiente de shell
  2. descubra ferramentas disponíveis dinamicamente
  3. escolha a melhor ferramenta disponível para cada tarefa
  4. use um fallback se a ferramenta preferida estiver ausente
  5. pergunte ao usuário antes de instalar qualquer ferramenta ausente
  6. não instale ferramentas silenciosamente
  7. após autorização, use o gerenciador de pacotes nativo ou o caminho de instalação oficial mais direto

Verificação de ferramentas por tipo de amostra:

  • após identificar o tipo de amostra, verifique as ferramentas necessárias para esse caminho de análise específico antes da análise aprofundada começar
  • verifique apenas as ferramentas relevantes para o tipo de amostra atual, não a lista global completa de ferramentas
  • se uma ferramenta ou capacidade obrigatória para esse tipo de amostra estiver ausente, pergunte ao usuário se deseja instalá-la antes de prosseguir
  • se existir um fallback válido, use o fallback e registre a limitação
  • se apenas ferramentas fortemente recomendadas estiverem ausentes, continue, a menos que a capacidade ausente bloqueie uma etapa concreta
  • não interrompa o fluxo de trabalho para instalar ferramentas irrelevantes não relacionadas ao tipo de amostra atual

Comandos típicos de descoberta:

uname -s
command -v file strings rg python3 node php perl bash sh pwsh yara objdump readelf nm otool lipo r2 rabin2 jadx apktool aapt2 floss xorsearch ilspycmd monodis oleid olevba oledump.py exiftool binwalk 7z upx analyzeHeadless xmllint xxd base64 iconv
python3 -c "import pefile, lief" 2>/dev/null
$PSVersionTable.PSVersion
Get-Command file,strings,rg,python,py,node,php,perl,pwsh,yara,objdump,llvm-objdump,dumpbin,r2,rabin2,jadx,apktool,aapt2,floss,xorsearch,ilspycmd,monodis,oleid,olevba,oledump.py,exiftool,7z,analyzeHeadless,xmllint -ErrorAction SilentlyContinue
py -c "import pefile, lief" 2>$null

Ferramentas principais:

  • file
  • sha256sum ou equivalente
  • strings
  • ripgrep (rg)
  • python3 ou py
  • xxd
  • base64
  • yara
  • objdump
  • nm
  • exiftool
  • 7z

Ferramentas especializadas importantes:

  • Android: CLI do jadx, apktool, aapt2, strings, ripgrep (rg), yara, opcional floss, bundletool, apkanalyzer
  • PE/.NET: strings, yara, floss, xorsearch, radare2 (r2), rabin2, ilspycmd, monodis, pefile, lief, opcional Ghidra headless com analyzeHeadless, capa, upx, sigcheck
  • Office/script: oletools (oleid, olevba), oledump.py, unzip, zipinfo, strings, ripgrep (rg), sed, awk, tr, opcional CyberChef CLI, rtfobj
  • ELF/Mach-O: objdump, readelf, nm, otool, lipo, binwalk, radare2 (r2), rabin2, opcional Ghidra headless com analyzeHeadless
  • Web/script/código-fonte: strings, ripgrep (rg), sed, awk, tr, xxd, base64, iconv, xmllint, python3, opcional node, php, perl, pwsh, CyberChef CLI, beautifiers ou analisadores AST

Interpretadores e runtimes podem ser usados apenas para análise de texto segura, extração de AST, embelezamento ou reimplementação de um decodificador em dados inertes. Não execute a amostra maliciosa como está com node, php, perl, pwsh, python, bash ou outros runtimes.

Exemplos de instalação, somente após autorização do usuário:

# Linux
sudo apt-get update
sudo apt-get install -y file binutils unzip p7zip-full yara apktool aapt default-jre mono-utils exiftool binwalk upx-ucl
python3 -m pip install --user flare-floss oletools oledump pefile lief capa
dotnet tool install --global ilspycmd
# macOS
brew update
brew install binutils p7zip yara apktool openjdk python dotnet exiftool binwalk upx
pip3 install --user flare-floss oletools oledump pefile lief capa
dotnet tool install --global ilspycmd
# Windows
winget install --id Python.Python.3.12 --accept-source-agreements --accept-package-agreements
winget install --id OpenJS.NodeJS --accept-source-agreements --accept-package-agreements
winget install --id Microsoft.DotNet.SDK.8 --accept-source-agreements --accept-package-agreements
winget install --id OpenJDK.OpenJDK.17 --accept-source-agreements --accept-package-agreements
winget install --id Microsoft.Sysinternals --accept-source-agreements --accept-package-agreements
winget install --id YARA.YARA --accept-source-agreements --accept-package-agreements
winget install --id OliverBetz.ExifTool --accept-source-agreements --accept-package-agreements
py -m pip install --user flare-floss oletools oledump pefile lief capa
dotnet tool install --global ilspycmd

Para Ghidra headless, baixe o lançamento oficial e exponha support/analyzeHeadless ou support\analyzeHeadless.bat no PATH.

Conjunto de Ferramentas Necessárias

Use estes níveis para decidir se o ambiente é suficiente para uma análise completa.

Obrigatórias

Estas são as ferramentas ou capacidades esperadas para um fluxo de trabalho completo de ponta a ponta nos principais tipos de amostra:

  • file
  • sha256sum ou ferramenta de hash equivalente
  • strings
  • ripgrep (rg)
  • python3 ou py
  • yara
  • 7z
  • objdump
  • nm
  • exiftool
  • jadx
  • apktool
  • aapt2
  • floss
  • xorsearch
  • radare2 (r2)
  • rabin2
  • Ghidra headless com analyzeHeadless
  • ilspycmd
  • monodis
  • oletools (oleid, olevba)
  • oledump.py
  • Módulos Python pefile, lief

Fortemente Recomendadas

Estas não são obrigatórias em todos os casos, mas um fluxo de trabalho completo de analista de malware se beneficiará regularmente delas:

  • readelf
  • binwalk
  • unzip
  • zipinfo
  • xxd
  • base64
  • sed
  • awk
  • tr
  • xmllint
  • iconv
  • otool e lipo no macOS
  • bundletool
  • apkanalyzer
  • rtfobj
  • CyberChef CLI

Opcionais ou Situacionais

Estas são úteis para formatos, famílias ou preferências de analista específicos:

  • capa
  • upx
  • sigcheck
  • node
  • php
  • perl
  • pwsh
  • beautifiers ou analisadores AST para casos com muitos scripts

Regra de interpretação:

  • se uma ferramenta ou capacidade obrigatória estiver ausente, a análise ainda pode continuar, mas o Codex deve dizer que o ambiente está degradado e usar o melhor fallback
  • se uma ferramenta fortemente recomendada estiver ausente, continue normalmente, a menos que a capacidade ausente bloqueie uma etapa específica
  • se uma ferramenta opcional estiver ausente, mencione-a apenas quando isso melhoraria materialmente o caso atual

Arquivos de Caso Persistentes

Mantenha sempre dois arquivos na raiz do caso:

  • AGENTS.md: memória de trabalho
  • REPORT.md: relatório final voltado para o analista, atualizado durante o trabalho

AGENTS.md

Crie ou leia AGENTS.md antes do trabalho substancial. Atualize-o após cada ação ou descoberta significativa.

Use-o para preservar:

  • amostra atual e status atual
  • disponibilidade de ferramentas e decisões de fallback
  • descobertas confirmadas e proveniência
  • estágios extraídos e relações pai-filho
  • notas do decodificador ou descriptografia
  • status de atribuição de família
  • bloqueadores, perguntas em aberto e próximas ações

Seções recomendadas:

  • Resumo Atual
  • Inventário de Amostras
  • Ambiente e Ferramentas
  • Linha do Tempo
  • Descobertas Confirmadas
  • Decodificadores e Algoritmos
  • Atribuição de Família
  • Índice de Evidências
  • Perguntas em Aberto
  • Próximas Ações
  • Avaliação Final

REPORT.md

Crie REPORT.md durante a análise, não apenas no final. Atualize o mesmo arquivo se o trabalho continuar.

REPORT.md deve permanecer claro, simples e fácil de consultar. É o resumo limpo; AGENTS.md é a memória de trabalho.

REPORT.md deve conter:

  • resumo do caso
  • inventário de amostras
  • cadeia de execução ou comprometimento ordenada
  • detalhes por estágio com:
    • nome do arquivo ou rótulo
    • MD5
    • SHA1
    • SHA256
    • tipo de arquivo
    • origem ou estágio pai
    • papel na cadeia
  • indicadores separados em:
    • URLs de queda
    • URLs de estágio
    • URLs C2
    • domínios
    • endereços IP
  • lógica de decodificação, descriptografia, desempacotamento ou estagiamento
  • descobertas de persistência e antianálise
  • avaliação da família de malware
  • confiança e limitações

Se a cadeia não puder ser totalmente reconstruída, diga onde ela se quebra e por quê.

Preservação de Evidências

Sempre crie um diretório de caso e preserve as evidências, mesmo que a solicitação pareça limitada à extração de IOC.

Layout recomendado:

  • caso/AGENTS.md
  • caso/REPORT.md
  • caso/00-intake/
  • caso/01-triage/
  • caso/02-strings/
  • caso/03-estatica/
  • caso/04-decodificacao/
  • caso/05-config/
  • caso/06-extraido/
  • caso/07-estagios/
  • caso/08-yara/
  • caso/09-relatorios/
  • caso/10-iocs/
  • caso/11-notas/

Crie-o manualmente se necessário:

mkdir -p caso/{00-intake,01-triage,02-strings,03-estatica,04-decodificacao,05-config,06-extraido,07-estagios,08-yara,09-relatorios,10-iocs,11-notas}

Always create the case directory early and populate it with the working files before starting the automated analysis.

Habilidades Relacionadas