
Shell WinRM nativa de Nim con NTLM, Kerberos, transferencia de archivos, utilidades en memoria e informes de AD/OPSEC.
Cliente de shell WinRM nativo escrito en Nim
Versión 1.2.0 · Autor Chokri Hammedi (blue0x1) · Licencia MIT
nimrm está destinado a la administración legítima, las pruebas de seguridad y la investigación en sistemas que usted posee o para los que tiene permiso explícito de acceso. El autor no se hace responsable del uso indebido o de los daños causados por esta herramienta.
nimrm proporciona un shell WinRM compacto y rápido con asistentes prácticos de autenticación, ejecución de comandos, transferencia y generación de informes. Está compilado como un binario nativo de Nim sin dependencias de paquetes de Nim.
| Área | Soporte |
|---|---|
| Autenticación | Contraseña NTLM, hash NTLM, Kerberos mediante KRB5CCNAME |
| Transporte WinRM | HTTP, HTTPS/TLS, puerto personalizado |
| Shell | PowerShell interactivo, prefijo CMD, modo de comando único, autocompletado de comandos y rutas locales |
| Transferencias | Subida/descarga de archivos, transferencia recursiva de directorios, retransmisión de archivos y directorios entre sesiones remotas |
| En memoria | Importación de scripts de PowerShell, ejecución de ensamblados .NET administrados |
| Informes | Contexto de AD/dominio, postura de registro y auditoría |
| Fiabilidad | Encapsulado de mensajes Kerberos, gestión de reinicio/reintento del transporte |
| Componente | Requisito |
|---|---|
| Compilación | Nim >= 1.6.0 |
| Kerberos | libgssapi_krb5.so.2 en Linux o libgssapi_krb5.dylib en macOS |
| Compilación TLS | OpenSSL y -d:ssl |
| Objetivo | WinRM accesible en el puerto seleccionado |
Nimble:
nimble install nimrm
Descargar la última versión:
curl -L -o nimrm https://github.com/blue0x1/nimrm/releases/latest/download/nimrm
chmod +x nimrm
Binario de la versión para Windows:
Invoke-WebRequest -Uri https://github.com/blue0x1/nimrm/releases/latest/download/nimrm.exe -OutFile nimrm.exe
Paquete 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
El PKGBUILD de BlackArch sigue el último commit de git upstream, por lo que las nuevas versiones llegan a los usuarios de BlackArch en su siguiente actualización del sistema. Si nimrm ya está instalado, actualícelo con:
sudo pacman -Syu nimrm
Compilar desde el código fuente:
git clone https://github.com/blue0x1/nimrm.git
cd nimrm
make linux
make linux
make ssl
make windows
El objetivo de Windows compila un único ejecutable autocontenido con capacidad SSL en dist/windows/nimrm.exe. El lanzador está escrito en Nim e incorpora el núcleo WinRM generado más las DLL de tiempo de ejecución necesarias de vendor/windows-runtime/, las extrae a un directorio de tiempo de ejecución temporal cuando se ejecuta y luego ejecuta el núcleo con los mismos argumentos. Esto admite WinRM sobre HTTP simple a menos que se pase --tls / --ssl, y WinRM sobre HTTPS cuando TLS está habilitado. El tiempo de ejecución de OpenSSL incorporado utiliza:
libssl-3-x64.dll
libcrypto-3-x64.dll
El modo Kerberos (-k / --kerb) se carga de forma diferida en Windows para que el ejecutable pueda iniciarse incluso cuando no se utiliza Kerberos. La compilación de Windows incorpora el tiempo de ejecución de MIT Kerberos/GSSAPI utilizado por el modo Kerberos.
Compilación manual:
nim c -d:release --opt:speed -o:nimrm nimrm.nim
nimrm está diseñado para mantenerse rápido mediante el uso de un binario nativo de Nim, un runspace WinRM persistente, lógica de transferencia por fragmentos y una representación de progreso compacta.
| Operación | Implementación |
|---|---|
| Subida | Escrituras Base64 por fragmentos con reintento adaptativo en sobres grandes |
| Descarga | Fragmentos Base64 en streaming con seguimiento del progreso y una ruta rápida para archivos pequeños |
| Retransmisión entre sesiones remotas | Lee de una sesión WinRM y escribe en otra a través de la memoria del controlador sin escribir el archivo en el disco local |
| Transferencia de directorios | Enumeración recursiva de archivos utilizando la misma ruta de transferencia por fragmentos |
| Ejecución de comandos | Reutiliza el shell/runspace WinRM activo en lugar de reconectar por cada comando |
Contraseña 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
Forzar el cifrado de mensajes NTLM sobre HTTP:
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' --seal
Puerto personalizado:
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' -p 5985
Comando único:
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' -c 'whoami'
Omitir la verificación del certificado TLS (certificados autofirmados):
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' --tls --insecure