Вирусы в UNIX, или Гибель Титаника II


Сжатие части оригинального файла - часть 6


Наиболее настырные вирусы могут поражать и секции неинициализированных данных. Нет, это не ошибка, такие вирусы действительно есть. Их появление объясняется тем обстоятельством, что полноценный вирус в "дырах", оставшихся от выравнивания, разместить все-таки трудно, но вот вирусный загрузчик туда влезает вполне. Секции неинициализированных данных, строго говоря, не только не обязаны загружаться с диска в память (хотя некоторые UNIX'ы их все-таки загружают), но могут вообще отсутствовать в файле, динамически создаваясь системным загрузчиком на лету. Однако вирус и не собирается искать их в памяти! Вместо этого он вручную считывает их непосредственно с самого зараженного файла (правда в некоторых случаях доступ к текущему выполняемому файлу предусмотрительно блокируется операционной системой).

На первый взгляд, помещение вирусом своего тела в секции неинициализированных данных ничего не меняет (если даже не демаскирует вирус), но при попытке поимки такого вируса за хвост он выскользнет из рук. Секция неинициализированных данных визуально ничем не отличается от всех остальных секций файла, и содержать она может все, что угодно: от длинной серии нулей, до копирайтов разработчика. В частности, создатели дистрибьютива FreeBSD 4.5 именно так и поступают (см. листинг 8).

 

0000E530:  00 00 00 00 FF FF FF FF ¦ 00 00 00 00 FF FF FF FF                   

0000E540:  00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00

0000E550:  00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00

0000E560:  00 47 43 43 3A 20 28 47 ¦ 4E 55 29 20 63 20 32 2E    GCC: (GNU) c 2.

0000E570:  39 35 2E 33 20 32 30 30 ¦ 31 30 33 31 35 20 28 72   95.3 20010315 (r

0000E580:  65 6C 65 61 73 65 29 20 ¦ 5B 46 72 65 65 42 53 44   elease) [FreeBSD

0000F2B0:  4E 55 29 20 63 20 32 2E ¦ 39 35 2E 33 20 32 30 30   NU) c 2.95.3 200

0000F2C0:  31 30 33 31 35 20 28 72 ¦ 65 6C 65 61 73 65 29 20   10315 (release)

0000F2D0:  5B 46 72 65 65 42 53 44 ¦ 5D 00 08 00 00 00 00 00   [FreeBSD] •




- Начало -  - Назад -  - Вперед -