Pull to refresh

Неудаляемые папки, защита от вирусов на флешках и все-все-все

Reading time8 min
Views14K
image

Всем привет!

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


СУПЕР-МЕГА-ЗАЩИТА от авторанов

— примерно такой слоган сопровождает все такие программы. Конечно: заявляется, что программа способна обнаружить любую известную и неизвестную инфекцию, передаваемую на флешках, обеспечить её блокировку и даже специальным образом модифицировать файловую систему на флешке, чтобы такая зараза более никогда не прилипла.

Особую популярность такие программы приобрели после бума Кидо — одним из способов его распространения были именно флешки. Наглость «утилидо-пейсателей» дошла до того, что за программу стали просить деньги, немедленно нашлись «хацкеры», которые эти программы стали ломать — ну и пошло-поехало.

Давайте теперь разберёмся, что по сути делает такая прога и есть ли от этого смысл.

ОБНАРУЖЕНИЕ ИНФЕКЦИИ

По сути, большинство программ считает флешку опасной и «обнаруживает инфекцию» по наличию autorun.inf в корне диска. Каждый раз, когда происходит монтирование носителя функция автозапуска системы блокируется, а запускается поиск искомого autorun.inf, а при наличии начинаются крики и стоны.

Особо продвинутые проги умеют анализировать содержимое autorun.inf на наличие open, после чего парсят значение и смотрят — нет ли на флешке файла или папки по такому пути? Если есть — крик будет оглушительным. Совершенно понятно количество фалсов на практически все диски презентаций и инсталляций, в которых autorun.inf находится чуть меньше, чем везде. В особо «продвинутых» программах файлы и папки из open проверяются на аттрибут «скрытый», чтобы снизить фалсы. Это, конечно, высокое достижение!

Совершенно очевидно, что подобные поделки не защитят от файловых вирусов: если на флешке есть программа, заражённая Sality — при запуске она мило заразит Вас в обход всех защит. Нашумевшее дело со Stuxnet отработает без шуму и пыли — там вообще не используется autorun.inf. Короче, печально.

А ВЫ СДЕЛАЛИ ПРИВИВКУ ОТ КОРИ?

Одно из «особых» достоинств обсуждаемых программ для защиты от заражённых флеш-носителй — так называемая «вакцинация» носителя, в результате чего его невозможно заразить. Суть вакцинации — создание в корне папки autorun.inf с известными ошибками файловой системы, в результате чего её невозможно удалить. В этом случае на флешку невозможно записать файл с таким же названием, а значит автозапуск вредоноса будет невозможен.

Увы и ах — этот способ убог априори: даже если autorun.inf и не создастся, все остальные файлы вредоноса благополучно будут скопированы и неискушённый юзверь может их запустить по ошибке или просто, «чтобы понять, что же это такое у меня хранится».

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

А теперь рассмотрим, как нам на практике создать такую «неудаляемую» папку без всяких «вакцинаторов».

ПРАКТИКА

Давным-давно, кажется в прошлую пятницу, когда скорости измерялись в бодах, о Мбит/с никто не слышал, а болтать по телефону и сидеть в интернете было два, совершенно несовместимых занятия, существовала славная заморочка: создавался простейший архив, который умелыми руками, одетыми в hex-редакторы, модифицировался так, чтобы файл в архиве, состоящий из десяти символов «ж» превращался в файл с 10 в стопицотой степени символов «ж». Суть атаки была проста: алгоритм архивирования сжимал такой гомогенный файл очень сильно, но при пересылке электронной почтой, если у клиента стояла автоматическая распаковка, файл-итог забивал полностью слабые тогда носители. В итого — полная искомая «ж». Ведь тогда ещё никто не думал об ограничения файловой системы — подумать только: тогда обладатели 40 Мб винтов считались королями!

Нет, у меня не начался старческий маразм, и вообще я ещё молод и красив (привет, девчонки!), а вспомнил я всё это потому, что наш пример будет очень похож на те древние приёмы.

Итак, нам потребуются:

— архиватор WinRAR. Я использовал версию 3.93, за остальные не ручаюсь.
— архиватор 7-zip. В моём случае — 9.20.04
— ОС Windows XP SP3
— cсистемная библиотека mozg.dll
— драйвер ruki.sys

Итак, что мы делаем. Хорошо известно, что в Windows общая длина пути вместе с именем файла не должна превышать 260 символов. Потому при создании папок с глубоким вложением рано или поздно придётся остановиться. Это хорошо известно людям, которые делают рипы с сайтов с большим вложением — хочешь или нет, но либо имена папок надо сокращать или кросс-ссылки делать. Именно этим ограничением мы и воспользуемся.

Создадим на диске пустую папку с названием autorun.inf и добавим её в rar-архив с помощью WinRar. Открываем архив в WinRar — ну и поехали. Создаём внутри autorun.inf ещё папку, потом ещё и ещё — заполняем искомые 260 символов. ну и в самом конце добавьте в архив что-нибудь — можно даже пустой текстовый файл. Итак, вакцина готова!

