Информационная безопасность. Лекции 11-12: Вредоносное ПО и защита от него
Вредоносное ПО и защита от него
Считается, что термин «компьютерный вирус» впервые употребил сотрудник Лехайского университета (США) Ф.Коэн в 1984 г. на 7-й конференции по безопасности информации, проходившей в США. Однако строгого определения, что же такое компьютерный вирус, так и не дано. Основная трудность, возникающая при попытках дать это определение, заключается в том, что практически все отличительные черты вируса (внедрение в другие объекты, скрытность, потенциальная опасность и проч.) либо присущи другим программам, которые никак вирусами не являются, либо существуют вирусы, которые не содержат указанных выше отличительных черт (за исключением возможности распространения). Поэтому представляется возможным сформулировать только обязательное условие для того, чтобы некоторая последовательность выполняемого кода являлась вирусом.
ОБЯЗАТЕЛЬНЫМ (НЕОБХОДИМЫМ) СВОЙСТВОМ КОМПЬЮТЕРНОГО ВИРУСА является возможность создавать свои дубликаты (не обязательно совпадающие с оригиналом) и внедрять их в вычислительные сети и/или файлы, системные области компьютера и прочие выполняемые объекты. При этом дубликаты сохраняют способность к дальнейшему распространению.
Однако данное условие не является достаточным. Следовательно, нет точно определенного закона, по которому «хорошие» файлы можно отличить от «вирусов». Более того, иногда даже для конкретного файла довольно сложно определить, является он вирусом или нет.
Вирус обычно имеет те же права доступа к сетевым ресурсам, что и пользователь, на компьютере которого находится этот вирус.
Вирусы можно разделить на классы по следующим основным признакам:
- среда обитания;
- заражаемая операционная система;
- особенности алгоритма работы;
- деструктивные возможности.
По СРЕДЕ ОБИТАНИЯ вирусы бывают:
- файловые;
- загрузочные;
- макро;
- сетевые.
Существует большое количество сочетаний — например, файлово-загрузочные вирусы, заражающие как файлы, так и загрузочные сектора дисков. Другой пример такого сочетания — сетевой макро-вирус, который не только заражает редактируемые документы, но и рассылает свои копии по электронной почте.
По ДЕСТРУКТИВНЫМ ВОЗМОЖНОСТЯМ вирусы можно разделить на:
- безвредные, т.е. никак не влияющие на работу компьютера (кроме уменьшения свободной памяти на диске в результате своего распространения);
- неопасные, влияние которых ограничивается уменьшением свободной памяти на диске и графическими, звуковыми и пр. эффектами;
- опасные вирусы, которые могут привести к серьезным сбоям в работе компьютера;
- очень опасные, в алгоритм работы которых заведомо заложены процедуры, которые могут привести к потере программ, уничтожить данные, вывести из строя оборудование.
Но даже если в алгоритме вируса не найдено ветвей, наносящих ущерб системе, этот вирус нельзя с полной уверенностью назвать безвредным, так как вирус, как и всякая программа может иметь ошибки.
Среди ОСОБЕННОСТЕЙ АЛГОРИТМА РАБОТЫ вирусов выделяются следующие пункты:
- резидентность;
- использование стелс-алгоритмов;
- самошифрование и полиморфичность;
- метаморфичность.
Под термином "резидентность" (DOS'овский термин TSR — Terminate and Stay Resident) понимается способность вирусов оставлять свои копии в системной памяти, перехватывать некоторые события (например, обращения к файлам или дискам) и вызывать при этом процедуры заражения обнаруженных объектов (файлов и секторов). Резидентные копии вирусов остаются жизнеспособными вплоть до очередной перезагрузки, даже если на диске уничтожены все зараженные файлы.
Нерезидентные вирусы активны непродолжительное время — только в момент запуска зараженной программы. Для своего распространения они ищут на диске незараженные файлы и записываются в них. После того, как код вируса передает управление программе-носителю, влияние вируса на работу операционной системы сводится к нулю вплоть до очередного запуска какой-либо зараженной программы.
Резидентными можно считать макро-вирусы, поскольку они постоянно присутствуют в памяти компьютера во время работы зараженного редактора. При этом роль операционной системы берет на себя редактор, а понятие «перезагрузка операционной системы» трактуется как выход из редактора.
Использование СТЕЛС-алгоритмов позволяет вирусам полностью или частично скрыть себя в системе. Наиболее распространенным стелс-алгоритмом является перехват запросов OC на чтение/запись зараженных объектов. Стелс-вирусы при этом либо временно лечат их, либо «подставляют» вместо себя незараженные участки информации. В случае макро-вирусов наиболее популярный способ — запрет вызовов меню просмотра макросов. Одним из первых файловых стелс-вирусов был вирус «Frodo», а загрузочным стелс-вирусом — «Brain». Следует отметить, что были разработаны и ответные меры. Используя специальные методики и программное обеспечение, можно организовать защиту и от стелс-вирусов.
САМОШИФРОВАНИЕ и ПОЛИМОРФИЧНОСТЬ используются практически всеми типами вирусов для того, чтобы максимально усложнить процедуру детектирования вируса. Полиморфик-вирусы (polymorphic) — это достаточно труднообнаружимые вирусы, не имеющие сигнатур, т.е. не содержащие ни одного постоянного участка кода. В большинстве случаев два образца одного и того же полиморфик-вируса не будут иметь ни одного совпадения. Это достигается шифрованием основного тела вируса и модификациями программы-расшифровщика.
Первые антивирусные программы искали вирусы, сравнивая содержимое файлов и секторов диска с характерными фрагментами вирусов (с сигнатурами вирусов). Именно эти фрагменты хранились в вирусных базах данных антивирусных программ.
Чтобы исключить обнаружение свих изделий, разработчики компьютерных вирусов стали применять шифрование вирусного кода. Шифрующийся вирус — это вирус, который при заражении новых файлов и системных областей диска шифрует собственный код, пользуясь для этого случайными паролями (ключами). Когда вирус получает управление, он расшифровывает свой собственный код и передает ему управление.
Современные антивирусы умеют расшифровывать код вируса, поэтому шифрующиеся вирусы могут быть эффективно обнаружены и уничтожены. Дальнейшее совершенствование шифрующихся вирусов было направлено на затруднение их обнаружения. С этой целью были разработаны так называемые полиморфные вирусы.
К полиморфик-вирусам относятся те из них, детектирование которых невозможно (или крайне затруднительно) осуществить при помощи так называемых вирусных масок — участков постоянного кода, специфичных для конкретного вируса. Достигается это двумя основными способами — шифрованием основного кода вируса с непостоянным ключем и случайным набором команд расшифровщика или изменением самого выполняемого кода вируса.
Полиморфные генераторы
Полиморфик-генераторы, как и конструкторы вирусов, не являются вирусами в прямом смысле этого слова, поскольку в их алгоритм не закладываются функции размножения, т.е. открытия, закрытия и записи в файлы, чтения и записи секторов и т.д. Главной функцией подобного рода программ является шифрование тела вируса и генерация соответствующего расшифровщика.
Метаморфные вирусы
Метаморфные вирусы, так же изменяют свой код, но не используют алгоритмы шифрования. Различие проявляется в виде изменений внутри кода вируса. Существует несколько технологий, позволяющих с успехом реализовывать данную методику.
Одна из этих технологий трансформации, используемая метамофными программами основана на вставке и удалении “мусора” внутри кода. Эти инструкции не влияют на работу вируса, но занимают некоторое количество места и усложняют анализ больших участков кода.
Другая технология — изменение базовых инструкций на уровне кода. Это означает переключение между несколькими отличающимися кодами, которые выполняют одну и ту же функцию.
Самой сложной трансформацией метаморфного вируса является замена целых блоков кода на функционально-эквивалентные. Например, умножение числа x на 3. Это можно выразить как «x*3». Однако в качестве альтернативы его можно заменить на сумму трех x: «x+x+x».
Загрузочные вирусы
Принцип действия загрузочных вирусов основан на алгоритмах запуска операционной системы при включении или перезагрузке компьютера — после необходимых тестов установленного оборудования (памяти, дисков и т.д.) программа системной загрузки считывает первый физический сектор загрузочного диска и передает на него управление.
При заражении дисков загрузочные вирусы «подставляют» свой код вместо какой-либо программы, получающей управление при загрузке системы. Принцип заражения, таким образом, одинаков: вирус "заставляет" систему при ее перезапуске считать в память и отдать управление не оригинальному коду загрузчика, а коду вируса.
Существует несколько вариантов размещения на диске первоначального загрузочного сектора и продолжения вируса: в сектора свободных кластеров логического диска, в неиспользуемые или редко используемые системные сектора, в сектора, расположенные за пределами диска.
Если продолжение вируса размещается в секторах, которые принадлежат свободным кластерам диска, то, как правило, вирус помечает эти кластеры как сбойные (так называемые псевдосбойные кластеры).
При заражении большинство вирусов копирует в код своего загрузчика системную информацию, хранящуюся в первоначальном загрузчике (для MBR этой информацией является Disk Partition Table, для Boot-сектора дискет — BIOS Parameter Block). В противном случае система окажется неспособной загрузить себя, поскольку дисковые адреса компонент системы высчитываются на основе этой информации. Некоторые 100%-стелс вирусы не сохраняют эту информацию или преднамеренно шифруют ее.
Существуют нерезидентные загрузочные вирусы — при загрузке они заражают MBR винчестера и дискеты, если те присутствуют в дисководах. Затем такие вирусы передают управление оригинальному загрузчику и на работу компьютера более не влияют.
Макро-вирусы
Макро-вирусы являются программами на языках, встроенных в некоторые системы обработки данных (текстовые редакторы, электронные таблицы и т.д.). Для своего размножения такие вирусы используют возможности макро-языков и при их помощи переносят себя из одного зараженного файла (документа или таблицы) в другие. Наибольшее распространение получили макро-вирусы для Microsoft Word и Excel.
Для существования вирусов в конкретной системе (редакторе) необходимо наличие встроенного в систему макро-языка с возможностями:
- привязки программы на макро-языке к конкретному файлу;
- копирования макро-программ из одного файла в другой;
- возможность получения управления макро-программой без вмешательства пользователя (автоматические или стандартные макросы).
Данные особенности макро-языков предназначены для автоматической обработки данных в больших организациях или в глобальных сетях и позволяют организовать автоматизированный документооборот. С другой стороны, возможности макро-языков таких систем позволяют вирусу переносить свой код в другие файлы и заражать их.
Сетевые вирусы (сетевые черви)
К ним относятся вирусы, которые для своего распространения активно используют протоколы и возможности локальных и глобальных сетей. Основным принципом работы сетевого вируса является возможность самостоятельно передать свой код на удаленный сервер или рабочую станцию и захватить управление. Для внедрения в заражаемую систему червь может использовать различные механизмы: дыры, слабые пароли, уязвимости базовых и прикладных протоколов, открытые системы и человеческий фактор.
Существует несколько независимых стратегий распространения, среди которых в первую очередь следует выделить импорт данных из адресной книги Outlook Express или аналогичного почтового клиента, просмотр локальных файлов жертвы на предмет поиска сетевых адресов, сканирование IP-адресов текущей подсети и генерация случайного IP-адреса. Чтобы не парализовать сеть чрезмерной активностью и не отрезать себе пути к распространению, вирус должен использовать пропускные способности захваченных им информационных каналов максимум наполовину, а лучше на десятую или даже сотую часть. Чем меньший вред вирус наносит сетевому сообществу, тем позже он оказывается обнаруженным и тем с меньшей поспешностью администраторы устанавливают соответствующие обновления.
Установив соединение с предполагаемой жертвой, червь должен убедиться в наличии необходимой ему версии программного обеспечения и проверить, нет ли на этой системе другого червя. В простейшем случае идентификация осуществляется через рукопожатие. Жертве посылается определенное ключевое слово, внешне выглядящее как безобидный сетевой запрос. Червь, если он только там есть, перехватывает пакет, возвращая инициатору обмена другое ключевое слово, отличное от стандартного ответа незараженного сервера. Механизм рукопожатия — это слабейшее звено обороны червя.
Почтовые вирусы
Почтовый вирус использует для своего распространения каналы электронной почты. Заражение почтовым вирусом происходит в результате действий пользователей, просматривающих почту, а также из-за ошибок в почтовых программах и операционных системах.
Вредоносные объекты могут внедряться в почтовые сообщения следующими способами:
· в виде присоединенных файлов (файлов вложений);
· в виде ссылок на вредоносные объекты ActiveX или аплеты Java, расположенные на троянских Web-сайтах или на Web-сайтах злоумышленников;
· в виде конструкций, встраиваемых непосредственно в тело сообщения электронной почты, имеющего формат HTML.
Вместе с электронным сообщением можно передать любые файлы. Такие файлы называются присоединенными или файлами вложений (attachment file).Файлы вложений таят в себе угрозу для компьютера — через них на компьютер может проникнуть вирус, червь, троянская или другая вредоносная программа.
Кроме того, сообщение электронной почты может передаваться в виде документа HTML. Привлекательность такого формата для сообщений электронной почты заключается в том, что он допускает произвольное форматирование текста сообщения, а также добавление в сообщение ссылок на ресурсы Интернета, изображений и активных компонентов, таких как аплеты Java и элементы управления ActiveX. Если сообщение электронной почты передается в формате HTML, то оно представляет потенциальную угрозу для получателя. Сообщение может содержать ссылку на вредоносный компонент, размещенный где-либо в Интернете, а также вредоносный программный код, активизирующийся при просмотре сообщения.
Попав на компьютер пользователя, почтовый вирус может разослать свой код по адресам, извлеченным из книги электронных адресов почтовой программы, установленной на компьютере. Обычные антивирусные программы, рассчитанные на проверку файлов и дисков, не всегда способны обнаружить вирусы в сообщениях электронной почты. Это происходит потому, что такие сообщения хранятся в базах данных почтовых программ, имеющих различный формат.
Современные антивирусы умеют не только сканировать базы данных сообщений распространенных почтовых программ, но и нейтрализуют почтовые вирусы непосредственно на почтовых серверах, а также на рабочих станциях (персональных компьютерах) до того, как сообщения попадут в почтовую программу. С этой целью почтовые программы сканируют «на лету» потоки данных протоколов SMTP, POP3 и IMAP, предназначенных для передачи сообщений электронной почты.
Вирусы для пиринговых сетей
В современном Интернете имеется большое количество сетей, предназначенных для обмена файлами без применения централизованного сервера. Эти сети позволяют пользователям Интернета свободно обмениваться музыкальными файлами, программами и другой информацией. Эти сети часто называются файлообменными или пиринговыми. Последнее из этих названий происходит от названия применяемого в таких сетях способа обмена данными узел-узел (Peer-To-Peer). Для пиринговых сетей разработчиками вредоносных программ были созданы специальные вирусы, называемые вирусами для пиринговых сетей:
Вирус пиринговых сетей — это вредоносная программа, специально предназначенная для систем обмена файлами между компьютерами пользователей Интернета, такими как Windows Messenger, ICQ и т.д. Чтобы такой вирус попал на компьютер пользователя пиринговой сети, пользователю требуется выполнить какое либо действие, например, загрузить и запустить на выполнение файл.
Файловые вирусы
К данной группе относятся вирусы, которые при своем размножении тем или иным способом используют файловую систему какой-либо ОС. Внедрение файлового вируса возможно практически во все исполняемые файлы всех популярных ОС. По способу заражения файлов вирусы делятся на «overwriting», паразитические («parasitic»), компаньон-вирусы («companion»), вирусы-черви.
При инфицировании файла вирус может производить ряд действий, маскирующих и ускоряющих его распространение. К подобным действиям можно отнести обработку атрибута read-only, снятие его перед заражением и восстановление после. Многие файловые вирусы считывают дату последней модификации файла и восстанавливают ее после заражения. Для маскировки своего распространения некоторые вирусы перехватывают прерывание DOS, возникающее при обращении к защищенному от записи диску (INT 24h), и самостоятельно обрабатывают его.
Анализ алгоритма вируса
Наиболее удобным для хранения и анализа вируса объектом является файл, содержащий тело вируса. Для анализа файлового вируса желательно иметь зараженные файлы всех типов, поражаемых вирусом. Если необходимо проанализировать часть оперативной памяти, то при помощи некоторых утилит (например, AVPUTIL.COM) довольно просто выделить участок, где расположен вирус, и скопировать его на диск. Если же требуется анализ сектора MBR или boot-сектора, то скопировать их в файлы можно при помощи популярных «Нортоновских утилит» или AVPUTIL. Для хранения загрузочного вируса наиболее удобным является файл-образ зараженного диска. Для его получения необходимо отформатировать дискету, заразить ее вирусом, скопировать образ дискеты в файл и при необходимости скомпрессировать его (эту процедуру можно проделать при помощи «Нортоновских утилит», программ TELEDISK или DISKDUPE).
При анализе алгоритма вируса предстоит выяснить:
- способ размножения вируса;
- характер возможных повреждений, которые вирус нанес информации, хранящейся на дисках;
- метод лечения оперативной памяти и зараженных файлов (секторов).
При решении этих задач не обойтись без дизассемблера или отладчика (например, AVPUTIL, SoftICE, TurboDebugger, дизассемблеров Sourcer или IDA).
Несложные короткие вирусы быстро «вскрываются» стандартным отладчиком DEBUG, при анализе объемных и высокосложных полиморфик-стелс-вирусов не обойтись без дизассемблера. Если необходимо быстро обнаружить метод восстановления пораженных файлов, достаточно пройтись отладчиком по началу вируса до того места, где он восстанавливает загруженную программу перед тем, как передать ей управление (фактически именно этот алгоритм чаще всего используется при лечении вируса). Если же требуется получить детальную картину работы вируса или хорошо документированный листинг, то здесь необходимы дизассемблеры с их возможностями восстанавливать перекрестные ссылки. Следует учитывать, во-первых, что некоторые вирусы достаточно успешно блокируют попытки протрассировать их коды, а, во-вторых, при работе с отладчиком существует ненулевая вероятность того, что вирус вырвется из-под контроля.
При анализе файлового вируса необходимо выяснить, какие типы файлов поражаются вирусом, в какое место в файле записывается код вируса — в начало, конец или середину файла, в каком объеме возможно восстановление файла (полностью или частично), в каком месте вирус хранит восстанавливаемую информацию.
При анализе загрузочного вируса основной задачей является выяснение адреса (адресов) сектора, в котором вирус сохраняет первоначальный загрузочный сектор (если, конечно, вирус сохраняет его).
Для резидентного вируса требуется также выделить участок кода, создающий резидентную копию вируса и вычислить возможные адреса точек входа в перехватываемые вирусом прерывания. Необходимо также определить, каким образом и где в оперативной памяти вирус выделяет место для своей резидентной копии.
Существуют особые случаи, когда анализ вируса может оказаться очень сложной для пользователя задачей, например при анализе полиморфик-вируса.
Для анализа макро-вирусов необходимо получить текст их макросов. Если вирус шифрует свои макросы или использует стелс-приемы, то необходимо воспользоваться специальными утилитами просмотра макросов.
Программные закладки
Главным условием правильного функционирования любой компьютерной системы является обеспечение защиты от вмешательства в процесс обработки информации программ, присутствие которых в компьютерной системе не обязательно. Среди подобных программ, в первую очередь, следует упомянуть компьютерные вирусы. Однако имеются вредоносные программы еще одного класса. Это так называемые программные закладки (трояны), которые могут выполнять хотя бы одно из перечисленных ниже действий:
- вносить произвольные искажения в коды программ, находящихся и оперативной памяти компьютера (например, внесение изменений в программу разграничения доступа может привести к тому, что она разрешит вход в систему всем без исключения пользователям вне зависимости от правильности введенного пароля) -программная закладка первого типа;
- копировать фрагменты информации (пароли, криптографические ключи, коды доступа, конфиденциальные электронные документы и др.), из одних областей оперативной или внешней памяти компьютера в другие — программная закладка второго типа;
- искажать выводимую на внешние компьютерные устройства или в канал связи информацию, полученную в результате работы других программ — программная закладка третьего типа.
Троянской программой (троянцем, или троянским конем) называется:
- программа, которая, являясь частью другой программы с известными пользователю функциями, способна втайне от него выполнять некоторые дополнительные действия с целью причинения ему определенного ущерба;
- программа с известными ее пользователю функциями, в которую были внесены изменения, чтобы, помимо этих функций, она могла втайне от него выполнять некоторые другие (разрушительные) действия.
Таким образом, троянской можно считать любую программу, которая втайне от пользователя выполняет какие-то нежелательные(неожидаемые) для него действия. Эти действия могут быть любыми — от определения регистрационных номеров программного обеспечения, установленного на компьютере, до составления списка каталогов на его жестком диске. А сама троянская программа может маскироваться под текстовый редактор, под сетевую утилиту или любую программу, которую пользователь пожелает установить на свой компьютер.
На сегодня известны троянские объекты следующих типов:
· троянские программы;
· троянские Web-сайты;
· троянские сообщения электронной почты.
Троянским называется такой Web-сайт, при посещении которого на компьютер пользователя незаметно устанавливаются вредоносные программные компоненты. Сообщения электронной почты могут использоваться для переноса вредоносных программных объектов. Такие объекты присоединяются к телу сообщения в виде файлов, или встраиваются непосредственно в текст сообщения, имеющего формат HTML. Внешне сообщение электронной почты, содержащее в том или ином виде вредоносный программный код, может выглядеть как обычное, информационное. Однако стоит открыть такое сообщение для просмотра, и вредоносный код получит управление.
Большинство троянских программ предназначено для сбора конфиденциальной информации. Остальные троянцы создаются для причинения прямого ущерба компьютерной системе, приводя ее в неработоспособное состояние.
Чтобы программная закладка могла произвести какие-либо действия по отношению к другим программам или по отношению к данным, процессор должен приступить к исполнению команд, входящих в состав кода программной закладки. Это возможно только при одновременном соблюдении следующих условий:
- программная закладка должна попасть в оперативную память компьютера (если закладка относится к первому типу, то она должна быть загружена до начала работы другой программы, которая является целью воздействия закладки, или во время работы этой программы);
- работа закладки, находящейся в оперативной памяти, начинается при выполнении ряда условий, которые называются активизирующими.
Иногда сам пользователь провоцируется на запуск исполняемого файла, содержащего код программной закладки. Например, для разархивирования набора файлов требуется вызвать специальную утилиту, которая, как правило, есть почти у каждого пользователя и запускается после указания ее имени в командной строке. Однако мало кто из пользователей может заметить, что в полученном наборе файлов имеется программа с аналогичным именем и, соответственно, запускается именно она. Кроме разархивирования файлов, эта программная закладка дополнительно может производить ряд действий негативного характера.
С учетом замечания о том, что программная закладка должна быть обязательно загружена в оперативную память компьютера, можно выделить резидентные закладки (они находятся в оперативной памяти постоянно, начиная с некоторого момента и до окончания сеанса работы компьютера) и нерезидентные (такие закладки попадают в оперативную память компьютера аналогично резидентным, однако, в отличие от последних, выгружаются по истечении некоторого времени или при выполнении особых условий).
У всех программных закладок (независимо от метода их внедрения в компьютерную систему, срока их пребывания в оперативной памяти и назначения) имеется одна важная общая черта: они обязательно выполняют операцию записи в оперативную или внешнюю память системы. При отсутствии данной операции никакого негативного влияния программная закладка оказать не может.
Модели воздействия программных закладок на компьютеры
Перехват
В модели перехват программная закладка внедряется в ПЗУ, системное или прикладное программное обеспечение и сохраняет всю или выбранную информацию, вводимую с внешних устройств компьютерной системы или выводимую на эти устройства, в скрытой области памяти локальной или удаленной компьютерной системы. Объектом сохранения, например, могут служить символы, введенные с клавиатуры, или электронные документы, распечатываемые на принтере.
Данная модель может быть двухступенчатой. На первом этапе сохраняются только, например, имена или начала файлов. На втором накопленные данные анализируются злоумышленником с целью принятия решения о конкретных объектах дальнейшей атаки.
Искажение
В модели искажение программная закладка изменяет информацию, которая записывается в память компьютерной системы в результате работы программ, либо подавляет/инициирует возникновение ошибочных ситуаций в компьютерной системе.
Можно выделить статическое и динамическое искажение. Статическое искажение происходит всего один раз. При этом модифицируются параметры программной среды компьютерной системы, чтобы впоследствии в ней выполнялись нужные злоумышленнику действия.
Динамическое искажение заключается в изменении каким-либо параметром системных или прикладных процессов при помощи заранее активизированных закладок. Динамическое искажение можно условно разделить так: искажение на входе (когда на обработку попадает уже искаженный документ) и искажение на выходе (когда искажается информация, отображаемая для восприятия человеком, или предназначенная для работы других программ).
Практика применения цифровой подписи в системах автоматизированного документооборота показала, что именно программная реализация цифровой подписи особенно подвержена влиянию программных закладок типа "динамическое искажение", которые позволяют осуществлять проводки фальшивых финансовых документов и вмешиваться в процесс разрешения споров по фактам неправомерного применения цифровой подписи.
Существуют 4 основных способа воздействия программных закладок на цифровую подпись:
- искажение входной информации (изменяется поступающий на подпись электронный документ);
- искажение результата проверки истинности цифровой подписи (вне зависимости от результатов работы программы цифровая подпись объявляется подлинной);
- навязывание длины электронного документа (программе цифровой подписи предъявляется документ меньшей длины, чем на самом деле, и в результате цифровая подпись ставится только под частью исходного документа);
- искажение программы цифровой подписи (вносятся изменения в исполняемый код программы с целью модификации реализованного алгоритма).
В рамках модели "искажение" также реализуются программные закладки, действие которых основывается на инициировании или подавлении сигнала о возникновении ошибочных ситуаций в компьютерной системе.
Для инициирования статической ошибки на устройствах хранения информации создается область, при обращении к которой (чтение, запись, форматирование и т. п.) возникает ошибка, что может затруднить или блокировать некоторые нежелательные для злоумышленника действия системных пли прикладных программ (например, не позволять осуществлять корректно уничтожить конфиденциальную информацию на жестком диске).
При инициировании динамической ошибки для некоторой операции генерируется ложная ошибка из числа тех ошибок, которые могут возникать при выполнении данной операции. Например, при прочтении первого блока информации длиной 512 байт может устанавливаться соответствующий флажок для того, чтобы не допустить прочтения второго и последующих блоков и в итоге подделать цифровую подпись под документом.
Чтобы маскировать ошибочные ситуации, злоумышленники обычно используют подавление статической или динамической ошибки. Целью такого подавления часто является стремление блокировать нормальное функционирование компьютерной системы или желание заставить ее неправильно работать. Разновидностью искажения является также модель типа троянский конь. В этом случае программная закладка встраивается в постоянно используемое программное обеспечение и по некоторому активизирующему событию вызывает возникновение сбойной ситуации в компьютерной системе. Тем самым достигаются сразу две цели: парализуется ее нормальное функционирование, а злоумышленник, получив доступ к компьютерной системе для устранения неполадок, сможет, например, извлечь из нее информацию, перехваченную другими программными закладками. В качестве активизирующего события обычно используется наступление определенного момента: времени, сигнала из канала модемной связи или состояния некоторых счетчиков (например, счетчика количества запусков программы).
Удаление информации
Работа с конфиденциальными электронными документами обычно сводится к последовательности следующих манипуляций с файлами:
- создание;
- хранение;
- коррекция;
- уничтожение.
Для защиты конфиденциальной информации обычно используется шифрование. Основная угроза исходит отнюдь не от использования нестойких алгоритмов шифрования и "плохих" криптографических ключей, а от обыкновенных текстовых редакторов и баз данных, применяемых для создания и коррекции конфиденциальных документов.
В процессе функционирования программные средства создают в оперативной или внешней памяти системы временные копии документов. Естественно, все эти временные файлы выпадают из поля зрения любых программ шифрования и могут быть использованы злоумышленником для того, чтобы составить представление о содержании хранимых в зашифрованном виде конфиденциальных документов.
Важно помнить и о том, что при записи отредактированной информации меньшего объема в тот же файл, где хранилась исходная информация до начала сеанса ее редактирования, образуются так называемые "хвостовые" кластеры, в которых эта исходная информация полностью сохраняется. И тогда "хвостовые" кластеры не только не подвергаются воздействию программ шифрования, но и остаются незатронутыми даже средствами гарантированного стирания информации.
Пользователям необходимо иметь в виду и то, что команды удаления файлов не изменяют содержания файла, и оно может быть в любой момент восстановлено, если поверх него еще не был записан другой файл. Распространенные средства гарантированного стирания файлов предварительно записывают на его место константы или случайные числа и только после этого удаляют файл стандартными средствами. Однако даже такие мощные средства оказываются бессильными против программных закладок, которые нацелены на то, чтобы увеличить количество остающихся в виде "мусора" фрагментов конфиденциальной информации. Например, программная закладка может инициировать статическую ошибку, пометив один или несколько кластеров из цепочки, входящей в файл, меткой "СБОЙНЫЙ".
Защита от программных закладок
Задача защиты от программных закладок может рассматриваться в трех принципиально различных вариантах:
- не допустить внедрения программной закладки в компьютерную систему;
- выявить внедренную программную закладку;
- удалить внедренную программную закладку.
Как и в случае борьбы с вирусами, задача решается с помощью средств контроля за целостностью запускаемых системных и прикладных программ, а также за целостностью информации, хранимой в компьютерной системе и за критическими для функционирования системы событиями. Однако данные средства действенны только тогда, когда сами они не подвержены влиянию программных закладок.
При этом чрезвычайно важно, чтобы включение средств контроля выполнялось до начала воздействия программной закладки, либо когда контроль осуществлялся только с использованием программ управления, находящихся в ПЗУ компьютерной системы.
Универсальным средством защиты от внедрения программных закладок является создание изолированного компьютера. Компьютер называется изолированным, если выполнены следующие условия:
- в нем установлена система BIOS, не содержащая программных закладок;
- операционная система проверена на наличие в ней закладок;
- достоверно установлена неизменность BIOS и операционной системы для данного сеанса;
- на компьютере не запускалось и не запускается никаких иных программ, кроме уже прошедших проверку на присутствие в них закладок;
- исключен запуск проверенных программ в каких-либо иных условиях, кроме перечисленных выше, т. е. вне изолированного компьютера.
Для определения степени изолированности компьютера может использоваться модель ступенчатого контроля. Сначала проверяется, нет ли изменений в BIOS. Затем, если все в порядке, считывается загрузочный сектор диска и драйверы операционной системы, которые, в свою очередь, также анализируются на предмет внесения в них несанкционированных изменений. И, наконец, с помощью операционной системы запускается драйвер контроля вызовов программ, который следит за тем, чтобы в компьютере запускались только проверенные программы.
Выявление внедренного кода программной закладки заключается в обнаружении признаков его присутствия в компьютерной системе. Эти признаки можно разделить на следующие два класса:
- качественные и визуальные;
- обнаруживаемые средствами тестирования и диагностики.
К качественным и визуальным признакам относятся ощущения и наблюдения пользователя компьютерной системы, который отмечает определенные отклонения в ее работе. Несмотря на то, что суждение о наличии признаков этого класса кажется слишком субъективным, тем не менее, они часто свидетельствуют о наличии неполадок в компьютерной системе.
Конкретный способ удаления внедренной программной закладки зависит от метода ее внедрения в компьютерную систему. Если это программно-аппаратная закладка, то следует перепрограммировать ПЗУ компьютера. Если это загрузочная, драйверная, прикладная, замаскированная закладка или закладка-имитатор, то можно заменить их на соответствующую загрузочную запись, драйвер, утилиту, прикладную или служебную программу, полученную от источника, заслуживающего доверия. Наконец, если это исполняемый программный модуль, то можно попытаться добыть его исходный текст, убрать из него имеющиеся закладки или подозрительные фрагменты, а затем заново откомпилировать.
Большинство программных средств, предназначенных для защиты от троянских программ, в той или иной степени использует так называемое согласование объектов. При этом в качестве объектов фигурируют файлы и каталоги, а согласование представляет собой способ ответить на вопрос, изменились ли файлы и каталоги с момента последней проверки. В ходе согласования характеристики объектов сравниваются с характеристиками, которыми они обладали раньше. Берется, к примеру, архивная копия системного файла и ее атрибуты и сравниваются с атрибутами этого файла, который в настоящий момент находится на жестком диске. Если атрибуты различаются и никаких изменений в операционную систему не вносилось, значит в компьютер, скорее всего, проникла троянская программа.
Одним из атрибутов любого файла является отметка о времени его последней модификации. Однако отметка времени не может служить надежным индикатором наличия в системе троянского программного обеспечения.
Размер текстовых файлов легко подогнать, гораздо труднее подогнать размер двоичных файлов. Вставить в чужую программу фрагмент собственного кода так, чтобы она не утратила работоспособности и в откомпилированном виде сохранила свой размер, достаточно непросто. Поэтому размер файла является более надежным показателем, чем отметка о времени внесения в него последних изменений для двоичных файлов.
Злоумышленник, решивший запустить в компьютер троянскую программу, обычно пытается сделать его частью системного файла. Такие файлы входят в дистрибутив операционной системы и их присутствие не вызывает подозрений. Однако любой системный файл имеет вполне определенную длину. Если данный атрибут будет каким-либо образом изменен, это будет сигналом.
Зная это, злоумышленник постарается достать исходный текст соответствующей программы и внимательно проанализирует его на предмет присутствия в нем избыточных элементов, которые могут быть удалены безо всякого ощутимого ущерба. Тогда вместо найденных избыточных элементов он вставит в программу свой троянский код и перекомпилирует ее заново. При этом необходимо будет подогнать размер нового файла.
Более надежной в этом отношении является так называемая контрольная сумма файла. Для ее подсчета элементы файла суммируются, и получившееся в результате число объявляется его контрольной суммой. Однако и контрольную сумму нетрудно подделать. Поэтому для проверки целостности файловой системы используется особая разновидность алгоритма вычисления контрольной суммы, называемая односторонним хэшированием. Попытка злоумышленника изменить какой-либо файл так, чтобы значение, полученное путем одностороннего хэширования осталось неизменным, обречена на неудачу.
Исторически сложилось так, что большинство утилит, позволяющих бороться с проникновением в компьютерную систему троянских программ путем однонаправленного хэширования файлов, было создано для операционных систем семейства UNIX. Например, утилита Trip Wire, которая позволяет производить однонаправленное хэширование файлов. Вычисленные хэш-значения файлов хранятся в специальной базе данных, которая, в принципе, является самым уязвимым звеном утилиты, поэтому пользователям предлагается в обязательном порядке принимать дополнительные меры защиты для исключения доступа к этой базе данных со стороны злоумышленника (например, помещать ее на съемном носителе, предназначенном только для чтения).
Утилиты скрытого администрирования (backdoor)
Троянские кони этого класса по своей сути является достаточно мощными утилитами удаленного администрирования компьютеров в сети. По своей функциональности они во многом напоминают различные системы администрирования, разрабатываемые и распространяемые различными фирмами-производителями программных продуктов.
Единственная особенность этих программ заставляет классифицировать их как вредные троянские программы: отсутствие предупреждения об инсталляции и запуске. При запуске троянец устанавливает себя в системе и затем следит за ней, при этом пользователю не выдается никаких сообщений о действиях троянца в системе. Более того, ссылка на троянца может отсутствовать в списке активных приложений. В результате "пользователь" этой троянской программы может и не знать о ее присутствии в системе, в то время как его компьютер открыт для удаленного управления.
Функции Backdoor могут быть заложены в программу ее разработчиком, например, с целью получения в дальнейшем несанкционированного доступа к функциям программы или ко всей компьютерной системе пользователя программы. Возможность получения несанкционированного доступа может также образоваться в результате наличия ошибок в программах или операционных системах.
Техника Phishing
Техника с названием phishing используется с целью выманить у пользователя Интернета персональную информацию (пароли, пин-коды и т.д.). При этом злоумышленники могут направлять ему поддельные сообщения электронной почты. В этих сообщениях, отправленных, например, от имени популярного Web-сайта или банка, может говориться о том, что по той или иной причине пользователь должен выслать банку пароль или пин-код.
Для ввода пароля пользователь заманивается на поддельный сайт, повторяющий по своему дизайну сайт банка, другой компании или организации. Пользователю могут демонстрироваться всплывающие окна, копирующие сайт.
Программы Spyware
Вредоносные программы Spyware устанавливаются на компьютер пользователя и собирают различную информацию о действиях пользователя. Обычно это информация, ценная для маркетологов, которая после сбора отсылается разработчику программы через Интернет.
Программы Spyware могут собирать и другую информацию:
· данные о качестве связи, способе подключения, скорости модема и т. д.;
· информацию о содержании жесткого диска с целью составления списка ПО, установленного на компьютере у пользователя;
· информацию о нажатых клавишах (клавиатурные шпионы);
· приложения, с которыми работает пользователь;
· сведения о посещении Web-сайтов и другой активности в Интернете;
· содержимое сообщений электронной почты
Программы Adware
Программы adware отображают рекламную информацию на компьютере. Эти программы могут отображать на экране всплывающие окна с рекламными баннерами и текстом, даже при отсутствии подключения к Интернету.
Клавиатурные шпионы
Одна из наиболее распространенных разновидностей программных закладок — клавиатурные шпионы (кейлоггеры). Такие программные закладки нацелены на перехват паролей пользователей операционной системы, а также на определение их легальных полномочий и прав доступа к компьютерным ресурсам.
Поведение клавиатурных шпионов в общем случае является довольно традиционным: типовой клавиатурный шпион обманным путем завладевает пользовательскими паролями, а затем переписывает эти пароли туда, откуда их может без особого труда извлечь злоумышленник. Различия между клавиатурными шпионами касаются только способа, который применяется ими для перехвата пользовательских паролей. Соответственно все клавиатурные шпионы делятся на три типа — имитаторы, фильтры и заместители.
Парольные взломщики
Эффективным методом взлома парольной защиты операционной системы является метод, при котором атаке подвергается системный файл, содержащий информацию о ее легальных пользователях и их паролях. Однако любая современная операционная система надежно защищает при помощи шифрования пользовательские пароли, которые хранятся в этом файле. Доступ к таким файлам, как правило, по умолчанию запрещен даже для системных администраторов. Тем не менее, в ряде случаев злоумышленнику удается путем различных ухищрений получить в свое распоряжение файл с именами пользователей и их зашифрованными паролями. В этом случае используются так называемые парольные взломщики — специализированные программы, которые служат для взлома паролей операционных систем.
Криптографические алгоритмы, применяемые для шифрования паролей пользователей в современных операционных системах, в подавляющем большинстве случаев являются слишком стойкими, чтобы можно было надеяться отыскать методы их дешифрования, которые окажутся более эффективными, чем тривиальный перебор возможных вариантов. Поэтому парольные взломщики иногда просто шифруют все пароли с использованием того же самого криптографического алгоритма, который применяется для их засекречивания в атакуемой операционной системе, и сравнивают результаты шифрования с тем, что записано в системном файле, где находятся шифрованные пароли ее пользователей. При этом в качестве вариантов паролей парольные взломщики используют символьные последовательности, автоматически генерируемые из некоторого набора символов. Данный способ позволяет взломать все пароли, если известно их представление в зашифрованном виде и они содержат только символы из данного набора. Максимальное время, которое потребуется для взлома пароля, можно вычислить по следующей формуле:
T=LN/S,
где N — число символов в наборе, L — предельная длина пароля, S — количество проверок в секунду.
Для более эффективного подбора паролей парольные взломщики обычно используют так называемые словари, представляющие собой заранее сформированный список слов, наиболее часто применяемых на практике в качестве паролей.
Для каждого слова из словаря парольный взломщик использует одно или несколько правил. В соответствии с этими правилами слово изменяется и порождает дополнительное множество опробуемых паролей. Учитывая, что обычные словари человеческих языков состоят всего из нескольких сотен тысяч слов, а скорость шифрования паролей достаточно высока, парольные взломщики, осуществляющие поиск с использованием словаря работают достаточно быстро. Наиболее популярным парольным взломщиком является программа LophtCrack(LC5). Стоит отметить, что кроме огромной опасности парольные взломщики являются ценным инструментом для выявления слабых мест в парольной защите операционных систем.
Антивирусное программное обеспечение
Невозможность существования абсолютного антивируса была доказана Фредом Коэном математически на основе теории конечных автоматов.
В антивирусном ПО используются следующие термины:
- «Ложное срабатывание» (False positive) — детектирование вируса в незараженном объекте. Обратный термин — «False negative», т.е. недетектирование вируса в зараженном объекте.
- «Сканирование по запросу» («on-demand») — поиск вирусов по запросу пользователя.
- «Сканирование на-лету» («real-time», «on-the-fly») — постоянная проверка на вирусы объектов, к которым происходит обращение (запуск, открытие, создание и т.п.). В этом режиме антивирус постоянно активен, он присутствует в памяти «резидентно» и проверяет объекты без запроса пользователя.
Качество антивирусной программы можно определить по следующим позициям:
- Надежность и удобство работы — отсутствие «зависаний» антивируса и прочих технических проблем, требующих от пользователя специальной подготовки.
- Качество обнаружения вирусов всех распространенных типов, сканирование внутри файлов-документов/таблиц (Word, Excel), упакованных и архивированных файлов.
- Отсутствие «ложных срабатываний».
- Многоплатформенность антивирусного программного обеспечения.
- Возможность лечения зараженных объектов.
- Периодичность обновления.
- Существование серверных версий с возможностью проверки сетевых дисков.
- Скорость работы и другие полезные функции.
Антивирусное ПО может использовать следующие методы обнаружения вирусов и других вредоносных программ:
· сканирование;
· эвристический анализ (блокирование подозрительных действий);
· CRC-сканирование (обнаружение изменений);
· анализ сетевого трафика;
· анализ баз данных почтовых программ;
· обнаружение вирусов в системе автоматизации документооборота.
Принцип работы антивирусных сканеров основан на проверке файлов, секторов и системной памяти и поиске в них известных и новых (неизвестных сканеру) вирусов. Для поиска известных вирусов используются так называемые «маски». Маской вируса является некоторая постоянная последовательность кода, специфичная для этого конкретного вируса. Если вирус не содержит постоянной маски, или длина этой маски недостаточно велика, то используются другие методы. Примером такого метода являетcя алгоритмический язык, описывающий все возможные варианты кода, которые могут встретиться при заражении подобного типа вирусом. Такой подход используется некоторыми антивирусами для детектирования полиморфик-вирусов.
Во многих сканерах используются также алгоритмы «эвристического сканирования», т.е. анализ последовательности команд в проверяемом объекте, набор некоторой статистики и принятие решения («возможно заражен» или «не заражен») для каждого проверяемого объекта. Поскольку эвристическое сканирование является во многом вероятностным методом поиска вирусов, то на него распространяются многие законы теории вероятностей. Эвристический анализ не дает полной гарантии обнаружения любых новых вирусов. Кроме того, эвристический анализатор может принять «безобидную» программу за вредоносную. Это происходит в тех случаях, когда программа выполняет какие-либо действия, характерные для вирусов или вредоносных программ другого типа. Эвристический анализ отнимает немало процессорного времени. Поэтому, настраивая антивирусную программу, пользователь может отключить эвристический анализатор. Учитывая, что без эвристического анализатора антивирусная программа не сможет обнаружить полиморфные и шифрующиеся, а также новые вирусы, такое отключение приведет к снижению надежности антивирусной защиты.
Наиболее эффективной методикой обнаружения и нейтрализации вредоносных программ, распространяющихся по каналам электронной почты, является анализ трафика электронной почты непосредственно на почтовом сервере. При этом антивирусные программы проверяют данные, проходящие через почтовый сервер, и удаляют из них вредоносные объекты еще до того, как они попадут на компьютер пользователя. Антивирусы, работающие на почтовом сервере, сканируют трафик электронной почты, исключая распространение вредоносных программ вместе с почтовыми сообщениями. Для передачи сообщений электронной почты используются протоколы SMTP, POP3 и IMAP. Специализированные антивирусы, работающие на почтовых серверах, способны анализировать потоки данных, передаваемые с использованием этих протоколов, предотвращая распространение вредоносных программных объектов через электронную почту.
Сканеры также можно разделить на две категории — «универсальные» и «специализированные». Универсальные сканеры рассчитаны на поиск и обезвреживание всех типов вирусов вне зависимости от операционной системы, на работу в которой рассчитан сканер. Специализированные сканеры предназначены для обезвреживания ограниченного числа вирусов или только одного их класса, например макро-вирусов. Специализированные сканеры, рассчитанные только на макро-вирусы, часто оказываются наиболее удобным и надежным решением для защиты систем документооборота в средах MS Word и MS Excel.
Сканеры также делятся на «резидентные» (мониторы), производящие сканирование «на-лету», и «нерезидентные», обеспечивающие проверку системы только по запросу. Как правило, «резидентные» сканеры обеспечивают более надежную защиту системы, поскольку они немедленно реагируют на появление вируса, в то время как «нерезидентный» сканер способен опознать вирус только во время своего очередного запуска.
К достоинствам сканеров всех типов относится их универсальность, к недостаткам — размеры антивирусных баз, которые сканерам приходится «таскать за собой», и относительно небольшую скорость поиска вирусов.
Принцип работы CRC-сканеров основан на подсчете CRC-сумм (контрольных сумм) для присутствующих на диске файлов/системных секторов. Эти CRC-суммы затем сохраняются в базе данных антивируса, как, впрочем, и некоторая другая информация: длины файлов, даты их последней модификации и т.д. При последующем запуске CRC-сканеры сверяют данные, содержащиеся в базе данных, с реально подсчитанными значениями. Если информация о файле, записанная в базе данных, не совпадает с реальными значениями, то CRC-сканеры сигнализируют о том, что файл был изменен или заражен вирусом.
CRC-сканеры, использующие анти-стелс алгоритмы, являются довольно сильным оружием против вирусов: практически 100% вирусов оказываются обнаруженными почти сразу после их появления на компьютере. Однако у этого типа антивирусов есть врожденный недостаток, который заметно снижает их эффективность. Этот недостаток состоит в том, что CRC-сканеры не способны поймать вирус в момент его появления в системе, а делают это лишь через некоторое время, уже после того, как вирус разошелся по компьютеру. CRC-сканеры не могут определить вирус в новых файлах (в электронной почте, на дискетах, в файлах, восстанавливаемых из backup или при распаковке файлов из архива), поскольку в их базах данных отсутствует информация об этих файлах. Более того, периодически появляются вирусы, которые используют эту «слабость» CRC-сканеров, заражают только вновь создаваемые файлы и остаются, таким образом, невидимыми для них.
Антивирусные блокировщики — это резидентные программы, перехватывающие «вирусоопасные» ситуации и сообщающие об этом пользователю. К «вирусоопасным» относятся вызовы на открытие для записи в выполняемые файлы, запись в boot-сектора дисков или MBR винчестера, попытки программ остаться резидентно и т.д., то есть вызовы, которые характерны для вирусов в моменты из размножения.
К достоинствам блокировщиков относится их способность обнаруживать и останавливать вирус на самой ранней стадии его размножения. К недостаткам относятся существование путей обхода защиты блокировщиков, большое количество срабатываний, требующих от пользователя принятия решения.