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

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

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

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

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

Категории

Все категории
Loading categories
OffensiveRust — Вооружение на Rust для операций красной команды. | Kitploit
Инструменты/GitHubGitHub/trickster0/offensiverust
Повышение привилегийЭксплуатацияОбход IDS/IPSОбратная инженерияШелл-кодПост-эксплуатацияАнализ вредоносных программКомандование и УправлениеОбучение и ОбразованиеRed TeamingРазработка Полезной НагрузкиЭксплуатация Бинарных Файлов
3.0k343193 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

OffensiveRust

Вооружение на Rust для операций красной команды.

Репозиторий

OffensiveRust

OffensiveRust

Мои эксперименты по превращению Rust в оружие для разработки имплантов и общих наступательных операций.

Содержание

  • OffensiveRust
    • Почему Rust?
    • Примеры в этом репозитории
    • Компиляция примеров
    • Компиляция примеров из этого репозитория
    • Кросс-компиляция
    • Оптимизация исполняемых файлов по размеру
    • Ловушки, в которые я попадал
    • Интересные библиотеки Rust
    • Opsec
    • Другие мои проекты на Rust
    • Полезные проекты на Rust

Почему Rust?

  • Он быстрее таких языков, как C/C++
  • Это многоцелевой язык с отличным сообществом
  • У него есть отличная встроенная система управления зависимостями сборки Cargo
  • Он основан на LLVM, что делает его отличным кандидатом для обхода статического обнаружения AV
  • Очень простая кросс-компиляция в Windows из *nix/MacOS, требуется только установка тулчейна mingw, хотя некоторые библиотеки не удаётся успешно скомпилировать в других ОС.

Примеры в этом репозитории

Компиляция примеров из этого репозитория

Этот репозиторий не предоставляет бинарные файлы, вы должны скомпилировать их сами.

Установите Rust
Просто скачайте бинарный файл и установите.