Если попытаться распаковать полученный файл WinRar'ом, то архиватор справедливо отругается:
image

Но вот 7-zip файл отлично распаковывает с сохранением структуры папок. В итого — вуаля!

1. Если общая длина пути с именами папок и именем файла превышает 260 символов, то такая папка будет отображена, однако файл открыть, скопировать или отредактировать не удастся. Папку удалить тоже не получится из-за того, что файл недоступен для системы:
image
image

Пример файла тут, описанное наблюдается при распаковке в корень любого NTFS-раздела.

2. Если общая длина пути с именами папок превышает 260 символов даже не считая имени файла, то Вы просто не сможете увидеть сам файл — Вы до него не доберётесь ни Проводником, ни файловыми менеджерами. ну и все вкусняшки п.1 в придачу :)

Пример файла тут, описанное наблюдается при распаковке в корень любого NTFS-раздела.

ПЛЮСЫ И МИНУСЫ

Плюсы от подобного — знание и понимание! А вот минусов бесконечно много :) Потому как подобная «защита» легко обходится. Я не буду грузить техническими деталями, уверен, что те, кому они понятны, давно не читают эту статью, а пьют пиво и грузят техническими деталями других :), проще говоря — если мы используем более низкий доступ в системе, то прекрасно можем работать как с папками, так и со скрытыми файлами.

Это легко увидеть по старому-доброму IceSword:

image

Этот антируткит великолепно видит всю структуру папок, а команда force delete их удаляет в один ход.

IceSword более не поддерживается, но китайцы не сдаются и очень, на мой взгляд, удачно перехватывают эстафету с помощью неблагозвучного для русского уха антируткита XueTr:

image

— всё то же плюс вкусняшки, например — подкрасил красненьким то, что подозрительно (в нашем случае — скрытые папки и файл) :)

Да на самом деле много чем увидеть можно — я просто выбрал два примера, что ближе всего лежали.

Отдельно стоит обратить внимание на ситуацию, когда в нашей неудаляемой папке прячется не обычный текстовик, а зловред. Антивирус Касперского с успехом проверяет содержимое папки, это легко проверить, распаковав содержимое этого архива (внутри — не текстовик, а eicar) и проверив полученную папку.

А вот что касается популярной среди жителей СНГ утилиты AVZ, используемой в ручном лечении заражённых компьютеров — тут интереснее.

Я попробовал закарантинить и удалить файл с помощью следующего скрипта AVZ (использовался уже упомянутый архив test1.rar):

begin
SearchRootkit(true, true);
SetAVZGuardStatus(True);
QuarantineFile('D:\autorun.inf\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov.txt','');
DeleteFile('D:\autorun.inf\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov.txt');
BC_ImportAll;
ExecuteSysClean;
BC_LogFile(GetAVZDirectory + 'boot_clr.log');
SaveLog(GetAVZDirectory+'avz_log.txt');
BC_Activate;
RebootWindows(true);
end.


В итого прямые команды карантина и удаления не сработали:

Ошибка карантина файла, попытка прямого чтения (D:\autorun.inf\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov.txt)
Карантин с использованием прямого чтения — ошибка
Ошибка карантина файла, попытка прямого чтения (D:\autorun.inf\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov.txt)
Карантин с использованием прямого чтения — ошибка
Удаление файла:D:\autorun.inf\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov.txt
>>>Для удаления файла D:\autorun.inf\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov.txt необходима перезагрузка


После автоматической перезагрузки сработал BootCleaner, который сделал благополучный карантин, но вот удалить всё равно не смог:

Quarantine path: \??\D:\AWZ\Quarantine\2011-01-27\
QuarantineFile \??\D:\autorun.inf\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov.txt — succeeded
QuarantineFile \??\D:\autorun.inf\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov.txt — succeeded
DeleteFile \??\D:\autorun.inf\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov\Mozhno_nazvat_kak_hotite_lish_by_bylo_ochen_dlinno_i_v_itoge_summa_papki_i_faila_poluchilas_bolee_260_simvolov.txt — failed (0xC0000043)
— End --


Таким образом, зловреда мы скопировали, а вот удалить и обезвредить не смогли. Так что думаю, Олегу Зайцеву ещё есть над чем работать :)

ВЫВОДЫ

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

Если же Вы действительно заинтерсованы в обеспечении защиты от подобного рода угро з -рекомендую попросту отключить автозапуск любых носителей на Вашей системе. Это можно сделать необратимо (потому что мне лень вспоминать параметры по умолчанию в реестре :) ), добавив реестр информацию этого файла, или же обратимо, воспользовавшись специфическими программами, например Autorunsettings от Uwe Sieber.
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
-5
Comments32

Articles

Change theme settings