Администратор ИБ
0,3
рейтинг
23 декабря 2010 в 07:49

Разработка → Небольшое исследование самозащиты продуктов Dr.Web

Продолжая свой предыдущий топик про ремувер от ЛК, как и обещал, расскажу про утилиту удаления продуктов от Dr.Web. В прошлый раз Лаборатория Касперского довольно быстро отреагировала и усложнила капчу, теперь от нее рябит в глазах, а желания писать алгоритм распознавания не возникает. Правда, перед тем как выложить версию с новой каптчей (build 157), они обновили старую, куда добавили удаление новейших продуктов линейки 2011 (build 155)…

Про ремувер от Dr.Web я собирался написать еще в сентябре, но т.к. была обнаружена довольно серьезная уязвимость в модуле самозащиты не только самой утилиты удаления, но и всей линейки антивирусов, пришлось дать время программистам из Dr.Web на ее исправление.

Итак, прошу любить и жаловать, Dr.Web Anti-Virus Remover:



Сразу видно, что ребята делали с душой! Логотип на пол окошка, статусбар даже… Лепота! Всегда прикалывало как они умудряются совмещать в своих продуктах гламурные картинки с элементами интерфейса в стиле Win98:) Для выполнения удаления продукта опять требуют ввести каптчу, никаких подтверждений не выводится, только сообщение об успешном удалении. Посмотрим, так ли все красиво внутри и попробуем пойти несколькими путями…

1. Распознавание каптчи


Каптча у утилиты от Dr.Web, конечно, гораздо более стойкая, чем у ремувера от Лаборатории Касперского, во многом благодаря геометрическим искажениям символов, но и тут не обошлось без слабостей.
Во-первых, каптча состоит из 6 цифр, и они, что удивительно, не повторяются! Какой смысл в этой «фиче» я понять вообще не могу… Такой подход сокращает количество возможных вариантов почти в 7 раз! Это дает возможность использовать что-то вроде метода исключения при распознавании и существенно увеличивает вероятность успеха.
Во-вторых, каждая цифра на каптче окружена серым ореолом, в то время как шум чисто черный. Благодаря этому можно совершенно точно вырезать отдельные символы и отсеивать шум.
В-третьих, позиции цифр практически не изменяются, меняется только размер и стиль шрифта (с засечками или без), а так же степень искажения.
Из-за сильных искажений символов удалось добиться только 20% точности распознавания для всей каптчи, что в принципе приемлемо (для веб-каптч, например), но в данном случае мелькать по экрану, обновляя картинку пока не повезет, это уже бред. Дальше усложнять алгоритм распознавания было лень, поэтому решил попробовать зайти с другой стороны.

2. Патч ехе-файла ремувера


Можно просто вырезать проверку правильности кода и перекомпилировать утилиту. Но в таком случае ЭЦП становится недействительной. Ремувер работает, удаляет все кроме модуля самозащиты (видимо сказывается отсутствие валидной цифровой подписи). Тем не менее, антивирус полностью теряет работоспособность, кому нужна эта самозащита, если уже все удалили не совсем понятно.



При попытке удаления более свежей версии Dr.Web Security Space (6.0.2.07290) живым оставался SpIDer Guard.



3. Чтение правильного кода из памяти ремувера


Зачем распознавать каптчу если значение открыто лежит в памяти, да еще и по фиксированному адресу? Можно просто считать его и вставить в поле ввода. При таком подходе сохраняется ЭЦП, а значит ремувер гарантированно отработает как положено и снесет антивирус полностью. Программка для чтения куска памяти пишется минут за 20. «Благодаря» отсутствию у продуктов от Dr.Web проактивной защиты или HIPS, чтению памяти доверенной утилиты ничего не препятствует.



Вообще сам exe-файл утилиты содержит в открытом виде много интересного, например, пути до жизненно важных файлов и ключей реестра продуктов Dr.Web. В том же ремувере от Лаборатории Касперского все не так просто и такие данные не хранятся в открытом виде.



В дальнейшем неожиданно выяснилось, что хваленый модуль самозащиты продуктов Dr.Web сам страдает подобной проблемой! Значение каптчи точно так же, не стесняясь, хранится в памяти. Трудно поверить, что программисты, которые наворотили столь мощную (на вид) самозащиту, могли допустить такую детскую ошибку, но это так…



