Защита программ от изучения и дизассемблирования; защита от разрушающих программных воздействий
Важным моментом при работе прикладных программ, и в особенности средств защиты информации, является необходимость обеспечения потенциального невмешательства иных, присутствующих в компьютерной системе прикладных или системных программ, в процесс обработки информации.
Если под НСД понимают действия по использованию, изменению и уничтожению информации защищенной компьютерной системы, производимые субъектом, не имеющим права на такие действия, то под опосредованным НСД понимают несанкционированный доступ злоумышленника к информации, произведенный посредством предварительно внедренной в систему программы (или нескольких программ).
Например, предварительно внедренная злоумышленником в компьютерную систему программа, может перехватывать пароли, вводимые с клавиатуры легальным пользователем, и сохранять их в заранее известном и доступном злоумышленнику месте. Затем злоумышленник использует эти пароли для несанкционированного входа в систему.
Опосредованный НСД, как правило, реализуется с использованием особого класса программ – программ с потенциально опасными последствиями. В общем случае, программой с потенциально опасными последствиями называют программу, которая способна выполнять любое непустое подмножество перечисленных ниже функций:
1. скрывать признаки своего присутствия в программной среде компьютерной системы;
2. реализовывать самодублирование или ассоциирование себя с другими программами и/или перенос своих фрагментов в иные (не занимаемые изначально указанной программой) области оперативной или внешней памяти. При этом под самодублированием понимается процесс воспроизведения программой своего собственного кода в оперативной или внешней памяти компьютерной системы. Под ассоциированием с другой программой понимается интеграция своего кода, либо его части, в код другой программы таким образом, чтобы при определенных условиях управление передавалось на код программы с потенциально опасными последствиями;
3. разрушать (исказить произвольным образом) код иных программ в оперативной памяти компьютерной системы;
4. переносить (сохранять) фрагменты информации из оперативной памяти в некоторые области оперативной или внешней памяти прямого доступа;
5. имеет потенциальную возможность исказить произвольным образом, заблокировать и/или подменить выводимый во внешнюю память или в канал связи массив информации, образовавшийся в результате работы прикладных программ, или уже находящийся во внешней памяти, либо изменить его параметры.
Условно программы с потенциально опасными последствиями можно разделить на три класса.
1.Вирусы. Особенностью данного класса программ с потенциально опасными последствиями является его ненаправленность на конкретные программы и также то, что во главу угла здесь ставится самодублирование вируса.
2. Программные черви, троянские кони и фрагменты программ типа логический люк. Для данного типа программ имеет место обратная ситуация - самодублирование не присуще данным программам, но они обладают возможностями перехвата конфиденциальной информации или извлечения информации из сегментов систем безопасности, или ограничения доступа.
3. Программные закладки или разрушающие программные воздействия (РПВ) –обобщенный класс программ с потенциально опасными последствиями, обязательно реализующие хотя бы один пп. 3-5 определения программы с потенциально опасными последствиями. Программы данного класса, как правило, скрывают себя, и самоликвидируются после совершения целевых действий.
Далее, вместо термина «программа с потенциально опасными последствиями» будем использовать термин «программная закладка», «разрушающее программное воздействие» или РПВ.
Для того чтобы РПВ смогло выполнить какие-либо действия по отношению к прикладной программе или данным, оно должно получить управление. Это возможно только при одновременном выполнении двух условий [14]:
1. РПВ должно находиться в оперативной памяти до начала работы программы, которая является целью его воздействия, следовательно, оно должно быть загружено раньше или одновременно с этой программой;
2. РПВ должно активизироваться по некоторому общему, как для него, так и для программы событию, т.е. при выполнении ряда условий в программно-аппаратной среде, управление должно быть передано РПВ. Данное событие называют активизирующим.
Наиболее распространенными видами активизирующих событий являются:
1. Общие системные прерывания, связанные с выполнением некоторого действия (обращение к внешнему устройству, запись в файл и т.д.).
2. Ввод с клавиатуры (свойственно для клавиатурных шпионов).
3. Вывод информации на экран.
4. Операции с файлами (чтение, запись, открытие и т.п.).
5. Прерывание по таймеру.
Выделяют резидентные и нерезидентные РПВ
РПВ резидентного типа находятся в памяти постоянно с некоторого момента времени до окончания сеанса работы компьютерной системы (например, клавиатурный шпион). РПВ нерезидентного типа заканчивает свою работу самостоятельно через некоторый промежуток времени или по некоторому событию, при этом выгружая себя из памяти целиком для затруднения своего обнаружения.