|

Вирус и Пингвин
Xakep, номер #043, стр. 043-058-4
вирус себя долго не проявляет, то есть шанс резервного копирования зараженных
программ. Это все можно обойти, только включив в код вируса средства получения
прав рута. А уже с правами root'а выполняется любая программа с установленным
SUID. Проблема лишь в получении прав суперпользователя: использовать уже
известную дыру - не решение, так как почти наверняка в заражаемой системе она
будет уже прикрыта. Но, однажды получив root системы, вирус может все. Первым
делом ему надо непременно установить SUID для зараженной и заражаемой программы,
чтобы потом в дальнейшем не пользоваться exploit'ом. Далее следует стереть
последние 5-6 строчек из /var/*<то, что вирус атаковал>*, здесь все очень сильно
зависит от типа атаки. Обходить rpm проще всего, модифицируя его базу. Но есть
гораздо более интересный вариант: написать модуль ядра, который будет считать
контрольные суммы так, как выгодно вирусу, или вообще подставлять незараженные
копии, куда следует. Это, кстати, позволит махом обойти все мониторы,
проверяющие контрольные суммы, и некоторые антивирусы. Такой ход дает
неограниченные возможности работы с компьютером, так как в этом случае вирус
исполняется в адресном пространстве ядра и, что неприятнее всего, в режиме ядра.
Так можно и BIOS поправить, и жесткий диск сломать. Уже ручки чешутся? :) Но
обломись: абсолютное большинство вирусов с подобных механизмом написано именно
под Windows. В этой ОС драйвер является модулем ядра, а установить новый драйвер
в Windows куда проще. Поэтому Microsoft ввела сертификацию драйверов, и WinXP
предупредит о непрошеном госте. Одно плохо - 30% производителей не слишком
утруждают себя сертификацией, а зря. Возвращаясь же к Линуксу, следует отметить,
что некоторые утилиты тоже грешат проникновением в ядро для сбора системной
информации. С точки зрения админа, загрузку "левых" модулей ядра можно
предотвратить, если при компиляции выключить поддержку модульности и поддержку
/proc. Если не сделать последнего, то есть возможность вкрутить модуль,
используя /proc/kcore и /porc/ksyms.
Подведем итоги
Что же мы имеем в итоге? Хороший вирус должен содержать дешифратор, механизм
заражения, механизм взлома и подчистки логов, механизм обмана сторожей,
деструктивные элементы, пермутатор дешифратора и шифратор. Даже этот довольно
длинный перечень обходит, к счастью (или сожалению?), только самых
распространенных и простых сторожей, которые все продвинутые челы, скорее всего,
обновили более свежими собратьями. Если и писать вирус, то писать желательно
только на ассемблере, оптимизируя все необходимое по размеру. Сложновато, да?
Вот именно по этой причине вирусмейкеры если и пишут что под Unix, то только
примитивных сетевых червей и троянов. Действительно опасных, классических
вирусов нет, ибо Пингвин Тукс - крепкий орешек, что и требовалось доказать.
Назад на стр. 043-058-3 Содержание
|