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
acheron — chamadas de sistema indiretas para evasão de AV/EDR em assembly Go | Kitploit
Ferramentas/GitHubGitHub/f1zm0/acheron
ShellcodeRed TeamingDesenvolvimento de Payloads
GitHubf1zm0/acheron

acheron

chamadas de sistema indiretas para evasão de AV/EDR em assembly Go

Ver Repositório
39050há 3 anosRevisado 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

latest release version Go Reference Go Report Card project license Issues Twitter Follow

Sobre

Acheron é uma biblioteca inspirada em SysWhisper3/FreshyCalls/RecycledGate, com a maior parte da funcionalidade implementada em assembly Go.

O pacote acheron pode ser usado para adicionar capacidades de syscall indireta às suas ferramentas em Golang, para contornar AVs/EDRs que utilizam hooks em modo de usuário e instrumentation callbacks para detectar syscalls anômalas que não retornam à ntdll.dll quando a transição de kernel para userland ocorre.

Principais Funcionalidades

  • Sem dependências
  • Implementação em Go puro e assembly Go
  • Suporte a funções personalizadas de criptografia/hashing para combater análise estática

Como funciona

Os seguintes passos são executados ao criar uma nova instância de proxy de syscall:

  1. Percorrer o PEB para obter o endereço base da ntdll.dll em memória
  2. Analisar o diretório de exportações para obter o endereço de cada função exportada
  3. Calcular o número de serviço do sistema para cada função Zw*
  4. Enumerar gadgets syscall;ret limpos (sem hooks) na ntdll.dll, para serem usados como trampolins
  5. Criar a instância do proxy, que pode ser usada para fazer syscalls indiretas (ou diretas)

Início Rápido

Integrar o acheron nas suas ferramentas offsec é bastante fácil. Pode instalar o pacote com:

root@kitploit:~
go get -u github.com/f1zm0/acheron

Depois, basta chamar acheron.New() para criar uma instância de proxy de syscall e usar acheron.Syscall() para fazer uma syscall indireta para APIs Nt*.

Exemplo mínimo:

root@kitploit:~
package main

import (
    "fmt"
    "unsafe"

    "github.com/f1zm0/acheron"
)

func main() {
    var (
        baseAddr uintptr
        hSelf = uintptr(0xffffffffffffffff)
    )

    // cria instância Acheron, resolve SSNs, coleta trampolins limpos na ntdll.dll, etc.
    ach, err := acheron.New()
    if err != nil {
        panic(err)
    }

    // syscall indireta para NtAllocateVirtualMemory
    s1 := ach.HashString("NtAllocateVirtualMemory")
    if retcode, err := ach.Syscall(
        s1,                                     // hash do nome da função
        hSelf,                                  // arg1: _In_     HANDLE ProcessHandle,
        uintptr(unsafe.Pointer(&baseAddr)),     // arg2: _Inout_  PVOID *BaseAddress,
        uintptr(unsafe.Pointer(nil)),           // arg3: _In_     ULONG_PTR ZeroBits,
        0x1000,                                 // arg4: _Inout_  PSIZE_T RegionSize,
        windows.MEM_COMMIT|windows.MEM_RESERVE, // arg5: _In_     ULONG AllocationType,
        windows.PAGE_EXECUTE_READWRITE,         // arg6: _In_     ULONG Protect
    ); err != nil {
        panic(err)
    }
    fmt.Printf(
        "memória alocada com NtAllocateVirtualMemory (status: 0x%x)\n",
        retcode,
    )

    // ...
}

Exemplos

Os seguintes exemplos estão incluídos no repositório:

ExemploDescrição
sc_injectProva de conceito extremamente simples de injeção de processo, com suporte a syscalls diretas e indiretas

Outros projetos que usam acheron:

  • hades

Contribuindo

Contribuições são bem-vindas! Abaixo estão algumas das coisas que seria bom ter no futuro:

  • Suporte a 32 bits
  • Outros tipos de resolvedores (ex: HalosGate/TartarusGate)
  • Mais exemplos

Se tiver sugestões ou ideias, sinta-se à vontade para abrir uma issue ou um PR.

Referências

  • Golang UK Conference 2016 - Michael Munday - Dropping Down Go Functions in Assembly
  • https://github.com/am0nsec/HellsGate
  • https://sektor7.net/#!res/2021/halosgate.md
  • https://github.com/trickster0/TartarusGate
  • https://github.com/klezVirus/SysWhispers3
  • https://github.com/crummie5/FreshyCalls
  • https://github.com/boku7/AsmHalosGate
  • https://github.com/thefLink/RecycledGate
  • https://github.com/C-Sto/BananaPhone
  • https://winternl.com/detecting-manual-syscalls-from-user-mode/
  • https://www.usenix.org/legacy/events/vee06/full_papers/p154-bhansali.pdf
  • https://redops.at/en/blog/direct-syscalls-a-journey-from-high-to-low

Notas Adicionais

O nome é uma referência ao rio Acheron na mitologia grega, que é o rio onde as almas dos mortos são levadas para o submundo.

Nota
Este projeto utiliza versionamento semântico. Lançamentos menores e de patch não devem quebrar a compatibilidade com versões anteriores. Lançamentos principais serão usados apenas para mudanças significativas que quebrem a compatibilidade com versões anteriores.

Aviso
Este projeto foi criado apenas para fins educacionais. Não o utilize em sistemas que não lhe pertencem. O desenvolvedor deste projeto não é responsável por qualquer dano causado pelo uso inadequado da biblioteca.

Licença

Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para mais detalhes.

Baixar ferramenta
process_snapshotUtilização de syscalls indiretas para tirar snapshots de processo com syscalls.
custom_hashfuncExemplo de função personalizada de codificação/hashing que pode ser usada com acheron.