
Скрипт для автоматизации нажатий клавиш в графической настольной программе.
Скрипт для автоматизации нажатия клавиш через активный сеанс удаленного рабочего стола, который помогает операторам атак в сочетании с методами living off the land. Вся заслуга принадлежит nopernik за то, что сделал это возможным, поэтому я взял на себя труд улучшить его. Мне нужно было что-то, что помогает во время этапа пост-эксплуатации при выполнении команд через удаленный рабочий стол. Это также стало возможным благодаря проекту SCPA для сбора ресурсов в упорядоченном виде.
Установите остальные зависимости в соответствии с вашим пакетным менеджером.``` $ 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
### Установка
Установите программу в систему и создайте `rks` как символическую ссылку на `remotekeystrokes`. Она будет использоваться как псевдоним команды.```
$ 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")
## Использование
### 0x00 - Удаленная аутентификация
#### Легенда
- Знак доллара (`$`) обозначает приглашение оболочки Unix с обычными правами пользователя и включает команды.
- Угловые скобки (`<>`) обозначают обязательные параметры.
- Квадратные скобки (`[]`) обозначают необязательные параметры, если их не требуется указывать.
#### RDP
Для аутентификации в современных операционных системах укажите флаг для принудительной аутентификации по TLS `/sec:tls` или аутентификации по NLA `/sec:nla`.```
$ xfreerdp /kbd:US /clipboard /compression /dynamic-resolution /sec:<tls | nla> [/d:"<domain_name>"] /u:"<username>" /p:"<password>" /v:<IP>:[<PORT>]
Для аутентификации устаревших операционных систем укажите флаг /sec:rdp чтобы принудительно использовать старую аутентификацию.```
$ xfreerdp /kbd:US /clipboard /compression /dynamic-resolution /sec:rdp [/d:"<domain_name>"] /u:"" /p:"" /v::[]
#### VNC
Для удаленной аутентификации на машине VNC.```
$ remmina -c vnc://<username>:<password>@<IP>
$ ssh [-p ] @
#### Telnet```
$ telnet <IP> [PORT]
Для использования remotekeystrokes (или его алиаса rks) при выполнении команд на целевой системе Windows через аутентифицированный удаленный сеанс. Перед выполнением команд необходимо указать имя окна (-w); по умолчанию будет искаться FreeRDP при использовании xfreerdp. При нацеливании на системы с другой программой удаленного входа обязательно укажите имя окна. Используйте флаг -c для отправки команд. Вы также можете подготовить текстовый файл с командами, и они будут читаться одна за другой. Флаг сам определит, является ли аргумент строкой или файлом.
Для графических программ удаленного рабочего стола, таких как FreeRDP, Remmina и другие сторонние программы. В отличие от удаленных терминальных сессий, таких как telnet и ssh. Вы должны переместить курсор на активное приложение внутри целевой машины. Например, в среде Windows необходимо открыть командную строку (cmd.exe) или PowerShell (powershell.exe). В Windows также можно открывать программы через диалоговое окно (-m dialogbox) для быстрого запуска. Убедитесь, что вы удалили следы из записи реестра, если изначально выполняли команды этим методом. Она находится по пути HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU. Вы увидите примеры того, как можно быстро выполнять наступательные действия, используя только техники «Living off the Land» (LotL).
Перечисление локальной машины.``` $ 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!
Выполнить одной командой. Это удобно, особенно при использовании диалогового окна.```
$ 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.``` $ 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!
Выполнить одной командой. Это удобно, особенно при использовании с диалоговым окном.```
$ 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!
Перечисление локальной машины (TODO)``` $ cat recon_local_enum_cmdlets.txt
$ rks -c "powershell.exe" -m dialogbox
$ rks -c recon_local_enum_cmdlets.txt
Active directory перечисление (TODO)```
$ cat recon_ad_enum_cmdlets.txt
$ rks -c "powershell.exe" -m dialogbox
$ rks -c recon_ad_enum_cmdlets.txt