これは、Windows のアイコン変更ダイアログを使用する Windows エクスプローラーの DLL インジェクション手法です。
まず、一時ディレクトリにフォルダーが作成され、SHObjectProperties を使用してフォルダーのプロパティが開きます。システム言語に関係なくウィンドウのハンドルを取得するには、開いているすべてのウィンドウで個別のフォルダー名をチェックするコールバック関数とともに EnumWindows が使用されます。
プロパティ ページを通じて、アイコン変更ダイアログが呼び出され、そのハンドルも EnumWindows で取得されます。最後に、アイコン パスが DLL (この場合は .ico 拡張子を持つ) に変更され、これにより、[OK] ボタンが押された後にエクスプローラーが DLL をロードします。
「アイコン」は実際には、.ico 拡張子を持つ単純な DLL ファイルで、Resource Hacker を使用して追加されたアイコン リソースを使用して電卓アプリを開きます。
フォルダー ビューでのアイコンの外観に関しては、いくつかの異常があります。これを 2 つの異なる Windows 10 バージョン (最新バージョンと古いバージョン) と Windows 11 でテストしました。
Widnows 10 のどちらのバージョンでも、拡張子を .ico に変更すると、DLL 内に保存されているアイコンが表示されませんでした。
ただし、最新の Windows 10 バージョンでは、写真アプリ内の「アイコン」を開こうとするまでは機能しました。それ以来、再現できなくなってしまいました。
Windows 11 では、エクスプローラー ビューで通常のアイコンと同様にアイコンが表示されました。ただし、写真アプリで開くとエラーが表示されます。
単純にフォルダーのアイコンを変更したいユーザーが、代わりにエクスプローラーに悪意のある DLL を挿入する可能性があるため、この動作は確かに興味深いものです。これは次のようになります。
これは、通常の DLL インジェクション API を使用しないため、Explorer プロセスに DLL をインジェクトする非常に巧妙な方法です。ただし、短いポップアップが 2 つ表示されますが、それほど気になるほどではありません。そのため、脅威アクターが正規のエクスプローラー プロセスを通じてコードを実行したり、UMD ルートキットをロードしたりするための AV 回避手法として使用される可能性があります。
また、.ico ファイルとしてマスクされた DLL の拡散も興味深い攻撃ベクトルとなる可能性があります。
正しいウィンドウ ハンドルを取得するために、Visual Studio とともにインストールされるツールである Spy++ を使用しました。
美しいフォルダー アイコンを提供してくれた Microsoft の Bill G. に感謝します。
インターネット上のランダムな男性、美しい注射アイコンをありがとう!