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
17021há 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
  • 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
Baixar ferramenta