Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
acheron — appels système indirects pour l'évasion AV/EDR en assembleur Go | Kitploit
Outils/GitHubGitHub/f1zm0/acheron
ShellcodeRed TeamingDéveloppement de Charges Utiles
GitHubf1zm0/acheron

acheron

appels système indirects pour l'évasion AV/EDR en assembleur Go

Voir le dépôt
39050il y a 3 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

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

À propos

Acheron est une bibliothèque inspirée de SysWhisper3/FreshyCalls/RecycledGate, dont la plupart des fonctionnalités sont implémentées en assembleur Go.

Le package acheron peut être utilisé pour ajouter des capacités d'appels système indirects à votre arsenal Golang, afin de contourner les AV/EDR qui utilisent des hooks en mode utilisateur et des callbacks d'instrumentation pour détecter les appels système anormaux qui ne reviennent pas à ntdll.dll lors de la transition du noyau vers l'espace utilisateur.

Principales fonctionnalités

  • Aucune dépendance
  • Implémentation en Go pur et assembleur Go
  • Prise en charge de fonctions de chiffrement/hachage personnalisées pour contrer l'analyse statique

Fonctionnement

Les étapes suivantes sont effectuées lors de la création d'une nouvelle instance proxy d'appel système :

  1. Parcourir le PEB pour récupérer l'adresse de base de ntdll.dll en mémoire
  2. Analyser le répertoire des exports pour récupérer l'adresse de chaque fonction exportée
  3. Calculer le numéro de service système pour chaque fonction Zw*
  4. Énumérer les gadgets syscall;ret non hookés/propres dans ntdll.dll, pour être utilisés comme trampolines
  5. Créer l'instance proxy, qui peut être utilisée pour effectuer des appels système indirects (ou directs)

Démarrage rapide

Intégrer acheron dans vos outils offsec est assez simple. Vous pouvez installer le package avec :

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

Ensuite, il suffit d'appeler acheron.New() pour créer une instance proxy d'appel système et utiliser acheron.Syscall() pour effectuer un appel système indirect pour les API Nt*.

Exemple minimal :

root@kitploit:~
package main

import (
    "fmt"
    "unsafe"

    "github.com/f1zm0/acheron"
)

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

    // crée une instance Acheron, résout les SSN, collecte les trampolines propres dans ntdll.dll, etc.
    ach, err := acheron.New()
    if err != nil {
        panic(err)
    }

    // appel système indirect pour NtAllocateVirtualMemory
    s1 := ach.HashString("NtAllocateVirtualMemory")
    if retcode, err := ach.Syscall(
        s1,                                     // hachage du nom de la fonction
        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(
        "mémoire allouée avec NtAllocateVirtualMemory (status : 0x%x)\n",
        retcode,
    )

    // ...
}

Exemples

Les exemples suivants sont inclus dans le dépôt :

ExempleDescription
sc_injectPoC d'injection de processus extrêmement simple, avec prise en charge des appels système directs et indirects

Autres projets qui utilisent acheron :

  • hades

Contribution

Les contributions sont les bienvenues ! Voici quelques éléments qui seraient agréables à voir à l'avenir :

  • Support 32 bits
  • Autres types de résolveurs (ex. HalosGate/TartarusGate)
  • Plus d'exemples

Si vous avez des suggestions ou des idées, n'hésitez pas à ouvrir une issue ou une PR.

Références

  • 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

Notes supplémentaires

Le nom fait référence au fleuve Acheron dans la mythologie grecque, le fleuve sur lequel les âmes des morts sont transportées vers les enfers.

Note
Ce projet utilise le versionnement sémantique. Les versions mineures et de correctif ne devraient pas casser la compatibilité avec les versions précédentes. Les versions majeures seront utilisées uniquement pour des changements importants qui cassent la compatibilité.

Avertissement
Ce projet a été créé à des fins éducatives uniquement. Ne l'utilisez pas sur des systèmes qui ne vous appartiennent pas. Le développeur de ce projet n'est pas responsable des dommages causés par une utilisation inappropriée de la bibliothèque.

Licence

Ce projet est sous licence MIT – voir le fichier LICENSE pour plus de détails.

Télécharger l’outil
process_snapshotUtilisation d'appels système indirects pour prendre des instantanés de processus
custom_hashfuncExemple de fonction de codage/hachage personnalisée utilisable avec acheron