Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
moonwalk — encontre endereços base de DLL sem PEB WALK | Kitploit
Ferramentas/GitHubGitHub/teach2breach/moonwalk
Pós-ExploraçãoAnálise de BináriosAprendizado e EducaçãoRed TeamingDesenvolvimento de Payloads
GitHubteach2breach/moonwalk

moonwalk

encontre endereços base de DLL sem PEB WALK

Ver Repositório
170212há 1 anoRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

moonwalk: Localizador de Endereço Base de DLL

Esta biblioteca Rust e ferramenta CLI demonstra um método alternativo para encontrar o endereço base de DLLs carregadas sem usar uma caminhada pelo Process Environment Block (PEB). Essa técnica é particularmente útil em cenários onde a caminhada pelo PEB pode ser detectada ou bloqueada.

Diferenças entre Branches

Branch Principal

  • Usa o crate winapi e VirtualQuery para validação de memória
  • As funções da biblioteca (lib.rs) não têm instruções de impressão para integração limpa
  • A ferramenta CLI (main.rs) inclui saída de depuração para prova de conceito
  • Bom para aprender e entender a técnica

Branch OPSEC

  • Sem dependências externas - totalmente autocontido
  • Sem chamadas à API do Windows - usa acesso direto à memória com tratamento de exceções em vez de VirtualQuery
Baixar ferramenta
  • Sem instruções de impressão nas funções da biblioteca
  • Furtividade aprimorada - não faz chamadas de API
  • Melhor para implantes/ferramentas - deixa menos rastros e é mais difícil de detectar
  • Ambos os branches são seguros de usar, mas o branch OPSEC oferece benefícios adicionais de segurança operacional para cenários onde chamadas de API podem ser monitoradas ou bloqueadas.

    Como Funciona

    O programa usa uma abordagem de caminhada de pilha (stack walking) para localizar DLLs ao:

    1. Acessando o Thread Environment Block (TEB):

      • Usa assembly inline para ler o ponteiro do TEB a partir do registrador de segmento GS (GS:[0x30])
      • Recupera a base da pilha (GS:[0x08]) e o limite da pilha (GS:[0x10]) do TEB
    2. Caminhada de Pilha (Stack Walking):

      • Começa pelo ponteiro de pilha atual (RSP)
      • Percorre a pilha procurando endereços de retorno
      • Verifica cada endereço para memória executável
      • Branch Principal: Usa VirtualQuery para validar regiões de memória
      • Branch OPSEC: Usa acesso direto à memória com tratamento de exceções
    3. Identificação de Módulo:

      • Para cada endereço de retorno potencial, verifica se ele aponta para memória executável
      • Quando memória executável é encontrada, caminha para trás para encontrar o cabeçalho PE
      • Valida o módulo verificando:
        • Assinatura MZ (cabeçalho DOS)
        • Assinatura PE
        • Características da DLL
        • Arquitetura de 64 bits
        • Nome do módulo a partir do diretório de exportação
    4. Validação:

      • Verifica se o módulo é a DLL alvo consultando seu nome no diretório de exportação
      • Confirma que todas as estruturas do cabeçalho PE são válidas

    Por Que Esta Abordagem?

    Métodos tradicionais de encontrar DLLs geralmente envolvem percorrer a lista de módulos do PEB. Embora eficazes, essa abordagem pode ser:

    • Detectada por softwares de segurança
    • Bloqueada em determinados ambientes

    Este método de caminhada de pilha oferece uma alternativa que:

    • Não depende do PEB
    • Pode funcionar em ambientes onde a caminhada do PEB é bloqueada
    • Branch OPSEC: Não faz chamadas de API

    Requisitos

    • Rust (toolchain nightly)
    • Windows x64
    • Branch Principal: crate winapi
    • Branch OPSEC: Sem dependências externas

    Uso

    Como Biblioteca

    Adicione ao seu Cargo.toml:

    Branch Principal:

    root@kitploit:~
    [dependencies]
    moonwalk = { git = "https://github.com/Teach2Breach/moonwalk.git" }
    

    Branch OPSEC:

    root@kitploit:~
    [dependencies]
    moonwalk = { git = "https://github.com/Teach2Breach/moonwalk.git", branch = "opsec" }
    

    Exemplo de uso no seu código:

    root@kitploit:~
    use moonwalk::find_dll_base;
    
    fn main() {
        // Find ntdll.dll
        if let Some(ntdll_base) = find_dll_base("ntdll.dll") {
            println!("ntdll.dll base: 0x{:X}", ntdll_base);
        }
    
        // Case-insensitive, .dll extension optional
        if let Some(kernel32_base) = find_dll_base("KeRNEl32") {
            println!("kernel32.dll base: 0x{:X}", kernel32_base);
        }
    }
    

    Como Ferramenta CLI

    Compile:

    root@kitploit:~
    cargo build --release
    

    Execute:

    root@kitploit:~
    # Find ntdll.dll (default)
    cargo run --release
    
    # Find specific DLL (case insensitive, .dll extension optional)
    cargo run --release kernel32.dll
    cargo run --release KeRNEl32
    cargo run --release USER32
    

    Exemplo

    Instruções de impressão não estão mais incluídas. Esta imagem é incluída para fins educacionais.

    Moonwalk DLL Base Address Finder Demo

    Notas

    • Os nomes de DLL não diferenciam maiúsculas de minúsculas e a extensão .dll é opcional
    • Funciona apenas com DLLs que estão na pilha de chamadas
    • Branch Principal: Usa VirtualQuery para validação segura de acesso à memória
    • Branch OPSEC: Usa acesso direto à memória com tratamento de exceções para máxima furtividade
    • Ambos os branches têm interfaces de biblioteca limpas, sem saída de depuração