Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
acheron — Непрямые системные вызовы для обхода AV/EDR в ассемблере Go | Kitploit
Инструменты/GitHubGitHub/f1zm0/acheron
Шелл-кодRed TeamingРазработка Полезной Нагрузки
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, чтобы обходить AV/EDR, которые используют хуки в пользовательском режиме и инструментационные обратные вызовы для обнаружения аномальных системных вызовов, которые не возвращаются в ntdll.dll при переходе от ядра к пользовательскому режиму.

Основные возможности

  • Нет зависимостей
  • Реализация на чистом Go и ассемблере Go
  • Поддержка пользовательских функций шифрования/хеширования строк для противодействия статическому анализу

Как это работает

При создании нового экземпляра прокси системных вызовов выполняются следующие шаги:

  1. Обойти PEB, чтобы получить базовый адрес ntdll.dll в памяти
  2. Разобрать каталог экспорта, чтобы получить адрес каждой экспортированной функции
  3. Вычислить номер системного сервиса для каждой функции Zw*
  4. Перечислить нехooked/чистые syscall;ret гаджеты в ntdll.dll для использования в качестве трамплинов
  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)
    )

    // 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,
    )

    // ...
}

Примеры

В репозиторий включены следующие примеры:

ПримерОписание
sc_injectЧрезвычайно простой PoC внедрения процессов с поддержкой как прямых, так и косвенных системных вызовов

Другие проекты, использующие acheron:

  • hades

Участие

Вклад приветствуется! Ниже перечислены некоторые вещи, которые было бы хорошо иметь в будущем:

  • Поддержка 32-битных систем
  • Другие типы резолверов (например, HalosGate/TartarusGate)
  • Больше примеров

Если у вас есть предложения или идеи, не стесняйтесь открывать issue или PR.

Ссылки

  • Конференция Golang UK 2016 — Michael Munday — Спуск функций 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
Этот проект использует семантическое версионирование. Минорные и патч-релизы не должны нарушать совместимость с предыдущими версиями. Мажорные релизы будут использоваться только для крупных изменений, нарушающих совместимость с предыдущими версиями.

Warning
Этот проект создан исключительно в образовательных целях. Не используйте его на системах, которые вам не принадлежат. Разработчик этого проекта не несёт ответственности за любой ущерб, причинённый неправильным использованием библиотеки.

Лицензия

Этот проект лицензируется по лицензии MIT — см. файл LICENSE для подробностей.

Скачать инструмент
process_snapshot
Использование косвенных системных вызовов для создания снимков процессов
custom_hashfuncПример пользовательской функции кодирования/хеширования, которую можно использовать с acheron