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


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.