
PyRat, un RAT basado en xmlrpc de Python.
PyRat es un proyecto de control remoto de código abierto basado en XmlRPC de Python, que incluye un cliente y un servidor (también llamado controlador, de ahora en adelante denominado servidor).
Declaración: El proyecto es solo para intercambio técnico, no lo utilice con fines comerciales o ilegales. ¡Cualquier disputa legal que surja no tiene nada que ver conmigo!
Cliente
> python .\pyratcli.py localhost 80
Servidor
> python pyratsvr.py 80
--------------------Python RAT-----------------------
--------------------anhkgg---------------------------
--------------------Copyright (c) 2018---------------
El software es solo para intercambio técnico, no lo utilice con fines comerciales o ilegales. ¡Cualquier disputa legal que surja no tiene nada que ver conmigo!
--------------------Comandos de tarea---------------------
--|(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 >
Cuando el cliente se conecta, el servidor lo notifica y establece al cliente recién conectado como objetivo de operación predeterminado.
cmd >test-3333333 está en línea.
Destino automático establecido: test-3333333
help o h muestra todos los comandos admitidos por el servidor.
cmd >help
(l)ist: listar todos los clientes
(a)live: listar clientes activos
(k)ill: eliminar cliente
(s)elect: seleccionar cliente objetivo
(p)rint: mostrar cliente actual
(c)mdshell: crear un cmdshell, escriba q para salir del cmdshell
(n)ew: actualizar versión del cliente
(d)ownload: hacer que el cliente descargue un archivo
(r)unexec: hacer que el cliente ejecute un ejecutable
(u)pload: cargar un archivo al cliente
(t)erminate: finalizar proceso
(q)uit: salir del servidor
El servidor usa SQLite para almacenar la información básica del cliente y la información de las tareas. Los clientes se pueden gestionar mediante comandos.
// Listar todos los clientes
cmd >l
test-3333333 offline 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 >
// Listar clientes en línea
cmd >a
no hay clientes activos
// Eliminar registro del cliente de la base de datos o desinstalar cliente
cmd >k
cid objetivo (o ALL):test-3333333
¿Desea desinstalar el cliente? (S/N)
Cuando se necesita controlar un cliente, se debe usar el comando select o s para seleccionar el objetivo del cliente.
cmd >c // intenta entrar a cmdshell, muestra que no hay objetivo
Primero establezca un cliente objetivo con el comando (s)elect.
cmd >s // establecer objetivo
client_id:test-3333333
Cliente objetivo establecido: test-3333333
// Ver el objetivo actual
cmd >p
test-3333333
Use cmdshell o c para entrar al cmdshell. A menos que ingrese activamente q, permanecerá en el directorio de trabajo del cmdshell.
cmdshell registra el directorio de trabajo. Por ejemplo, si hace cd c:\, la próxima operación se realizará en ese directorio, implementando un cmdshell similar a una tubería conectada.
Además, si inicia un proceso a través del cmdshell, algunos procesos pueden bloquear el retorno de mensajes, por lo que no se recomienda su uso. En su lugar, use runexec.
cmd >c
RAT-CMD > dir
RAT-CMD > test-3333333 ejecuta cmdshell(195) dir True
El volumen en la unidad D es gitrepo
El número de serie del volumen es EB2F-5AC0
Directorio 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 archivos 10,930 bytes
2 directorios 647,836,565,504 bytes libres
RAT-CMD > ver
RAT-CMD > test-3333333 ejecuta cmdshell(196) ver True
Microsoft Windows [Versión 10.0.16299.309]
RAT-CMD > tasklist
RAT-CMD > test-3333333 ejecuta cmdshell(197) tasklist True
Nombre de la imagen PID Nombre de sesión Sesión# Uso de memoria
========================= ======== ================ =========== ============
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 ejecuta 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 ejecuta cmdshell(201) taskkill /IM Calculator.exe True
Éxito: Se envió la señal de terminación al proceso "Calculator.exe", PID 21656.
RAT-CMD > taskkill /PID 21656
RAT-CMD > test-3333333 ejecuta cmdshell(202) taskkill /PID 21656 True
Éxito: Se envió la señal de terminación al proceso, PID 21656.
Se admiten la carga y descarga de archivos. La descarga puede ser de archivos de red o locales del servidor. Por ahora, solo se admite la carga y descarga de un solo archivo.
cmd >d
url (escriba N para descargar archivo local):N // selecciona descargar archivo local
archivo local:db.db
ruta de destino:db.db
cmd >test-3333333 ejecuta download(203) local db.db db.db True
descarga exitosa
cmd >d
url (escriba N para descargar archivo local):https://dl.360safe.com/360/inst.exe // descargar archivo de red
ruta de destino:inst.exe
cmd >test-3333333 ejecuta download(204) net https://dl.360safe.com/360/inst.exe inst.exe True
descarga exitosa
cmd >r
ejecutar objetivo:inst.exe
runexec inst.exe
cmd > t
Seleccionar tipo (nombre/pid):nombre
nombre del proceso:notepad.exe
cmd >test-3333333 ejecuta terminate(212) name notepad.exe True
Éxito: Se envió la señal de terminación al proceso "notepad.exe", PID 25416.
Si el cliente se ejecuta en Linux y el servidor en Windows, los caracteres chinos pueden aparecer distorsionados debido a las diferentes codificaciones utilizadas. Temporalmente no se ha resuelto.
