Как объект защиты информации

Вид материалаДокументы

Содержание


52. Защита программ на жестком диске.
53. Защита программ от трассировки.
54. Классификация вирусов.
Загрузочные вирусы
Файловые вирусы
Загрузочно-файловые вирусы
Полиморфные вирусы
Троянский конь
Программные закладки
Сетевой червь
Подобный материал:
1   2   3   4   5   6   7   8
51. Защита дискет от копирования.

Дискета, предназначенная для установки защищенного от копирования программного обеспечения должна быть сама защищена от копирования.

Копирование дискет можно выполнить как по файлам (с помощью команд операционной системы COPY или XCOPY), так и по секторам (командой DISKCOPY, программами PCTOOLS, PCSHELL и аналогичными).

Кроме того, существуют программы, специально предназначенные для копирования дискет, защищенных от копирования, например COPY2PC, TeleDisk. Специальные программы могут копировать дискеты, содержащие только определенные защищенные программные пакеты, или они могут повторять структуру дорожек диска с точностью до бита.

Наиболее просто обеспечить защиту от программ копирования дискет по секторам. Можно предложить следующие достаточно простые способы, использующие нестандартное форматирование отдельных дорожек дискеты:
  • форматирование отдельных дорожек с размером секторов, отличным от стандартного для MS-DOS, например, 128 или 1024 байт;
  • создание дорожек за пределами рабочей зоны диска, например, создание 41 дорожки для дискеты емкостью 360 Кбайт или 81 дорожки для дискеты емкостью 1,44 Мбайт;
  • создание большего, чем стандартное, количества секторов на дорожке;
  • форматирование отдельных дорожек с использованием фактора чередования секторов с последующим анализом времени доступа к секторам для обычных стандартных дорожек и для нестандартных дорожек;
  • использование нестандартного символа заполнения при форматировании.

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

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

Если скопировать такую дискету на обычной аппаратуре (с использованием обычных НГМД и программ битового копирования) то все дорожки будут читаться стабильно. Если при многократном контрольном чтении указанных секторов или дорожек каждый раз будут получены разные данные - мы имеем дело с оригиналом, в противном случае - с незаконной копией.

Однако дискеты с промежуточным уровнем записи все-таки могут быть скопированы с использованием специальной аппаратуры, копирующей содержимое дорожек "аналоговым" способом (как в бытовом магнитофоне).

Самое простое, что можно сделать для того чтобы защитить установочную дискету от копирования - изменить размер секторов на дорожке.


52. Защита программ на жестком диске.

Обычно процесс установки защищенного от копирования программного продукта выглядит следующим образом:
  • в НГМД вставляется установочная дискета; с нее запускается программа установки;
  • программа установки уменьшает на единицу счетчик выполненных установок (этот счетчик может находиться в нестандартном секторе или в каком-нибудь другом месте на дискете);
  • если количество установок, выполненных с этой дискеты, превысило максимально допустимое, на экран выдается сообщение об этом и работа программы установки завершается;
  • если ресурс количества установок еще не исчерпан, выполняется копирование файлов программного продукта на жесткий диск и другие необходимые действия;
  • выполняется настройка программного продукта на параметры используемого компьютера.

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

Методы настройки программного обеспечения на конкретный компьютер:
  • привязка файлов программного продукта к их физическому расположению на диске (метод основан на том, что при восстановлении файлов на другом компьютере они будут располагаться в других секторах диска);
  • запись в неиспользуемый участок последнего кластера, распределенного файлу, контрольной информации (при выгрузке и восстановлении файлов эти неиспользуемые участки файлов пропадают);
  • привязка программы к конкретной версии BIOS, при этом используется дата трансляции BIOS и метод контрольных сумм;
  • проверка производительности отдельных подсистем компьютера.

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

Программа установки, пользуясь таблицей размещения файлов FAT , определяет список кластеров, распределенных файлу и записывает этот список в конец защищаемого файла или в отдельный файл. Можно использовать, например, файл конфигурации, предназначенный для хранения текущих параметров программного пакета. Список кластеров можно зашифровать, сложив его с каким-либо числом, например, с использованием логической операции "ИСКЛЮЧАЮЩЕЕ ИЛИ".

После запуска программный продукт определяет расположение защищенного файла на диске и сравнивает его с записанным при установке. Если расположение изменилось - запущена незаконная копия.

Какие недостатки у этого способа?

Прежде всего, невозможна оптимизация диска такими программами, которые могут изменить расположение файлов на диске, например, Norton Speed Disk .

Второй недостаток связан с тем, что можно взять второй компьютер с точно таким же типом жесткого диска, и с помощью несложной программы переписать содержимое всех секторов с диска одного компьютера на диск другого.

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

Таким образом, можно переносить программный продукт с одного компьютера на другой, но нельзя его размножить на несколько компьютеров.

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

Запись контрольной информации в неиспользуемый участок файла сделает невозможным копирование программного продуктами средствами разгрузки дисков, но по-прежнему остается возможность использования программ копирования содержимого диска по секторам.

