Hola comunidad comparto con ustedes un proyecto en el cual he estado trabajando. Como dice el titulo es un
RAT multiplataforma para Windows y Linux. Tanto el cliente como el servidor estan escritos en
C++, por el momento solo ha sido probado en sistemas con arquitectura
x64:
- Debian
- Arch
- Windows 7
- Windows 10
Las funciones hasta el momento son:
- Transferencia de archivos
- Recopilacion de informacion
- Descarga de archivos de servidores http(s)
- Comunicacion cifrada (TLS (https://es.wikipedia.org/wiki/Seguridad_de_la_capa_de_transporte))
- Shell inversa interactiva
Clonar
git clone https://github.com/d3adlym1nd/unnamed_rat.git
Instalar dependencias y compilar en Linux:
#Debian
sudo apt-get install openssl openssl-dev
#Arch
sudo pacman -S openssl
#Opcional si las notificaciones de escritorio se habilitaran en el servidor
#Debian
sudo apt-get install libnotify-dev
#Arch
sudo pacman -S libnotify
Nos dirigimos al directorio del servidor para generar el certificado, llave privada y compilar asi:
#OS puede ser Windows/Linux
cd Server/OS/
openssl req -x509 -newkey rsa:4096 -out cacer.pem -outform PEM -days 1825 -nodes
make
Luego se modifica lo siguiente en el archivo
headers.hpp del codigo del cliente:
//para habilitar/deshabilitar salida por pantalla comentar/descomentar lo siguiente
#define _DEBUG
Si la opcion opcion
#define _DEBUG se deja comentada para compilar la version sin salida por pantalla, entonces se debe modificar el archivo
main.cpp en la siguiente linea con el host y puerto al cual conectarse
Cli->Connect("YOUR HOST", "PORT")
Luego compilar con :
makeCompilar en Windows:
Primeros instalamos
OpenSSL usando uno de los binarios ya compilados desde aqui (https://wiki.openssl.org/index.php/Binaries). Y generamos el certificado y llave privada como en linux.
El compilador utilizado es
mingw. Primero descargamos MSYS2 (https://www.msys2.org/), una vez instalado actualizamos la lista de paquetes con:
pacman -Syu
Luego procedemos a instalar los siguientes paquetes:
pacman -S mingw-w64-x86_64-toolchain
Y ahora realizaremos las mismas modificaciones a los ficheros que en linux, acto seguido compilamos con el comando
mingw32-make.
Luego solo toca ejecutar el servidor especificando el puerto por el cual escuchar, ej:
./server 8888
Si el cliente se compilo con la opcion
#define _DEBUG descomentada entonces el host y el puerto deben ser pasados como argumentos al programa ej:
./Client 127.0.0.1 8888
Aqui unas capturas
Servidor Linux
(https://i.imgur.com/p04wBN1.jpg)
(https://i.imgur.com/NF7cQUC.jpg)
Obteniendo informacion del cliente
(https://i.imgur.com/7Q4yjxh.jpg)
Servidor Windows
(https://i.imgur.com/TNRV7kh.jpg)
El cliente se autoreconecta al servidor si este se cierra. No posee ningun metodo de instalacion, infeccion o evasion de antivirus ya que esta hecho para realizar pruebas y ejecutarse en entornos controlados (
Posiblemente desarolle una version con las opciones antes mencionadas).
Por ahora es muy basico, y sigo trabajando en las dependencias del cliente (Windows) y muchas otras funcionalidades que quiero agregarle. Cualquier aporte, sugerencia o comentario es bien recibido.
Esta de mas decir que no esta hecho con propositos delictivos o maliciosos, es solo para realizar pruebas en ambientes controlados, tambien puede tomarse como base para realizar proyectos de multiconexion como salas de chat y derivados.
Espero les sirva de algo y les deseo un feliz dia/tarde/noche ;D
Edit:Lista de cambios v0.2.0 (28/06/2020):
- Probado en Android 9 (Termux)
- Se puede compilar en distintos idiomas
- Agregado idioma español
Descarga la version 0.2.0 -> unnamedRat v0.2.0.zip (https://github.com/d3adlym1nd/unnamed_rat/archive/v0.2.0.zip)
Excelente aporte, me encantará probarla. Gracias
Muy bueno e interesante tu proyecto, estoy comenzando en este mundo y no entiendo todo pero muy bueno para ver ;)