А. Реализованная последовательность команд
Б. Регистрация отказов в доступе к альтернативному потоку
Рис.32. Иллюстрация реализации доступа к альтернативному потоку создаваемого файла
Вывод. Проведенное испытание подтверждает, что КСЗИ «Панцирь+» позволяет корректно контролировать и разграничивать права доступа к альтернативным потокам создаваемых файлов.
Данными средствами защиты в общем виде нейтрализуется подавляющая часть угроз вирусных атак - предполагающих загрузку в файл «тела» вируса.
Проведенный анализ возможностей защиты КСЗИ «Панцирь+».
Анализ проведен на примерах конкретных наиболее известных вирусов.
Сначала рассмотрим очень известный вирус kido, известный также под разными именами Conficker, Downadup, Win32.HLLW.Autorunner.5555, Win32.HLLW.Shadow.based и т.д. и во множестве вариациях, заразивший в свое время более 10 миллионов компьютеров по всему миру. Вирус основан на эксплуатации уязвимости MS08-67, создаваемой ошибкой в библиотеке netapi32.dll при обработке RPC запросов в службе Server. Удаленный пользователь мог с помощью специально сформированного RPC запроса (эксплоита) вызвать переполнение буфера в стеке и выполнить произвольный код на целевой системе с привилегиями системной учетной записи, в данном случае загрузить исполнимый файл («тело» вируса) и выполнить его с системными правами.
Вирус kido - сетевой червь, который распространяется через локальную сеть или при помощи съемных носителей информации. Программа («тело» вируса) является динамической библиотекой Windows (PE DLL-файл). Упакован (для защиты от детектирования) kido при помощи UPX.
Запретом создания и переименования файлов, задаваемых маской *.dll, КСЗИ «Панцирь+» не позволит загрузить вирус на защищаемый компьютер под системной учетной записью. На этом бы вся вирусная атака и завершилась.
Рассмотрим дальнейшие воздействия вируса на систему. Вирус kido копирует свой исполняемый файл на все съемные диски со следующим именем:
< X>:\RECYCLER\S-5-3-42-2819952290-8240758988-879315005-3665\<rnd>.vmx, где rnd – случайная последовательность строчных букв, X – буква съемного диска.
Также вместе со своим исполняемым файлом червь помещает в корень каждого диска сопровождающий файл: < X>:\autorun.inf.
Эта возможность также предотвращается КСЗИ «Панцирь+» запретом создания файла с расширением vmx и создания/модификации файла с расширением inf.
Далее. При запуске червь внедряет свой код в адресное пространство одного из запущенных системных процессов "svchost.exe". Внедренный код уже выполняет основной деструктивный функционал червя kido от лица этого системного процесса. КСЗИ «Панцирь+» этого также не позволит, защита от инжектирования вредоносного кода в системный процесс рассмотрена далее.
Также червь скачивает заранее подготовленный исполнимый файл с соответствующего сайта. Скачанный файл сохраняется в системный каталог Windows (%System%) с оригинальным именем и запускается на выполнение, что также предотвратит КСЗИ «Панцирь+». При заражении компьютера червь kido запускает HTTP сервер на случайном TCP порту, который затем используется для загрузки исполняемого файла червя на другие компьютеры. Эта возможность предотвращается уже сетевым экраном, входящим в состав КСЗИ «Панцирь+», о чем далее.
Рассмотрим другой пример - использование «руткитов» (англ. rootkit) при реализации атаки. Средства типа «руткит» используются с целью сокрытия вредоносного программного обеспечения от антивирусов. Руткиты, как правило, сами не обладают вредоносной функциональностью, но используются другими типами вредоносных программ для сокрытия их деятельности в системе.
Руткиты бывают уровня приложений и уровня ядра, последние наиболее опасны, поскольку могут осуществлять соответствующие системные вызовы и инжектировать свой исполнимый код в процессы, включая системные. Проиллюстрируем сказанное на примере Hacker Defender.
Версия Hacker Defender, находящаяся в свободном доступе, состоит из двух файлов: исполняемый файл (.exe) и файл конфигурации (.ini). Конфигурационный файл используется для определения того, какие объекты руткит будет скрывать, и содержит имена определенных компонентов самого руткита после инсталляции в системе.
Инсталляция Hacker Defender требует наличия прав администратора. Руткит регистрирует себя в качестве NT-сервиса (системной службы). В процессе инсталляции руткит устанавливает драйвер (.sys) в свою корневую директорию. В результате инсталляции в системном реестре появляются два ключа:
- HKLM\SYSTEM\CurrentControlSet\Services\[service_name];
- HKLM\SYSTEM\CurrentControlSet\Services\[driver_name].
Дополнительно Hacker Defender обеспечивает собственную автоматическую загрузку в безопасном режиме, для чего создает еще два ключа в системном реестре:
- HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\[service_name];
- HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\Network\[driver_name].
Один из антивирусов, зарегистрировав внедрение Hacker Defender, выдаст сообщение, имеющее следующий вид см. рис.33, который иллюстрирует создание соответствующей системной службы.
Рис.33. Сообщение антивируса
Во время работы руткит внедряется в каждый процесс. Для успешного заражения системы руткит должен иметь привилегии администратора, что позволяет ему (это невозможно сделать в системе с правами непривилегированного пользователя) выделять память в заражаемом процессе, записывать в нее необходимые функции, обеспечивающие сокрытие объектов ОС, устанавливать перехватчики функций ОС для перенаправления потока исполнения на соответствующие функции, находящиеся в выделенной памяти процесса (нейтрализация всех этих угроз атак средствами КСЗИ «Панцирь+» будет рассмотрена далее).
Данный руткит имеет очень большие возможности, но нам здесь важно иное. Для его использования необходимо создать системную службу (как она создается рассмотрим далее), см. рис.30 и установить свой драйвер (.sys). Системная служба – это особенным образом созданный исполнимый PE файл, который при этом потребуется внедрить в систему. И ту, и другую возможность предотвратит КСЗИ «Панцирь+».
Здесь акцентируем внимание на следующем важном моменте, к которому далее вернемся. Установка системной службы является штатной задачей системного администратора. Предотвратив для него возможность загрузки исполнимых файлов (что можно сделать соответствующим образом настроив замкнутость программной среды), мы тем самым лишим его этой возможности. Как позволяет обойти подобное противоречие КСЗИ «Панцирь+» рассмотрим далее.
Вновь обратимся к атаке DoubleAgen, которая основана на модификации динамической библиотеки (PE DLL) для процесса, относящегося к антивирусному ПО. Как видим, запрет доступа к объекту *.dll на запись и на переименование предотвращает саму возможность модификации динамической библиотеки, как следствие, осуществления подобной атаки.
Проведенный анализ показывает, что, во-первых, используя рассмотренные механизмы защиты из состава КСЗИ «Панцирь+» можно нейтрализовать подавляющую часть вирусных атак, причем решая эту задачу в общем виде – без детектирования вредоносных свойств системных и прикладных процессов, во-вторых, что вектор актуальной угрозы атаки при использовании КСЗИ «Панцирь+» смещается в сторону необходимости реализации «тела вируса» в шелл-коде (это не потребует его загрузки в виде отдельного исполнимого или командного файла), при этом первой задачей подобного шелл-кода должно являться преодоление самозащиты КСЗИ «Панцирь+», что, по причинам, рассмотренным ранее, принципиально усложняет реализацию атаки.