Как работает вирус?
Была рассмотрена схема функционирования простого бутового вируса, живущего в загрузочных секторах дискет. Как правило, вирусы способны заражать не только загрузочные секторы дискет, но и загрузочные секторы жестких дисков — винчестеров. При этом в отличие от дискет на винчестере имеются два типа загрузочных секторов, содержащих программы начальной загрузки, которые получают управление. При… Читать ещё >
Как работает вирус? (реферат, курсовая, диплом, контрольная)
Рассмотрим схему функционирования простейшего загрузочного вируса, заражающего дискеты. При включении компьютера управление передается программе начальной загрузки, которая хранится в постоянно запоминающем устройстве (ПЗУ).
Эта программа тестирует оборудование и при успешном завершении проверок пытается найти дискету в дисководе А:
Всякая дискета размечена на секторы и дорожки, секторы объединяются в кластеры.
Среди секторов есть несколько служебных, используемых операционной системой для собственных нужд (в этих секторах не могут размещаться данные пользователя). Среди служебных секторов представляет интерес один — т. н. сектор начальной загрузки (boot-sector).
В секторе начальной загрузки хранится информация о дискете — количество поверхностей, количество дорожек, количество секторов и пр. Но интересна не эта информация, а небольшая программа начальной загрузки (ПНЗ), которая должна загрузить саму операционную систему и передать ей управление. Таким образом, нормальная схема начальной загрузки следующая: ПНЗ (ПЗУ) — ПНЗ (диск) — СИСТЕМА.
Теперь рассмотрим вирус. В загрузочных вирусах выделяют две части — т. н. голову и т. н. хвост. Хвост, вообще говоря, может быть пустым.
Пусть имеются чистая дискета и зараженный компьютер, под которым понимается компьютер с активным резидентным вирусом. Как только этот вирус обнаружит, что в дисководе появилась подходящая среда — в рассматриваемом случае не защищенная от записи и еще не зараженная дискета, он приступает к заражению. Заражая дискету, вирус производит следующие действия:
- * выделяет некоторую область диска и помечает ее как недоступную операционной системе, это можно сделать по-разному, в простейшем и традиционном случае занятые вирусом секторы помечаются как сбойные (bad);
- * копирует в выделенную область диска свой хвост и оригинальный (здоровый) загрузочный сектор;
- * замещает программу начальной загрузки в загрузочном секторе (настоящем) своей головой;
- * организует цепочку передачи управления согласно схеме. Таким образом, голова вируса теперь первой получает управление, вирус устанавливается в память и передает управление оригинальному загрузочному сектору. В цепочке:
ПНЗ (ПЗУ) — ПНЗ (диск) — СИСТЕМА.
появляется новое звено:
ПНЗ (ПЗУ) — ВИРУС — ПНЗ (диск) — СИСТЕМА.
Была рассмотрена схема функционирования простого бутового вируса, живущего в загрузочных секторах дискет. Как правило, вирусы способны заражать не только загрузочные секторы дискет, но и загрузочные секторы жестких дисков — винчестеров. При этом в отличие от дискет на винчестере имеются два типа загрузочных секторов, содержащих программы начальной загрузки, которые получают управление. При загрузке компьютера с винчестера первой берет на себя управление программа начальной загрузки в MBR (Master Boot Record — главная загрузочная запись). Если жесткий диск разбит на несколько разделов, то лишь один из них помечен как загрузочный (boot). Программа начальной загрузки в MBR находит загрузочный раздел винчестера и передает управление на программу начальной загрузки этого раздела. Код последней совпадает с кодом программы начальной загрузки, содержащейся на обычных дискетах, а соответствующие загрузочные секторы отличаются только таблицами параметров.
Таким образом, на винчестере имеются два объекта атаки загрузочных вирусов — программа начальной загрузки в MBR и программа начальной загрузки в boot-секторе загрузочного диска.
Приведем обобщенный пример структуры программы-вируса. Она состоит из псевдокоманд DOS и подпрограмм — маленьких внутренних программ (составляющие их инструкции хранятся отдельно от главной программы), выполняющих некоторые специальные функции всякий раз, когда к ним обращаются.
this:= findfile.
LOAD (this).
loc:= search (this).
insert (loc).
STORE (this).
Подпрограмма под названием findfile обращается к каталогу выполняемых файлов или программ на диске, берет произвольное имя файла и присваивает имя этого файла переменной this (этот). В следующей строке программы используется псевдокоманда DOS LOAD (загрузить), с помощью которой файл помещается в оперативную память компьютера.
Другая подпрограмма под названием search (поиск) просматривает только что загруженную программу в поисках инструкции, которая могла бы послужить подходящим местом, куда можно занести вирус. Когда процедура search находит такую инструкцию, она определяет соответствующий номер строки и присваивает его в качестве значения переменной loc. Теперь все готово для того, чтобы подпрограмма-вирус могла проникнуть в произвольно выбранную из каталога программу.
Подпрограмма insert (вставить) заменяет выбранную инструкцию другой (например, такой, как вызов подпрограммы). Замененная инструкция передает управление блоку команд, составляющих главное тело подпрограммы-вируса, которая присоединяется к концу программы.
Затем к концу добавленной подпрограммы присоединяется инструкция, возвращающая управление «зараженной» программе на инструкцию, следующую за вставленной. Таким образом, когда выполняется подпрограмма-вирус, выполняется также и подмененная инструкция зараженной программы. Исходная программа работает так, будто ничего особенного не произошло. Однако на самом деле подпрограмма-вирус воспользовалась каким-то мгновением, чтобы захватить власть над средствами операционной системы и прицепить свою копию к еще одной программе, хранящейся на диске. Приведенный пример демонстрирует лишь один из приемов, используемых авторами вирусов. В настоящее время специалисты выделили и другие приемы, отличающиеся друг от друга идеями и изощренностью выполнения.