Вирус и Пингвин

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  Содержание