ほぼリンク集。
仕事でもなんでも知らない.lnk
ファイルは実行してはいけない。ただのリンクではないし、HEXエディターで確認するくらいの覚悟と準備で踏もう。
仕様
公式がフォーマットを提供している
ABNF(Augmented BNF for Syntax Specifications)で記述する箇所がある
SHELL_LINK = SHELL_LINK_HEADER [LINKTARGET_IDLIST] [LINKINFO]
[STRING_DATA] *EXTRA_DATA
IDLIST = *ITEMID TERMINALID
STRING_DATA = [NAME_STRING] [RELATIVE_PATH] [WORKING_DIR]
[COMMAND_LINE_ARGUMENTS] [ICON_LOCATION]
EXTRA_DATA = *EXTRA_DATA_BLOCK TERMINAL_BLOCK
EXTRA_DATA_BLOCK = CONSOLE_PROPS / CONSOLE_FE_PROPS / DARWIN_PROPS /
ENVIRONMENT_PROPS / ICON_ENVIRONMENT_PROPS /
KNOWN_FOLDER_PROPS / PROPERTY_STORE_PROPS /
SHIM_PROPS / SPECIAL_FOLDER_PROPS /
TRACKER_PROPS / VISTA_AND_ABOVE_IDLIST_PROPS
STRING_DATAのところでアイコンを偽装したりcmdやらpowershellやらを叩いてコマンドライン引数で好き勝手なことしたら危ないという話がある。
COMMAND_LINE_ARGUMENTS: An optional structure that stores the command-line arguments that are specified when activating the link target.
脆弱性(?)
powershellとかを叩いて悪いことができる。(↓詳しい)
↓分析
空白を仕込んでwindowsのGUIから見えないようにするらしい( https://japanese.opswat.com/blog/shortcut-lnk-files-may-contain-malware )
アイコンもnotepad.exeとかのを参照したりして怪しくない風を装う。
それと-NoProfile
や-bypass
などで実行ポリシー云々を回避したり、色々なところに置いた文字列をjoinやらsplitしたりで難読化してコマンドの「有害な」部分を隠すことで、防御側に警告を与える可能性のある文字列を防止することができ
るらしい。
なんか10年以上前からこんな感じらしいしpowershellってすげー。ふざけるな。
やり方(やるな)
リンク
読み込む
生成(悪意あり)
↓実行コード自体を埋め込もうとしてるらしい
↓ [char] 数字
や環境変数から文字を取ってくる等のPowerShell難読化について
↓ 1ライナーのpowershellが書かれているはずなのでオペレーターを知っとくとよさそう
AMSIバイパス
やばいコードはAMSIが止めてくれるが、それをバイパスする方法が度々見つかっている。
(もとの.lnkでは文字数制限があるので、文字が置ける外部サイトから難読化済のAMSIバイパスコードを取ってきて実行。その後さらに悪意あるコードを外部から取ってきて実行、みたいな手段があるっぽい)
↓2022年までの争い
↓2025年最新版
↓4種のやり方(検証目的以外でやるな)