Читаем Спецвыпуск журнала «Хакер» 47, октябрь 2004 г. полностью

Простейший и наиболее универсальный метод заражения сводится к поглощению оригинального файла вирусом. Вирус просто дописывает оригинальный файл к своему телу как оверлей, а для передачи управления жертве проделывает обратный процесс: пропускает первые virus_size байт своего тела (что обычно осуществляется функцией seek), считывает оставшийся «хвост» и записывает его во временный файл. Присваивает атрибут исполняемого и делает ему exec, предварительно расщепив материнский процесс функцией fork. После завершения работы файла-жертвы вирус удаляет временный файл с диска.

Описанный алгоритм элементарно реализуется на любом языке программирования вплоть до Бейсика и пригоден как для исполняемых файлов, так и для скриптов. Однако ему присущи и недостатки. Он медлителен и неэлегантен, требует возможности записи на диск и прав установки атрибута «исполняемый». Кроме того, появление посторонних файлов на диске не может долго оставаться незамеченным, и участь вируса заранее предрешена. Поэтому большинство вирусов не используют такую методику, а предпочитают внедряться в конец последнего сегмента файла, расширяя его на необходимую величину.

Под последним здесь подразумевается последний подходящий сегмент файла, чем, как правило, является сегмент инициализированных данных, за которым следует сегмент неинициализированных данных, занимающий ноль байт дисковой памяти. Конечно, можно внедриться и в него, но это будет выглядеть как-то странно.

Приблизительный алгоритм внедрения в конец ELF-файла выглядит следующим образом:

1) вирус открывает файл и, считывая его заголовок, убеждается, что это действительно ELF;

2) просматривая Program Header Table, вирус отыскивает последний сегмент с атрибутом PL_LOAD;

3) найденный сегмент «распахивается» до конца файла и увеличивается на величину, равную размеру тела вируса, что осуществляется путем синхронной коррекции полей p_filez и p_memz;

4) вирус дописывает себя в конец заражаемого файла;

5) для перехвата управления вирус корректирует точку входа в файл (e_entry) либо же внедряет в истинную точку входа jmp на свое тело (впрочем, методика перехвата управления – тема отдельного долгого разговора).

Теоретически вирус может внедриться в середину файла, дописав свое тело в конец кодового сегмента и сдвинув все последующие сегменты вниз, однако при этом ему потребуется скорректировать все указатели на ячейки сегмента данных, поскольку после заражения они будут располагаться по совершенно другим адресам. Как вариант, перед передачей управления программе-носителю вирус может «подтянуть» опущенные сегменты вверх, вернув их на свое законное место, но, если файл содержит перемещаемые элементы или прочие служебные структуры данных, вирусу их придется скорректировать тоже, в противном случае системный загрузчик необратимо исказит зараженный файл и тот откажет в работе. Все это слишком сложно для начинающих, а потому вирусы подобного типа не получили большого распространения.

Возможно внедриться в область, образованную выравниванием сегментов в памяти. Поскольку границы сегментов всегда выравниваются на величину 4 Кб, между концом кодового сегмента и началом сегмента данных обычно можно наскрести некоторое количество незанятого пространства. Впрочем, никаких гарантий на этот счет у нас нет, а потому для заражения подходят далеко не все файлы.

1) вирус открывает файл и, считывая его заголовок, убеждается, что это действительно ELF;

2) просматривая program header table, вирус находит сегмент с атрибутом PL_LOAD и (PAGE_SIZE % p_filesz) > = virus_size; если же такого сегмента нет, вирус отказывается от заражения;

3) поля p_filez (размер на диске) и p_memsz (размер в памяти) соответствующего сегмента увеличиваются на длину тела вируса;

4) поле p_offset и факультативно sh_offset всех последующих сегментов/секций увеличивается на длину тела вируса;

5) поля e_phoff и факультативно e_shoff ELF-заголовка увеличивается на величину тела вируса;

2) вирус внедряем себя в конец выбранного сегмента;

6) для перехвата управления вирус корректирует точку входа в файл (e_entry), либо же внедряет в истинную точку входа jmp на свое тело.

Некоторые вирусы внедряются в область памяти между заголовком и началом первого сегмента (во всяком случае, пытаются это сделать). Однако большинство файлов «приклеивают» свой первый сегмент к заголовку, из-за чего для внедрения просто не остается свободного места.


Общая структура и стратегия вируса

Конкретная структура вирусного кода зависит от фантазии его разработчика и выглядит приблизительно так же, как и в Windows-вирусах. Обычно вначале находится расшифровщик, за ним расположены модуль поиска подходящих жертв, инжектор вирусного кода и процедура передачи управления файлу-носителю.

Перейти на страницу:

Похожие книги

Стив Джобс. Уроки лидерства
Стив Джобс. Уроки лидерства

Эта книга – редкая возможность увидеть Стива Джобса таким, каким его видели лишь его самые близкие сотрудники, и разгадать загадку этого легендарного человека. Это возможность понять и освоить оригинальный стиль лидерства Джобса, благодаря которому Apple стала одной из величайших компаний и смогла выпускать продукты, изменившие нашу жизнь. Автор книги, Джей Эллиот, бывший старший вице-президент компании Apple, долгое время работал бок о бок со Стивом Джобсом и сформулировал главные уроки «iЛидерства», которые помогут совершить прорыв компании любого размера и из любой отрасли. Интуитивный и творческий подход Джобса, о котором рассказывается в этой книге, позволит вам преобразить свой бизнес и свою жизнь.Для широкого круга читателей – для всех, кто хочет воспользоваться уроками выдающегося бизнес-лидера.

Виктория Шилкина , Вильям Л Саймон , Вильям Л. Саймон , Джей Эллиот

Деловая литература / Биографии и Мемуары / Публицистика / Прочая компьютерная литература / Управление, подбор персонала / Документальное / Финансы и бизнес / Книги по IT
Тайны и секреты компьютера
Тайны и секреты компьютера

Эта книга предназначена для тех, кто самостоятельно осваивает мир информационных технологий. Программирование в среде Microsoft Office, устройство сетей Internet и Fidonet, работа системы электронной почты, структура системного реестра Windows и файловой системы, строение жидкокристаллических дисплеев и проблема наличия различных кодировок русского языка, — про все это рассказывается в ней. Многообразие тем и легкий стиль изложения сделают ее вашим спутником на долгое время, и вы всегда сможете найти в ней нужную именно в данный момент информацию.Если Вы интересуетесь компьютерными технологиями, желали бы расширить свои знания и умения в этой области, то она Вам наверняка понравится.http://comptain.nm.ru

Антон Александрович Орлов , Антон Орлов

Фантастика / Зарубежная компьютерная, околокомпьютерная литература / Фэнтези / Прочая компьютерная литература / Книги по IT