Метод проверки версии или контрольных сумм программы BIOS пригоден для защиты от копирования между компьютерами, содержащими разные версии BIOS. Однако при покупке партии компьютеров все они почти наверняка будут иметь одинаковую систему BIOS, поэтому, хотя этот метод достаточно прост, его эффективность относительно невысока.

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

53. Защита программ от трассировки.

Защищая свои программы от несанкционированного копирования, не следует забывать о таких средствах "взлома", как пошаговые отладчики - Turbo Debugger , CodeView , Advanced Fullscreen Debug , AT86 и т. п.

Используя отладчики, искушенные в своем деле системные программисты рано или поздно смогут обнаружить и отключить (или обмануть) средства защиты от копирования.

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

Соответственно, требуются специальные приемы программирования для борьбы с дизассемблером и защиты от отладчиков.

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

При расшифровывании можно копировать участки программы в другое место оперативной памяти.

Пусть, например, программа состоит из нескольких частей. После ее загрузки в оперативную память управление передается первой части программы. Эта часть предназначена для расшифровки второй части, которая находится в памяти вслед за первой.

Задача второй части - перемещение третьей части программы на место уже использованной первой части и расшифровка ее там.

Третья часть, получив управление, может проверить свое расположение относительно префикса программного сегмента и, в случае правильного расположения (сразу вслед за PSP), начать загрузку сегментных регистров такими значениями, которые необходимы для выполнения четвертой (установочной) части программы.

Если попытаться дизассемблировать программу, составленную подобным образом, то из этого ничего не получится.

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


54. Классификация вирусов.

Одним из ранних примеров подобных программ стала обнаруженная в конце 60-х годов размножающаяся по сети ARPANET программа, известная сегодня как Creeper (Вьюнок). Вьюнок проявлял себя текстовым сообщением: «я вьюнок … поймай меня, если сможешь». Он не причинял вреда ресурсам пораженного компьютера, только лишь беспокоил его владельца. Каким бы безвредным Вьюнок не казался, но он впервые показал, что проникновение на чужой компьютер возможно без ведома и против желания его владельцев.

Термин «компьютерный вирус» был введен сравнительно недавно – в середине 80-х годов. В 1984 г. Ф. Коэном на 7-й конференции по безопасности информации, проходившей в США, был представлен специальный класс само репродуцирующихся программ. На основе необычного сходства некоторых свойств этой программы с биологическим вирусом она и была названа компьютерным вирусом.

Это сходство с биологическим вирусом обнаруживается по:
  • способности к саморазмножению;
  • высокой скорости распространения;
  • избирательности поражаемых систем;
  • способности «заражать» еще незараженные системы;

Из-за сходства компьютерных и биологических вирусов вместе с термином «вирус» используется и другие медицинские термины: «заражение», «профилактика», «лечение», «среда обитания» и др.

Вирусные программы могут существовать в следующих четырех фазах:
  • «спячка»;
  • распространение в КС;
  • запуск;
  • разрушение программ и данных или какие-либо другие негативные эффекты.

Фаза «спячки» может использоваться разработчиком вирусной программы для создания у пользователя уверенности в правильной работе КС.

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

Запуск вируса осуществляется, как правило, после некоторого события, например наступления определенной даты или заданного числа копирований.

В последней фазе происходит разрушение программ и данных или какие-либо другие негативные действия, предусмотренные автором вируса.

В настоящее время в мире зарегистрировано более 40 тыс. компьютерных вирусов. Большинство вирусов, обнаруженных на сегодняшний день у нас в стране и за рубежом, ориентированны на действие в среде определенных операционных систем. Наибольшее распространение они получили в персональных ЭВМ.

Некоторые вирусы не представляют серьезной опасности, являются по существу безвредными и созданы не злонамеренно, а ради шутки или эксперимента с существующей техникой.

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

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

классифицировать по следующим признакам:
  • среде обитания;
  • способу заражения среды обитания;
  • воздействию;
  • особенностям алгоритма.

В зависимости от среды обитания вирусы можно разделить на сетевые, файловые, загрузочные и файлово-загрузочные.

Сетевые вирусы распространяются по различным компьютерным сетям.

Файловые вирусы внедряются главным образом в исполняемые модули, т. е. В файлы, имеющие расширения COM и EXE. Файловые вирусы могут внедряться и в другие типы файлов, но, как правило, записанные в таких файлах, они никогда не получают управление и, следовательно, теряют способность к размножению.

Загрузочные вирусы внедряются в загрузочный сектор диска (Boot-сектор) или в сектор, содержащий программу загрузки системного диска (Master Boot Re-cord).

Файлово-загрузочные вирусы заражают как файлы, так и загрузочные сектора дисков.По способу заражения вирусы делятся на резидентные и нерезидентные.

Резидентный вирус при заражении (инфицировании) компьютера оставляет в оперативной памяти свою резидентную часть, которая потом перехватывает обращение операционной системы к объектам заражения (файлам, загрузочным секторам дисков и т. п.) и внедряется в них.

