
Esse shell é o último shell do WinRM para hackers / pentesting.WinRM (Windows Remote Management) é a implementação da Microsoft do WS-Management Protocol. Um protocolo padrão baseado em SOAP que permite que hardware e sistemas operacionais de diferentes fornecedores interoperem. A Microsoft o incluiu em seus sistemas operacionais para facilitar a vida dos administradores de sistema.Este programa pode ser usado em qualquer Microsoft Windows Servers com esse recurso ativado (geralmente na porta 5985), é claro, apenas se você tiver credenciais e permissões para usá-lo. Portanto, podemos dizer que poderia ser usado em uma fase de hackers / pentesting pós-exploração . O objetivo deste programa é fornecer recursos agradáveis e fáceis de usar para hackers. Ele também pode ser usado com propósitos legítimos pelos administradores de sistema, mas a maioria de seus recursos está focada em hackers / pentesting.
Recursos
- Carregar na memória scripts do Powershell
- Carregar em arquivos DLL de memória ignorando alguns AVs
- Carregar na memória C # (C Sharp) assemblies ignorando alguns AVs
- Carregar cargas úteis x64 geradas com a incrível técnica de rosquinha
- Bypass AMSI
- Suporte Pass-the-Hash
- Suporte de autenticação Kerberos
- Suporte a SSL e certificados
- Carregar e baixar arquivos
- Listar serviços de máquina remota sem privilégios
- Histórico de comandos
- Conclusão do comando WinRM
- Conclusão de arquivos locais
- Colorização nas mensagens de saída (pode ser desativado opcionalmente)
Socorro
Usage: evil-winrm -i IP -u USER [-s SCRIPTS_PATH] [-e EXES_PATH] [-P PORT] [-p PASS] [-H HASH] [-U URL] [-S] [-c PUBLIC_KEY_PATH ] [-k PRIVATE_KEY_PATH ] [-r REALM]
-S, --ssl Enable ssl
-c, --pub-key PUBLIC_KEY_PATH Local path to public key certificate
-k, --priv-key PRIVATE_KEY_PATH Local path to private key certificate
-r, --realm DOMAIN Kerberos auth, it has to be set also in /etc/krb5.conf file using this format -> CONTOSO.COM = { kdc = fooserver.contoso.com }
-s, --scripts PS_SCRIPTS_PATH Powershell scripts local path
-e, --executables EXES_PATH C# executables local path
-i, --ip IP Remote host IP or hostname (required)
-U, --url URL Remote url endpoint (default wsman)
-u, --user USER Username (required if not using kerberos)
-p, --password PASS Password
-H, --hash NTHash NTHash
-P, --port PORT Remote host port (default 5985)
-V, --version Show version
-h, --help Display this help message
Requisitos
Ruby 2.3 ou superior é necessário. Algumas gemas de rubi são necessários, bem como:winrm >=2.3.2,winrm-fs >=1.3.2,stringio >=0.0.2ecolorize >=0.8.1. Dependendo do seu método de instalação (3 disponíveis), pode ser necessário que a instalação deles seja feita manualmente.
Instalação e início rápido (3 métodos)
Método 1. Instalação diretamente como ruby gem (as dependências serão instaladas automaticamente no seu sistema)
- Etapa 1. Instale-o (ele instalará automaticamente dependências):
gem install evil-winrm - Etapa 2. Pronta. Basta iniciá-lo!
~$ evil-winrm -i 192.168.1.100 -u Administrator -p 'MySuperSecr3tPass123!' -s '/home/foo/ps1_scripts/' -e '/home/foo/exe_files/'
Método 2. Git clone e instale dependências no seu sistema manualmente
- Etapa 1. Instale as dependências manualmente:
~$ sudo gem install winrm winrm-fs colorize stringio - Etapa 2. Clone o repositório:
git clone https://github.com/Hackplayers/evil-winrm.git - Etapa 3. Pronta. Basta iniciá-lo!
~$ cd evil-winrm && ruby evil-winrm.rb -i 192.168.1.100 -u Administrator -p 'MySuperSecr3tPass123!' -s '/home/foo/ps1_scripts/' -e '/home/foo/exe_files/'
Método 3. Usando o bundler (as dependências não serão instaladas no seu sistema, apenas para usar o evil-winrm)
- Etapa 1. Instale o bundler:
gem install bundler:2.0.2 - Etapa 2. Instale dependências com o bundler:
cd evil-winrm && bundle install --path vendor/bundle - Etapa 3. Inicie-o com o empacotador:
bundle exec evil-winrm.rb -i 192.168.1.100 -u Administrator -p 'MySuperSecr3tPass123!' -s '/home/foo/ps1_scripts/' -e '/home/foo/exe_files/'
Documentação
Senha de texto
não criptografado Se você não quiser colocar a senha em texto não criptografado, é possível evitar o-pargumento deconfiguraçãoe a senha será solicitada, impedindo que seja exibida.
Ipv6
Para usar o IPv6, o endereço deve ser adicionado ao / etc / hosts. Basta colocar o nome já definido do host após o-iargumento, em vez de um endereço IP.
Comandos básicos
- upload : os arquivos locais podem ser preenchidos automaticamente usando a tecla Tab.
- uso:
upload local_filenameouupload local_filename destination_filename
- uso:
- download :
- uso:
download remote_filenameoudownload remote_filename destination_filename
- uso:
Nota sobre caminhos (upload / download) : Não é permitido o uso de caminhos relativos no download / upload. Use nomes de arquivos no diretório atual ou no caminho absoluto.
- serviços : lista todos os serviços. Não são necessárias permissões de administrador.
- Menu : carregar os
Invoke-Binary,l04d3r-LoadDll,Donut-LoadereBypass-4MSIfunções que vamos explicar abaixo. Quando um ps1 é carregado, todas as suas funções serão mostradas.

Carregar scripts do PowerShell
- Para carregar um arquivo ps1, basta digitar o nome (guia usnig de preenchimento automático permitida). Os scripts devem estar no caminho definido no
-sargumento. Digite menu novamente e veja as funções carregadas. Arquivos muito grandes podem levar muito tempo para serem carregados.

Comandos avançados
- Invoke-Binary: permite que exes compilados de c # sejam executados na memória. O nome pode ser preenchido automaticamente usando a tecla Tab e permite até 3 parâmetros. Os executáveis devem estar no caminho definido no
-eargumento.

- l04d3r-LoadDll: permite carregar bibliotecas dll na memória, é equivalente a:
[Reflection.Assembly]::Load([IO.File]::ReadAllBytes("pwn.dll"))
O arquivo dll pode ser hospedado por smb, http ou localmente. Depois de carregadomenu, é possível completar automaticamente todas as funções.


- Donut-Loader: permite injetar cargas úteis x64 geradas com a incrível técnica de rosquinha . Não há necessidade de codificar o payload.bin, basta gerar e injetar!

- Você pode usar esse fabricante de rosquinhas para gerar o payload.bin se não usar o Windows. Este script usa um módulo python escrito por Marcello Salvati ( byt3bl33d3r ). Pode ser instalado usando pip:
-
pip3 install donut-shellcode

- Bypass-4MSI: corrige a proteção AMSI.

Kerberos
- Primeiro você precisa sincronizar a data com o DC:
rdate -n <dc_ip> - Para gerar ticket, existem várias maneiras:
- Usando ticketer.py do impacket:
ticketer.py -dc-ip <dc_ip> -nthash <krbtgt_nthash> -domain-sid <domain_sid> -domain <domain_name> <user> - Se você receber um ticket kirbi usando o Rubeus ou o Mimikatz, precisará converter para o ccache usando o ticket_converter.py :
python ticket_converter.py ticket.kirbi ticket.ccache
- Usando ticketer.py do impacket:
- Adicionar ticket ccache. Existem 2 maneiras:
export KRB5CCNAME=/foo/var/ticket.ccachecp ticket.ccache /tmp/krb5cc_0 - Adicione domínio a
/etc/krb5.conf(para linux). O uso deste formato é importante:CONTOSO.COM = { kdc = fooserver.contoso.con } - Verifique os bilhetes Kerberos com
klist - Para remover o ticket, use:
kdestroy - Para mais informações sobre o Kerberos, verifique esta folha de dicas
Recursos extras
- Para desativar as cores, modifique no código essa variável
$colors_enabled. Defina-o como false:$colors_enabled = false
Créditos:
Autor principal:
Colaboradores, desenvolvedores, documentadores, testadores e apoiadores:
Dica do chapéu para:
- Alamot pelo seu código original.
- 3v4Si0N por seu impressionante dll loader.
- WinRb Todos os colaboradores da biblioteca ruby.
- TheWover por sua incrível ferramenta de rosquinha.
- byt3bl33d3r para sua biblioteca python para criar cargas úteis de rosquinha.
- Sh11td0wn para obter inspiração sobre novos recursos.
