Amatsumara

Exploitation v2.9.1 · 01.05.2026 активный

Фреймворк для пентестинга на Rust с динамической загрузкой модулей через C FFI. Модули — нативные `.so`-библиотеки: добавить новую возможность = скопировать файл в директорию модулей. Содержит 8 exploit-модулей, 5 auxiliary, 3 post-exploitation, 2 генератора пейлоадов. AutoLHOST — автодетект VPN-интерфейса (tun0/tap0). Session management — открыть/закрыть/взаимодействовать с несколькими целями одновременно. Поиск по CVE: `search cve:CVE-2024-XXXX`. Async runtime на Tokio, Tab-completion в REPL. От того же автора, что и Tsukuyomi (lorsupra).

v2.9.1
01.05.2026 current
Добавлен 16.07.2026 · Обновлён 16.07.2026 · Exploitation
Установка
# Требования: Rust 1.70+, Linux x86_64
git clone https://codeberg.org/lorsupra/Amatsumara.git
cd Amatsumara
cargo build --release

# Запуск консоли
./target/release/amatsumara-console

# Основные команды REPL:
#   search <term>               -- поиск модулей (по имени, типу, CVE)
#   search cve:CVE-2024-45337   -- поиск по CVE
#   use exploit/module-slug     -- загрузить модуль
#   set LHOST 192.168.1.100    -- установить опцию (auto-detect tun0/tap0)
#   set LPORT 4444
#   run                         -- выполнить
#   run -j                      -- в фоне (background job)
#   sessions                    -- список сессий
#   sessions -i 1               -- interact с сессией #1

# Экспорт каталога модулей (JSON)
./target/release/amatsumara-console --list-modules --json | jq '.[].slug'
переведено ИИ

Amatsumara

Логотип Amatsumara

Аматсумара

Фреймворк для тестирования на проникновение, созданный на Rust

Модули компилируются как нативные разделяемые библиотеки и динамически загружаются во время выполнения.


Обзор

Amatsumara — это фреймворк для тестирования на проникновение, созданный с приоритетом на производительность и безопасность. Модули — это разделяемые библиотеки .so, загружаемые через C FFI. Чтобы добавить новые возможности, просто поместите файл .so в каталог модулей.

Количество
Модули эксплойтов 8
Вспомогательные модули 5
Утилитарные модули 1
Модули пост-эксплуатации 3
Генераторы полезных нагрузок 2

Документация по модулям — подробные опции, примеры использования, предупреждения и ссылки для каждого эксплойта и вспомогательного модуля.

Возможности

  • Динамическая загрузка модулей — модули .so загружаются во время выполнения, без перекомпиляции фреймворка
  • AutoLHOST — автоматическое обнаружение VPN-интерфейса (tun0/tap0)
  • Дополнение по Tab — для команд, имён модулей, опций, подкоманд
  • Управление сессиями — открытие, фонирование, взаимодействие, завершение сессий для различных целей
  • API взаимодействия с сессиями — пост-модули выполняют команды удалённо через сессии с помощью session_exec()
  • Фоновые задачи — запуск слушателей в фоне с помощью -j
  • Глобальные опцииsetg LHOST одна раз, действует везде
  • Нумерованный поиск — результаты search нумеруются для быстрого выбора с помощью use 0
  • Асинхронный рантайм — построен на Tokio

AutoLHOST

Amatsumara автоматически определяет ваш активный VPN-интерфейс (tun0/tap0) и заполняет LHOST при загрузке модуля. Больше не нужно запускать ip a перед каждым эксплойтом. Чтобы отключить: set autolhost false


Установка

Требования: Rust 1.70+, Linux x86_64

git clone https://codeberg.org/lorsupra/Amatsumara.git
cd Amatsumara
cargo build --release
./target/release/amatsumara-console

Неинтерактивный режим

Для внешних инструментов, которым нужен машиночитаемый инвентарь загруженных модулей, консоль предоставляет неинтерактивный путь перечисления, полностью обходя REPL:

amatsumara-console --list-modules           # human-readable table
amatsumara-console --list-modules --json    # JSON to stdout

