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

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

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

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

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

Категории

Все категории
Loading categories
Bitmancer — Библиотека Nim для разработки инструментов наступательной безопасности | Kitploit
Инструменты/GitHubGitHub/zimawhit3/bitmancer
Обход IDS/IPSШелл-кодПост-эксплуатацияУтилиты и фреймворкиАнализ Бинарных ФайловRed TeamingРазработка Полезной Нагрузки
GitHubzimawhit3/bitmancer

Bitmancer

Библиотека Nim для разработки инструментов наступательной безопасности

Репозиторий
200212 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Bitmancer

Bitmancer — это библиотека для разработки инструментов offensive security для операционной системы Windows, написанная на Nim. Она предоставляет общие API, процедуры и макросы с высококонфигурируемыми, позиционно-независимыми автономными реализациями.

Если вы хотите разработать имплант, проверить быстрый PoC или написать новый блестящий инструмент — Bitmancer поможет вам начать!

⚠️ Этот репозиторий в настоящее время является масштабной незавершённой работой (WIP)! При использовании могут возникать проблемы, и на данный момент стабильность не гарантируется. ⚠️

Зависимости

Bitmancer частично использует winim для своих типов. Для установки выполните:

nimble install winim

Установка

Bitmancer пока не является частью репозитория nimble. На данный момент вы можете установить его с GitHub, просто выполнив:

nimble install https://github.com/zimawhit3/Bitmancer

Компиляция

MingW и Nim вводят зависимости от MSVCRT и Kernel32, а также глобальные переменные, используемые модулем System в Nim. Если вы хотите избежать этого для позиционно-независимого кода, используйте предоставленный nim.cfg.

Для компиляции: nim c -d:mingw <Your_Nim_File>

Использование

Для всех модулей:

root@kitploit:~
import Bitmancer

Если вам не нужны процедуры NTDLL или системные вызовы, вы можете просто использовать:

root@kitploit:~
import Bitmancer/core

Только для процедур хеширования:

root@kitploit:~
import Bitmancer/core/obfuscation/hash

Текущие TODO:

  • Упрощённые определения времени компиляции (YAML?)
  • CI/CD
  • Примеры
  • Документация
  • Более крупное хеш-семя времени компиляции
  • Тесты!

Возможности

Поддерживаемые в настоящее время возможности:

  • Разрешение имён ApiSet
  • Общие API (GetProcAddress, GetModuleHandle, GetSystemTime и т. д.)
  • Хеширование
    • Время компиляции
    • Время выполнения
  • Manual Mapper
    • С диска
    • Из памяти 🚧
      • DLL 🚧
      • COFF 🚧
  • NTDLL
    • Системные вызовы Nt*
    • Процедуры Rtl*
  • База данных NTLoader
    • Связные списки (LDR_DATA_TABLE_ENTRY)
    • Красно-чёрные деревья (RTL_BALANCED_NODE)
  • Разбор Portable Executable и утилиты
  • Перечисление SSN
    • Hell's Gate
    • Halo's Gate
    • Tartarus' Gate
    • LdrThunkSignatures
    • ZwCounter
  • Stack Strings
  • Техники обхода системных вызовов
    • Прямые системные вызовы
    • Косвенные системные вызовы

Будущие возможности, которые я планирую реализовать:

  • Процедуры и утилиты анти-отладки
  • Шифрование
  • Обработка исключений
  • Callback-функции
    • Инструментированные
    • Нативные
    • VEH
  • Процедуры и утилиты перехвата (hooking)
  • Дополнительные обёртки NTDLL
  • Техники обхода сна
    • Death Sleep
    • CreateTimerQueueTimer
  • Спуфинг стека
  • Техники обхода системных вызовов
    • Tamper

Если вы хотели бы, чтобы какая-то функция/техника была реализована, сообщите мне!

Примеры

Stack Strings:

root@kitploit:~
var wStr {.stackStringW.} = "Hello!"
var cStr {.stackStringA.} = "World!"

Если вы хотите создать обёртку для системного вызова, которого сейчас нет в наличии, основной порядок действий следующий:

root@kitploit:~
## Import syscalls
import Bitmancer/syscalls

## For hashing
import Bitmancer/core/obfuscation/hash

## Define your type
type NtClose = proc(h: HANDLE): NTSTATUS {.stdcall, gcsafe.}

## Generate the wrapper
genSyscall(NtClose)

## Define configurations for how to retrieve and execute the syscall

## The procedure's symbol enumeration method - available options are:
## UseEAT - use the export address table to resolve the symbol
## UseIAT - use the import address table to resolve the symbol
## UseLdrThunks - use the NTLoader's LdrThunkSignatures to map a clean NTDLL to resolve symbols from
const symEnum = SymbolEnumeration.UseEAT

## The SSN enumeration method - available options are:
## HellsGate
## HalosGate
## TartarusGate
## ZwCounter
const ssnEnum = SsnEnumeration.HellsGate

## Finally, the execution method - available options are:
## Direct   - use the direct syscall stub
## Indirect - use the indirect syscall stub
const exeEnum = SyscallExecution.Indirect

## Define an ident to use to identify the symbol
const NtCloseHash = ctDjb2 "NtClose"

## Retrive NTDLL
let Ntdll = ? NTDLL_BASE()

## Call ctGetNtSyscall, retrieving the NtSyscall object containing the SSN, pointer to the address of the function
## and a casted stub to your type.
let NtSyscall = ctGetNtSyscall[NtClose](Ntdll, ModuleHandle(NULL), NtCloseHash, symEnum, ssnEnum, exeEnum)

## Finally, call the wrapper!
NtCloseWrapper(h, NtSyscall.wSyscall, NtSyscall.pSyscall, NtSyscall.pFunction)

Полный пример см. в примере runShellCode.
Дополнительные примеры также можно найти в ntdll.

Скачать инструмент
  • Поддержка x86