Как можно запретить запись или чтение файлов с символом Юникод справа налево в их имени (метод подмены вредоносного ПО)?


20

Как можно предотвратить или запретить запись или чтение файлов на ПК под управлением Windows с символом Unicode RLO (переопределение справа налево) в их имени (вредоносный метод подделки имен файлов)?

Больше информации о юникоде RLO здесь:

Информация о юникод-символе RLO, как он используется вредоносными программами:

Сводная информация об инциденте компьютерного вируса / несанкционированного доступа к компьютеру за октябрь 2011 года, составленная Агентством по продвижению информационных технологий, Япония (IPA) [ Mirror (Google Cache) ]

Вы можете попробовать эту тестовую веб-страницу RLO, чтобы увидеть, как работает символ RLO.

Символ RLO также уже вставлен в поле «Тест ввода» на этой веб-странице. Попробуйте набрать там и обратите внимание, что символы, которые вы печатаете, отображаются в обратном порядке (справа налево, а не слева направо).

В именах файлов символ RLO может быть специально размещен в имени файла, чтобы подделать или маскировать его как имеющий имя файла или расширение файла, которое отличается от того, что он фактически имеет. (Будет по-прежнему скрытым, даже если флажок « Скрыть расширения для известных типов файлов » не установлен.)

Единственная информация, которую я могу найти, которая содержит информацию о том, как предотвратить запуск файлов с символом RLO, находится на веб-сайте Японского агентства по продвижению информационных технологий .

Можно ли рекомендовать какие - либо другие хорошие решения для предотвращения файлов с характером RLO в их именах из того написано или считываться в компьютере, или способ предупреждения пользователя , если файл с характером RLO обнаруживаются?

Моя ОС - Windows 7, но я буду искать решения для Windows XP, Vista и 7 или решение, которое будет работать для всех этих ОС, чтобы помочь людям, использующим эти ОС тоже.


1
Очень хороший вопрос! Я бы тоже хотел это знать. Ваша ссылка не работает.
— Цербер

@Cerberus Только что узнал, что ссылка не работает. Я надеюсь, что это временно временно. Я обновлю ответ, если найду зеркало.
— galacticninja


@Cerberus Спасибо. Я добавил зеркальную ссылку на вопрос.
— galacticninja

4
They adviced to use the Local Security Policy settings manager to block files with the RLO character in its name from being run.Подскажите, пожалуйста, почему это не решение?
— Тамара Вийсман

Ответы:


3

Вы можете использовать Все в сочетании с 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%
}

Что оно делает

Скрипт запускает все и ищет ‎|â€|‪|‫|‬|‭|‮(UTF8), т. Е. Все семь двунаправленных символов управления текстом ( источник ), разделенных символом |.

Затем сценарий скрывает окно «Все» и отслеживает его строку состояния. Если в нем содержится какая-либо другая цифра 0, совпадение найдено, открывается окно «Все» и появляется следующее сообщение:

В имени файла обнаружен двунаправленный символ управления текстом.

Нажмите OK, чтобы снова скрыть окно.

Скрипт также перезапускает все в случае, если он закрывается.

Как пользоваться

  1. Скачать , установить и запустить все.

  2. Нажмите Ctrl+ Pи переключитесь на вкладку Volume .

    Для всех томов, которые необходимо проверить, включите Монитор изменений .

  3. Скачайте и установите AutoHotkey.

  4. Сохранить в приведенный выше скрипт как find-bidirectional-text-control-characters.ahk.

  5. Дважды щелкните скрипт, чтобы запустить его.

  6. Создайте ярлык для скрипта в папке « Автозагрузка ».


2

Агентство Информационных технологий Promotion, сайт Японии ( зеркало ссылка ), консультировало с помощью локальной политики безопасности диспетчера настроек для блокирования файлов с символом RLO в названии от бегутся.

(Я не копирую полные инструкции, так как не уверен в том, какова лицензия этого сайта на их содержание.)


0

Возможно, есть и другие способы, но самый простой - и все же не тривиальный - способ заключается в реализации фильтра файловой системы (или мини-фильтра файловой системы), который фильтрует эти запросы. В случае чтения из такого файла вы можете вернуться, STATUS_ACCESS_DENIEDи при записи вы не должны ничего делать, а вместо этого предотвращать создание таких файлов (вероятно, также с приведенным выше кодом ошибки). Создание - это другой тип запроса.

Можно представить другие способы достижения аналогичного результата, такие как перехват SSDT. Но единственный надежный способ был бы выше.

Чтобы сделать это, вам нужно будет, чтобы кто-то написал для вас этот тип фильтра (относительно тривиально для мини-фильтров для разработчика ядра), а затем подписал его, чтобы получить его через политику подписывания режима ядра начиная с Vista. Если вы не хотите делать последнее, вы все равно можете проверить подпись двоичного файла драйвера и изменить параметры загрузки, чтобы разрешить содержимое с подписью теста, тем самым ставя под угрозу безопасность соответствующей системы.

В свете этой информации я бы настоятельно рекомендую вам использовать решение, на которое указал galacticninja и Tom Wijsman.


2
« Я настоятельно рекомендую вам использовать решение, на которое указал Том Вейсман. » На самом деле это было решение, на которое я указал. Я уже настроил Windows, чтобы сделать это. Как то , что я ответил Том Wijsman, я ищу другие решения , которые будут препятствовать характеру RLO от быть написано и читать, или решение , которое будет автоматически уведомлять или предупреждать пользователь , если символ RLO обнаружен. Боюсь, у меня нет технических знаний, чтобы написать фильтр, который вы описали.
— galacticninja

@galacticninja: Извините, я исправлю это в своем ответе.
— 0xC0000022L

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.