Pular para o conteúdo
Skillpedia
Diversos35 mil · #6192

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

https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/reverse-engineering-rust-malware/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/reverse-engineering-rust-malware/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
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-malware

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/reverse-engineering-rust-malware/SKILL.md -o SKILL.md
Conteú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

repo: mukul975/Anthropic-Cybersecurity-Skills

Popularidade

Estrelas no GitHub
35 mil
Posição no ranking
#6192
Licença
Apache-2.0
Atualizada em
31/08/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas