Rundll32 と Prefetch
Rundll32.exe を利用した DLL 実行と、プリフェッチファイルの関係について確認してみます。テストした環境は Win 10 1709 Build 16299.15 です。
DLL ファイルには、Didier Stevens さんの作られた cmd.dll を利用します。
Rundll32
Windows\Prefetch フォルダ配下にある .pf ファイルは削除しておきます。念のため WinPrefetchVew でも確認しておきます。
rundll32 経由で cmd.dll を起動します。
WinPrefetchViewで RunDll32 を確認します。RunDll32 のファイルリスト内に cmd.dll の項目を確認できます。
システムを再起動した後、AppCompatCache 内で cmd.dll のレコードを確認しましたが、これは存在しませんでした。
念のため、cmd.dll のパスを変更して再度テストしましたが、AppCompatCache 内にレコードは確認できませんでした。
SHELL32
次に Shell32.dll 経由で CMD.DLL を呼び出してみます。(プリフェッチファイルは事前に削除します。)
プリフェッチファイルを確認します。
システムを再起動した後、AppCompatCache 内で cmd.dll のレコードを確認します。レコードが2件ありますが、これは念のためパスを変更した場合もテストしたものとなります。
shell32.dll 経由で cmd.dll を起動した場合、 AppCompatCache 内にレコードが残るようですね。
PowerShell
PowerShdll を利用し、Rundll32 経由で PowerShell を呼び出した場合。
rundll32.exe PowerShdll,main -w
参考URL:
pentestlab.blog