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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
POC-CVE-2017-8464-OpenCalculator — .lnk の脆弱性と、explorer.exe および USB ドライブに関するオペレーティングシステムの処理メカニズムを悪用します。 | Kitploit
ツール/GitHubGitHub/playboisk8/poc-cve-2017-8464-opencalculator
脆弱性分析エクスプロイトバイナリ解析ペイロード開発バイナリエクスプロイト
GitHubplayboisk8/poc-cve-2017-8464-opencalculator

POC-CVE-2017-8464-OpenCalculator

.lnk の脆弱性と、explorer.exe および USB ドライブに関するオペレーティングシステムの処理メカニズムを悪用します。

リポジトリを見る

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
11日前未レビュー

CVE-2017-8464 / 研究 + PoC

悪意のあるペイロードを含む 1 つのショートカット + 1 つの .DLL を作成 => USB に入れて被害者に送る => 被害者が USB を開く => ペイロードが自動的に起動する!

CVE-2017-8464.gif

根本原因

  1. まず、このバグが正確にどこから発生するのかを知る必要があります! それは Plug-and-Play(プラグアンドプレイ) と呼ばれる機能によるものです。OS がデバイスを自動検出し、リソースを割り当て、適切なドライバーをロードして、再起動することなく即座に動作させます。USB を挿して Windows Explorer explorer.exe でフォルダを開くと、OS はファイルをスキャンして、ユーザーに対応するアイコン(icon)画像を表示します!

  2. 旧バージョンの Windows 以来、Microsoft は Control Panel の機能(実質的には .cpl または .dll ファイル)を指すショートカット(.lnk)が、動的なアイコンを柔軟に表示できるようにしたいと考えていました。そのため、Windows のコアとなるインターフェース管理ライブラリである shell32.dll には、CPL_LoadCPLModule という名前の関数が設計されました。

  3. 盲目的な LoadLibrary の使用: Control Panel アプレット構造ファイルからアイコンを取得するために、OS は単なる静的画像ファイルを読み込むのではなく、LoadLibraryW 関数を使用して、その動的リンクライブラリ(DLL)全体を explorer.exe プロセスのメモリ空間に直接ロードします。ロード後、標準のエクスポート関数である CPlApplet を呼び出して、画面に描画するアイコンを取得します。

LoadLibraryW.png

LoadLibraryW が上記のエクスプロイトチェーンに実際に関与していることを証明するには:

1/ x64dbg với quyền admin を起動する

2/ explorer.exe にアタッチする

3/ コマンド bp LoadLibraryW を入力する

4/ F9 を押して explorer.exe の実行を続行する

5/ USB を挿すとすぐに hit breakpoint する!

PoC の問題と解決策

エクスプロイトチェーンがまったく反応しない(完全に沈黙する)という問題に遭遇しました。あれこれチェックしてデバッグしてみても、修正方法が見つかりませんでした! その後、他の人の PoC を探して実行してみましたが、それも失敗しました!

例 : https://github.com/3gstudent/CVE-2017-8464-EXP

しかし、昼食に行って戻ってくると、私は再び集中力と冷静さを取り戻しました。そして疑問を持ち始めました。なぜ彼の PoC は動作するのに、自分のマシンに持ち帰ると動作しないのか? OK、彼の .lnk と .dll を軽くリバースエンジニアリングしてみることにしました。すると 2 つのことが判明しました!

1 / 私の .dll は彼のものより長い! しかし大丈夫、それは問題ではない!

2 / .lnk を HxD に放り込んで strings を読んだとき、彼は相対パスではなく絶対パスを使っていることに気づきました!

相対パス : ../example.dll

絶対パス : O:/example.dll

him.png

OK、修正方法はこうです。USB が被害者のマシンに挿されたときに自動的に割り当てられるドライブレターを知る必要があります。そこに絶対パスを設定すれば成功します。私の Win7 では USB を挿すといつも F ドライブになるため、私のビルド構文は次のようになります:

root@kitploit:~
python Make_PoC.py FakeGoogleChrome F:\Pwned.dll

マイクロソフトはこのアーキテクチャをどのように修正したのか?

これはメモリオーバーフローのバグではなく、システムアーキテクチャ設計上の欠陥(Logic/Architecture Flaw) に属するバグであるため、Microsoft は Control Panel の処理方法を完全に変更する必要がありました:

  • デジタル署名(コード署名): 最新の OS では、システムプロセスによってロードされる .cpl または .dll ファイルに、Microsoft の有効なデジタル署名があること、または厳重に保護されたシステムディレクトリ(System32 など)内にあることが必須とされ、USB からの "Binary Planting" バグを防いでいます。
  • プロセス分離(Process Isolation): 重要なプロセス explorer.exe [cite: 1058] に直接ロードする代わりに、新しいバージョンの Windows は Control Panel アプレットを、分離された中間プロセス(dllhost.exe や rundll32.exe など)経由で実行します。DLL がクラッシュするかマルウェアを含んでいても、影響はその中間プロセスが落ちるだけにとどまり、ユーザーインターフェースシステム全体を乗っ取られることはありません。

参考

研究(VN)

  • https://github.com/TrG-1999/DetectPacket-CVE-2017-8464

PoC

  • https://github.com/3gstudent/CVE-2017-8464-EXP

脆弱な .lnk をビルドするツール

  • https://github.com/nixawk/labs/blob/master/CVE-2017-8464/exploit_CVE-2017-8464.py
ツールをダウンロード