
Un script para automatizar pulsaciones de teclas a través de un programa de escritorio gráfico.
Un script para automatizar pulsaciones de teclado a través de una sesión activa de escritorio remoto que asiste a operadores ofensivos en combinación con técnicas de living off the land. Todo el crédito va para nopernik por hacerlo posible, así que tomé la iniciativa de mejorarlo. Quería algo que ayude durante la fase de post-explotación al ejecutar comandos a través de un escritorio remoto. También fue posible para hacer el proyecto SCPA para la recolección de recursos de manera organizada.
Instale el resto de las dependencias según su package mananger.``` $ sudo apt install -y xfreerdp-x11 remmina xdotool
$ sudo dnf install -y xdotool freerdp-2 remmina
$ sudo pacman -S freerdp remmina xdotool
$ sudo emerge xwayland freerdp remmina xdotool
$ sudo nix-env -iA nixpkgs.xwayland nixpkgs.xdotool nixpkgs.freerdp nixpkgs.remmina
### Configuración
Instala el programa en el sistema y crea `rks` como un enlace simbólico de `remotekeystrokes`. Esto se usará como un alias de comando.```
$ sudo wget -O /usr/local/src/remotekeystrokes.sh https://raw.githubusercontent.com/U53RW4R3/RemoteKeyStrokes/main/remotekeystrokes.sh && \
sudo ln -sf /usr/local/src/remotekeystrokes.sh /usr/local/bin/remotekeystrokes && \
sudo ln -sf /usr/local/src/remotekeystrokes.sh /usr/local/bin/rks && \
sudo chmod 755 /usr/local/src/remotekeystrokes.sh /usr/local/bin/remotekeystrokes /usr/local/bin/rks
$ remotekeystrokes -h Usage: remotekeystrokes
Flags:
COMMON OPTIONS: -c, --command <command | file> Specify a command or a file contains commands to execute
-p, --platform <operating_system> Specify the operating system ("windows" is
set by default if not specified)
-w, --windowname <window_name> Specify the window name to focus on the
active window ("freerdp" is set by default
if not specified)
-h, --help Display this help message
UPLOAD FILES: -i, --input <input_file> Specify the local input file to transfer -o, --output <output_file> Specify the remote output file to transfer
METHODS: -m, --method Specify a method. For command execution method "none" is set by default if not specified. For file transfer "pwshb64" is set by default if not specified. Other available methods are: "elevate", "persistence", "antiforensics", and "mayhem"
-s, --submethod <submethod> Specify a submethod from a method (applies
with -m flag)
-a, --action <action> Specify an action from a method and/or
submethod (applies with -m and/or -s flag)
-e, --evasion <evasion> Specify an evasion method for uploading files
(only works for "pwshb64")
## Uso
### 0x00 - Autenticación Remota
#### Leyendas
- El signo de dólar (`$`) indica un prompt de shell Unix con permisos de usuario normal, e incluye comandos.
- Los corchetes angulares (`<>`) significan parámetros obligatorios.
- Los corchetes cuadrados (`[]`) significan parámetros opcionales si no se requiere especificarlos.
#### RDP
Para autenticar sistemas operativos modernos, especifique la bandera ya sea para forzar la autenticación como TLS `/sec:tls` o la autenticación como NLA `/sec:nla`.```
$ xfreerdp /kbd:US /clipboard /compression /dynamic-resolution /sec:<tls | nla> [/d:"<domain_name>"] /u:"<username>" /p:"<password>" /v:<IP>:[<PORT>]
Para autenticar sistemas operativos heredados, especifique el flag /sec:rdp para forzar la autenticación antigua.```
$ xfreerdp /kbd:US /clipboard /compression /dynamic-resolution /sec:rdp [/d:"<domain_name>"] /u:"" /p:"" /v::[]
#### VNC
Para autenticar remotamente una máquina VNC.```
$ remmina -c vnc://<username>:<password>@<IP>
$ ssh [-p ] @
#### Telnet```
$ telnet <IP> [PORT]
Para usar remotekeystrokes (o un alias de comando rks) al ejecutar comandos en el objetivo Windows con sesión remota autenticada. Antes de ejecutarlos, debe navegar con un nombre de ventana (-w); por defecto buscará FreeRDP cuando se use xfreerdp. Al apuntar a sistemas con un programa de inicio de sesión remoto diferente, asegúrese de especificar el nombre de la ventana. Especifique la bandera -c para emitir comandos. También puede preparar un archivo de texto para insertar comandos y los leerá uno por uno. La bandera verificará si es una cadena o un archivo.
Para programas de escritorio remoto gráficos como FreeRDP, Remmina y otros programas de terceros. A diferencia de las sesiones de terminal remota como telnet y ssh. Debe navegar el cursor a una aplicación activa dentro de la máquina objetivo. Por ejemplo, en un entorno Windows, debe abrir un símbolo del sistema (cmd.exe) o PowerShell (powershell.exe). Es posible que Windows abra programas con un cuadro de diálogo (-m dialogbox) para un inicio rápido. Asegúrese de eliminar los rastros de la entrada de registro cuando ejecutó inicialmente con el método. Se encuentra en HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU. Verá ejemplos de cómo podrá realizar medidas ofensivas rápidas con solo técnicas Living off the Land (LotL).
Enumeración de la máquina local.``` $ cat recon_local_enum_cmds.txt whoami /all net user net localgroup Administrators ipconfig /all systeminfo
$ rks -c "cmd.exe" -m dialogbox [] Checking one of the lines reaches 260 character limit [] Executing commands... [+] Task completed!
$ rks -c recon_local_enum_cmds.txt [*] Executing commands... [+] Task completed!
Para ejecutar en un solo comando. Esto es conciso especialmente cuando se usa con un cuadro de diálogo.```
$ rks -c "cmd.exe /k \"whoami /all & net user & net localgroup Administrators & ipconfig /all & systeminfo\"" -m dialogbox
[*] Checking one of the lines reaches 260 character limit
[*] Executing commands...
[+] Task completed!
Enumeración de Active Directory.``` $ cat recon_ad_enum_cmds.txt net user /domain net group "Domain Admins" /domain net group "Enterprise Admins" /domain net group "Domain Computers" /domain
$ rks -c "cmd.exe" -m dialogbox [] Checking one of the lines reaches 260 character limit [] Executing commands... [+] Task completed!
$ rks -c recon_ad_enum_cmds.txt [*] Executing commands... [+] Task completed!
Para ejecutar en un solo comando. Esto es conciso especialmente cuando se usa con un cuadro de diálogo.```
$ rks -c "cmd.exe /k \"net user /domain & net group \"Domain Admins\" /domain & net group \"Enterprise Admins\" /domain & net group \"Domain Computers\" /domain\""
[*] Checking one of the lines reaches 260 character limit
[*] Executing commands...
[+] Task completed!
Enumeración de la máquina local (TODO)``` $ cat recon_local_enum_cmdlets.txt
$ rks -c "powershell.exe" -m dialogbox
$ rks -c recon_local_enum_cmdlets.txt
Enumeración de Active Directory (TODO)```
$ cat recon_ad_enum_cmdlets.txt
$ rks -c "powershell.exe" -m dialogbox
$ rks -c recon_ad_enum_cmdlets.txt