LnkMeMaybe: Windows Shellリンク(.lnk)ファイルの作成・解析用.NET 8ツールキット

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 自体は何も実行 しません

認証がトリガーされるシナリオ:

  1. ユーザーが .lnk を含む共有フォルダを閲覧すると、そのユーザーアカウントが外部に向けて認証を行います。
  2. .lnk がマシンのインデックス対象として設定された場所に置かれている場合、 SearchProtocolHost がSYSTEMとして認証を行います。
  3. 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/

ソース: meterpreter.org