reverse-engineering-rust-malware
Ajuda seu agente a analisar malwares feitos em Rust. Ele entende como esse tipo de código funciona para encontrar falhas de segurança.
O que ela faz
Esta ferramenta ajuda a analisar programas feitos em Rust que podem ser maliciosos. Ela procura por características específicas da linguagem Rust para identificar e entender como o programa funciona, como quais bibliotecas ele usa e quais funções suspeitas ele pode ter.
Quando usar
- ✓Ao investigar um programa suspeito que se acredita ser feito em Rust.
- ✓Durante testes de segurança autorizados em sistemas que usam Rust.
- ✓Ao analisar amostras de malware para entender suas capacidades.
Exemplo do que pedir para a IA
“Analise este arquivo binário e me diga se ele parece ser um malware Rust e quais capacidades ele pode ter.”
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 examina o código do programa em busca de padrões comuns em malwares Rust, como o uso de certas bibliotecas ou formas específicas de lidar com dados. Ela tenta extrair informações sobre as dependências do programa para entender suas funcionalidades.
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 reverse-engineering-rust-malwareOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/reverse-engineering-rust-malware/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.
Engenharia Reversa de Malware em Rust
Visão Geral
Rust tem se tornado cada vez mais popular para o desenvolvimento de malware devido à sua compilação cruzada, garantias de segurança de memória e à complexidade que introduz para engenheiros reversos. Binários Rust contêm toda a biblioteca padrão vinculada estaticamente, produzindo binários grandes com código boilerplate extenso. Desafios chave incluem strings não terminadas por nulo (Rust usa ponteiros "fat" com ponteiro+tamanho), monomorfização gerando código genérico duplicado, tratamento complexo de erros (cadeias de unwrap de Result/Option) e convenções de chamada desconhecidas. Descompilar Rust para C produz resultados inúteis em comparação com binários C/C++. Ferramentas como scripts Ghidra para extração de crates e treinamento focado em padrões específicos de Rust (2024-2025) ajudam a abordar esses desafios. Malware notável em Rust inclui ransomware BlackCat/ALPHV, variantes do ransomware Hive e Buer Loader.
Quando Usar
- Ao realizar testes de segurança autorizados que envolvam engenharia reversa de malware em Rust
- Ao analisar amostras de malware ou artefatos de ataque em um ambiente controlado
- Ao conduzir exercícios de equipe vermelha ou engajamentos de teste de penetração
- Ao construir capacidades de detecção com base na compreensão de técnicas ofensivas
Pré-requisitos
- IDA Pro 8.0+ ou Ghidra 11.0+
- Toolchain Rust para compilação de referência
- Python 3.9+ para scripts auxiliares
- Compreensão do modelo de memória Rust (propriedade, empréstimo)
- Familiaridade com tipos de string Rust (
String,&str,CString)
Fluxo de Trabalho
Passo 1: Identificar e Analisar Metadados de Binários Rust
#!/usr/bin/env python3
"""Analisa metadados de binários de malware Rust e extrai dependências de crates."""
import re
import sys
import json
def identify_rust_binary(data):
"""Verifica se o binário foi compilado em Rust e extrai informações de versão."""
indicators = {
"rust_panic_strings": bool(re.search(rb'panicked at', data)),
"rust_unwrap": bool(re.search(rb'called.*unwrap.*on.*None', data)),
"core_panic": bool(re.search(rb'core::panicking', data)),
"std_rt": bool(re.search(rb'std::rt::lang_start', data)),
"cargo_path": bool(re.search(rb'\.cargo[/\\]registry', data)),
"rustc_version": None,
}
version = re.search(rb'rustc\s+(\d+\.\d+\.\d+)', data)
if version:
indicators["rustc_version"] = version.group(1).decode()
is_rust = sum(1 for v in indicators.values() if v) >= 2
return is_rust, indicators
def extract_crates(data):
"""Extrai nomes de crates (dependências) Rust de strings do binário."""
crate_pattern = re.compile(
rb'(?:crates\.io-[a-f0-9]+/|\.cargo/registry/src/[^/]+/)'
rb'([\w-]+)-(\d+\.\d+\.\d+)'
)
crates = {}
for match in crate_pattern.finditer(data):
name = match.group(1).decode()
version = match.group(2).decode()
crates[name] = version
# Também verifica crates comuns relevantes para malware
suspicious_crates = {
"reqwest": "Cliente HTTP",
"hyper": "Biblioteca HTTP",
"tokio": "Runtime assíncrono",
"aes": "Criptografia AES",
"chacha20": "Criptografia ChaCha20",
"rsa": "Criptografia RSA",
"ring": "Biblioteca criptográfica",
"base64": "Codificação Base64",
"winapi": "Bindings para API do Windows",
"winreg": "Acesso ao Registro",
"sysinfo": "Informações do sistema",
"screenshots": "Captura de tela",
"clipboard": "Acesso à área de transferência",
"keylogger": "Registro de teclas",
}
capabilities = []
for crate_name, description in suspicious_crates.items():
if crate_name in crates:
capabilities.append({
"crate": crate_name,
"version": crates[crate_name],
"capability": description,
})
return crates, capabilities
def extract_rust_strings(data):
"""Extrai strings lidando com o formato não terminado por nulo do Rust."""
# Strings Rust são armazenadas como ponteiro+tamanho, mas literais de string
# estão frequentemente em .rodata como sequências contíguas
strings = []
ascii_pattern = re.compile(rb'[\x20-\x7e]{8,500}')
for match in ascii_pattern.finditer(data):
s = match.group().decode('ascii')
# Filtra strings relevantes para malware
keywords = ['http', 'socket', 'encrypt', 'decrypt', 'shell',
'exec', 'cmd', 'upload', 'download', 'persist',
'registry', 'mutex', 'pipe', 'inject']
if any(kw in s.lower() for kw in keywords):
strings.append(s)
…
Perguntas frequentes
O que são 'fat pointers'?
Em Rust, strings podem ser armazenadas de forma diferente do que em outras linguagens. 'Fat pointers' são uma maneira de referenciar strings que inclui não apenas o local onde a string começa, mas também o seu tamanho, o que afeta como elas são encontradas e analisadas.
O que é 'monomorphization'?
É uma técnica que o compilador Rust usa para otimizar código genérico. Isso pode fazer com que o mesmo código apareça várias vezes em diferentes formas, tornando a análise mais complexa.
Por que Rust é usado em malware?
Rust oferece vantagens como facilidade de compilação para diferentes sistemas e segurança de memória, o que pode ser atraente para desenvolvedores de malware que buscam criar programas mais robustos e difíceis de analisar.
Detalhes
Descrição original do autor
Reverse engineers Rust-compiled malware using IDA Pro and Ghidra, covering techniques for non-null-terminated fat-pointer strings, monomorphized/duplicated generic code, Result/Option unwrap chains, crate dependency extraction, and Rust-specific control flow and calling conventions. Use when analyzing Rust-based malware samples (e.g. BlackCat/ALPHV, Hive, Buer Loader) or attack artifacts in an aut
Popularidade
- Estrelas no GitHub
- 35 mil
- Posição no ranking
- #6192
- 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
dashboard-builder
Ajuda seu agente a criar painéis de monitoramento úteis. Ele transforma dados em gráficos que respondem a perguntas importantes sobre o sistema.
affaan-m/ECC
dev-team
Simula uma equipe de desenvolvimento colaborativa, onde diferentes papéis respondem a um problema juntos. É útil para obter múltiplas perspectivas sem trocar de agente manualmente.
affaan-m/ECC
ecc-council
Faz seu agente reunir um conselho de quatro vozes para tomar decisões difíceis. É útil quando há várias opções boas e é preciso debater antes de escolher.
affaan-m/ECC