JSON-формат представляет собой верхнеуровневый массив (удобен для конвейерной обработки с jq). Каждая запись содержит слаг модуля, тип, описание, автора, платформы, архитектуры, рейтинг, флаг привилегий, структурированный массив cves и полную таблицу опций. CVE-связи являются первичными метаданными на поверхности FFI начиная с API v3 (см. раздел «Архитектура» ниже), поэтому это поддерживаемый контракт для любого внешнего инструмента, которому нужно сопоставлять CVE со слагами модулей Amatsumara. Массивы cves, генерируемые этим выводом, содержат те же идентификаторы, что и команда search cve:<id> в консоли.


Команды

Выбор модуля

Команда Описание
search <термин> Поиск модулей по имени/описанию. Результаты нумеруются.
search cve:<id> Поиск модулей по CVE (например, cve:CVE-2021-44228, cve:2022-22965).
use <имя\|номер> Выбор модуля по имени или номеру из результатов поиска.
info [имя\|номер] Показать детали модуля. Без аргумента — текущий модуль.
back Отменить выбор текущего модуля.

Опции

Команда Описание
set <ОПЦИЯ> <значение> / forge <ОПЦИЯ> <значение> Установить опцию модуля.
unset <ОПЦИЯ> Сбросить опцию модуля.
setg <ОПЦИЯ> <значение> Установить глобальную опцию (сохраняется между модулями).
unsetg <ОПЦИЯ> Сбросить глобальную опцию.
set autolhost <true\|false> Переключить автоматическое определение LHOST.
options Показать текущие опции модуля.

Опции модуля (set) переопределяют глобальные (setg), которые, в свою очередь, переопределяют значения по умолчанию.

Выполнение

Команда Описание
run / strike Выполнить выбранный модуль.
run -j Выполнить как фоновую задачу.
check Запустить проверку уязвимости (если модуль поддерживает).

Сессии и задачи

Команда Описание
sessions -l Вывести список активных сессий.
sessions -i <id> Взаимодействовать с сессией.
sessions -k <id\|all> Завершить сессию(ии).
jobs Вывести список фоновых задач.
jobs -i <id> Перевести фоновую задачу на передний план (блокируется до её завершения).
jobs -k <id> Завершить фоновую задачу.
kill <id> Завершить фоновую задачу.

Внутри сессии: background — вернуться в консоль, exit — закрыть.

Отображение

Команда Описание
show exploits\|auxiliary\|payloads\|post\|all Вывести загруженные модули по типу.
help / ? Показать справку.
banner Повторно вывести стартовый баннер.
exit / quit Выйти из фреймворка.

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

Рабочий процесс эксплойта

amatsumara > search log4j

  #    Name                     Description
  -    ----                     -----------
  0    Apache Log4j RCE         Log4Shell JNDI injection (CVE-2021-44228)

amatsumara > use 0
[*] AutoLHOST: LHOST set to 10.10.14.5 (tun0)

amatsumara Apache Log4j RCE (exploit) > forge RHOSTS 192.168.1.100
RHOSTS => 192.168.1.100

amatsumara Apache Log4j RCE (exploit) > strike
[*] Launching module: Apache Log4j RCE

Мульти-обработчик с глобальными опциями

amatsumara > setg LHOST 10.0.0.5
amatsumara > setg LPORT 4444

amatsumara > use Multi Handler
amatsumara Multi Handler (utility) > run -j
[*] Job 1 started in background

amatsumara > jobs
  Id    Name             Running
  --    ----             -------
  1     Multi Handler    12s

Нативные полезные нагрузки

amatsumara > use Linux x64 Reverse TCP Shell
amatsumara Linux x64 Reverse TCP Shell (payload) > forge LHOST 10.0.0.5
amatsumara Linux x64 Reverse TCP Shell (payload) > forge LPORT 9001
amatsumara Linux x64 Reverse TCP Shell (payload) > strike
[*] Connecting to 10.0.0.5:9001

Архитектура

Amatsumara/
+-- amatsumara-api/        # C FFI types (ModuleVTable, ModuleInfo, etc.)
+-- amatsumara-core/       # Module loader, session manager, discovery
+-- amatsumara-console/    # Interactive REPL, tab completion
+-- kanayago/              # Payload generation engine
+-- modules/

