2009-01-20
Что-то заголовок больно претенциозным получился... Во избежание недоразумений уточняем: речь пойдёт об использовании LiveCD на основе Linux в рамках борьбы с "вредоносным" программным обеспечением для ms windows. Или, ещё точнее: о создании на основе RIP собственного livecd для антивирусной профилактики машин, работающих под windows. Под "вредоносным" программным обеспечением понимается в данном случае не сама ОС и написанные для неё приложения (хотя иногда это совсем не далеко от истины), а вирусы, шпионы, трояны и т.п. — то, что обычно интегрально обозначается как malware.
Почему на основе Linux? Потому что это просто, компактно и эффективно. Почему для win-машин? Потому что под Linux вышеозначенной проблемы нет. И отнюдь не из-за меньшего распространения Linux. Впрочем, об этом — в другой раз.
За последние полгода приблизительно каждая десятая инфицированная машина "ловила" вирусы, удаление которых непосредственно под "родной" ОС было сопряжено с существенными трудностями или вовсе невозможно (всего "подшефных" под четыре сотни на почти трёх десятках площадок). Начиная от вирусов, успешно использующих stelth-технологию, и заканчивая полным отказом ОС читать собственную файловую систему (NTFS). Это, конечно, — "несчастный случай", когда "лечение" невозможно посредством удалённого доступа. Но — бывает.
Так вот, при непосредственном доступе к машине, часто имеет смысл исследовать её, загрузившись с Linux-livecd. Разумеется, загруженная ОС должна обеспечивать монтирование (желательно: с возможностью записи) NTFS/FAT разделов и корректно отображать кириллицу в именах каталогов и файлов. Достигнуть этого нынче не так и трудно, даже если выбранный вами livecd не обеспечивает требуемого "из коробки". Вооружившись любимым файл-менеджером, просматриваем критичные каталоги на предмет самых новых каталогов/файлов. Обращаем внимание на "подозрительные" имена (hGu8YnFX.dll, winOSXAWCt59Cu.exe, wpv491228427471.cpx и т.п.) и атрибуты файлов. Трудно рассчитывать, что при беглом просмотре вы сразу определите "чужие" файлы в каталогах /Windows или /Windows/system32, но знать, где обычно расположены облюбованные троянописателями services.exe и svchost.exe рекомендуется весьма. Не помешает также знание назначения и структуры файлов autorun.inf.
Одним словом, даже без специального антивирусного ПО, анализ содержимого win-разделов может дать результат. К сожалению, под Linux нет (я, во всяком случае, их не знаю) средств редактирования пресловутого registry. Так что на следующем этапе придётся поработать и под windows. Ну, хоть так...
Описанный подход подразумевает некоторые знания, опыт и... интуицию, если угодно. Во всяком случае, ответить на вопрос "а как вы нашли этот файл?" бывает трудно. Существенно труднее, чем посоветовать "запускаешь антивирус ХХХ и..." Не существует и никогда не будет существовать антивирусное ПО, обеспечивающее 100%-ную защиту. По определению. Что, однако, не означает, что существующим ПО не следует пользоваться. Во-первых, это — просто (хотя и не всегда быстро), а, во-вторых, грех не пользоваться опытом людей, отдавших этому так много сил.
Лет семь назад я включал в свой собственный livecd сканер от Dr.Web, но сейчас, если не ошибаюсь, бесплатная Linux-версия уважаемой компанией не распространяется. Предлагаемый же LiveCD откровенно разочаровал: сканер хорош, но система... Поддержка оборудования вообще оставляет желать лучшего, но когда на одном ноутбуке загруженное ядро умудрилось выключить все вентиляторы и разогреть CPU до 70-ти градусов, решение было однозначным: "отказать".
В то же время, список rescue-cd с регулярно обновляемыми и рационально собранными ядрами (благодаря чему они успешно работают на абсолютном большинстве компьютеров) достаточно обширен. Не проще ли дополнить свой предпочитаемый livecd антивирусным ПО? Как сделали, например, авторы PLoP. Они предлагают дополнить свой диск двумя антивирусами: F-PROT и Avast. Оба бесплатны для некоммерческого использования. В рамках PLoP всё предельно просто: скачиваем архивы первого и второго антивирусов, помещаем их в каталог /pluspacks редактируемого образа livecd. Для Avast, кроме этого, регистрируемся на сайте и получаем индивидуальную лицензию. Записываем образ на CD или флэшку — готово. Подробнее — на сайте авторов
После загрузки livecd вышеупомянутые архивы разворачиваются в каталоге /temp командами usefprot и useavast. Базы обновляются командами fpupdate и avast-update, соответственно. Консольные версии сканеров называются fpscan и avast.
Результат вас, вероятнее всего, разочарует: наткнувшись на первое же имя, набранное в кириллице, сканер порекомендует вам использовать ключ монтирования nls=utf8, но, даже воспользовавшись его советом, вы не сможете правильно прочитать "русские" имена каталогов и файлов. Ничего удивительного: нет ни консольных фонтов, содержащих символы кириллицы, ни соответствующей локали, ни X window, которая избавила бы вас от этих проблем.
Самое время вернуться к предложению использовать предпочитаемый или свой собственный livecd. Для меня сейчас это RIP с локалью ru_RU.koi8r (см. соответствующую статью). Поскольку RIP, в отличие от PLoP, всю свою файловую систему размещает в памяти, то смысла внедрять архивы антивирусников в его initrd я не вижу. Разумнее разместить их в каком-нибудь отдельном каталоге на CD или флэшке. Туда же имеет смысл поместить упомянутые выше скрипты usefprot и useavast (в PLoP их можно найти в каталоге /ploplinux/myscripts). После редактирования у меня они выглядят так:
#!/bin/shи так:# usefprot
d=`ls -1|grep fp-Linux|grep .gz|tail -n 1`
if [ "$d" == "" ] then echo ERROR: f-prot tar gz file not found in $dir/ echo exit fi
if [ -f $d ] then cp ./f-prot.conf /etc echo extracting f-prot files to /tmp tar xfz $d -C /tmp if [ -f antivir.def ] then echo copy antivir.def to /tmp/f-prot cp antivir.def /tmp/f-prot fi fi
#!/bin/sh# useavast
file=400.vps
d=`ls -1|grep avast4workstation|grep .gz|tail -n 1` if [ "$d" == "" ] then echo ERROR: avast tar gz file not found in $dir/ echo exit fi
if [ -f $file ] then echo copy avast 400.vps file mkdir /root/.avast cp $file /root/.avast cp ./avastrc /root/.avast fi
if [ -f $d ] then echo extracting avast files to /tmp tar xfz $d -C /tmp cd /tmp e=`echo $d|sed 's/.tar.gz//g'` ln -s $e /tmp/avast4workstation ldconfig fi
Некоторые комментарии к скриптам:
При дефиците памяти имеет смысл использовать антивирусы по одному.
Загружаемые новые БД обнаруживаются в каталогах /tmp/f-prot и /root/.avast. Не забудьте сохранить их, если уж выполняли update: загрузить эти файлы с сайтов проектов без запуска программ — нельзя.
Небольшой бонус от Кента Роботти: при наличии X Window (которая отсутствует во PLoP, но имеется в RIP), вы можете воспользоваться gui-утилитой avastgui. В общем: сплошной windows.
Описывать монтирование win-разделов, также, как и опции запуска обеих антивирусных программ, смысла не вижу: если вы используете Linux и взялись за создание собственного livecd, то подобного рода описания для вас уже излишни. С чем и поздравляю.
А стоила ли "овчинка выделки"? Попробуем оценить. За последние два месяца в моём "зоопарке" сохранилось 43 вирусных файла. Прошу отметить: это файлы, как правило, прошедшие резидентную защиту NOD/KIS/DrWeb. "Детских" вирусов здесь нет. При отправке на VirusTotal многие их них определяются лишь 3-мя — 5-тью антивирусами из без малого сорока, участвующих в проверке. И слишком часто вышеупомянутые NOD/KIS/DrWeb не оказываются в числе "угадавших". Чем не тест для новоявленных "экспертов"?
Так вот F-PROT определил 37 вредоносных файлов из 43-х, а Avast — 40. Довольно приличный результат. Разумеется, никакая это не статистика. И отношения своего к антивирусному ПО я не поменял. Но... всё относительно. Похоже, free-альтернативы "прославленным бойцам" под Linux таки имеются. И стоит опробовать их "в деле".