gjf
Ассоциация VN
- Сообщения
- 641
- Реакции
- 603
Всем привет!
Сегодня мне опять скучно, опять достала зима и угнетает всемощное возрастание процента тупых обитателей на планете Земля, а потому я решил сочинить ещё один топик.
Речь пойдёт о так называемых "иммунизаторах" и "вакцинаторах" флеш-носителей от автозапускаемых вирусов - о том, как они работают, нужны ли они вообще. Ну и конечно мы рассмотрим один из простых способов создания такой "вакцины".
СУПЕР-МЕГА-ЗАЩИТА от авторанов
- примерно такой слоган сопровождает все такие программы. Конечно: заявляется, что программа способна обнаружить любую известную и неизвестную инфекцию, передаваемую на флешках, обеспечить её блокировку и даже специальным образом модифицировать файловую систему на флешке, чтобы такая зараза более никогда не прилипла.
Особую популярность такие программы приобрели после бума Кидо - одним из способов его распространения были именно флешки. Наглость "утилидо-пейсателей" дошла до того, что за программу стали просить деньги, немедленно нашлись "хацкеры", которые эти программы стали ломать - ну и пошло-поехало.
Давайте теперь разберёмся, что по сути делает такая прога и есть ли от этого смысл.
ОБНАРУЖЕНИЕ ИНФЕКЦИИ
По сути, большинство программ считает флешку опасной и "обнаруживает инфекцию" по наличию autorun.inf в корне диска. Каждый раз, когда происходит монтирование носителя функция автозапуска системы блокируется, а запускается поиск искомого autorun.inf, а при наличии начинаются крики и стоны.
Особо продвинутые проги умеют анализировать содержимое autorun.inf на наличие open, после чего парсят значение и смотрят - нет ли на флешке файла или папки по такому пути? Если есть - крик будет оглушительным. Совершенно понятно количество фалсов на практически все диски презентаций и инсталляций, в которых autorun.inf находится чуть меньше, чем везде. В особо "продвинутых" программах файлы и папки из open проверяются на аттрибут "скрытый", чтобы снизить фалсы. Это, конечно, высокое достижение!
Совершенно очевидно, что подобные поделки не защитят от файловых вирусов: если на флешке есть программа, заражённая Sality - при запуске она мило заразит Вас в обход всех защит. Нашумевшее дело со Stuxnet отработает без шуму и пыли - там вообще не используется autorun.inf. Короче, печально.
А ВЫ СДЕЛАЛИ ПРИВИВКУ ОТ КОРИ?
Одно из "особых" достоинств обсуждаемых программ для защиты от заражённых флеш-носителй - так называемая "вакцинация" носителя, в результате чего его невозможно заразить. Суть вакцинации - создание в корне папки autorun.inf с известными ошибками файловой системы, в результате чего её невозможно удалить. В этом случае на флешку невозможно записать файл с таким же названием, а значит автозапуск вредоноса будет невозможен.
Увы и ах - этот способ убог априори: даже если autorun.inf и не создастся, все остальные файлы вредоноса благополучно будут скопированы и неискушённый юзверь может их запустить по ошибке или просто, "чтобы понять, что же это такое у меня хранится".
Кроме того, все описанные ошибки с успехом используются самими вредоносами для самозащиты (в неудаляемых папках прячутся исполняемые файлы), наивно полагать, что вирусописатели не знают как обойти то, что сами используют.
А теперь рассмотрим, как нам на практике создать такую "неудаляемую" папку без всяких "вакцинаторов".
ПРАКТИКА
Давным-давно,
Нет, у меня не начался старческий маразм, и вообще я ещё молод и красив (привет, девчонки!), а вспомнил я всё это потому, что наш пример будет очень похож на те древние приёмы.
Итак, нам потребуются:
- архиватор 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'ом, то архиватор справедливо отругается:
Но вот 7-zip файл отлично распаковывает с сохранением структуры папок. В итого - вуаля!
1. Если общая длина пути с именами папок и именем файла превышает 260 символов, то такая папка будет отображена, однако файл открыть, скопировать или отредактировать не удастся. Папку удалить тоже не получится из-за того, что файл недоступен для системы:
Пример файла тут, описанное наблюдается при распаковке в корень любого NTFS-раздела.
2. Если общая длина пути с именами папок превышает 260 символов даже не считая имени файла, то Вы просто не сможете увидеть сам файл - Вы до него не доберётесь ни Проводником, ни файловыми менеджерами. ну и все вкусняшки п.1 в придачу
Пример файла тут, описанное наблюдается при распаковке в корень любого NTFS-раздела.
ПЛЮСЫ И МИНУСЫ
Плюсы от подобного - знание и понимание! А вот минусов бесконечно много Потому как подобная "защита" легко обходится. Я не буду грузить техническими деталями, уверен, что те, кому они понятны, давно не читают эту статью, а пьют пиво и грузят техническими деталями других , проще говоря - если мы используем более низкий доступ в системе, то прекрасно можем работать как с папками, так и со скрытыми файлами.
Это легко увидеть по старому-доброму IceSword:
Этот антируткит великолепно видит всю структуру папок, а команда force delete их удаляет в один ход.
IceSword более не поддерживается, но китайцы не сдаются и очень, на мой взгляд, удачно перехватывают эстафету с помощью неблагозвучного для русского уха антируткита XueTr:
- всё то же плюс вкусняшки, например - подкрасил красненьким то, что подозрительно (в нашем случае - скрытые папки и файл)
Да на самом деле много чем увидеть можно - я просто выбрал два примера, что ближе всего лежали.
Отдельно стоит обратить внимание на ситуацию, когда в нашей неудаляемой папке прячется не обычный текстовик, а зловред. Антивирус Касперского с успехом проверяет содержимое папки, это легко проверить, распаковав содержимое этого архива (внутри - не текстовик, а 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)
Карантин с использованием прямого чтения - ошибка
Удаление файла:\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.
Последнее редактирование: