Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
acheron — 間接システムコールによるAV/EDR回避(Goアセンブリ) | Kitploit
ツール/GitHubGitHub/f1zm0/acheron
シェルコードレッドチーミングペイロード開発
GitHubf1zm0/acheron

acheron

間接システムコールによるAV/EDR回避(Goアセンブリ)

リポジトリを見る
390503年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

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

概要

Acheron は、SysWhisper3 / FreshyCalls / RecycledGate に着想を得たライブラリで、ほとんどの機能が Go アセンブリで実装されています。

acheron パッケージを使用すると、Golang のトレードクラフトに間接システムコール機能を追加し、ユーザーモードフックや インストルメンテーションコールバック を利用して、ntdll.dll に戻らない異常なシステムコールを検出する AV/EDR をバイパスできます。

主な機能

  • 依存関係なし
  • Pure Go と Go アセンブリによる実装
  • 静的解析に対抗するためのカスタム文字列暗号化/ハッシュ関数のサポート

仕組み

新しいシステムコールプロキシインスタンスを作成する際、以下の手順が実行されます。

  1. PEB を走査してメモリ内の ntdll.dll のベースアドレスを取得
  2. エクスポートディレクトリを解析して各エクスポート関数のアドレスを取得
  3. 各 Zw* 関数のシステムサービス番号を計算
  4. ntdll.dll 内のフックされていない/クリーンな syscall;ret ガジェットを列挙(トランポリンとして使用)
  5. プロキシインスタンスを作成。これを使用して間接(または直接)システムコールを実行可能

クイックスタート

acheron をオフセックツールに統合するのは非常に簡単です。以下のコマンドでパッケージをインストールできます。

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

その後、acheron.New() を呼び出してシステムコールプロキシインスタンスを作成し、acheron.Syscall() を使用して Nt* API の間接システムコールを実行するだけです。

最小限の例:

root@kitploit:~
package main

import (
    "fmt"
    "unsafe"

    "github.com/f1zm0/acheron"
)

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

    // Acheron インスタンスを作成、SSN を解決、ntdll.dll 内のクリーンなトランポリンを収集など
    ach, err := acheron.New()
    if err != nil {
        panic(err)
    }

    // NtAllocateVirtualMemory の間接システムコール
    s1 := ach.HashString("NtAllocateVirtualMemory")
    if retcode, err := ach.Syscall(
        s1,                                     // 関数名のハッシュ
        hSelf,                                  // 引数1: _In_     HANDLE ProcessHandle,
        uintptr(unsafe.Pointer(&baseAddr)),     // 引数2: _Inout_  PVOID *BaseAddress,
        uintptr(unsafe.Pointer(nil)),           // 引数3: _In_     ULONG_PTR ZeroBits,
        0x1000,                                 // 引数4: _Inout_  PSIZE_T RegionSize,
        windows.MEM_COMMIT|windows.MEM_RESERVE, // 引数5: _In_     ULONG AllocationType,
        windows.PAGE_EXECUTE_READWRITE,         // 引数6: _In_     ULONG Protect
    ); err != nil {
        panic(err)
    }
    fmt.Printf(
        "NtAllocateVirtualMemory でメモリを割り当てました (status: 0x%x)\n",
        retcode,
    )

    // ...
}

例

リポジトリには以下の例が含まれています。

例説明
sc_inject非常にシンプルなプロセスインジェクション PoC。直接・間接両方のシステムコールをサポート
process_snapshot間接システムコールを使用してシステムコールでプロセススナップショットを取得

acheron を使用しているその他のプロジェクト:

  • hades

貢献

貢献を歓迎します!以下は将来実装したい機能の一部です。

  • 32ビットサポート
  • その他のリゾルバタイプ(例:HalosGate/TartarusGate)
  • さらに多くの例

提案やアイデアがあれば、Issue または PR を遠慮なく開いてください。

参考資料

  • 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

補足説明

この名前はギリシャ神話に登場する Acheron 川に由来しています。この川は死者の魂が冥界に運ばれる川です。

Note
このプロジェクトは セマンティックバージョニング に従っています。マイナーリリースおよびパッチリリースでは、以前のバージョンとの互換性が損なわれないようにしています。メジャーリリースは、互換性を損なう大きな変更があった場合のみ使用されます。

Warning
このプロジェクトは教育目的のみで作成されています。所有していないシステムで使用しないでください。このプロジェクトの開発者は、ライブラリの不適切な使用によって生じたいかなる損害についても責任を負いません。

ライセンス

このプロジェクトは MIT ライセンスの下でライセンスされています。詳細は LICENSE ファイルを参照してください。

ツールをダウンロード
custom_hashfunc
acheron で使用可能なカスタムエンコーディング/ハッシュ関数の例