名前にRLO(Right-to-Left Override)Unicode文字(ファイル名をスプーフィングするマルウェアメソッド)が含まれるファイルがWindows PCで書き込まれたり読み取られたりするのを回避または防止する方法は何ですか?
RLOユニコード文字の詳細については、こちらをご覧ください。
マルウェアによって使用されるRLOユニコード文字に関する情報:
2011年10月のコンピュータウイルス/不正なコンピュータアクセスインシデントレポートの概要、日本の情報技術推進庁(IPA)が編集 [ ミラー(Googleキャッシュ) ]
これを試すことができます RLO文字テストWebページ RLO文字がどのように機能するかを確認してください。
RLO文字は、そのWebページの[入力テスト]フィールドにも既に貼り付けられています。そこで入力してみてください。入力している文字が逆の順序で表示されていることに注意してください(左から右ではなく右から左)。
ファイル名では、RLO文字をファイル名に具体的に配置して、実際のファイル名またはファイル拡張子とは異なるファイル名またはファイル拡張子を偽装または偽装することができます。 (「既知のファイルタイプの拡張子を非表示にする」がオフになっている場合でも非表示になります。)
RLO文字を含むファイルが実行されないようにする方法に関する情報を見つけることができる唯一の情報は、 情報処理推進機構、日本のWebサイト からのものです。
名前にRLO文字が含まれるファイルが書き込まれるか、コンピューターで読み取られるのを防ぐ、または警告する方法を防ぐために、他の優れたソリューションを誰かが推奨できますか? RLO文字を含むファイルが検出された場合のユーザー?
私のOSはWindows7ですが、Windows XP、Vista、7のソリューション、またはこれらすべてのOSで機能するソリューションを探しており、これらのOSを使用している人々にも役立ちます。
Everything を AutoHotkey と組み合わせて使用すると、双方向のテキスト制御文字がファイル名の一部を形成するたびにアラートを作成できます。
AlertText = A bidirectional text control character was detected in a filename.
AlertText = %AlertText%`n`nClick OK to re-hide the window.
SetTitleMatchMode RegEx
DetectHiddenWindows, On
EnvGet, ProgramFiles32, ProgramFiles
Start:
Run, %ProgramFiles32%\Everything\Everything.exe
WinWaitActive, Everything, , 5
if Errorlevel
Goto Start
WinGet, Id, ID, A
StatusBarWait, objects, , 1, ahk_id %Id%
StatusBarGetText, Status, 1, ahk_id %Id%
Backup := ClipboardAll
Transform, Clipboard, Unicode, ‎|â€|‪|‫|‬|â€|‮
Send, ^v
WinHide, ahk_id %Id%
Sleep, 100
Clipboard := Backup
Backup =
StatusBarWait, ^(?!^\Q%Status%\E$)
Loop
{
StatusBarWait, [1-9], , 1, ahk_id %Id%
IfWinNotExist, ahk_id %Id%
Goto Start
WinShow, ahk_id %Id%
WinRestore, ahk_id %Id%
MsgBox, %AlertText%
WinHide, ahk_id %Id%
}
スクリプトはEverythingを起動し、‎|â€|‪|‫|‬|â€|‮
(UTF8)、つまり|
で区切られた7つの双方向テキスト制御文字( source )すべてを検索します。
次に、スクリプトは[すべて]ウィンドウを非表示にし、そのステータスバーを監視します。 0
とは異なる数字が含まれている場合、一致するものが見つかり、[すべて]ウィンドウが表示され、次のメッセージボックスが表示されます。
ファイル名で双方向テキスト制御文字が検出されました。
[OK]をクリックして、ウィンドウを再度非表示にします。
スクリプトは、閉じられた場合に備えてすべてを再起動します。
情報処理推進機構、日本のウェブサイト ( ミラーリンク )は、ローカルセキュリティポリシー設定マネージャーを使用して、名前にRLO文字が含まれるファイルの実行をブロックするようにアドバイスしています。
(そのコンテンツに対するそのWebサイトの著作権ライセンスが何であるかわからないため、完全な手順をコピーして貼り付けることはしません。)
そのようなものがデスクトップで利用できるとは思いませんが、ファイルサーバーにそのようなものが書き込まれるのを防ぐことができるはずです。
おそらく他の方法もありますが、最も簡単な方法ですが、簡単ではありませんが、これらの要求をフィルター処理するファイルシステムフィルター(またはファイルシステムミニフィルター)を実装することです。そのようなファイルから読み取る場合はSTATUS_ACCESS_DENIED
を返すことができ、書き込むときは何もしないでください。代わりに、そもそもそのようなファイルが作成されないようにします(上記のエラーコードもある可能性があります)。作成は別のリクエストタイプです。
SSDTフックなど、同様の結果を達成する他の方法を想像することができます。しかし、唯一の信頼できる方法は上記です。
これを行うには、誰かにこの種のフィルターを作成してもらい(カーネル開発者のミニフィルターでは比較的簡単です)、Vista以降のカーネルモード署名ポリシーを通過させるために署名する必要があります。後者を実行したくない場合でも、ドライバーバイナリをテスト署名し、ブートオプションを変更して、テスト署名されたコンテンツを許可することができます。これにより、それぞれのシステムのセキュリティが損なわれます。
この情報に照らして、私は強く galacticninjaとTomWijsmanが指摘した解決策を利用することをお勧めします。