Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
rust-mordor-rs — Biblioteca Rusty Hell's Gate / Halo's Gate / Tartarus' Gate / FreshyCalls / Syswhispers2 | Kitploit
Ferramentas/GitHubGitHub/gmh5225/rust-mordor-rs
ExploraçãoEvasão de IDS/IPSEngenharia ReversaShellcodePós-ExploraçãoAnálise de MalwareRed TeamingDesenvolvimento de PayloadsExploração de Binários
GitHubgmh5225/rust-mordor-rs

rust-mordor-rs

Biblioteca Rusty Hell's Gate / Halo's Gate / Tartarus' Gate / FreshyCalls / Syswhispers2

3235há 4 anosRevisado pelo Kitploit
Ver Repositório

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

Hell's Gate / Halo's Gate / Tartarus' Gate e FreshyCalls / SysWhispers2 em Rust

Nomeei este projeto de Mordor porque Hell's Gate / Halo's Gate / Tartarus' Gate me lembram do Portão Negro de Mordor em O Senhor dos Anéis por algum motivo estranho haha e o projeto precisa de um nome legal, então por que não?

BlackGate Créditos ao Middle-earth: Shadow of War Wiki

TODO (Desenvolvimento em andamento)

  • Torná-lo mais amigável ao usuário
  • Adicionar instruções de uso ao README.md
  • Adicionar macros de chamadas de sistema / assembly
  • Decidir se quero mantê-lo como uma biblioteca ou algo que gera arquivos de saída como SysWhispers1, SysWhispers2, SysWhispers3

Hooking

Hooking é uma técnica usada para interceptar chamadas a funções pré-existentes ou redirecionar o fluxo de execução de uma API legítima para outro local na memória. Esse local de memória pode ser controlado por um atacante, antivírus (AV), detecção e resposta de endpoint (EDR) ou anti-cheat (AC).

Inline Hooking: Isso nos permite substituir os primeiros bytes (instruções de assembly) da função alvo por uma instrução de salto para redirecionar o fluxo de execução para outro local na memória.

Import Address Table Hooking (IAT hooking): A Import Address Table é uma tabela de consulta de ponteiros de função para funções importadas de DLLs ou executáveis. O IAT hooking nos permite substituir o endereço da função na Import Address Table por outro para redirecionar o fluxo de execução do programa.

BlackGate Créditos a Kyle Mistele

Descrição

O que é Hell's Gate / Halo's Gate / Tartarus' Gate?

Hell's Gate é uma técnica de injeção de processo que nos permite procurar uma sequência de bytes chamada syscall stub, no módulo ntdll.dll, para extrair os números de chamada de sistema e salvá-los em uma tabela de memória dedicada, que é então usada para chamar APIs de sistema diretamente. No entanto, a limitação do Hell's Gate é que ele precisa de acesso a um módulo ntdll.dll limpo caso as funções estejam hookeadas. Caso contrário, ele não consegue popular os números de chamada de sistema necessários e, eventualmente, falha em entregar chamadas de API nativas. Para resolver esse problema, nasceu uma irmã gêmea chamada Halo's Gate, que é apenas um patch para o Hell's Gate baseado em uma observação muito simples.

Quando um hook é colocado em uma função (jmp <address>), não seremos capazes de recuperar dinamicamente os números de chamada de sistema, então, para resolver esse problema, podemos olhar para os números de chamada de sistema das funções vizinhas e ajustar os cálculos de acordo para obter nosso número de chamada de sistema, porque os IDs de chamada de sistema no syscall stub seguem uns aos outros de forma incremental.

Hell's Gate verifica apenas uma sequência de bytes na seguinte ordem 4c8bd1b8, que se parece com isto em assembly:

mov r10, rcx
mov eax, <syscall>

O Halo's Gate faz o mesmo que o Hell's Gate, mas com uma verificação adicional para ver se há um hook instalado, verificando se o primeiro byte da exportação é e9 (jmp) e, se houver um hook instalado, o Halo's Gate começa a olhar para as funções vizinhas e ajusta os cálculos de acordo para obter o nosso número de chamada de sistema, uma vez que o ID da syscall no stub da syscall segue um ao outro de forma incremental.

