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:
- leia a versão local da habilidade no frontmatter
- se o acesso à rede estiver disponível e o usuário não tiver proibido o uso da rede, busque o
SKILL.mdremoto de:https://raw.githubusercontent.com/guelfoweb/malware-analysis-static/main/SKILL.md
- leia o campo
versionremoto do frontmatter e compare com a versão local - 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
- se o usuário recusar a atualização, continue a análise com a versão local atual
- 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.mdeREPORT.md
Não pare no primeiro obstáculo. Se um método falhar:
- tente uma ferramenta equivalente
- tente uma visão de nível inferior, como desmontagem, seções, recursos, blobs brutos ou metadados
- tente uma abordagem diferente de extração ou decodificação
- documente o que falhou, por que falhou e o que foi tentado
- 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:
- detecte o SO e o ambiente de shell
- descubra ferramentas disponíveis dinamicamente
- escolha a melhor ferramenta disponível para cada tarefa
- use um fallback se a ferramenta preferida estiver ausente
- pergunte ao usuário antes de instalar qualquer ferramenta ausente
- não instale ferramentas silenciosamente
- 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:
filesha256sumou equivalentestringsripgrep(rg)python3oupyxxdbase64yaraobjdumpnmexiftool7z
Ferramentas especializadas importantes:
- Android: CLI do
jadx,apktool,aapt2,strings,ripgrep(rg),yara, opcionalfloss,bundletool,apkanalyzer - PE/.NET:
strings,yara,floss,xorsearch,radare2(r2),rabin2,ilspycmd,monodis,pefile,lief, opcional Ghidra headless comanalyzeHeadless,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 comanalyzeHeadless - Web/script/código-fonte:
strings,ripgrep(rg),sed,awk,tr,xxd,base64,iconv,xmllint,python3, opcionalnode,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:
filesha256sumou ferramenta de hash equivalentestringsripgrep(rg)python3oupyyara7zobjdumpnmexiftooljadxapktoolaapt2flossxorsearchradare2(r2)rabin2- Ghidra headless com
analyzeHeadless ilspycmdmonodisoletools(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:
readelfbinwalkunzipzipinfoxxdbase64sedawktrxmllinticonvotoolelipono macOSbundletoolapkanalyzerrtfobj- CyberChef CLI
Opcionais ou Situacionais
Estas são úteis para formatos, famílias ou preferências de analista específicos:
capaupxsigchecknodephpperlpwsh- 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 trabalhoREPORT.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 AtualInventário de AmostrasAmbiente e FerramentasLinha do TempoDescobertas ConfirmadasDecodificadores e AlgoritmosAtribuição de FamíliaÍndice de EvidênciasPerguntas em AbertoPróximas AçõesAvaliaçã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.mdcaso/REPORT.mdcaso/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.