Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
acheron — chiamate di sistema indirette per elusione di AV/EDR in assembly Go | Kitploit
Strumenti/GitHubGitHub/f1zm0/acheron
ShellcodeRed TeamingSviluppo Payload
GitHubf1zm0/acheron

acheron

chiamate di sistema indirette per elusione di AV/EDR in assembly Go

Vedi Repository
390503 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

ultima versione di rilascio Riferimento Go Scheda di valutazione Go licenza del progetto Problemi Segui su Twitter

Informazioni

Acheron è una libreria ispirata a SysWhisper3/FreshyCalls/RecycledGate, con la maggior parte delle funzionalità implementate in assembly Go.

Il pacchetto acheron può essere utilizzato per aggiungere capacità di syscall indirette alla tua tradecraft in Golang, per bypassare AV/EDR che fanno uso di hook in modalità utente e callback di strumentazione per rilevare syscall anomale che non tornano a ntdll.dll, quando la chiamata ritorna dal kernel allo userland.

Caratteristiche principali

  • Nessuna dipendenza
  • Implementazione in Go puro e assembly Go
  • Supporto per funzioni di crittografia/hashing personalizzate delle stringhe per contrastare l'analisi statica

Come funziona

I seguenti passaggi vengono eseguiti quando si crea una nuova istanza del proxy di syscall:

  1. Percorrere il PEB per recuperare l'indirizzo base della ntdll.dll in memoria
  2. Analizzare la directory delle esportazioni per recuperare l'indirizzo di ogni funzione esportata
  3. Calcolare il numero di servizio di sistema per ogni funzione Zw*
  4. Enumerare i gadget syscall;ret puliti/non hookati in ntdll.dll, da usare come trampolini
  5. Crea l'istanza del proxy, che può essere usata per effettuare syscall indirette (o dirette)

Avvio rapido

Integrare acheron nei tuoi strumenti offsec è molto semplice. Puoi installare il pacchetto con:

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

Poi basta chiamare acheron.New() per creare un'istanza del proxy di syscall e usare acheron.Syscall() per effettuare una syscall indiretta per le API Nt*.

Esempio minimale:

root@kitploit:~
package main

import (
    "fmt"
    "unsafe"

    "github.com/f1zm0/acheron"
)

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

    // crea un'istanza di Acheron, risolve i SSN, raccoglie trampolini puliti in ntdll.dll, ecc.
    ach, err := acheron.New()
    if err != nil {
        panic(err)
    }

    // syscall indiretta per NtAllocateVirtualMemory
    s1 := ach.HashString("NtAllocateVirtualMemory")
    if retcode, err := ach.Syscall(
        s1,                                     // hash del nome della funzione
        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(
        "memoria allocata con NtAllocateVirtualMemory (stato: 0x%x)\n",
        retcode,
    )

    // ...
}

Esempi

I seguenti esempi sono inclusi nel repository:

EsempioDescrizione
sc_injectPoC di iniezione di processo estremamente semplice, con supporto per syscall sia dirette che indirette

Altri progetti che usano acheron:

  • hades

Contributi

I contributi sono benvenuti! Di seguito alcune cose che sarebbe bello avere in futuro:

  • Supporto a 32 bit
  • Altri tipi di resolver (es. HalosGate/TartarusGate)
  • Più esempi

Se hai suggerimenti o idee, non esitare ad aprire un issue o una PR.

Riferimenti

  • Golang UK Conference 2016 - Michael Munday - Scendere a livello di assembly nelle funzioni Go
  • 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

Note aggiuntive

Il nome è un riferimento al fiume Acheron nella mitologia greca, che è il fiume dove le anime dei morti vengono trasportate negli inferi.

Nota
Questo progetto utilizza il versionamento semantico. Le release minori e di patch non dovrebbero rompere la compatibilità con le versioni precedenti. Le release maggiori verranno utilizzate solo per modifiche importanti che rompono la compatibilità con le versioni precedenti.

Avvertenza
Questo progetto è stato creato solo a scopo educativo. Non usarlo su sistemi che non possiedi. Lo sviluppatore di questo progetto non è responsabile per eventuali danni causati dall'uso improprio della libreria.

Licenza

Questo progetto è concesso in licenza MIT - vedi il file LICENSE per i dettagli.

Scarica lo strumento
process_snapshotUtilizzo di syscall indirette per acquisire snapshot di processo con syscall
custom_hashfuncEsempio di funzione di codifica/hashing personalizzata che può essere usata con acheron