
Родная оболочка WinRM на Nim с поддержкой NTLM, Kerberos, передачи файлов, вспомогательных средств в памяти и отчётов AD/OPSEC.
Нативный WinRM shell-клиент, написанный на Nim
Версия 1.2.0 · Автор Chokri Hammedi (blue0x1) · Лицензия MIT
nimrm предназначен для законного администрирования, тестирования безопасности и исследований систем, которыми вы владеете или на доступ к которым имеете явное разрешение. Автор не несёт ответственности за неправомерное использование или ущерб, причинённый этим инструментом.
nimrm предоставляет компактную и быструю оболочку WinRM с практичными средствами аутентификации, выполнения команд, передачи данных и сбора информации. Он собран как нативный бинарный файл Nim без зависимостей от пакетов Nim.
| Область | Поддержка |
|---|---|
| Аутентификация | Пароль NTLM, хэш NTLM, Kerberos через KRB5CCNAME |
| Транспорт WinRM | HTTP, HTTPS/TLS, произвольный порт |
| Оболочка | Интерактивный PowerShell, префикс CMD, режим однократной команды, автодополнение команд и локальных путей |
| Передача файлов | Загрузка/скачивание файлов, рекурсивная передача каталогов, удалённая пересылка файлов и каталогов между сеансами |
| В памяти | Импорт PowerShell-скриптов, выполнение управляемых сборок .NET |
| Отчётность | Контекст AD/домена, состояние журналирования и аудита |
| Надёжность | Обёртка сообщений Kerberos, обработка сброса/повторов транспорта |
| Компонент | Требование |
|---|---|
| Сборка | Nim >= 1.6.0 |
| Kerberos | libgssapi_krb5.so.2 в Linux или libgssapi_krb5.dylib в macOS |
| TLS-сборка | OpenSSL и -d:ssl |
| Целевая система | WinRM, доступный на выбранном порту |
Nimble:
nimble install nimrm
Скачайте последний релиз:
curl -L -o nimrm https://github.com/blue0x1/nimrm/releases/latest/download/nimrm
chmod +x nimrm
Бинарный файл релиза для Windows:
Invoke-WebRequest -Uri https://github.com/blue0x1/nimrm/releases/latest/download/nimrm.exe -OutFile nimrm.exe
Пакет Debian:
curl -L -o nimrm_1.2.0_amd64.deb https://github.com/blue0x1/nimrm/releases/latest/download/nimrm_1.2.0_amd64.deb
sudo dpkg -i nimrm_1.2.0_amd64.deb
BlackArch:
sudo pacman -S nimrm
PKGBUILD BlackArch отслеживает последний коммит в вышестоящем git-репозитории, поэтому новые релизы доходят до пользователей BlackArch при следующем обновлении системы. Если nimrm уже установлен, обновите его с помощью:
sudo pacman -Syu nimrm
Сборка из исходников:
git clone https://github.com/blue0x1/nimrm.git
cd nimrm
make linux
make linux
make ssl
make windows
Ручная сборка:
nim c -d:release --opt:speed -o:nimrm nimrm.nim
nimrm спроектирован так, чтобы оставаться быстрым: используется нативный бинарный файл Nim, постоянное пространство выполнения (runspace) WinRM, передача данных порциями и компактный вывод прогресса.
| Операция | Реализация |
|---|---|
| Загрузка | Запись Base64 порциями с адаптивными повторами для больших конвертов |
| Скачивание | Потоковая передача Base64-порций с отслеживанием прогресса и быстрым путём для небольших файлов |
| Удалённая пересылка между сеансами | Читает из одного сеанса WinRM и записывает в другой через память контроллера, не записывая файл на локальный диск |
| Передача каталогов | Рекурсивный обход файлов с использованием того же механизма порционной передачи |
| Выполнение команд | Повторно использует активную оболочку/runspace WinRM вместо переподключения для каждой команды |
Пароль NTLM:
./nimrm -T 192.168.1.10 -A 'CORP\administrator' -P 'Password123'
NTLM Pass-the-Hash:
./nimrm -T 192.168.1.10 -A 'CORP\user' -N aad3b435b51404eeaad3b435b51404ee:0123456789abcdef0123456789abcdef
Kerberos:
KRB5CCNAME=FILE:/tmp/user.ccache ./nimrm -k -T dc01.corp.local -Z CORP.LOCAL
Принудительное шифрование сообщений NTLM через HTTP:
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' --seal
Произвольный порт:
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' -p 5985
Однократная команда:
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' -c 'whoami'
Пропустить проверку TLS-сертификата (самоподписанные сертификаты):
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' --tls --insecure
| Параметр | Описание |
|---|---|
-T, --target | IP-адрес или имя хоста цели |
-A, --account | Имя пользователя: user, user@domain или DOMAIN\user |
-P, --secret | Пароль NTLM |
-p, --port | Порт WinRM |
-N, --nt-proof | NT-хэш или LM:NT хэш |
-Z, --krb-zone | Переопределение области Kerberos |
-K, --kerb-spn | Переопределение SPN Kerberos |
-k, --kerb | Использовать аутентификацию Kerberos |
-c, --command | Выполнить одну команду и выйти |
--tls | Использовать HTTPS/TLS |
--insecure | Пропустить проверку TLS-сертификата |
-h, --help | Показать справку |