
Shell WinRM nativo em Nim com NTLM, Kerberos, transferência de arquivos, auxiliares em memória e relatórios de AD/OPSEC.
Cliente shell WinRM nativo escrito em Nim
Versão 1.2.0 · Autor Chokri Hammedi (blue0x1) · Licença MIT
nimrm destina-se a administração legítima, testes de segurança e pesquisa em sistemas que você possui ou tem permissão explícita para acessar. O autor não é responsável pelo uso indevido ou danos causados por esta ferramenta.
nimrm fornece um shell WinRM compacto e rápido com auxiliares práticos de autenticação, execução de comandos, transferência e relatórios. É compilado como um binário Nim nativo sem dependências de pacotes Nim.
| Área | Suporte |
|---|---|
| Autenticação | Senha NTLM, hash NTLM, Kerberos via KRB5CCNAME |
| Transporte WinRM | HTTP, HTTPS/TLS, porta personalizada |
| Shell | PowerShell interativo, prefixo CMD, modo de comando único, autocompletar de comandos e caminhos locais |
| Transferências | Upload/download de arquivos, transferência recursiva de diretórios, relay de arquivos e diretórios entre sessões remotas |
| Em memória | Importação de script PowerShell, execução de assembly .NET gerenciado |
| Relatórios | Contexto de AD/domínio, postura de logging e auditoria |
| Confiabilidade | Empacotamento de mensagens Kerberos, tratamento de reset/retry de transporte |
| Componente | Requisito |
|---|---|
| Compilação | Nim >= 1.6.0 |
| Kerberos | libgssapi_krb5.so.2 no Linux ou libgssapi_krb5.dylib no macOS |
| Compilação TLS | OpenSSL e -d:ssl |
| Alvo | WinRM acessível na porta selecionada |
Nimble:
nimble install nimrm
Baixar a versão mais recente:
curl -L -o nimrm https://github.com/blue0x1/nimrm/releases/latest/download/nimrm
chmod +x nimrm
Binário de release para Windows:
Invoke-WebRequest -Uri https://github.com/blue0x1/nimrm/releases/latest/download/nimrm.exe -OutFile nimrm.exe
Pacote 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
O PKGBUILD do BlackArch acompanha o commit git mais recente do upstream, então novas versões chegam aos usuários do BlackArch na próxima atualização do sistema. Se o nimrm já estiver instalado, atualize-o com:
sudo pacman -Syu nimrm
Compilar a partir do código-fonte:
git clone https://github.com/blue0x1/nimrm.git
cd nimrm
make linux
make linux
make ssl
make windows
O alvo Windows compila um único executável autocontido com suporte a SSL em dist/windows/nimrm.exe. O launcher é escrito em Nim e incorpora o núcleo WinRM gerado mais as DLLs de runtime necessárias de vendor/windows-runtime/, extrai-as para um diretório de runtime temporário quando executado, e então executa o núcleo com os mesmos argumentos. Isso suporta WinRM HTTP simples, a menos que --tls / --ssl seja passado, e WinRM HTTPS quando TLS está habilitado. O runtime OpenSSL incorporado usa:
libssl-3-x64.dll
libcrypto-3-x64.dll
O modo Kerberos (-k / --kerb) é carregado de forma lazy no Windows para que o executável possa iniciar mesmo quando Kerberos não é usado. A compilação para Windows incorpora o runtime MIT Kerberos/GSSAPI usado pelo modo Kerberos.
Compilação manual:
nim c -d:release --opt:speed -o:nimrm nimrm.nim
nimrm foi projetado para se manter rápido usando um binário Nim nativo, runspace WinRM persistente, lógica de transferência em chunks e renderização compacta de progresso.
| Operação | Implementação |
|---|---|
| Upload | Escritas Base64 em chunks com retry adaptativo em envelopes grandes |
| Download | Chunks Base64 em streaming com acompanhamento de progresso e caminho rápido para arquivos pequenos |
| Relay entre sessões remotas | Lê de uma sessão WinRM e escreve em outra através da memória do controlador sem gravar o arquivo no disco local |
| Transferência de diretórios | Enumeração recursiva de arquivos usando o mesmo caminho de transferência em chunks |
| Execução de comandos | Reutiliza o shell/runspace WinRM ativo em vez de reconectar a cada comando |
Senha 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
Forçar criptografia de mensagem NTLM sobre HTTP:
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' --seal
Porta personalizada:
./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'
Ignorar verificação de certificado TLS (certificados autoassinados):
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' --tls --insecure
| Opção | Descrição |
|---|---|
-T, --target | IP ou hostname de destino |
-A, --account | Nome de usuário: user, user@domain ou DOMAIN\user |
-P, --secret | Senha NTLM |
-p, --port | Porta WinRM |
-N, --nt-proof | Hash NT ou hash LM:NT |
-Z, --krb-zone | Substituição do realm Kerberos |
-K, --kerb-spn | Substituição do SPN Kerberos |
-k, --kerb | Usar autenticação Kerberos |
-c, --command | Executar um comando e sair |
--tls | Usar HTTPS/TLS |
--insecure | Ignorar verificação de certificado TLS |
-h, --help | Mostrar ajuda |