Red Team
C'est l'histoire d'un RAT, d'un chat et d'une APT …
It's the Story of a RAT, a Chat and an APT …
Disclaimer — On le sait, vous le savez, mais cela va mieux en le disant : l'utilisation de RatChatPT et les connaissances partagées dans cet article sont destinées à des fins éducatives et uniquement dans un cadre légal, pour une activité de red teaming. Cet implant est conçu pour aider les professionnels, les personnes autorisées ou les organisations qui souhaitent évaluer l'efficacité de leurs défenses de sécurité. En utilisant RatChatPT, vous reconnaissez qu'il est de votre responsabilité d'effectuer des tests dans les limites de la loi et avec l'autorisation appropriée. Les auteurs n'assument aucune responsabilité pour les dommages ou les conséquences résultant de l'utilisation de l'outil. Utilisez l'outil à vos risques et périls et agissez toujours de manière responsable, dans les limites de la loi. De grands pouvoirs impliquent de grandes responsabilités.
Nous avons demandé à ChatGPT son point de vue sur notre projet et il semble d'accord avec notre disclaimer :
Maintenant que c'est dit, passons aux choses sérieuses.
Pourquoi ce projet
Vous commencez à nous connaître : on aime bien travailler en collab' avec XRATOR. Ils sont géniaux et compétents, ce qui permet de réaliser des trucs sympas.
Il n'y a pas un journal qui ne parle pas d'IA, et nous souhaitons mettre en avant notre expertise, en tant qu'experts en sécurité mais aussi grands passionnés de technologie. Nous nous sommes donc demandés, avec XRATOR, comment cette nouvelle technologie pouvait être exploitée autrement qu'en demandant à l'IA d'écrire du code de sécurité offensif, histoire de ne pas être les 200e à faire cela.
Notre objectif est d'automatiser au maximum le travail de nos experts en sécurité en ayant toujours de nouveaux outils à la pointe de la technologie dans notre arsenal, toujours plus furtifs et en exploitant les dernières technologies disponibles. Notre approche a consisté à étudier comment l'API offerte par le célèbre ChatGPT (api.openai.com) pourrait être utilisée lors d'un exercice de red teaming ou lors de tests internes avancés de sécurité (EDR, AV, DLP, Proxy, Firewall, …).
RatChatPT fournit des implants (appelés Agents) et un command and control (CnC, appelé Handler) qui ne nécessite pas de domaine personnalisé ni de configuration VPS pour communiquer. Tous les échanges se font à travers le domaine api.openai.com qui sert de proxy. Ce projet est très similaire à d'autres projets comme GC2 qui utilise Google comme proxy ou DropboxC2C utilisant Dropbox.
Nous avons choisi le langage Go pour ce projet pour sa portabilité et ses capacités de compilation croisée (utiles pour les agents), mais aussi pour étendre l'utilisation du langage Go à d'autres domaines et enfin pour étendre nos connaissances sur ce langage. Le code est loin d'être parfait, mais s'il y a des développeurs parmi les lecteurs, n'hésitez pas à les aider.
Vous pouvez retrouver notre code ici.
Prérequis
Les auteurs ont choisi de publier le code source car la condition préalable est d'obtenir un token API avec les capacités de fichier, ce qui n'est possible qu'une fois qu'une méthode de paiement a été liée au compte, limitant ainsi l'utilisation en dehors de l'engagement légal de l'équipe rouge (pas de paiement crypto possible).
RatChatPT fournit des implants (appelés Agents) et une command and control (CnC, appelé Handler) qui ne nécessitent pas de domaine personnalisé ni de configuration VPS pour communiquer — tout se fait par le biais du domaine api.openai.com.
Une fois le compte activé, un token API doit être généré et c'est le seul pré-requis technique pour ce projet.
Comme le token est partagé par les agents et le handler, il est également facile pour un défenseur d'identifier et d'accéder à tous les fichiers échangés avec api.openai.com, ce qui renforce notre position selon laquelle il ne peut pas être utilisé par des acteurs malveillants.
Même si ce projet nécessite un compte payant, l'utilisation de RatChatGPT ne nécessitera pas de dépenser de l'argent car l'API utilisée est limitée aux interactions "Files" : https://platform.openai.com/docs/api-reference/files
Technique et Architecture
Notre approche consiste à utiliser l'API de ChatGPT, à savoir upload, list, download et delete.
À partir de ces primitives, il nous est possible de réaliser deux opérations indispensables, à savoir l'enregistrement et un RPC (Remote Procedure Call).
Au démarrage de l'implant, la première chose à réaliser est de contacter le CnC afin que ce dernier l'intègre à sa base d'agents contrôlés. Cette phase est l'Onboarding et peut être illustrée comme ceci :
L'Onboarding permet d'affecter un numéro unique (ici [0-9A-Fa-f]{8,8}) à chaque implant. Lors de cette première connexion, il fournira dans le fichier le nom d'utilisateur et le nom de la machine.
Pour toutes les fonctions qui vont suivre, on peut voir l'implant comme un système devant exécuter du code distant ; il est donc possible d'avoir une approche générique et de se ramener à un RPC :
Avec cette approche, il est possible de simplement lancer une commande sur la machine cible, mais aussi de prévoir des mécanismes d'exécution beaucoup plus complexes.
Concernant les fichiers utilisés, ils ont un format particulier spécifié : le json line. Sans rentrer dans les détails, l'API attend un json avec un champ prompt et un champ completion. Le premier nous sert à stocker une clef d'obfuscation (ce n'est pas du chiffrement puisque l'on donne la clef…) et le second champ est un base64 du XOR entre la clef et la payload. La clef est nécessairement de l'ASCII.
La payload est ici dépendante du contexte, mais elle est en json et permet une interprétation simple lors de l'échange.
Choix technologiques
Go a été choisi pour ce projet car il permet de compiler sur différentes architectures et de réaliser des compilations croisées. Les agents ont été testés avec succès sur Windows 10, 11 ainsi que sur Ubuntu 22.04, Debian 11 et Arch Linux.
L'interface du Handler est en HTML/CSS/JS pour faciliter l'utilisation avec n'importe quel navigateur et peut donc être utilisée par plusieurs opérateurs simultanément.
On a ici un screenshot de l'interface du Handler :
Moteur de détection
Lors de la création d'un malware (ou d'un implant dans notre cas), l'évaluation du fichier binaire est important : combien d'antivirus nous détectent ? En effet, la discrétion et la furtivité sont des éléments indispensables pour un bon implant. Nous avons été surpris par la réponse de VirusTotal. Après utilisation de techniques basiques, on arrive à seulement 5 antivirus sur les 70 que propose VirusTotal.
Pour les besoins du POC, nous n'avons pas essayé des techniques plus avancées (Packer, DLL Side loading, etc.) mais nous pourrions certainement obtenir un résultat proche de zéro.
Aller plus loin
Pour approfondir le travail et disposer d'un outil complet pour les red teams, nous pensons que les fonctionnalités suivantes pourraient être développées :
- Surveillance des claviers (keylogging) : enregistrement de toutes les frappes de clavier de la victime, ce qui peut révéler des mots de passe, des communications personnelles, des informations financières, etc.
- Capture d'écran et surveillance de la webcam : la possibilité de prendre des captures d'écran de l'ordinateur de la victime, ou d'activer et de surveiller la webcam.
- Gestion de fichiers : capacité de transférer, modifier, supprimer ou exécuter des fichiers sur l'ordinateur de la victime.
- Contrôle du navigateur web : accès et contrôle du navigateur web de la victime, y compris la possibilité de récupérer les mots de passe enregistrés.
Comment s'en protéger
On ne le répétera jamais assez : aucune solution de sécurité n'est infaillible ni suffisante. Sinon on appelle cela de la magie et dans ce cas vous n'êtes pas sur le bon blog.
Nous vous recommandons a minima de disposer d'un EDR (Endpoint Detection and Response). Cet outil fournit une surveillance en temps réel, la détection des menaces et des capacités de réponse automatisées. La formation des utilisateurs est également un aspect crucial de la sécurité : 90 % des problèmes de sécurité se trouvent entre la chaise et le clavier. Les utilisateurs doivent être formés pour reconnaître et éviter les tentatives de phishing et pour pratiquer une bonne hygiène numérique.
Si vous avez un doute sur votre sécurité et que vous souhaitez tester votre défense, n'hésitez pas à contacter nos experts via notre page contact.
Oups
Internet, ça va vite, ça va très vite. Entre notre soumission et la révocation du bearer, nous avons été contactés par 12 implants :
Il faut vraiment cliquer vite !
Derrière cet article, qui on l'espère vous aura plus, vous pouvez retrouver Laurent (Spartan Conseil) et Nicolas (XRATOR).
Disclaimer — We know it, you know it, but it's worth saying clearly: the use of RatChatPT and the knowledge shared in this article are intended for educational purposes only, within a legal framework, for red team activities. This implant is designed to help professionals, authorized individuals or organizations who wish to assess the effectiveness of their security defenses. By using RatChatPT, you acknowledge that it is your responsibility to conduct testing within the bounds of the law and with appropriate authorization. The authors assume no responsibility for damages or consequences resulting from the use of the tool. Use it at your own risk and always act responsibly, within the limits of the law. With great power comes great responsibility.
We asked ChatGPT for its opinion on our project, and it seems to agree with our disclaimer:
Now that's said, let's get to the serious stuff.
Why this project
You're starting to know us: we love collaborating with XRATOR. They're talented and skilled, which makes for some great work.
There isn't a newspaper that doesn't talk about AI, and we want to showcase our expertise — both as security experts and as technology enthusiasts. Together with XRATOR, we wondered how this new technology could be leveraged in ways beyond simply asking AI to write offensive security code, so as not to be the 200th team to do that.
Our goal is to maximize automation in our security experts' work by always having cutting-edge tools in our arsenal — increasingly stealthy and leveraging the latest available technologies. Our approach was to study how the API provided by the well-known ChatGPT (api.openai.com) could be used during a red team exercise or advanced internal security testing (EDR, AV, DLP, Proxy, Firewall, …).
RatChatPT provides implants (called Agents) and a command and control (C2, called Handler) that requires neither a custom domain nor a VPS to communicate. All exchanges go through the api.openai.com domain, which acts as a proxy. This project is very similar to others like GC2 (which uses Google as a proxy) or DropboxC2C (using Dropbox).
We chose Go for this project for its portability and cross-compilation capabilities (useful for agents), and to extend our Go expertise to new domains. The code is far from perfect — if there are developers among the readers, feel free to contribute.
You can find our code here.
Prerequisites
The authors chose to publish the source code because the prerequisite is to obtain an API token with file capabilities, which is only possible once a payment method has been linked to the account — limiting use outside of a legitimate red team engagement (no crypto payment possible).
RatChatPT provides implants (called Agents) and a command and control (C2, called Handler) that require neither a custom domain nor a VPS to communicate — everything goes through the api.openai.com domain.
Once the account is activated, an API token must be generated — that's the only technical prerequisite for this project.
Since the token is shared between agents and the handler, it's also easy for a defender to identify and access all files exchanged with api.openai.com, which reinforces our position that it cannot be used by malicious actors.
Even though this project requires a paid account, using RatChatGPT won't actually cost money because the API used is limited to "Files" interactions: https://platform.openai.com/docs/api-reference/files
Technical Architecture
Our approach uses the ChatGPT API's upload, list, download and delete operations.
From these primitives, two essential operations become possible: registration and RPC (Remote Procedure Call).
When the implant starts, the first thing it does is contact the C2 so it can be registered in the controlled agent database. This phase is called Onboarding:
Onboarding assigns a unique identifier (here [0-9A-Fa-f]{8,8}) to each implant. On this first connection, it sends the username and machine name in the file.
For all subsequent functions, the implant can be seen as a system executing remote code — a generic RPC approach:
With this approach, it's possible to run a simple command on the target machine, but also to implement far more complex execution mechanisms.
Regarding the file format: the API expects a JSON with a prompt field and a completion field. The first stores an obfuscation key (not encryption since the key is included) and the second is a base64-encoded XOR of the key and the payload. The key must be ASCII.
The payload is context-dependent but is JSON-formatted for easy parsing.
Technology Choices
Go was chosen for its cross-compilation capabilities. Agents were successfully tested on Windows 10, 11, Ubuntu 22.04, Debian 11, and Arch Linux.
The Handler interface is built in HTML/CSS/JS for use with any browser, allowing multiple simultaneous operators.
Detection Engines
When creating a malware (or implant in our case), evaluating the binary is important: how many antivirus engines detect it? Stealth is essential for a good implant. We were surprised by VirusTotal's response — using only basic techniques, only 5 out of 70 antivirus engines detected it.
For the POC we didn't attempt more advanced techniques (Packer, DLL Side loading, etc.) but we could certainly approach zero.
Going Further
To turn this into a complete red team tool, we believe the following features could be developed:
- Keylogging: recording all keystrokes on the victim's machine, potentially revealing passwords, personal communications, financial information, etc.
- Screenshot & webcam capture: the ability to take screenshots or activate and monitor the victim's webcam.
- File management: ability to transfer, modify, delete or execute files on the victim's machine.
- Browser control: access to and control of the victim's web browser, including the ability to retrieve saved passwords.
How to Protect Yourself
We can't say it enough: no security solution is foolproof or sufficient on its own. Otherwise it would be called magic — and that's not what this blog is about.
We recommend at minimum deploying an EDR (Endpoint Detection and Response). This tool provides real-time monitoring, threat detection and automated response capabilities. User training is equally crucial: 90% of security problems sit between the chair and the keyboard. Users must be trained to recognize and avoid phishing attempts and to practice good digital hygiene.
If you have doubts about your security posture and want to test your defenses, don't hesitate to contact our experts.
Oops
The internet moves fast, very fast. Between our submission and the bearer token revocation, we were contacted by 12 implants:
You really have to click fast!
Behind this article, which we hope you enjoyed, you can find Laurent (Spartan Conseil) and Nicolas (XRATOR).
Want to test your defenses?
Our red team experts evaluate your security posture and help you improve it.