|   +-- exploits/          # Exploit modules (.so + source)
|   +-- auxiliary/scanner/ # Scanner modules
|   +-- auxiliary/         # Standalone auxiliary modules
|   +-- utilities/         # Utility modules (handlers, etc.)
|   +-- post/              # Post-exploitation modules
|   +-- payloads/singles/  # Payload generators
+-- pattern-create/        # Buffer overflow pattern generator
+-- pattern-offset/        # Pattern offset finder

Загрузка модулей

  1. При запуске фреймворк рекурсивно сканирует каталог modules/ на наличие файлов .so
  2. Загружает каждую библиотеку, вызывает amatsumara_module_init() для получения VTable
  3. Считывает метаданные через C FFI, индексирует по имени для поиска/выбора
  4. Поместите новый .so в modules/ и перезапустите — он будет обнаружен автоматически

Версии API модулей

Модули сообщают свою MODULE_API_VERSION, и загрузчик в зависимости от этого определяет, какие поля он читает. Текущий контракт:

  • v1 — начальный интерфейс FFI. Отвергается текущим загрузчиком; пересоберите против v3.
  • v2 — добавляет API взаимодействия с сессиями (SessionApi, register_post_module!).
  • v3 — добавляет структурированные метаданные CVE через поле cves в ModuleMetadata.

Загрузчик по-прежнему загружает модули v2, но выводит одноразовое предупреждение и создаёт пустой Vec для cves для нижестоящих потребителей. Сам фреймворк поставляется со всеми встроенными модулями, собранными против v3.

Сессии

Модули эксплойтов открывают TCP-соединения и записывают метаданные сессии в /tmp/amatsumara_sessions/. Консоль берёт на себя управление потоком. Сессии сохраняются независимо — можно уйти в фон, позже взаимодействовать или завершить.

Модули пост-эксплуатации работают через эти сессии с помощью API взаимодействия с сессиями. Фреймворк внедряет указатели на функции C в модуль перед вызовом run(), что позволяет ему вызывать session_exec() для выполнения команд на удалённой цели и чтения вывода обратно. Пост-модули объявляют опцию SESSION для указания используемой сессии. Подробности об архитектуре трамплина и макросе register_post_module! см. в Документации по модулям.


Разработка модулей

Каждый модуль — это отдельный crate cdylib на Rust, экспортирующий amatsumara_module_init() -> *const ModuleVTable.

mkdir -p modules/exploits/my_exploit/src

Cargo.toml:

[package]
name = "my_exploit"
version = "0.1.0"
edition = "2021"

[lib]
crate-type = ["cdylib"]

[dependencies]
amatsumara-api = { path = "../../../amatsumara-api" }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"

src/lib.rs — паттерн можно увидеть в любом существующем модуле. Ключевые моменты:

  • Используйте amatsumara_api::CString (repr(C)), а не std::ffi::CString
  • Статические строки метаданных с обёртками CString, указывающими на .as_ptr()
  • Опции передаются как JSON *const c_char, парсятся с помощью serde_json
  • Возвращайте 0 для успеха, ненулевое значение для сбоя

Сборка и развёртывание:

cd modules/exploits/my_exploit
cargo build --release
cp target/release/libmy_exploit.so .
rm -rf target/

Утилиты

# Generate cyclic pattern for buffer overflow dev
./target/release/pattern-create -l 500

# Find offset of a pattern value
./target/release/pattern-offset -q 41386141

Планы на будущее

  • Стадированные полезные нагрузки (агент в стиле meterpreter)
  • Скрипты ресурсов (пакетные файлы команд)
  • Интеграция с базой данных для отслеживания целей и награбленного
  • Новые модули эксплойтов (добавляются только после тщательного тестирования)

Участие в разработке

Области интереса:

  1. Модули эксплойтов — реализации новых уязвимостей
  2. Библиотеки протоколов — реализации SSH, SMB, RDP
  3. Вспомогательные модули — сканеры, брутфорсеры, перечислители
  4. Полезные нагрузки — новые типы, стадированные нагрузки, кодировщики
  5. Тестирование — проверка на уязвимых целях

Лицензия

BSD-3-Clause

Комментарии
Войдите, чтобы оставить комментарий