
Shell WinRM nativo em Nim com NTLM, Kerberos, transferência de arquivos, auxiliares em memória e relatórios de AD/OPSEC.
Cliente de shell WinRM nativo escrito em Nim
Versão 1.2.0 · Autor Chokri Hammedi (blue0x1) · Licença MIT
O nimrm destina-se a administração legítima, testes de segurança e pesquisa em sistemas que você possui ou para os quais tem permissão explícita de acesso. O autor não é responsável por uso indevido ou danos causados por esta ferramenta.
O nimrm fornece um shell WinRM compacto e rápido com autenticação prática, execução de comandos, transferência e utilitários de relatórios. Ele é construído 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, retransmissão remota de arquivos e diretórios entre sessões |
| Em memória | Importação de scripts PowerShell, execução de assemblies .NET gerenciados |
| Relatórios | Contexto de AD/domínio, postura de logging e auditoria |
| Confiabilidade | Encapsulamento de mensagens Kerberos, tratamento de redefinição/re-tentativa 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
Baixe a versão mais recente:
curl -L -o nimrm https://github.com/blue0x1/nimrm/releases/latest/download/nimrm
chmod +x nimrm
Binário da versão 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
Compile a partir do código-fonte:
git clone https://github.com/blue0x1/nimrm.git
cd nimrm
make linux
make linux
make ssl
make windows
Compilação manual:
nim c -d:release --opt:speed -o:nimrm nimrm.nim
O nimrm foi projetado para permanecer rápido usando um binário Nim nativo, runspace WinRM persistente, lógica de transferência em blocos e renderização compacta de progresso.
| Operação | Implementação |
|---|---|
| Upload | Gravações Base64 em blocos com nova tentativa adaptativa para envelopes grandes |
| Download | Blocos Base64 transmitidos com acompanhamento de progresso e caminho rápido para arquivos pequenos |
| Retransmissão remota de sessão | Lê de uma sessão WinRM e grava em outra pela memória do controlador, sem gravar o arquivo no disco local |
| Transferência de diretório | Enumeração recursiva de arquivos usando o mesmo caminho de transferência em blocos |
| Execução de comandos | Reutiliza o shell/runspace WinRM ativo em vez de reconectar por comando |
Senha NTLM:
./nimrm -T 192.168.1.10 -A 'CORP\administrator' -P 'Password123'
Pass-the-hash NTLM:
./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 mensagens NTLM via 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 nome de host 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 de realm Kerberos |
-K, --kerb-spn | Substituição de 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 |