LnkMeMaybeとは
LnkMeMaybeは、Windows Shellリンク(.lnk)ファイルの作成と解析を行う.NET 8製のツールキットです。コマンドラインビルダー(LnkMeMaybe)とグラフィカルエディター(LnkUi)を含んでおり、セキュリティ研究やペネトレーションテストでの利用を想定しています。
構成プロジェクト
| プロジェクト | 説明 |
|---|---|
Lnk/ |
コアライブラリです。 MS-SHLLINK 仕様に基づいて .lnk バイナリ形式を解析・生成します。 LnkHandler がメインのエントリーポイントで、 ShellLinkHeader、 LinkTargetIDList、 LinkInfo、 StringData、 ExtraData を組み合わせて構成されています。 |
LnkMeMaybe/ |
CLIツールです。さまざまな種類の .lnk ファイルを生成するコマンドを備えており、Titanis.Cliフレームワークを使用しています。 |
LnkUi/ |
Avalonia 11ベースのMVVMデスクトップエディターです。7つのViewModelがそれぞれ対応する Lnk ライブラリのコンポーネントをラップしており、 .lnk ファイルを手動で調査・確認する際に役立ちます。 |
LnkTests/ |
MSTestベースのテストスイートです。実際の .lnk ファイルのサンプルがリソースとして埋め込まれており、 ShellLinkHeader と LinkInfo をカバーしています。 |
CLI — LnkMeMaybe
共通パラメータ
すべてのコマンドは、以下の基本パラメータ(BaseSavedCommand由来)を共有しています。
| パラメータ | エイリアス | 必須 | 説明 |
|---|---|---|---|
--OutputPath |
必須 | .lnk ファイルを書き出すファイルシステム上のパスです。 |
|
--Overwrite |
任意 | OutputPath に既存ファイルがある場合の上書きを許可します。 |
|
--DisplayName |
任意 | ショートカットにマウスを重ねた際に表示されるテキストです。改行には \n を使用できます。 |
|
--IconPath / -I |
-I |
任意 | ショートカットのアイコンとして使用する .exe または .dll へのパスです。 ターゲット 側のシステムに実在している必要があります。 |
--IconIndex |
任意 | --IconPath で指定したファイル内のアイコンリソースのインデックスです。デフォルト値は 0 です。 |
TriggerAuth (CVE-2026-25185)
指定したサーバーに対してKerberos認証(失敗時はNTLMにフォールバック)をトリガーする .lnk を作成します。この .lnk 自体は何も実行 しません。
認証がトリガーされるシナリオ:
- ユーザーが
.lnkを含む共有フォルダを閲覧すると、そのユーザーアカウントが外部に向けて認証を行います。 .lnkがマシンのインデックス対象として設定された場所に置かれている場合、SearchProtocolHostがSYSTEMとして認証を行います。- MSSenseが稼働しており、かつその場所が除外対象になっていない場合、
MSSense.exeがSYSTEMとして認証を行います。
パラメータ:
| パラメータ | エイリアス | 必須 | 説明 |
|---|---|---|---|
--FakePath / -F |
-F |
必須 | .lnk のプロパティ上でターゲットとして表示されるパスです。 |
--Server / -S |
-S |
必須 | 認証を送信するサーバーのホスト名、IPアドレス、またはUNCパスです。共有名が指定されていない場合は IPC$ が付加されます。 |
--Darwin |
任意 | .lnk 内に保存されるDarwin識別子です。任意の値を指定できます。デフォルト値は unset です。 |
WebShortcut
WebのURLを指すことができる .lnk ファイルを作成します。通常、WindowsはWebショートカット用に .url ファイルを作成しますが、このコマンドでは代わりに .lnk を生成します。
パラメータ:
| パラメータ | 必須 | 説明 |
|---|---|---|
--Url |
必須 | ショートカットが指し示すべきURLです。整形式の絶対URIである必要があります。 |
LocalShortcut
ローカルのファイルまたはフォルダを指す、標準的なWindowsショートカットを作成します。ターゲットパスは、Windowsがファイルシステムのショートカットに用いるネイティブ形式であるシェルアイテムIDリスト(PIDL)として保存されます。
パラメータ:
| パラメータ | エイリアス | 必須 | 説明 |
|---|---|---|---|
--TargetPath |
必須 | 対象となるファイルまたはフォルダの絶対パスです。 | |
--Arguments |
任意 | ターゲットに渡すコマンドライン引数です。 | |
--WorkingDirectory |
-W |
任意 | ターゲットプロセスの作業ディレクトリです。 |
--RunAsAdmin |
任意 | ショートカット起動時にUAC昇格を要求します。 | |
--ShowCommand |
任意 | 起動時のウィンドウ状態です: Normal、 Maximized、または Minimized を指定できます。 |
EnvShortcut
ターゲットパスを展開可能な環境変数文字列(EnvironmentVariableDataBlock)として保存する .lnk を作成します。これは、Windowsがシステム実行ファイル(例: %SystemRoot%\system32\notepad.exe)へのショートカットに用いている形式です。変数は起動時に展開されるため、Windowsのインストール環境が異なってもショートカットを持ち運べます。
パラメータ:
| パラメータ | エイリアス | 必須 | 説明 |
|---|---|---|---|
--TargetPath |
必須 | ターゲットパスです。 %SystemRoot% や %USERPROFILE% などの環境変数を含めることができます。 |
|
--Arguments |
任意 | ターゲットに渡すコマンドライン引数です。 | |
--WorkingDirectory |
-W |
任意 | ターゲットプロセスの作業ディレクトリです。 |
--RunAsAdmin |
任意 | ショートカット起動時にUAC昇格を要求します。 | |
--ShowCommand |
任意 | 起動時のウィンドウ状態です: Normal、 Maximized、または Minimized を指定できます。 |
ダウンロードと利用方法
翻訳元: https://meterpreter.org/windows-lnk-analysis-toolkit/