Для выгрузки модуля самозащиты SpIDerAgent_Set.exe вызывается с параметром -uninstall:##########, где ########## — число, неким образом зависящее от системного времени. При получении неверного кода, выгружалка самозащиты не запустится. Опять же, благодаря отсутствию всяческих ненужных (с точки зрения Dr.Web) поведенческих блокираторов, ничего не стоит отмотать системную дату на определенное значение и запустить SpIDerAgent_Set.exe с заранее известным кодом ;)



Раз уж речь зашла не только о ремувере, но и о самих продуктах Dr.Web, неправильно было бы обойти вниманием еще один вектор атаки на самозащиту.

4. Распознавание озвучки каптчи


При озвучке значения каптчи используется Microsoft Speech API, шумов нет, поэтому распознавание вообще не проблема, подобное уже было на Хабре. Такое впечатление, что эту функцию прикрутили вообще «для галочки». Лучше бы код перебрали на дыры…

P.S.


Эксперименты проводились с сентябрьскими версиями продуктов Dr.Web Anti-Virus Remover v.1.00.5.08230 и Dr.Web Security Space 6.0.2.07290. После того, как я сообщил об уязвимости, выпустили обновленную версию Dr.Web Anti-Virus Remover v.1.00.6.09200, в которой бреши прикрыли. На счет исправлений в линейки самих антивирусов хранят гордое молчание, но уж за 3 месяца должны были что-то придумать.

Программка, демонстрирующая уязвимость в ремувере и модуле самозащиты антивируса. Кроме как на WinXP не тестировал, к тому же модуль самозащиты линейки антивирусов уже должен быть обновлен, но на более ранних версиях должно работать.

P.P.S


Как раз в сентябре на портале anti-malware.ru был опубликован сравнительный тест самозащиты антивирусов, что примечательно, победителями с результатами 100% и 99% оказались наши герои — Лаборатория Касперского (Kaspersky Internet Security 2011) и Доктор Веб (DrWeb Security Space 6.0) соответственно.



А недавно объявился зловред Trojan-PSW.Win32.VKont.alb (по классификации ЛК), который вообще на «ура» выкашивает практически все популярные антивирусы, в том числе и обладателей платиновой награды теста anti-malware.ru (Dr.Web на сегодняшний день уже пофиксили)…

