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

Тема в разделе "Борьба с типовыми зловредами", создана пользователем gjf, 27 янв 2011.

  1. gjf
    Оффлайн

    gjf Ассоциация VN Разработчик

    Сообщения:
    639
    Симпатии:
    823
    [​IMG]

    Всем привет!

    Сегодня мне опять скучно, опять достала зима и угнетает всемощное возрастание процента тупых обитателей на планете Земля, а потому я решил сочинить ещё один топик.

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

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

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

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

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

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

    По сути, большинство программ считает флешку опасной и "обнаруживает инфекцию" по наличию 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'ом, то архиватор справедливо отругается:
    [​IMG]

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

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

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

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

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

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

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

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

    [​IMG]

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

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

    [​IMG]

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

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

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

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

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

    Код (Text):
    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.
    В итого прямые команды карантина и удаления не сработали:

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

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

    ВЫВОДЫ

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

    Если же Вы действительно заинтерсованы в обеспечении защиты от подобного рода угро з -рекомендую попросту отключить автозапуск любых носителей на Вашей системе. Это можно сделать необратимо (потому что мне лень вспоминать параметры по умолчанию в реестре :) ), добавив реестр информацию этого файла, или же обратимо, воспользовавшись специфическими программами, например Autorunsettings от Uwe Sieber.
     
    Последнее редактирование: 27 янв 2011
    30 пользователям это понравилось.
  2. Arbitr
    Оффлайн

    Arbitr Ассоциация VN

    Сообщения:
    3.604
    Симпатии:
    2.317
    Зайцев заявил об исправлении бага
     
    6 пользователям это понравилось.
  3. gjf
    Оффлайн

    gjf Ассоциация VN Разработчик

    Сообщения:
    639
    Симпатии:
    823
    И с поиском в Active Setup? Ну-ну... Надеюсь, что "праздники" закончатся и обещанный новый билд со всеми исправлениями выйдет.
     
    2 пользователям это понравилось.
  4. Arbitr
    Оффлайн

    Arbitr Ассоциация VN

    Сообщения:
    3.604
    Симпатии:
    2.317
    gjf, он заявил что уже!!! то есть обновляешься проверяешь.

    Добавлено через 15 часов 19 минут 43 секунды
    в прочем как обычно у зайцева....
    Добавлено через 1 час 6 минут 57 секунд
    по сообщению зайцева
     
    4 пользователям это понравилось.
  5. gjf
    Оффлайн

    gjf Ассоциация VN Разработчик

    Сообщения:
    639
    Симпатии:
    823
    Карантин у меня не проходил в реале, а в BC проходил успешно. Проблема была в удалении.
    +100500
     
  6. Arbitr
    Оффлайн

    Arbitr Ассоциация VN

    Сообщения:
    3.604
    Симпатии:
    2.317
    только что опять заявил что баг исправлен.. обновляйте базу перезапускайте AVZ и будет вам щасте :D:D:D
     

Поделиться этой страницей