
C# Outils de reconnaissance d'attaque ciblée
Il s'agit d'un assembly .NET personnalisé qui effectue un certain nombre d'activités de reconnaissance situationnelle. Plusieurs ensembles de fonctionnalités sont disponibles :
Je n'avais aucune idée que GhostPack était en développement lorsque j'ai écrit cet outil ; nous avons fini par publier nos outils à peu près au même moment. En réalité, GhostPack est aujourd'hui bien plus riche en fonctionnalités. Je supprime la fonction PrivescCheck car SharpUp couvre toutes ses fonctionnalités et bien plus encore.
Le point essentiel est que tout est implémenté en .NET pur – donc pas de PowerShell.
Il est configuré et contrôlé par des paramètres de ligne de commande, ce qui le rend adapté à l'utilisation avec la directive execute-assembly de Beacon.
Cette section récupère un certain nombre d'informations sur la machine hôte. Attention, la sortie peut être TRÈS volumineuse. Elle affichera :
Le verbe 'base' doit être passé en ligne de commande, suivi de la vérification spécifique souhaitée. Si le mot 'all' est passé comme deuxième paramètre, toutes les vérifications seront effectuées.
Notez que si 'all' est utilisé, un 'proxycheck http://www.google.com' est automatiquement inclus. Voir la section proxycheck pour les détails.
Effectuer toutes les vérifications de base : beacon> execute-assembly /tmp/Reconerator.exe ou beacon> execute-assembly /tmp/Reconerator.exe basic all
Effectuer uniquement l'énumération MRU : beacon> execute-assembly /tmp/Reconerator.exe basic mru
Lister uniquement les lecteurs mappés : beacon> execute-assembly /tmp/Reconerator.exe basic mappeddrives
Relativement sûr. Il interroge le registre système ; il est peu probable que cela soit surveillé.
Cette fonction permet d'effectuer une requête LDAP. La manière la plus simple de la présenter est par l'exemple.
Ceci affichera tous les utilisateurs du domaine 'dc=stufus,dc=lan' avec W2K8DC comme contrôleur de domaine :
beacon> execute-assembly /tmp/Reconerator.exe ldap "LDAP://W2K8DC/dc=stufus,dc=lan" "objectClass=user" 0
Ceci affichera un maximum de 5 utilisateurs sur le domaine 'dc=stufus,dc=lan' avec W2K8DC comme contrôleur de domaine :
beacon> execute-assembly /tmp/Reconerator.exe ldap "LDAP://W2K8DC/dc=stufus,dc=lan" "objectClass=user" 5
Ceci affichera tous les membres du groupe des administrateurs du domaine sur le domaine 'dc=stufus,dc=lan' avec W2K8DC comme contrôleur de domaine :
beacon> execute-assembly /tmp/Reconerator.exe ldap "LDAP://W2K8DC/dc=stufus,dc=lan" "(&(objectClass=group)(cn=Domain Admins))" 0
Ceci affichera tous les membres des groupes Administrateurs du domaine ou Administrateurs d'entreprise sur le domaine 'dc=stufus,dc=lan' avec W2012DC comme contrôleur de domaine :
beacon> execute-assembly /tmp/Reconerator.exe ldap "LDAP://W2012DC/dc=stufus,dc=lan" "(&(objectClass=group)(|(cn=Enterprise Admins)(cn=Domain Admins)))" 0
Cela générera du trafic réseau vers le contrôleur de domaine que vous spécifiez. Pour éviter tout doute, il utilise LDAP (par opposition à RPC ou similaire).
Cette fonction effectue une requête DNS en utilisant le serveur DNS de l'hôte.
Résoudre www.google.com :
beacon> execute-assembly /tmp/Reconerator.exe resolvehost www.google.com
Cela générera une requête DNS vers le contrôleur de domaine, mais il est peu probable que cela soit considéré comme une alerte en raison du volume important de requêtes DNS légitimes.
Cette fonction permet d'interagir avec Windows Search (anciennement le service d'indexation Windows), ce qui permet de rechercher rapidement des fichiers et dossiers intéressants (ainsi que leur contenu). Les e-mails sont généralement indexés, mais les dossiers réseau ne le sont pas, donc ce n'est peut-être pas parfait pour rechercher les répertoires personnels des utilisateurs s'ils sont stockés à distance. Cependant, c'est très rapide.
L'interface de Windows Search est de type SQL ; cette implémentation vous permet, en pratique, de spécifier le contenu de la clause 'WHERE'. Il est plus facile d'expliquer par l'exemple, mais vous devrez consulter MSDN pour connaître tous les critères possibles.
Trouver tout ce qui a été indexé et qui contient le mot 'password' quelque part (c'est-à-dire recherche dans le contenu des fichiers et e-mails) :
beacon> execute-assembly /tmp/Reconerator.exe indexsearch "CONTAINS('password')"
Trouver tout ce qui a été indexé et dont le chemin ou le nom de fichier contient le mot 'stufus' :
beacon> execute-assembly /tmp/Reconerator.exe indexsearch "System.ItemPathDisplay LIKE '%stufus%'"
Trouver tout ce qui a été indexé et dont le nom de fichier contient 'stufus' OU qui contient le mot 'secret' :
beacon> execute-assembly /tmp/Reconerator.exe indexsearch "System.ItemName LIKE '%stufus%' OR CONTAINS('secret')"
Je n'ai pas connaissance de quoi que ce soit qui considérerait cela comme suspect.
Cette fonction retourne le serveur proxy qui serait utilisé pour visiter une URL donnée. Cela permet de gérer les situations où différents proxys peuvent être utilisés pour différentes URL, ou des exclusions complexes. L'URL d'intérêt est passée en paramètre.
Notez que si 'basic all' est spécifié (voir ci-dessus), il inclut automatiquement un proxycheck vers http://www.google.com, en supposant que la plupart des organisations ont un proxy sortant unique pour tout accès internet non interne.
Afficher le serveur proxy qui sera utilisé pour visiter www.google.com :
beacon> execute-assembly /tmp/Reconerator.exe proxycheck www.google.com
Afficher le serveur proxy qui sera utilisé pour visiter https://www.mwrinfosecurity.com :
beacon> execute-assembly /tmp/Reconerator.exe proxycheck https://www.mwrinfosecurity.com
C'est une activité locale et légitime ; je n'ai pas connaissance de quoi que ce soit qui la considérerait comme suspecte.
Cette fonction explore un certain nombre de vecteurs d'élévation de privilèges et signale s'ils sont possibles ou non. Actuellement, ce nombre est de 1.
Comme pour le module BASE ci-dessus, privesccheck all peut être spécifié en ligne de commande pour tenter toutes les vérifications, ou une vérification spécifique peut être spécifiée si nécessaire.
Le verbe 'base' doit être passé en ligne de commande, suivi de la vérification spécifique souhaitée. Si le mot 'all' est passé comme deuxième paramètre, toutes les vérifications seront effectuées.
| Vérification | Description |
|---|---|
| alwaysinstallelevated | Détermine si la clé 'AlwaysInstallElevated' est définie à 1 ou non. Si elle est définie, cela exécutera tout fichier MSI en tant qu'administrateur local. |
| Vérification | Notes |
|---|---|
| alwaysinstallelevated | Il s'agit d'une requête de registre locale ; il est peu probable que quoi que ce soit la signale comme malveillante. |
Essayer toutes les vérifications d'élévation de privilèges :
beacon> execute-assembly /tmp/Reconerator.exe privesccheck all
Vérifier uniquement si la clé de registre AlwaysInstallElevated est définie :
beacon> execute-assembly /tmp/Reconerator.exe privesccheck alwaysinstallelevated
Compilez ceci dans Visual Studio 2019. Il cible actuellement .NET v4. Vous pouvez modifier cela dans les préférences de compilation si vous le souhaitez.
| Vérification | Description |
|---|
| env | Affiche toutes les variables d'environnement. |
| info | Affiche l'adresse IP de l'hôte et l'identifiant de version OS majeure/mineure. |
| mru | Parcourt diverses listes "les plus récemment utilisés". Elles incluent actuellement l'historique de la boîte de dialogue Exécuter et les fichiers et chemins MRU Office pour toutes les versions de Word, Excel, PowerPoint, Access, Publisher et Visio. Affiche également l'emplacement du dossier spécial "Récent". |
| favourites | Affiche les URLs stockées dans le dossier des favoris (les signets de l'utilisateur). Ne gère actuellement pas les sous-dossiers ; je dois corriger cela. |
| mappeddrives | Affiche les lecteurs réseau mappés de la session utilisateur. Utile pour trouver rapidement les partages de fichiers centraux et les répertoires personnels. Si c'est mappé, cela contient probablement des données utiles. |
| installedapplications | Liste les applications qui ont été installées. Cela inclut les applications installées en tant qu'administrateur (sur la machine locale) ET les applications installées par l'utilisateur actuel. Elles sont listées à différents endroits dans le registre. |
| onedrive | Affiche les informations concernant OneDrive (y compris les sites/tenants synchronisés). |