top of page
  • Laurent MOULIN

C'est l'histoire d'un RAT, d'un chat et d'une APT ...

Dernière mise à jour : 13 juin 2023


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égale, 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 pouvoir implique de grandes responsabilités.


Nous avons demandé à ChatGPT sont point de vue sur notre projet et il semble d’accords 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 200ième à 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 (https://go.dev) 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. pour les agents) mais aussi 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.


A 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’agent contrôlé. Cette phase est l’Onboarding et peut être illustré 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 complexe.


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. La premier nous sert à stocker une clef d’obfucation (ce n’est pas du chiffrement puisque l’on donne la clef …) et le second champ est un base 64 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.

Vous trouverez ci-dessous un exemple d'interaction entre un agent s'exécutant sur un hôte Windows 11 et l'interface Handler :



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 virus total. Après utilisation de techniques basiques, on arrive à seulement 5 antivirus sur les 70 que propose Virus total.


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.


Allez plus loin

Pour approfondir le travail et disposer d'un outil complet pour les red teams, nous pensons que les fonctionnalités suivantes pourrait ê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 voler les mots de passe enregistrés.


Comment s'en protéger

On le répétera jamais assez : aucune solution de sécurité n’est infaillible ni suffisante. Sinon on appel 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 fournis 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 souhaiter 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é par 12 implants :


Il faut vraiment cliquer vite !


Les auteurs

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 ! Et si vous souhaitez la version anglaise, vous pouvez la retrouver chez XRATOR.

116 vues0 commentaire
bottom of page