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

    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.
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 32

      0
      в Win7 не работает. Оба теста и просматриваются и удаляются.
        0
        Верю. О чём в статье и описывается:
        — ОС Windows XP SP3
          0
          к чему это я, проверил, это ограничение легко обходится subst'ом
            0
            На ХР или на 7? Пример кода приведите.
              0
              конечно на ХР (строго, на 2003, но это не принципиально), в семерке же нет такой проблемы Ж)
              имеется ввиду команда «subst»
              что-то вроде
              mkdir c:\<250 symbols name>
              subst x: c:\<250 symbols name>
              mkdir x:\<another 250 symbols name>

              и обратно работает

                0
                Попробуйте распаковать любой из примеров и выполнить subst x: c:\autorun.inf\...blahblahblah…
                Не знаю, что у Вас за ХР, но у меня не прошло.
                  +1
                  естественно, и не должно, я имел ввиду отделить таким образом кусок <260, тогда вполне можно и удалять и добавлять на приличную глубину…
                    0
                    А, ну тогда да, Вы правы. Не сразу понял суть.
        +1
        В тему также советую прочитать старый топик на хабре про защиту флешек от autorun вирусов
          +1
          А я обычно создаю в директории autorun.inf файлы с именами «con» или "???TRY2DEL???". Чаще всего подобного хватает
            0
            Способов много. Можно определённым образом создать в директории файл или папку с названием, начинающимся с точки. Тоже будет работать.

            Удаляется и обходится в точности теми же способами, что я указал в статье :)
            0
            Так, может минусующие тему хотя бы отпишут причины? Или минусуют господа-разработчики «защитников флешек»? ;)
              0
              А, ну-ну — теперь будем гадить в карму. Хабр не меняется. Увы.
                +1
                Я вам в карму не гадил, но попробую предположить почему это кто-то делает
                — довольно мерзкая первая иллюстрация (но это лично для меня)
                — местами слишком фамильярное повествование (юмор не должен переходить некоторых разумных границ)
                — неясен смысл топика — вы подробно описали некий способ, который так же как и алгоритмы «производителей флешек» тоже обходится, тогда не понятно зачем вы их так гнобите (такое складывается ощущение)
                — вы упомянули в начале про офисные презентации (фейлы которых приписали к минусам описанных других методов), тем не менее ваш вариант также не даст делать такие автозапускаемые презентации, т.е. с этой точки зрения он тоже фейл.
                — на хабре не принятно (я бы даже сказал вызывает раздражение), когда юзеры начинают ныть по поводу минусов за топик (и за карму тоже). Тут все просто — хорошую статью если даже кто то и поставит ей минус-два-пять, то плюсов она наберет больше. Если вы этого не наблюдаете — значит с вашей статьей что то не так, и имеет смысл подумать, может причина лежит на поверхности. Ну и за такие комментарии люди начинают заглядывать в профиль и уже давить карму. Это тут так принято, и наврядли изменится. Иногда все ровно наоборот, и после камента с нытьем человека плюсуют, но для этого нужны веские основания, тут их не просматривается.
                  0
                  — Вот уж не знал, что тут общаются эстеты, но картинку изменил.
                  — Юмор какой есть, бывает и хуже. Извините, но уже слишком стар, чтобы меняться в этой связи. Да и вообще тут не ВАКовские публикации в конце концов.
                  — Я не прошу покупать лицензию на мой способ. Да и способ по сути не мой — его знают все, кто более или менее разбирал особенности ФС. Производители — просят. Видимо, приятнее платить и получать некое чувство безопасности, чем разбираться.
                  — Есть проблема с автозапуском. Её можно или отключить или с ней жить. Ниже приводится утилита, которая позволяет избирательно отключать автозапуск — презентации обычно имеются на CD-носителях, а не на флешках. Можно выключить CD, но не выключать флешки.
                  — А я не ною. Я удивляюсь. И делаю выводы. Например такой, что лучше писать статьи по безопасности на ресурсах по безопасности. А пиар и продвижение стартапов оставить за ресурсами для этой тематики. За сим и откланиваюсь.
                +1
                Ну, возможно потому, что вы с видом мастер рассказываете, как сделать дачные тапочки из пластиковых бутылок.

                Тема защиты от вирусов авторана довольно интересная, но хотелось бы увидеть более професиональные способы. Возможно, на уровне прошивки самой флешки?
                0
                А я сделал проще, нашёл флешку с переключателем защиты от записи. Кстати, это (найти) было тоже не так легко.
                  0
                  Есть старая Transcend на 256 Мб. Из новых есть PQ1 Cool Drive U339 — взял себе и больше никому не советую: скорость записи поразительно низкая, постоянные потери данных при сложной структуре папок (а на 8Гб — она у меня сложная, уж поверьте). Хотел сделать «мухобойку» — оказалось так, некое подобие.

                  Так что у меня поиск современных флешек с переключателем режима оказался неудачным.
                    0
                    Можно попробовать разогнать служебной программой.
                      0
                      Пробовал и даже обращался в СЦ. «Такова фирма PQ1» — это официальный ответ.
                    0
                    Я уже два года такую ищу. Пока не нашёл.
                      0
                      Ага, если что, Qumo пока ещё такие клепает.
                    0
                    Я всюда куда достают мои руки отключаю автозапуск через gpedit.msc

                    А вот например флешка с инсталами у меня с простым физическим переключателем — защита от записи, как на старых добрых дискетах. Раньше все флешки были с таким переключателем, почему сайчас нет, не знаю, наверное не модно. Флешку на 8 гиг с таким переключателем нашел только в фирмы PQI уже года 2 работает прекрасно. И больше в свободном доступе флешек с переключателем нет :(
                      +6
                      А что плохого в вирусах на флешках? Ну лежат себе и лежат, никого не трогают. Редкий идиот будет набирать что-то вида mount /media/flash ~/.wine/drivers/z -o bind; wine rundll32 /media/flash/virus.dll, не так ли?
                        0
                        Я пытался. ):
                        Такая зверушка начала в панике метаться и искать диск C:, категорически отказываясь воспринимать таковым ~/.wine/drive_c
                          +3
                          некоторые не мечутся, а даже и не замечают, что это не винда.

                          Хорош стал Wine в последнее время. Даже вирусы его признали.
                            0
                            В любом случае требуется идиот, который этот вирус ещё и запустит.
                        +1
                        А разве AutoPlay на XP уже отменили?


                        PS: Windows вполне себе поддерживает пути длиннее 260 символов.
                          0
                          В автоплее и беда — именно он и отвечает за автозапуск. И, собственно, об этом и вся статья :)
                            0
                            Автоплей отличается от авторана тем, что всегда предлагает пользователю выбрать что делать. Соответственно речи об атоматическом запуске не идет, а если пользователь хочет запустить steal_vkontacte_cookie.exe — ничего из описанного в статье не помешает ему пойти и запустить.
                              0
                              Дык ЕМНИП автоплей запускается, когда нет autorun.inf. В противном случае в авторане прописано уже действие.
                          0
                          Пользуюсь этим: habrahabr.ru/blogs/infosecurity/53642/
                          Создает неудаляемый каталог autorun.inf И снимает автозапуск с компа.
                          И пока есть такая картинка, можно не волноваться.

                          Only users with full accounts can post comments. Log in, please.