No entanto, nem todos os EDRs fazem hook no mesmo local (no início da função). E se os EDRs fizerem hook logo após mov r10, rcx (4c8bd1)? Isso vai quebrar o nosso código.

O Tartarus' Gate resolve este problema adicionando uma verificação adicional ao Halo's Gate, procurando também por estes bytes sequencialmente 4c8bd1e9, o que se parece com isto em assembly.

mov r10, rcx
jmp <address>

No entanto, se todas as funções estiverem hookadas, podemos encontrar a primeira e desfazer o hook de todas uma a uma, começando pelo ID de chamada 0. Este método é chamado de Veles' Reek no SEKTOR7.

FreshyCalls / SysWhispers1 / SysWhispers2 / SysWhispers3

A técnica FreshyCalls pesquisa no Export Directory por funções que começam com Nt (excluindo Ntdll) e as ordena por endereços. Surpreendentemente, o endereço mais baixo é o número de syscall 0 e o próximo será os números de syscall 1 e 2 e 3... Você pode verificar isso no x64 dbg ou no Windbg por conta própria.

O Syswhispers2 faz a mesma coisa, mas em vez de procurar as funções Nt dentro do diretório de exportação de ntdll.dll, ele procura por funções que começam com Zw. Surpreendentemente, as funções Zw e as funções Nt apontam para os mesmos stubs de syscall e terão o mesmo número de chamada de sistema.

Aqui podemos verificar isso: syswhisper2

syswhisper2

A diferença entre as funções Zw e Nt é explicada pela Microsoft aqui:

"*A API de serviços do sistema operacional nativo do Windows é implementada como um conjunto de rotinas que são executadas em modo kernel. Essas rotinas têm nomes que começam com o prefixo Nt ou Zw. Drivers em modo kernel podem chamar essas rotinas diretamente. Aplicações em modo usuário podem acessar essas rotinas usando chamadas de sistema.

Com poucas exceções, cada rotina de serviços do sistema nativo tem duas versões ligeiramente diferentes que têm nomes semelhantes, mas prefixos diferentes. Por exemplo, chamadas para NtCreateFile e ZwCreateFile realizam operações semelhantes e são, de fato, atendidas pela mesma rotina de sistema em modo kernel.

Para chamadas de sistema a partir do modo usuário, as versões Nt e Zw de uma rotina se comportam de forma idêntica. Para chamadas de um driver em modo kernel, as versões Nt e Zw de uma rotina diferem na forma como tratam os valores de parâmetros que o chamador passa para a rotina.

Um driver em modo kernel chama a versão Zw de uma rotina de serviços do sistema nativo para informar à rotina que os parâmetros vêm de uma fonte confiável em modo kernel. Nesse caso, a rotina assume que pode usar os parâmetros com segurança sem primeiro validá-los. No entanto, se os parâmetros puderem vir de uma fonte em modo usuário ou de uma fonte em modo kernel, o driver chama, em vez disso, a versão Nt da rotina, que determina, com base no histórico do thread chamador, se os parâmetros se originaram no modo usuário ou no modo kernel*"

Em resumo:

Hell's Gate: Isso analisará ntdll.dll para encontrar o início do stub de syscall (4c8bd1b8) e então recuperar o ID da syscall. No entanto, se o stub de syscall estiver hookado, nosso código quebrará.

Halo's Gate: O mesmo que o Hell's Gate, mas adiciona uma verificação adicional para ver se os primeiros hooks estão no lugar, verificando se o primeiro byte é e9 (jmp) e, se houver um hook no lugar, o Halo's gate começa a olhar para as funções vizinhas e ajusta os cálculos de acordo para obter nosso número de chamada de sistema, já que o ID da syscall no stub de syscall segue um ao outro de forma incremental.

Tartarus' Gate: O mesmo que o Halo's Gate, mas adiciona uma verificação adicional para ver se o stub de syscall está hookado na segunda linha, após as instruções de assembly mov r10, rcx, pesquisando a seguinte sequência de bytes: 4c8bd1e9.

Baixar ferramenta