Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
acheron — indirekte Syscalls für AV/EDR-Umgehung in Go-Assembly | Kitploit
Tools/GitHubGitHub/f1zm0/acheron
ShellcodeRed TeamingPayload-Entwicklung
GitHubf1zm0/acheron

acheron

indirekte Syscalls für AV/EDR-Umgehung in Go-Assembly

Repository anzeigen
39050vor 3 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

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

Über

Acheron ist eine Bibliothek, inspiriert von SysWhisper3/FreshyCalls/RecycledGate, wobei der Großteil der Funktionalität in Go-Assembly implementiert ist.

Das acheron-Paket kann verwendet werden, um Ihren Golang-Werkzeugen indirekte Syscall-Fähigkeiten hinzuzufügen und so AV/EDRs zu umgehen, die Usermode-Hooks und Instrumentation Callbacks nutzen, um anomale Syscalls zu erkennen, die nicht nach ntdll.dll zurückkehren, wenn der Aufruf von Kernel zurück zu Userland wechselt.

Hauptfunktionen

  • Keine Abhängigkeiten
  • Reine Go- und Go-Assembly-Implementierung
  • Unterstützung für benutzerdefinierte String-Verschlüsselungs-/Hash-Funktionen zur Abwehr statischer Analyse

Funktionsweise

Die folgenden Schritte werden beim Erstellen einer neuen Syscall-Proxy-Instanz ausgeführt:

  1. Durchlaufe das PEB, um die Basisadresse der in-memory ntdll.dll zu ermitteln
  2. Analysiere das Exports-Verzeichnis, um die Adresse jeder exportierten Funktion zu erhalten
  3. Berechne die System-Service-Nummer für jede Zw*-Funktion
  4. Sammle unhooked/saubere syscall;ret-Gadgets in ntdll.dll, die als Trampoline verwendet werden
  5. Erstelle die Proxy-Instanz, die für indirekte (oder direkte) Syscalls verwendet werden kann

Schnellstart

Die Integration von acheron in Ihre Offsec-Tools ist recht einfach. Sie können das Paket mit folgendem Befehl installieren:

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

Anschließend müssen Sie nur acheron.New() aufrufen, um eine Syscall-Proxy-Instanz zu erstellen, und acheron.Syscall() verwenden, um einen indirekten Syscall für Nt*-APIs durchzuführen.

Minimalbeispiel:

root@kitploit:~
package main

import (
    "fmt"
    "unsafe"

    "github.com/f1zm0/acheron"
)

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

    // creates Acheron instance, resolves SSNs, collects clean trampolines in ntdll.dlll, etc.
    ach, err := acheron.New()
    if err != nil {
        panic(err)
    }

    // indirect syscall for NtAllocateVirtualMemory
    s1 := ach.HashString("NtAllocateVirtualMemory")
    if retcode, err := ach.Syscall(
        s1,                                     // function name hash
        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(
        "allocated memory with NtAllocateVirtualMemory (status: 0x%x)\n",
        retcode,
    )

    // ...
}

Beispiele

Die folgenden Beispiele sind im Repository enthalten:

BeispielBeschreibung
sc_injectExtrem einfaches Process-Injection-PoC, mit Unterstützung für sowohl direkte als auch indirekte Syscalls

Andere Projekte, die acheron verwenden:

  • hades

Mitwirken

Beiträge sind willkommen! Im Folgenden sind einige Dinge aufgeführt, die in Zukunft schön wären:

  • 32-Bit-Unterstützung
  • Andere Resolver-Typen (z. B. HalosGate/TartarusGate)
  • Weitere Beispiele

Wenn Sie Vorschläge oder Ideen haben, können Sie gerne ein Issue oder einen PR eröffnen.

Referenzen

  • 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

Zusätzliche Hinweise

Der Name ist eine Anlehnung an den Fluss Acheron in der griechischen Mythologie, den Fluss, auf dem die Seelen der Toten in die Unterwelt getragen werden.

Hinweis
Dieses Projekt verwendet Semantic Versioning. Minor- und Patch-Releases sollten die Kompatibilität mit früheren Versionen nicht beeinträchtigen. Major Releases werden nur für größere Änderungen verwendet, die die Kompatibilität mit früheren Versionen brechen.

Warnung
Dieses Projekt wurde nur zu Bildungszwecken erstellt. Verwenden Sie es nicht auf Systemen, die Ihnen nicht gehören. Der Entwickler dieses Projekts übernimmt keine Verantwortung für Schäden, die durch die unsachgemäße Verwendung der Bibliothek entstehen.

Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert – siehe LICENSE-Datei für Details.

Tool herunterladen
process_snapshotVerwendung indirekter Syscalls zum Erstellen von Prozess-Snapshots mit Syscalls
custom_hashfuncBeispiel einer benutzerdefinierten Kodierungs-/Hash-Funktion, die mit acheron verwendet werden kann