Алгоритм работы вируса
Закройте руководство по PE-формату. Оно нам не понадобится. Мы ведь хакеры, а не штангисты какие-нибудь и действовать мы будет так: создаем внутри жертвы дополнительный поток, копируем туда основное тело файла, а на его место записываем свой код, делающий что-то "полезное" и передающий управление на основное тело. Работать это будет только на WindowsNT/2000/XP и только под NTFS. FAT отдыхает. Оригинальное содержимое заражаемого файла на FAT-разделах будет утеряно, а это писец. То же самое произойдет, если упаковать файл ZIP'ом или любым другим архиватором, не поддерживающим потоков (а вот RAR их поддерживает. В диалоговом окне "имя и параметры архива" есть вкладка "дополнительно", а в ней галочка "сохранять файловые потоки". Вот это она и есть.)
Рисунок 4 заставляем RAR упаковывать потоки
Есть и другая проблема. Windows блокирует доступ ко всем открытым файлам и при попытке внедрения в explorer.exe или firefox.exe обламывает нас по полной программе. Печально. Но выход есть. Заблокированный файл нельзя открыть, но можно переименовать. Берем explorer.exe, переименовываем его… ну, например, в godown (в смысле: отсоси у меня детка), создаем новый файл с точно таким же именем, в основном потоке которого размещаем свое вирусное тело, а прежний explorer.exe копируем в дополнительный поток. При последующих запусках системы управление получит наш explorer.exe и godown будет можно удалить. А можно и не удалять. Правда, тогда он может привлечь внимание бдительного юзера или антивирусного ревизора.
Кстати, о ревизорах. Внедрится в файл это только половина дела. Это и орангутанг сможет. Еще необходимо придумать, как обезвредить всевозможные контролирующие органы типа антивирусов и сторожей. Нет ничего проще! Достаточно заблокировать файл сразу же после запуска и удерживать его в этом состоянии на протяжении всего сеанса работы с Windows вплоть до перезагрузки. Антивирусы просто не смогут открыть файл, а, значит, не смогут обнаружить и факт его изменения.
Существует множество путей блокировки — от CreateFile
со сброшенным флагом dwSharedMode до LockFile/LockFileEx. Подробнее об этом можно прочитать в Platform SDK.
Основная ошибка большинства вирусов состоит в том, что однажды внедрившись в файл, они сидят и покорно ждут пока не придет антивирус и не сотрет их на фиг. А ведь сканирование современных винчестеров занимает значительное время, растягивающееся на многие часы… В каждый момент времени антивирус проверяет всего один файл и если вирус ведет кочевую жизнь, мигрируя от одного файла к другому, шансы на его обнаружение стремительно уменьшаются.
Мы будем действовать так: внедряемся в файл, ждем 30 секунд, удаляем свое тело из файла, тут же внедрясь в другой. Чем короче период ожидания — тем выше вероятность пройти мимо антивируса незамеченным, но и выше дисковая активность. А регулярные мигание красной лампочки без видимых причин сразу же насторожит опытных пользователей, поэтому приходится хитрить. Можно, например, вести мониторинг дисковой активности, осуществляя заражение только тогда, когда происходит обращение к какому-нибудь файлу. В этом нам поможет файловый монитор Марка Руссиновича (www.systeminternals.com), который легко доработать под наши нужды.