
Um script para automatizar teclas através de um programa gráfico de desktop.
Um script para automatizar pressionamentos de teclas através de uma sessão remota ativa de área de trabalho que auxilia operadores ofensivos em combinação com técnicas de "living off the land". Todos os créditos vão para nopernik por tornar isso possível, então eu decidi melhorá-lo. Queria algo que ajudasse durante a fase de pós-exploração ao executar comandos através de uma área de trabalho remota. Também foi possível para a realização do projeto SCPA para coletar recursos de forma organizada.
Instale o restante das dependências de acordo com seu gerenciador de pacotes.``` $ 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
### Configuração
Instale o programa no sistema e crie `rks` como um link simbólico de `remotekeystrokes`. Isso será usado como um 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 - Autenticação Remota
#### Legendas
- Símbolo de dólar (`$`) indica um prompt de shell unix com privilégios de usuário normal, e inclui comandos.
- Colchetes angulares (`<>`) significam parâmetros obrigatórios.
- Colchetes (`[]`) significam parâmetros opcionais caso não seja necessário especificá-los.
#### RDP
Para autenticar sistemas operacionais modernos especifique a flag para forçar autenticação como TLS `/sec:tls` ou autenticação 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 operacionais legados, especifique a flag /sec:rdp para forçar a autenticação antiga.```
$ xfreerdp /kbd:US /clipboard /compression /dynamic-resolution /sec:rdp [/d:"<domain_name>"] /u:"" /p:"" /v::[]
#### VNC
Para autenticar remotamente uma máquina VNC.```
$ remmina -c vnc://<username>:<password>@<IP>
$ ssh [-p ] @
#### Telnet```
$ telnet <IP> [PORT]
Para usar remotekeystrokes (ou um comando alias rks) ao executar comandos no alvo Windows com sessão remota autenticada. Antes de executá-los, é necessário navegar com um nome de janela (-w); por padrão, procurará por FreeRDP ao usar xfreerdp. Ao visar sistemas com um programa de login remoto diferente, certifique-se de especificar o nome da janela. Utilize a flag -c para emitir comandos. Você também pode preparar um arquivo de texto para inserir comandos e ele os lerá um a um. A flag verificará se é uma string ou um arquivo.
Para programas gráficos de área de trabalho remota, como FreeRDP, Remmina e outros programas de terceiros. Diferente de sessões remotas de terminal como telnet e ssh. Você deve navegar o cursor para um aplicativo ativo dentro da máquina alvo. Por exemplo, em ambiente Windows, você deve abrir um prompt de comando (cmd.exe) ou powershell (powershell.exe). É possível que o Windows abra programas com uma caixa de diálogo (-m dialogbox) para um lançamento rápido. Certifique-se de limpar os vestígios da entrada do registro quando executou inicialmente com o método. Ela está localizada em HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU. Você verá exemplos de como poderá realizar medidas ofensivas rápidas apenas com técnicas de Living off the Land (LotL).
Enumeração da 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 executar em um único comando. Isso é conciso especialmente quando usado com uma caixa 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!
Enumeração do 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 executar em um único comando. Isso é conciso especialmente quando usado com uma caixa 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!
Enumeração da máquina local (TODO)``` $ cat recon_local_enum_cmdlets.txt
$ rks -c "powershell.exe" -m dialogbox
$ rks -c recon_local_enum_cmdlets.txt
Enumeração do Active Directory (TODO)```
$ cat recon_ad_enum_cmdlets.txt
$ rks -c "powershell.exe" -m dialogbox
$ rks -c recon_ad_enum_cmdlets.txt