Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
acheron — 用于绕过AV/EDR的间接系统调用(Go汇编) | Kitploit
工具/GitHubGitHub/f1zm0/acheron
Shellcode红队Payload 开发
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 工具链添加间接系统调用能力,以绕过那些利用用户态钩子和 instrumentation callbacks 来检测从内核态返回用户态时未回到 ntdll.dll 的异常系统调用的 AV/EDR。

主要特性

  • 无依赖
  • 纯 Go 和 Go 汇编实现
  • 支持自定义字符串加密/哈希函数以对抗静态分析

工作原理

创建新的系统调用代理实例时,会执行以下步骤:

  1. 遍历 PEB 以获取内存中 ntdll.dll 的基地址
  2. 解析导出目录以获取每个导出函数的地址
  3. 计算每个 Zw* 函数的系统服务号
  4. 枚举 ntdll.dll 中未挂钩/干净的 syscall;ret 碎片,用作跳板
  5. 创建代理实例,可用于进行间接(或直接)系统调用

快速开始

将 acheron 集成到您的 OffSec 工具中非常简单。您可以使用以下命令安装该包:

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,                                  // 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(
        "使用 NtAllocateVirtualMemory 分配内存(状态: 0x%x)\n",
        retcode,
    )

    // ...
}

示例

仓库中包含以下示例:

示例描述
sc_inject极简的进程注入 PoC,支持直接和间接系统调用
process_snapshot使用间接系统调用通过系统调用来获取进程快照
custom_hashfunc

其他使用 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 河,这是亡灵被运送到冥界的河流。

注意
本项目使用语义化版本控制。小版本和补丁版本不应破坏与之前版本的兼容性。主版本只会在重大变更(破坏兼容性)时使用。

警告
本项目仅供教育目的创建。不要将其用于您不拥有的系统。本项目的开发者不对因不当使用该库造成的任何损害负责。

许可证

本项目采用 MIT 许可证 - 详情请参见 LICENSE 文件。

下载工具
可用于 acheron 的自定义编码/哈希函数示例