BOF d'opérations à distance
Ce dépôt sert de complément à notre dépôt SA précédemment publié. Notre position initiale était de ne pas publier nos outils qui modifient d’autres systèmes, et de ne fournir que des outils de collecte d’informations dans un format prêt à l’emploi.
Avec le temps, nous avons vu de nombreuses autres entreprises de sécurité publier leurs outils offensifs, et nous estimons désormais qu’il est approprié de publier une partie de nos outils offensifs.
Rien dans ce dépôt n’est particulièrement exceptionnel : il s’agit d’opérations Windows de base sous forme de BOF. Ces primitives peuvent être utilisées pour une grande variété d’opérations.
BOF d’injection
Nous avons décidé d’inclure les BOF d’injection que nous utilisons lors des tests de détection EDR. Ces BOF sont fournis tels quels et ne seront pas pris en charge (tout ce qui se trouve sous src/Injection et Injection/*).
Vous êtes libres de les utiliser, mais les issues ouvertes à leur sujet seront fermées sans examen.
Commandes d’opérations à distance disponibles
| Commande | Utilisation | Notes |
|---|
| adcs_request | adcs_request [CA] [OPT:TEMPLATE] [OPT:SUBJECT] [OPT:ALTNAME] [OPT:INSTALL] [OPT:MACHINE] [OPT:ADD_APP_POLICY] [OPT:DNS] | Demande un certificat d’inscription |
| adcs_request_on_behalf | adcs_request_on_behalf [TEMPLATE] [REQUESTER] [ENROLLMENT_AGENT.pfx] [Download_Name] | Demande un certificat d’inscription au nom d’un autre utilisateur |
| adduser | adduser [USERNAME] [PASSWORD] [SERVER] | Ajoute l’utilisateur spécifié à une machine |
| addusertogroup | addusertogroup [USERNAME] [GROUPNAME] [SERVER] [DOMAIN] | Ajoute l’utilisateur spécifié à un groupe |
| ask_mfa | ask_mfa [NUMBER] | Affiche une fausse boîte de dialogue d’approbation Microsoft Authenticator avec le numéro spécifié. |
| chromeKey | chromeKey | Déchiffre la clé Chrome encodée en base64 fournie |
| disableuser | disableuser [USERNAME] [DOMAIN] | Désactive le compte utilisateur spécifié |
| enableuser | enableuser [USERNAME] [DOMAIN] | Active et déverrouille le compte utilisateur spécifié |
| get_azure_token | get_azure_token [CLIENT ID] [SCOPE] [BROWSER] [OPT:HINT] [OPT:BROWSER PATH] | Tente d’effectuer un flux d’autorisation OAuth (codeflow) auprès d’Azure à l’aide des identifiants enregistrés |
| get_priv | get_priv [Privledge Name] | Active le privilège de jeton spécifié, davantage destiné aux utilisateurs non-Cobalt Strike |
| ghost_task | ghost_task [HOSTNAME/LOCALHOST] [OPERATION] [TASKANME] [PROGRAM] [ARGUMENT] [USERNAME] [SCHEDULETYPE] [TIME/SECOND] [DAY] | Ajoute/Supprime une tâche fantôme. |
| global_unprotect | global_unprotect | Localise et déchiffre les fichiers de configuration GlobalProtect convertis à partir de : GlobalUnProtect |
| lastpass | lastpass [NUMBER OF PIDs] [PID],[PID],[PID],[PID] ... | Recherche dans la mémoire de Chrome et Brave les mots de passe et données LastPass |
| make_token_cert | make_token_cert [.PFX LOCAL PATH] [OPT:PFX PASSWORD] | Usurpe l’identité d’un utilisateur en utilisant l’altname d’un fichier .pfx |
| office_tokens | office_tokens [PID] | Collecte les jetons JWT Office depuis n’importe quel processus Office |
Contribuer
Ce dépôt est destiné à des primitives Windows à tâche unique. Autrement dit, même si cela nécessite plusieurs appels, créer une tâche planifiée est approprié.
Une commande qui tenterait de pré-générer un implant et d’effectuer un déplacement automatisé à l’aide des BOF de ce dépôt serait géniale. Mais elle ne convient pas à une soumission directe dans ce dépôt.
Exigences de code
- Votre code doit compiler sans erreur lors de l’utilisation du makefile par défaut
- Toute nouvelle définition BOF pour la résolution de fonctions sera placée dans src/common/bofdefs.h
- Le code compilera ensemble à l’aide du Makefile par défaut (fichier entry.c unique)
- Le code sera également compatible avec la chaîne d’outils existante (mingw)
- Le code sera écrit en C. C’est pour standardiser et pour ma confiance personnelle dans la validation du code.
À quoi s’attendre en tant que contributeur
Après réception d’une pull request, celle-ci bénéficiera d’une revue de code approfondie et de tests.
Une fois les tests terminés, nous aurons zéro ou plusieurs séries de demandes de modifications en fonction des constatations jusqu’à ce qu’il n’y ait plus aucun problème dans le code. À ce moment-là, elle sera acceptée dans le dépôt, et votre nom d’utilisateur GitHub sera ajouté à notre liste de crédits. Si vous préférez ne pas être ajouté ou utiliser un autre pseudo, faites-le-moi savoir.
Vous voulez en savoir plus ?
Si vous avez trouvé ces beacon object files utiles et que vous souhaitez écrire vos propres BOF dans un style similaire, nous vous invitons à consulter notre cours Beacon Object File (BOF) Development.
Le cours donne un bref aperçu de l’histoire des beacon object files, puis aborde une variété de problèmes sous forme de défis visant à vous apprendre à tirer parti de diverses technologies Windows lors du développement de vos propres beacon object files.