Все это еще раз доказывает, что идеальной защиты не существует, как не существует и идеальных тестов этой самой защиты, и помните, что лучший антивирус — это голова!
Александр @Akr0n
карма
87,7
рейтинг 0,3
Администратор ИБ
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (86)

  • НЛО прилетело и опубликовало эту надпись здесь
    • +28
      Простите меня, но если вы знакомы с элементарными правилами обращения с компьютером, вирусов не будет никогда. Даже без антивируса.
      • –12
        Простите, но вы не правы.
        • +37
          Простите, но он прав.
        • +3
          За два года работы с Windows и компьютером вообще (из них с антивирусом — первые полгода) я ухватил вирус только один раз — он был хитрым, дописывал себя в выполняемые файлы. Так что основания говорить так у меня есть.

          Разумеется, я время от времени пользовался cureit и virustotal. Под антивирусом я имел в виду файловый и сетевой мониторы и прочие утилиты такого типа. Но определить вирус я мог бы и без них вообще — sandboxie, виртуалки и прочие. Кстати, надо бы пост написать о том, как создать песочницу из подручных средств.

          Правила безопасности:
          1. Держать под контролем все способы автозапуска программ: автозапуск при загрузке, флэшки. При работе с флэшками вручную смотреть, есть ли там autorun.inf и подозрительные экзешники. Включить показ расширений файлов (чёрт побери, почему он по умолчанию выключен!).
          2. Никогда не запускать всякой гадости. Качать программы только с официальных сайтов.
          3. Думать головой.

          Вот и всё.
          • +9
            И да, после тех двух лет я поставил Ubuntu и просто выбросил из головы эти заботы.
          • +7
            Дыры этого года в джавава-апплетах и эдоби ридере наглядно показали, что этих правил уже не хватает.
            • +1
              Недавно еще через джепеги зараза приходила.
              • –2
                Чтобы не иметь со всем этим проблем, нужно просто читать хабр.
                • 0
                  И ничего, кроме хабра.
            • –1
              Только антивирусы от этих дыр не защищают никак.
          • +3
            напишите статью про песочницу:) очень интересно было бы почитать
            • +1
              Как только, так сразу :)
          • 0
            Попробуйте программулинку Dropmyrights. Если браузер запустить через нее, то у вирусов с Сети нет шансов выйти за пределы кэша браузера. Делается это редактированием командной строки ярлыка браузера, что совершенно прозрачно для юзера.

            Похожее действие имеет запуск через контекстное меню «Запуск от имени...\Текущего пользователя» с установленной галочкой «Защитить комп от несанкционированных действий этой программы».
            • 0
              Данный подход нынче, имхо, не делает ни холодно, ни жарко. Начиная с висты наконец-то грамотно организована работа под учеткой пользователя, а если зверьком используется сплоит для повышения привилегий — он будет задействован.
              • 0
                Практика таких решений пока дает только положительные результаты, чего не могут дать даже лучшие антивирусы.
                А вот запуск под обычной ограниченной учетной записью пользователя позволяет иметь доступ ко всем папкам пользователя включая различные области автозапуска.
          • 0
            Тогда еще добавим — пользоваться провайдером, у которого есть общий файервол (типа Корбины) или который использует NAT для вывода клиентов в сеть или поставить файервол самому на случай дыры в системных сервисах винды. Или поотключать все потенциально опасные системные сервисы. Правда, это уже небольшой шаг в сторону от элементарных правил.
            • 0
              Тут можно вспомнить, что некоторые небольшие провайдеры используют именно NAT. При этом у них за натом получается натуральная локальная сеть, то есть широковещательный домен. Надо ли говорить, что безопасность в этом случае ниже плинтуса?
              • 0
                Все верно. Хотя, на мой взгляд, безопаснее быть открытым небольшому подмножеству интернета в лице провайдера, чем всему интернету.
        • +1
          Черт же побери как он прав.
      • НЛО прилетело и опубликовало эту надпись здесь
      • –8
        глупости пишите
        • +2
          глупости пишите
          • –8
            глупости пишите
      • –3
        Поддерживаю. Долгое время элементарно влом было ставить антивирус, но потом когда устанавливал его, он не обнаруживал никаких вирусов. В то время как у друзей с хвалёными НОДами, Касперскими и Докторами Вэбами целый зоопарк на компах.

        Серьёзно пострадал от вредоносной программы только однажды, когда случайно запустил СВОЮ собственную разработку с названием pizdec.exe, совсем позабыв, что это такое. Никогда не запускайте файлы с таким названием! :)
        • 0
          Может быть этот комментарий перестанут минусовать, если я уточню, что эта программа писалась исключительно в образовательных целях?
          • 0
            Тот комментарий перестанут минусовать, если вы докажете (чудо-)действенность своей методики. Пока что вы предложили определять опасность файла по его имени, вместо детального анализа его содержимого.
            • 0
              Не ставил перед собой задачу поучать хабражителей. На мой взгляд, здесь не та аудитория, которую нужно учить элементарным мерам безопасности. Я лишь рассказал забавный случай из своей жизни, который тогда кстати не казался забавным.
      • +1
        Ну конечно, ведь знание правил обращения с компьютером сразу закрывает все дыры в ОС и во всем имеющемся софте.
        А мужики то не знают…
      • +2
        Много раз слышу эту фразу. Опишите элементарные правила обращения с компьютеров (под Windows), чтобы вирусов не было никогда?
        • 0
          • +1
            И как эта инструкция спасет вас от троя, который залезет через уязвимость браузера? (да, уязвимости есть не только у ИЕ).
            А от уязвимости в pdf? Flash?
            • 0
              От этого спасут только сниженные права (желательно MAC, но при отсутствии и DAC сойдёт). Ни один антивирус не реализует ничего подобного до конца.
              • 0
                Можно подробнее? Тема очень актуально. Под windows? (использую семерку, хочется быть уверенным в собственной безопасности)
          • 0
            На самом деле, не всё так просто. Более действенные меры описаны тут:
            habrahabr.ru/blogs/sysadm/97594/

            А попытка их реализации на практике тут:
            habrahabr.ru/blogs/sysadm/101971/
            • 0
              Дело в том, что в этих статьях безопасность осуществляется через существенные ограничения. А у меня всегда экзешники были разбросаны по всем дискам, постоянно создавались и модифицировались. Я постоянно скачивал и устанавливал разный софт (из которого проверял сканером только то, что считал подозрительным сам). И как в этой ситуации можно запрещать чуть менее, чем всё?

              Мой метод — вот:
              habreffect.ru/files/5ef/edd54f34b/Common_Sense.jpg
              • 0
                в этих статьях безопасность осуществляется через существенные ограничения

                Это всегда так. Между безопасностью и удобством существует конфликт интересов.

                А у меня всегда экзешники были разбросаны по всем дискам, постоянно создавались и модифицировались. Я постоянно скачивал и устанавливал разный софт… И как в этой ситуации можно запрещать чуть менее, чем всё?

                Работать под учетной записью ограниченного пользователя. Устанавливать программы и производить настройку под учетной записью администратора. Таким образом, запускаемые в процессе обычной работы программы не смогут модифицировать другие программы. В случае Vista/7 всё немного проще, там есть UAC.

                Мой метод — вот

                Защита с помощью «здравого смысла» — это как? Думать каждый раз перед запуском программы, а безопасно ли её запустить?

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

                Кроме того, здравый смысл у каждого свой. Вот скажите, вы по интернетам со включенным JavaScript бродите? А мой здравый смысл давно подсказал мне, что JS лучше запретить на всех сайтах, кроме доверенных.
  • +11
    Читается на одном дыхании, спасибо. Какой ав следующий на экзекуцию?
    • 0
      Подозреваю, что это NOD.
    • 0
      Поживем — увидим :)
  • 0
    Опять однобокое… Я не про пост, а про табличку последнюю.
    Антивирусов ведь гораздо больше! Того же мелкософтового, который, не побоюсь, точно себе откусит долю рынка.
    макафе, трендмайкро…
    • 0
      Табличка в посте урезанная, смотрите отчет по ссылке, там есть остальные.
      • +1
        Поставился MS essentials пока читал статью.
        Когда дочитал, решил удалить аваст.
        После этого ответа, удалил MS и оставил аваст, который собирался удалить
        • 0
          Тестировался первый MS, а сейчас уже второй вышел — возможно, в нём получше с самозащитой.
  • +3
    Если уж говорить о защите, то отсутствие HIPS — это прошлый век. И да, за 14 (вроде бы) лет на windows'е у меня не было ни одного вируса и антивируса тоже.
    • +1
      это вы так думаете))
      • +1
        Это они ВСЕ так думают. :)
      • +1
        За последние 10 лет единственные вирусы которые были это те которые я сознательно скачивал или копировал с инфицированых флэшек для препарирования, антивирус естественно стоял для страховки.
      • +3
        Какие поводы мне так не думать? Иногда, по дороге к друзьям (лечить их компьютер) запускал у себя разные бесплатные антивирусы, результат — 0. Я и так это знаю, так как пара простых правил лучше любого антивируса.
        • 0
          Важно не то, что вы их запускали, важно как вы их запускали.
          Если не с лайв-сиди, то грош цена таким проверкам.
          • 0
            Не спорьте с ними :) У них «пара простых правил». Эти дятлы даже и не подозревают о нулевом кольце и резидентных троянах в оперативной памяти.
            • 0
              Троллим-с? :)
    • 0
      … ни одного вируса и антивируса тоже

      возможно, вирусы были, но Вы о них не узнали :)
    • 0
      Вы можете всю жизнь жить с гельминтами (в простонародии глистами) и даже умереть и не знать о них. Можно даже наобум закидываться таблетками, химиотерапией и прочим, но нельзя быть уверенным, что еще не открытый наукой паразит не живет в вашем организме. Так же и вирусы. Вирусы это не только убийцы exe, винлоки и прочие вымогатели, это еще и бэкдоры, ботнеты, воровалки паролей и прочее, прочее, прочее.
      • 0
        Я ещё wincih застал, так что в курсе. Гельминтами из воздуха тоже не заразиться, простейшая гигиена убирает 99% таких возможностей.
        • 0
          я бы сказал, что гигиена убирает 50%:) остальное убирает правильная еда
    • 0
      Господа, ну пошутили и ладно. Ну откуда они могут взяться? Пираток нет и не было. Авторан отключен с тех пор, как появились первые вирусы его использующие. На флешках знакомых находил вирусы иногда (по autorun.ini) и всё. Система всегда up-to-date (год назад вообще только IE8 для интернета использовался). Это же позор если у разработчика заведётся вирус. Сетевая активность под контролем, процессы тоже. Последние пару лет стоит Comodo firewall и по совместительству hips ибо у меня директ коннект к интернету.
      • +1
        Откуда откуда. Вот открыли вы например полгода назад pdf файл. Обычный нормальный pdf файл с нужной вам информации. И троян уже у вас на компе, и вы об этом не знаете.
        Или зашли вы на любимый хабр, а допустим так получилось, что его взломали недавно. И добавили (пока еще не замечено для админов) вредоносный код использующий уязвимости браузера (дада! они есть не только у ИЕ). Все, троян у вас.
        Если троян заливал не сильно жадный человек, то он не будет тиражировать его миллиоными копиями, и с вероятностью 90% сигнатура этого трояна никогда не будет внесена в антивирусы. А значит вы никогда не узнаете, что живите с троем.
        • 0
          И даже линукс от вирусов не спасет. Пока домашние системы на линуксе просто не интересны. Но вот буквально месяц или 2 назад, появилась уязвимость в фтп под unix. Деталей не знаю, обновлял не я, но факт в том, что если не обновиться, то оказывается были открыты двери на вход. И это серверное решение, с параноидальной безопасностью!
          • 0
            >> деталей не знаю
            >> двери открыты
            • 0
              Я не админю сервер и не занимаюсь взломом. Поэтому мне не интересна последовательность действий для взлома. Мне достаточно знать, что уязвимость была.
          • +1
            серверное решение, с параноидальной безопасностью!

            В смысле с SELinux или хотя бы настроенным RBAC в grsec? Уязвимость в ftp открывает двери на вход? Отдел фантастики на другом этаже.
            • 0
              Спорить не собираюсь. Админил не я.
              • 0
                Тогда не надо говорить о параноидальной безопасности. Она и на windows, и на GNU/Linux требует настройки и прямых рук.
                • 0
                  Насколько я понимаю, проблема была в уязвимости фтп сервера. Даже при прямых руках, никто не застрахован от такого. Вы ведь не пользуетесь только самописным софтом, который идеально вылизан от любой возможности проникновения?
                  И да, эта уязвимость давала возможность заливать\скачивать файлы, что для меня равно «открыло двери на вход». Что там с фантастикой?
                  • 0
                    >И да, эта уязвимость давала возможность заливать\скачивать файлы, что для меня равно «открыло двери на вход»
                    Это делает эксплуатацию уязвимости (в данном случае моего браузера) фантастикой. Всего лишь правила для легковесного MAC, половина из которых написана им самим (режим обучения). Всё, что не входит в разрешения, является запрещённым. Независимо от прав пользователя (даже root не выберется без посторонней помощи) и прочего. Даже выполнение произвольного кода (а не только возможность заливать файлы) становится не такой серьёзной проблемой.
                    В grsec, популярный на серверах, входит нечто подобное (вместе с тонной прочих security-related патчей). И это даже не для параноиков, а больше как стандартная фича. Про SELinux я уже и не говорю.
          • 0
            Не пытайтесь рассуждать о тех вещах, в которых не разбираетесь.

            FTP сервер в unix-like системах выполняется под отдельным пользователем. Даже несмотря на эту меру предосторожности, возможность читать / писать (в обход запрета на запись, например) — это самое невинное, что вы могли себе представить.

            Есть такой класс уязвимостей — ошибки переполнения буфера. Теоретически можно сделать всё, что дозволено этому самому пользователю, под которым запущен FTP сервер. При условии, если в ПО есть такая ошибка. И это в одинаковой степени относится и к Linux, и к Windows.
            • 0
              Есть такой класс уязвимостей — ошибки переполнения буфера.
              И есть такая вещь как PaX (входит в grsec). Теоретически после неё переполнений буфера не остаётся. Насчёт того, как работает DEP в windows, которое вроде бы занимается тем же, не в курсе.
  • 0
    Надеюсь в тему. Расскажу как мы с сотрудником методом такой-то матери чистили флэшку от вирусни (насколько я помню autorun).
    Мы собственно видели какие 2 файла на флэшке лишние… Прикинув и поразмыслив сделали им shift+del. Но секунды через 2 зловредности опять появились там же.
    Призвав в помощь потусторонние силы и студенческий по**изм мы на раз, два, три делаем shif+del и выдергиваем флэшку сразу же после удаления.
    Всё… триумф, лишние файлы не вернулись. Флэшка рабочая.
    Действенность данного метода проверена на Win XP, Win2k, с флэш накопителями transcend и kingston.
    • 0
      cool story, bro
      Если появляются снова, значит есть еще где-то помимо флешки (system32 например). Еще есть возможность так флешку спалить, хотя в этом могу ошибаться.
      • 0
        Просто убьется файловая система. Учитывая, что люди в здравом уме делают резервные копии, то ничего страшного.
    • +2
      вирус утомился и решил выключить отображение скрытых файлов настырным пацанам )
    • 0
      F:>del autorun.inf && mkdir autorun.inf

      Правда, это было актуально два года назад. Сегодня, возможно, вирусы знают это прикол. И даже умеют закрывать открытые файловые дескрипторы.

      Но если вы в свойствах папки установите для неё кастомный значок, вы с большой (но, опять же, не абсолютной) вероятностью сможете определить, заражена ли флешка.
    • 0
      Всё… триумф… Действенность данного метода проверена на Win XP, Win2k...

      То есть мысль, что вирус уже поселился на вашей Win XP вам с сотрудником в голову не пришла?
  • +2
    Вообще-то интересно, какие из продуктов выдержат самозащиту при загрузке в безопасном режиме. То, что Каспер не загружает ни службу, ни дрова — это факт. Особенно забавит то, что утилита удаления вирусов — для Каспера это Kaspersky Virus Removal Tool — тоже не подгружает ряд драйверов в безопасном режиме, чем проигрывает CureIt. Хотя казалось бы, что инструмент для удаления активного заражения должен был бы предусмотреть загрузку в безопасном режиме — иногда, это единственный способ получить управление над поражённой системой — ан нет!

    Здорово удивила дырявость самозащиты ДрВеба… Хотя раньше уже многое о том писалось, взять ту же историю со SpiDiE…
  • –2
    Как страшно жить!
    Ваши изыскания, как я вижу, проводились на операционной системе девятилетней давности.
    В семёрке, наверно, не получится так просто ковыряться в памяти и менять дату без разрешения по UAC.
    А грохнуть DrWeb приложением запущенного с полными правами можно и другими средствами.
    • +3
      Если сидеть «на операционной системе девятилетней давности» без прав администратора, то дату тоже не получиться так просто поменять. И вообще причём тут версия ОС?
  • +7
    Akr0n, спасибо вам за то, что провели исследование, за то, что сообщили об ошибке нам и за то, что дали нам время на исправление, и конечно спасибо за интересную статью!
  • 0
    Такой подход сокращает количество возможных вариантов почти на 3 порядка!

    10*9*8*7*6*5=151200 — в 6 раз, но никак на не 3 порядка.
    • 0
      Число размещений без повторов:
      (n/k)*k!
      n=10
      k=6
      (10/6)*6!=1200 вариантов
      • 0
        У вас очень хорошая статья… Но в комбинаторике вы не разбираетесь. Правильная формула будет n!/(n-k)!
        • 0
          Эмм… очевидно Вы правы…
          При расчетах я брал формулу из Вики, что-то не пойму к чему там последняя выкладка…

          Или там не деление...?
          • 0
            • 0
              Тупанул :)
              Спасибо, поправлю.
  • 0
    АМ в будущем расширит набор тестов самозащиты. Обязательно будет включен метод выноса из Safe Mode.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.