Home Services About Blog Contact us

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 …

Back to blog RatChatPT

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 :

Opinion de ChatGPT sur RatChatPT

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.

Vue d'ensemble de l'architecture RatChatPT
Vue d'ensemble de l'architecture RatChatPT

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.

Génération du token API OpenAI
Génération du token API OpenAI

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

Coûts d'utilisation de l'API
Coûts d'utilisation de l'API (proches de zéro)

Technique et Architecture

Notre approche consiste à utiliser l'API de ChatGPT, à savoir upload, list, download et delete.

Primitives de l'API ChatGPT utilisées
Primitives de l'API utilisées

À 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 :

Diagramme de la phase d'Onboarding
Phase d'Onboarding de l'implant

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 :

Diagramme du mécanisme RPC
Mécanisme de Remote Procedure Call (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 :

Interface du Handler (CnC)
Interface du Command & Control 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.

Résultat VirusTotal : 5/70 détections
Résultat VirusTotal — 5/70 détections avec techniques basiques uniquement

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 :

12 connexions d'implants inattendues
12 implants inattendus ont contacté notre handler…

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).

Un grand merci à François et Ronan pour la relecture !

Want to test your defenses?

Our red team experts evaluate your security posture and help you improve it.

Contact us Our services