RLO拡張子偽装コワイ・・・ので対策メモ。

ファイル名の拡張子を偽造する技として、RLO拡張子偽装というものがあるらしい

Unicodeの制御コードであるRLO(Right-to-Left Override)を利用することで、簡単に右から左へ流れる文字を作ることが出来、これを使って見た目の拡張子を偽造するそうです。

(RLOはアラビア語など右から左に向けて記述する言語のためのUnicode制御文字)

正直、ぱっと見ただけでは、txtファイルに見えます。

rlo

が、よくよく見ればアイコンがおかしいのと、種類がVBScriptとなっているのでおかしいと気づきますが、コレがexeであればアイコンも変えられてしまう可能性があるので余計わかりにくくなります。

上記ファイルは実際には以下のようなファイル名です。

実際上記ファイルをダブルクリックすれば、VBSファイルとしてスクリプトが実行されてしまいます。

 

対策としては、
ファイル名にUnicodeの制御文字RLOが含まれている場合には、ファイルの実行を禁止してしまうセキュリティポリシーを追加する方法があるとのこと

  • ローカルセキュリティポリシーを起動。
  • 「ソフトウェア制限のポリシー」から「新しいポリシーの作成」を選択。
  • 「追加の規則」を選択し右クリックして、右クリックのメニューより「新しいパスの規則」を選択。
  • 「パス」欄に「**」(アスタリスクを2つ)と入力して、「*」と「*」の間にカーソルを合わせ右クリックし、「Unicode制御文字の挿入」→「RLO Start of right-to-left override」を選択します。また、セキュリティレベルが「許可しない」であることをを確認して「OK」ボタンをクリック。

これで、ファイル名にRLOが含まれている場合は、以下のようなメッセージが表示されて実行されなくなります。

RLOブロック

 

ただ、Windows 7 homeやWindows 7 Home Premium等では、セキュリティ ポリシーの機能がないので、この対策はでは対応出来ません。その場合は直接レジストリをいじる必要がありそうです

Windows Home等での レジストリを使用した抑制方法は以下で出来るそうですが未確認

  • レジストリエディタを起動し、
    HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer
    の中にDWORD値、「DisallowRun」を作成。 右クリックして「修正」を選び、作成した「DisallowRun」の値のデータを「1」に設定。
  • HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer の中にキー「DisallowRun」を作成。
  • HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorerDisallowRun
    の中に文字列で 文字列の値に抑制したいファイル名を記述(例:*[RLO]*)します。
    (この[RLO]は右クリックし、「Unicode制御文字の挿入」→「RLO Start of right-to-left override」)
    (間違って[**])とかで登録しちゃうと大変なことになるのでご注意を。

 

RLOによる拡張子偽装は知っていれば気づけるかもしれませんが、知らなければ引っかかる人もいると思いますので、念のため対策はしておきましょう。