Этот репозиторий компилировался в Windows 10, так что я бы придерживался её. Как упоминалось, бинарники OpenSSL будут иметь проблемы с зависимостями, требующие установки OpenSSL и perl. Для TCP SSL клиента/сервера рекомендую статическую сборку из-за зависимостей на хостах, где вы будете выполнять бинарники. Для создания проекта выполните:
cargo new <имя> Это автоматически создаст структурированные папки проекта с:```bash
project ├── Cargo.toml └── src └── main.rs

root@kitploit:~
Cargo.toml — это файл, содержащий зависимости и конфигурацию для компиляции.
main.rs — это основной файл, который будет скомпилирован вместе с возможными каталогами, содержащими библиотеки.

Для компиляции проекта перейдите в каталог проекта и выполните:  
`cargo build`

Это будет использовать вашу цепочку инструментов по умолчанию.
Если вы хотите собрать финальную «release» версию, выполните:  
`cargo build --release`

Для статических двоичных файлов в терминале перед командой сборки выполните:  
`"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"`  
`set RUSTFLAGS=-C target-feature=+crt-static`

Если вам неудобно читать мой код в том виде, в каком он написан,
вы также можете использовать следующую команду внутри каталога проекта, чтобы отформатировать его более удобным способом  
`cargo fmt`

Некоторые примеры могут не скомпилироваться и выдавать ошибку, так как может потребоваться ночная сборка
Rust с последними функциями. Чтобы установить её, просто выполните:  
`rustup default nightly`  



Самый простой способ найти зависимости или [Crates](https://crates.io/), как они называются.

## Кросс-компиляция

Кросс-компиляция требует следования инструкциям [здесь](https://rust-lang.github.io/rustup/cross-compilation.html)
Установив различные цепочки инструментов, вы можете выполнять кросс-компиляцию с помощью следующей команды  
`cargo build --target <toolchain>`  

Чтобы увидеть установленные цепочки инструментов в вашей системе, выполните:  
`rustup toolchain list`  

Чтобы проверить все доступные для установки цепочки инструментов, выполните:  
`rustup target list`  

Для установки новой цепочки инструментов выполните:  
`rustup target add <toolchain_name>`  


## Оптимизация исполняемых файлов по размеру

Этот [репозиторий](https://github.com/johnthagen/min-sized-rust) содержит множество опций конфигурации и идей по уменьшению размера файла.
Статические двоичные файлы обычно довольно большие.

## Ловушки, в которые я сам попадал

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


## Интересные библиотеки Rust

- WINAPI  
- [WINAPI2](https://github.com/MauriceKayser/rs-winapi2)  
- Windows — это официальная библиотека от Microsoft, с которой я не особо игрался

## OPSEC

- Хотя Rust имеет хорошие преимущества, к нему довольно сложно привыкнуть, и он не очень интуитивен.  
- Генерация шелл-кода — ещё одна проблема из-за LLVM. Я нашёл несколько способов подойти к этому.  
[Donut](https://github.com/TheWover/donut) иногда генерирует работающий шелл-код, но в зависимости от того, как сделан проект, это может не сработать.  
В целом, для генерации шелл-кода инструменты должны быть сделаны так, чтобы размещать весь код в сегменте .text,
что приводит к этому замечательному [репозиторию](https://github.com/b1tg/rust-windows-shellcode).
В этом проекте есть пример шелл-кода, который покажет, как структурировать код для успешной генерации шелл-кода.  
Кроме того, в этом проекте также есть генератор шелл-кода, который извлекает сегмент .text двоичного файла и
и выгружает шелл-код после выполнения некоторых патчей.  
Этот проект берёт двоичный файл из определённого места, поэтому я сделал форк, который принимает путь к двоичному файлу в качестве аргумента [здесь](https://github.com/trickster0/rust-windows-shellcode-custom).  
- Даже если вы удалите все отладочные символы, Rust всё равно может сохранять ссылки на ваш домашний каталог в двоичном файле. Единственный способ, который я нашёл, чтобы удалить это — передать следующий флаг: `--remap-path-prefix {ваш домашний каталог}={случайный идентификатор}`. Вы можете использовать переменные bash для получения домашнего каталога и генерации случайного заполнителя: `--remap-path-prefix "$HOME"="$RANDOM"`. (Автор [Yamakadi](https://github.com/yamakadi))
- Хотя для описанного выше есть другой способ удалить информацию о домашнем каталоге, добавив в начало Cargo.toml  
`cargo-features = ["strip"]` .  
Поскольку Rust по умолчанию оставляет много вещей в виде строк в двоичном файле, я в основном использую этот [cargo.toml](../master/cargo.toml), чтобы избежать этого и уменьшить размер  
с командой сборки   
`cargo build --release -Z build-std=std,panic_abort -Z build-std-features=panic_immediate_abort --target x86_64-pc-windows-msvc`
- [Yamakadi] также указал, что в зависимости от импортированных библиотек, stripping не всегда последовательно скрывает домашний каталог, поэтому комбинация его решения с переназначением пути и использования вышеуказанного cargo будет работать лучше. Постарайтесь быть внимательными и проверять свои двоичные файлы перед запуском в ваших миссиях на предмет потенциальных строк, которые не были удалены должным образом.

## Другие проекты, которые я сделал на Rust

- [UDPlant](https://github.com/trickster0/UDPlant) — По сути, UDP-обратный шелл  
- [EDR Detector](https://github.com/trickster0/EDR_Detector) — Обнаруживает EDR установленной системы по установленным .sys файлам  
- [Lenum](https://github.com/trickster0/Lenum) — Простой инструмент для перечисления в Unix

## Полезные проекты на Rust

- [houdini](https://github.com/yamakadi/houdini) — Помогает сделать ваш исполняемый файл самоудаляемым
Скачать инструмент
ФайлОписание
Allocate_With_SyscallsИспользует функции NTDLL напрямую с библиотекой ntapi
Create_DLLСоздаёт DLL и показывает окно сообщения; Rust не полностью поддерживает это, так что возможны странности, так как DLL на Rust не имеют функции main
DeviceIoControlОткрывает дескриптор драйвера и выполняет DeviceIoControl
EnableDebugPrivilegesВключает привилегию SeDebugPrivilege в текущем процессе
Shellcode_Local_injectВыполняет шеллкод непосредственно в локальном процессе, используя приведение указателя
Execute_With_CMDВыполняет cmd, передавая команду через Rust
ImportedFunctionCallИмпортирует minidump из dbghelp и выполняет его
Kernel_Driver_ExploitЭксплойт для драйвера ядра — простая переполнение буфера
Named_Pipe_ClientКлиент именованного канала
Named_Pipe_ServerСервер именованного канала
PEB_WalkДинамическое разрешение и вызов Windows API
Process_Injection_CreateThreadВнедрение процесса в запущенный процесс с помощью CreateThread
Process_Injection_CreateRemoteThreadВнедрение процесса в удалённый процесс с помощью CreateRemoteThread
Process_Injection_Self_EnumSystemGeoIDСамоинжектор, использующий вызов API EnumSystemGeoID для запуска шеллкода
UnhookingВызовы unhooking
asm_syscallПолучение адреса PEB через ассемблер
base64_system_enumКодирование/декодирование строк в Base64
http-https-requestsHTTP/S запросы с игнорированием проверки сертификата для GET/POST
patch_etwПатч ETW
ppid_spoofПодмена родительского процесса для созданного процесса
tcp_ssl_clientTCP-клиент с SSL, игнорирующий проверку сертификата (требуется установка openssl и perl для компиляции)
tcp_ssl_serverTCP-сервер с параметром порта (требуется установка openssl и perl для компиляции)
wmi_executeВыполняет WMI-запрос для получения AV/EDR на хосте
Windows.h+ BindingsЭтот файл содержит структуры Windows.h, а также полные пользовательские LDR, PEB и т.д., официально не документированные Microsoft; добавьте в начало вашего файла include!("../bindings.rs");
UUID_Shellcode_ExecutionПомещает шеллкод из массива UUID в пространство кучи и использует обратный вызов EnumSystemLocalesA для выполнения шеллкода
AMSI BypassОбход AMSI в локальном процессе
Injection_AES_LoaderВнедрение через NtTestAlert с дешифрованием AES
Litcrypt_String_EncryptionИспользование крейта Litcrypt для шифрования строковых литералов в покое и в памяти для обхода статического AV
Api HookingПерехват API с использованием библиотеки detour
memfd_createВыполнение полезной нагрузки из памяти с помощью техники memfd_create (для Linux)
RC4_EncryptionШеллкод, дешифрованный RC4
Steal TokenКража токена из процесса
Keyboard HookingКейлоггинг через перехват клавиатуры с помощью SetWindowsHookEx
memN0ps arsenal: shellcode_runner_classic-rsКлассический загрузчик/инжектор шеллкода с использованием ntapi
memN0ps arsenal: dll_injector_classic-rsКлассическое внедрение DLL с использованием windows-sys
memN0ps arsenal: module_stomping-rsModule Stomping / Module Overloading / DLL Hollowing с использованием windows-sys
memN0ps arsenal: obfuscate_shellcode-rsПростой обфускатор шеллкода XOR и AES
memN0ps arsenal: process_hollowing-rsProcess Hollowing с использованием ntapi
memN0ps arsenal: rdi-rsРефлективное внедрение DLL с использованием windows-sys
memN0ps: eagle-rsRusty Rootkit: драйвер ядра Windows на Rust для Red Team с использованием winapi и ntapi
memN0ps: psyscalls-rsБиблиотека параллельных системных вызовов на Rust с использованием winapi
memN0ps: mmapper-rsРучной маппер на Rust с использованием winapi
memN0ps: srdi-rsРефлективное внедрение DLL через шеллкод на Rust с использованием windows-sys
memN0ps: mordor-rs — freshycalls_syswhispersБиблиотека FreshyCalls / SysWhispers1 / SysWhispers2 / SysWhispers3 на Rust с использованием windows-sys
memN0ps: mordor-rs — hells_halos_tartarus_gateБиблиотека Hell's Gate / Halo's Gate / Tartarus' Gate на Rust с использованием windows-sys
memN0ps: pemadness-rsБиблиотека разбора переносимых исполняемых файлов (PE Parsing Library) на Rust с использованием windows-sys
memN0ps: mimiRustMimikatz, написанный на Rust от @ThottySploit. Оригинальный автор удалил свой аккаунт на GitHub, поэтому выложен для сообщества.
memN0ps и trickster0: ekko-rsRusty Ekko — обфускация сна в Rust с использованием windows-sys.