analyzing-packed-malware-with-upx-unpacker
Faz seu agente identificar e descompactar programas maliciosos que foram 'empacotados'. Isso permite analisar o código original do programa.
O que ela faz
Esta ferramenta ajuda a descompactar programas que foram 'empacotados' com uma ferramenta chamada UPX. Isso é útil quando um programa malicioso (vírus) é disfarçado e você precisa ver o código original dele para análise.
Quando usar
- ✓Quando um programa parece suspeito e tem poucas informações visíveis.
- ✓Quando outras ferramentas indicam que o programa está 'empacotado' com UPX.
- ✓Quando você precisa analisar o código original de um programa para fins de segurança.
Exemplo do que pedir para a IA
“Descompacte este arquivo suspeito para que eu possa analisá-lo.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
A ferramenta tenta descompactar o arquivo usando o UPX. Se isso falhar porque o 'empacotador' foi modificado, ela tenta corrigir as partes alteradas antes de descompactar novamente.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill analyzing-packed-malware-with-upx-unpackerOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/analyzing-packed-malware-with-upx-unpacker/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Analisando Malware Empacotado com Desempacotador UPX
Quando Usar
- Análise estática revela seções de alta entropia e importações mínimas, indicando que o binário está empacotado
- PEiD, Detect It Easy ou PEStudio identificam UPX ou outro empacotador conhecido
- A tabela de importação contém apenas LoadLibrary e GetProcAddress (resolução de importação em tempo de execução típica de binários empacotados)
- Você precisa recuperar o binário original para desassemblagem e descompilação adequadas em Ghidra ou IDA
- A descompressão automática de UPX falha porque o autor do malware modificou os bytes mágicos ou cabeçalhos do UPX
Não use ao lidar com empacotadores personalizados, protetores baseados em VM (Themida, VMProtect) ou amostras onde a descompressão dinâmica via depuração é mais apropriada.
Pré-requisitos
- UPX (Ultimate Packer for eXecutables) instalado (
apt install upx-uclou baixe em https://upx.github.io/) - Detect It Easy (DIE) para identificação de empacotador
- Python 3.8+ com a biblioteca
pefilepara reparo manual de cabeçalhos - x64dbg ou x32dbg para descompressão manual quando ferramentas automatizadas falham
- PE-bear ou CFF Explorer para inspeção e reparo de cabeçalhos PE
- VM de análise isolada sem conectividade de rede
Fluxo de Trabalho
Passo 1: Identificar o Empacotador
Determine se a amostra está empacotada e identifique o empacotador:
# Check with Detect It Easy
diec suspect.exe
# Check with UPX (test without unpacking)
upx -t suspect.exe
# Python-based entropy and packer detection
python3 << 'PYEOF'
import pefile
import math
pe = pefile.PE("suspect.exe")
print("Section Analysis:")
for section in pe.sections:
name = section.Name.decode().rstrip('\x00')
entropy = section.get_entropy()
raw = section.SizeOfRawData
virtual = section.Misc_VirtualSize
print(f" {name:8s} Entropy: {entropy:.2f} Raw: {raw:>8} Virtual: {virtual:>8}")
# Check for UPX section names
section_names = [s.Name.decode().rstrip('\x00') for s in pe.sections]
if 'UPX0' in section_names or 'UPX1' in section_names:
print("\n[!] UPX section names detected")
elif '.upx' in [s.lower() for s in section_names]:
print("\n[!] UPX variant section names detected")
# Check import count (packed binaries have very few)
if hasattr(pe, 'DIRECTORY_ENTRY_IMPORT'):
total_imports = sum(len(e.imports) for e in pe.DIRECTORY_ENTRY_IMPORT)
print(f"\nTotal imports: {total_imports}")
if total_imports < 10:
print("[!] Very few imports - likely packed")
else:
print("\n[!] No import directory - heavily packed")
PYEOF
Passo 2: Tentar Descompressão Padrão do UPX
Tente a descompressão integrada do UPX:
# Standard UPX decompress
upx -d suspect.exe -o unpacked.exe
# If UPX fails with "not packed by UPX" error, the headers may be modified
# Verbose output for debugging
upx -d suspect.exe -o unpacked.exe -v 2>&1
# Verify the unpacked file
file unpacked.exe
diec unpacked.exe
Passo 3: Reparar Cabeçalhos UPX Modificados
Se a descompressão padrão falhar, repare os bytes mágicos adulterados:
# Reparar cabeçalhos UPX modificados
import struct
with open("suspect.exe", "rb") as f:
data = bytearray(f.read())
# Bytes mágicos do UPX: "UPX!" (0x55505821)
# Autores de malware comumente modificam estes para impedir descompressão automática
# Procurar por assinaturas UPX modificadas
upx_magic = b"UPX!"
modified_patterns = [b"UPX0", b"UPX\x00", b"\x00PX!", b"UPx!"]
# Encontrar e restaurar nomes de seção
pe_offset = struct.unpack_from("<I", data, 0x3C)[0]
num_sections = struct.unpack_from("<H", data, pe_offset + 6)[0]
section_table_offset = pe_offset + 0x18 + struct.unpack_from("<H", data, pe_offset + 0x14)[0]
print(f"Offset PE: 0x{pe_offset:X}")
print(f"Número de seções: {num_sections}")
print(f"Offset da tabela de seções: 0x{section_table_offset:X}")
for i in range(num_sections):
offset = section_table_offset + (i * 40)
name = data[offset:offset+8]
print(f"Seção {i}: {name}")
# Restaurar bytes mágicos do UPX no binário
# Procurar pela localização da assinatura do cabeçalho UPX (geralmente perto do final dos dados empacotados)
for i in range(len(data) - 4):
if data[i:i+3] == b"UPX" and data[i+3] != ord("!"):
print(f"Encontrado magic UPX modificado no offset 0x{i:X}: {data[i:i+4]}")
data[i:i+4] = b"UPX!"
print(f"Restaurado para: UPX!")
# Também restaurar nomes de seção se modificados
for i in range(num_sections):
offset = section_table_offset + (i * 40)
name = data[offset:offset+8].rstrip(b'\x00')
if name in [b"UPX0", b"UPX1", b"UPX2"]:
continue # Já está correto
# Verificar modificações comuns
…
Perguntas frequentes
O que é 'empacotar' um programa?
É como colocar um programa dentro de uma caixa especial para torná-lo menor ou mais difícil de entender. O UPX é uma ferramenta comum para isso.
Por que descompactar um programa malicioso?
Para que os especialistas em segurança possam ver o código original e entender como ele funciona, quais danos ele pode causar e como combatê-lo.
O que são 'magic bytes' modificados?
São códigos especiais no início de um arquivo que identificam o tipo de 'empacotador' usado. Se eles forem alterados, as ferramentas normais podem não reconhecer o arquivo como empacotado com UPX.
Detalhes
Descrição original do autor
Identifies and unpacks UPX-packed malware samples, including binaries with modified UPX magic bytes or headers that block automated decompression, to recover the original executable for static analysis. Use when a sample shows high entropy, minimal imports, or only LoadLibrary/GetProcAddress in its import table, or when preparing a packed binary for disassembly in Ghidra or IDA. '
Popularidade
- Estrelas no GitHub
- 35 mil
- Posição no ranking
- #5479
- Licença
- Apache-2.0
- Atualizada em
- 31/08/2026
Comentários
- …
Mais skills deste repositório
abusing-dpapi-for-credential-access
Dá ao seu agente de IA instruções prontas para uma tarefa específica, para ele fazer melhor e mais rápido.
mukul975/Anthropic-Cybersecurity-Skills
abusing-shadow-credentials-for-privesc
Ensina seu agente de IA a escrever textos claros e bem estruturados.
mukul975/Anthropic-Cybersecurity-Skills
achieving-cmmc-level-2-compliance
Ajuda seu agente a preparar um ambiente para conformidade com CMMC Nível 2. Ele implementa requisitos de segurança e gerencia a documentação necessária.
mukul975/Anthropic-Cybersecurity-Skills
acquiring-disk-image-with-dd-and-dcfldd
Ajuda seu agente a criar cópias exatas de discos rígidos. Isso é útil para garantir que nenhuma informação seja perdida ou alterada durante investigações.
mukul975/Anthropic-Cybersecurity-Skills
Skills parecidas
data-throughput-accelerator
Faz seu agente acelerar a movimentação de grandes volumes de dados. Ele encontra gargalos e garante que os dados sejam transferidos de forma rápida e correta.
affaan-m/ECC
inventory-demand-planning
Ajuda seu agente a prever a demanda de produtos em lojas. Ele otimiza o estoque e planeja quando fazer promoções para vender mais.
affaan-m/ECC
market-research
Ajuda seu agente a realizar pesquisas de mercado e análises competitivas. Fornece resumos com atribuição de fontes.
affaan-m/ECC