Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #72, НОЯБРЬ 2006 г.

20 вистов и пуля

ДРОЗДОВ АНДРЕЙ AKA SULVERUS

Спецвыпуск: Хакер, номер #072, стр. 072-038-1


OFFBIT SECURITY TEAM(SULVERUS@MAIL.RU)

ОБЗОР БЕЗОПАСНОСТИ СЛУЖБ WINDOWS VISTA НА ПРИМЕРЕ АНТИШПИОНСКОГО ПО

КАК И В ПРЕДЫДУЩИХ ВЕРСИЯХ WINDOWS, В WINDOWS VISTA РЕАЛИЗОВАНА СИСТЕМА СЛУЖБ. ГЛАВНЫМ ОТЛИЧИЕМ СЛУЖБ ОТ ДРУГИХ ПРИЛОЖЕНИЙ ЯВЛЯЕТСЯ ТО, ЧТО ОНИ АВТОМАТИЧЕСКИ ЗАПУСКАЮТСЯ БЕЗ ПОМОЩИ ПОЛЬЗОВАТЕЛЯ. В WINDOWS VISTA РАБОТА СО СЛУЖБАМИ НЕСКОЛЬКО ИЗМЕНИЛАСЬ, ПОСКОЛЬКУ ВСЕМ КОДОМ ТЕПЕРЬ УПРАВЛЯЕТ .NET FRAMEWORK

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

[принципы программирования Windows-служб.]

Создание цельной службы порождает ошибки с автозагрузкой, а реализация ее настройки становится сложнее. В .NET процесс программирования служб (если говорить о нормальном программировании, а не о вирусах) разбивается на 3 составляющих:

1 РАЗРАБОТКА СЛУЖБЫ.

2 РАЗРАБОТКА ПРИЛОЖЕНИЯ КОНФИГУРИРОВАНИЯ СЛУЖБЫ И ИНСТАЛЛЕРА.

3 РАЗРАБОТКА СИСТЕМЫ ИНСТАЛЛЯЦИИ СЛУЖБЫ.

Хорошая система настройки и конфигурирования службы - один из самых важных аспектов безопасности, поскольку 90% хакерских атак происходят именно по причине халатности пользователей и некачественной настройки служб (будь то на сервере или на домашнем компьютере). Программа инсталляции службы довольно тривиальна: она отправляет команды остановить, поднять, продолжить и приостановить службу. Система конфигурации службы настраивает все возможные параметры, ключи реестра, конфиги для запуска и работы службы, пример таких параметров и конфигов - файлы настройки сервера Apache или MS SQL Server'a. В первом случае в системе конфигурирования реализован скриптовый язык, который читает содержимое многочисленных конфигурационных файлов, а во втором случае реализован интерфейс для полной настройки MS SQL Server'a. Ну и, наконец, сама служба - я думаю, тут все понятно: реализуется набор классов для выполнения тех или иных задач.

[работаем со службами Windows Vista.]

Для примера напишем тестовую службу-антивирус, которая будет висеть в памяти и охранять системные файлы в папке system32/drivers/etc/ от хакерских вторжений, отслеживая работу с файлами в этой директории. После этого мы реализуем программу-конфигуратор, которая будет настраивать время проверки системных файлов, и инсталлятор, работающий со службой. Сама служба состоит из трех блоков кода:

1 ОБРАБОТЧИК ДАННЫХ.

2 ГЛАВНАЯ ФУНКЦИЯ СЛУЖБЫ.

3 ОБЫЧНАЯ ГЛАВНАЯ ФУНКЦИЯ.

Возможно, в голове возник вопрос: чем отличается главная функция службы от обычной главной функции? У служб, как и у обычных приложений, точка входа - функция main() (WinMain и т.д.). Исполняемая программа может содержать более одной службы (и их точек входа – «служебных функций»). Каждая из них должна быть зарегистрирована. В функции main() определяется запускаемая служба, ее точка входа – главная служебная функция. Для создания Windows-службы нужно работать с проектом типа Windows Service. В коде есть строка:

Содержание  Вперед на стр. 072-038-2