
Ein Skript zur Automatisierung von Tastatureingaben über ein grafisches Desktop-Programm.
Ein Skript zur Automatisierung von Tastatureingaben über eine aktive Remotedesktop-Sitzung, das offensive Betreiber in Kombination mit Living-off-the-Land-Techniken unterstützt. Alle Anerkennung gebührt nopernik, der dies ermöglicht hat, sodass ich es mir zur Aufgabe gemacht habe, es zu verbessern. Ich wollte etwas, das während der Post-Exploitation-Phase bei der Ausführung von Befehlen über einen Remotedesktop hilft. Es war auch möglich, das SCPA-Projekt für die geordnete Sammlung von Ressourcen zu erstellen.
Installieren Sie die restlichen Abhängigkeiten gemäß Ihrem Paketmanager.``` $ 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
### Einrichtung
Installieren Sie das Programm im System und erstellen Sie `rks` als symbolischen Link von `remotekeystrokes`. Dies wird als Befehlsalias verwendet.```
$ 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")
## Verwendung
### 0x00 - Remote-Authentifizierung
#### Legenden
- Das Dollarzeichen (`$`) kennzeichnet eine Unix-Shell-Eingabeaufforderung mit normalen Benutzerrechten und enthält Befehle.
- Spitze Klammern (`<>`) bedeuten erforderliche Parameter.
- Eckige Klammern (`[]`) bedeuten optionale Parameter, falls nicht erforderlich zur Angabe.
#### RDP
Um moderne Betriebssysteme zu authentifizieren, geben Sie entweder das Flag zur Erzwingung der Authentifizierung als TLS `/sec:tls` oder als NLA `/sec:nla` an.```
$ xfreerdp /kbd:US /clipboard /compression /dynamic-resolution /sec:<tls | nla> [/d:"<domain_name>"] /u:"<username>" /p:"<password>" /v:<IP>:[<PORT>]
Um sich bei älteren Betriebssystemen zu authentifizieren, geben Sie das Flag /sec:rdp an, um die alte Authentifizierung zu erzwingen.```
$ xfreerdp /kbd:US /clipboard /compression /dynamic-resolution /sec:rdp [/d:"<domain_name>"] /u:"" /p:"" /v::[]
#### VNC
Um eine VNC-Maschine remote zu authentifizieren.```
$ remmina -c vnc://<username>:<password>@<IP>
$ ssh [-p ] @
#### Telnet```
$ telnet <IP> [PORT]
Um remotekeystrokes (oder einen Alias-Befehl rks) bei der Ausführung von Befehlen auf dem Windows-Ziel mit einer authentifizierten Remotesitzung zu verwenden. Bevor Sie diese ausführen, müssen Sie es mit einem Fensternamen (-w) navigieren. Standardmäßig sucht es nach FreeRDP, wenn xfreerdp verwendet wird. Wenn Systeme mit einem anderen Remote-Anmeldeprogramm anvisiert werden, geben Sie unbedingt den Fensternamen an. Geben Sie das Flag -c an, um Befehle auszugeben. Sie können auch eine Textdatei vorbereiten, um Befehle einzufügen, und es wird sie nacheinander lesen. Das Flag prüft, ob es sich um eine Zeichenkette oder eine Datei handelt.
Für grafische Remote-Desktop-Programme wie FreeRDP, Remmina und andere Drittanbieterprogramme. Im Gegensatz zu Remoteterminalsitzungen wie telnet und ssh. Sie müssen den Cursor zu einer aktiven Anwendung innerhalb des Zielrechners navigieren. Zum Beispiel in einer Windows-Umgebung müssen Sie eine Eingabeaufforderung (cmd.exe) oder PowerShell (powershell.exe) öffnen. Es ist möglich, dass Windows Programme mit einem Dialogfeld (-m dialogbox) für einen schnellen Start öffnet. Stellen Sie sicher, dass Sie Spuren aus dem Registrierungseintrag entfernen, wenn Sie die Methode ursprünglich ausgeführt haben. Dieser befindet sich in HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU. Sie werden Beispiele sehen, wie Sie schnelle offensive Maßnahmen nur mit Living off the Land (LotL)-Techniken durchführen können.
Aufzählung des lokalen Rechners.``` $ 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!
Um in einem einzigen Befehl auszuführen. Dies ist prägnant, besonders wenn man es mit einem Dialogfeld verwendet.```
$ 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!
Active Directory-Enumeration.``` $ 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!
Um es in einem einzigen Befehl auszuführen. Dies ist prägnant, besonders wenn es mit einem Dialogfeld verwendet wird.```
$ 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!
Lokale Rechner-Enumeration (TODO)``` $ cat recon_local_enum_cmdlets.txt
$ rks -c "powershell.exe" -m dialogbox