Резидентные вирусы находятся в памяти и являются активными вплоть до выключения или перезагрузки компьютера.

Нерезидентные вирусы не заражают память компьютера и являются активными ограниченное время.

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

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

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

Загрузочные вирусы

Рассмотрим схему функционирования очень простого загрузочного вируса, заражающего дискеты.

При включении компьютера управление передается программе начальной загрузки, которая хранится в постоянно запоминающем устройстве (ПЗУ).

Среди секторов загрузочного диска есть несколько служебных, используемых операционной системой для собственных нужд (в этих секторах не могут размещаться данные). Среди служебных секторов есть начальной загрузки (boot-sector).

В секторе начальной загрузки хранится информация - количество поверхностей, количество дорожек, количество секторов и пр. Программа начальной загрузки (ПНЗ), которая должна загрузить саму операционную систему, передать ей управление.

Таким образом, нормальная схема начальной загрузки следующая:

ПНЗ (ПЗУ) - ПНЗ (диск) – СИСТЕМА

Теперь рассмотрим вирус. В загрузочных вирусах выделяют две части: голову и т.н. хвост. Хвост может быть пустым.

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

выделяет некоторую область диска и помечает ее как недоступную операционной системе, это можно сделать по-разному, в простейшем и традиционном случае занятые вирусом секторы помечаются как сбойные (bad)

копирует в выделенную область диска свой хвост и оригинальный (здоровый) загрузочный сектор замещает программу начальной загрузки в загрузочном секторе (настоящем) своей головой организует цепочку передачи управления согласно схеме. Таким образом, голова вируса теперь первой получает управление, вирус устанавливается в память и передает управление оригинальному загрузочному сектору. В цепочке ПНЗ (ПЗУ) - ПНЗ (диск) – СИСТЕМА

появляется новое звено:

ПНЗ (ПЗУ) - ВИРУС - ПНЗ (диск) – СИСТЕМА

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

Если ваш жесткий диск разбит на несколько разделов, то лишь один из них помечен как загрузочный (boot). Программа начальной загрузки в MBR находит загрузочный раздел винчестера и передает управление на программу начальной загрузки этого раздела. Код последней совпадает с кодом программы начальной загрузки, содержащейся на обычных дискетах, а соответствующие загрузочные секторы отличаются только таблицами параметров. Таким образом, на винчестере имеются два объекта атаки загрузочных вирусов - программа начальной загрузки в MBR и программа начальной загрузки в бут-секторе загрузочного диска.

Файловые вирусы

Рассмотрим схему работы простого файлового вируса. В отличие от загрузочных вирусов, которые практически всегда резидентны, файловые вирусы совсем не обязательно резидентны. Рассмотрим схему функционирования нерезидентного файлового вируса. Пусть у нас имеется инфицированный исполняемый файл. При запуске такого файла вирус получает управление, производит некоторые действия и передает управление «хозяину»

Файловый вирус ищет новый объект для заражения - подходящий по типу файл, который еще не заражен. Заражая файл, вирус внедряется в его код, чтобы получить управление при запуске этого файла.

Если файловый вирус резидентный, то он установится в память и получит возможность заражать файлы и проявлять прочие способности не только во время работы зараженного файла. Заражая исполняемый файл, вирус всегда изменяет его код - следовательно, заражение исполняемого файла всегда можно обнаружить. Но, изменяя код файла, вирус не обязательно вносит другие изменения:
  • он не обязан менять длину файла;
  • неиспользуемые участки кода;
  • не обязан менять начало файла.

Наконец, к файловым вирусам часто относят вирусы, которые «имеют некоторое отношение к файлам», но не обязаны внедряться в их код.

Таким образом, при запуске любого файла вирус получает управление (операционная система запускает его сама), резидентно устанавливается в память и передает управление вызванному файлу.

Загрузочно-файловые вирусы

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

Полиморфные вирусы

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

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

Стелс-вирусы

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

Стелс-вирусы обманывают антивирусные программы и в результате остаются незамеченными. Тем не менее, существует простой способ отключить механизм маскировки стелс-вирусов. Достаточно загрузить компьютер с не зараженной системной дискеты и сразу, не запуская других программ с диска компьютера (которые также могут оказаться зараженными), проверить компьютер антивирусной программой.

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

Троянский конь

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

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

Программные закладки

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

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

В более 80% компьютерных преступлений "взломщики" проникают в атакуемую систему через глобальную сеть Internet. Когда такая попытка удается, будущее компании, на создание которой ушли годы, может быть поставлено под угрозу за какие-то секунды.

Этот процесс может быть автоматизирован с помощью вируса, называемого сетевой червь.


Сетевой червь

Червями называют вирусы, которые распространяются по глобальным сетям, поражая целые системы, а не отдельные программы. Это самый опасный вид вирусов, так как объектами нападения в этом случае становятся информационные системы государственного масштаба. С появлением глобальной сети Internet этот вид нарушения безопасности представляет наибольшую угрозу, т. к. ему в любой момент может подвергнуться любой из 40 миллионов компьютеров, подключенных к этой сети.