Дилдо для антивируса Михаил «Horrific» Фленов Хакер, номер #096, стр. 096-126-1 Управление сервисами через менеджер Windows Буквально вчера я увидел в интернете интересную новость о том, что появилась зло-программа, которая после заражения компа скачивает пиратскую версию «Антивируса Касперского» и с ее помощью уничтожает всех конкурентов. Оригинальное решение :). Мы много раз слышали о том, что вирусы пытаются обмануть антивирусы, но такая странная дружба на моей памяти происходит впервые. Эта новость подвигла меня на разговор о том, как можно обмануть антивирус. Ларчик-то достаточно просто открыть (точнее, закрыть ;)). Вырубаем Многие хакеры стремятся написать такой код вируса, трояна или другого зла, чтобы анализатор антивируса не смог его найти. Самое простое и эффективное решение кроется в отключении сервиса антивируса. Не знаю, как «Касперский» (давно его не юзал), а Symantec и Dr. Web работают как сервисы, а значит, чтобы наш зло-код спокойно работал в системе, не боясь антисредств, достаточно просто отключить соответствующий сервис, и никто уже не наш не остановит. Самое поразительное, что можно создавать сервисы, которые невозможно вырубить, но известные мне антивирусы почему-то легко отключаются. Это вполне логично, ведь анализаторы иногда ошибаются (сам с таким встречался), и тогда пользователь должен иметь возможность отключить слишком умный антивирус и позволить продолжить работу с программами, которые анализатор воспринял как зло. Еще пример. Когда-то мы писали о том, что сервис Messenger небезопасен и подвержен атаке флудом, поэтому его начали отключать. Но кто мешает нам написать небольшую программу, которая будет запускать сервис на компьютере жертвы, чтобы потом его можно было атаковать флудом через NET SEND :)? Итак, сегодня нам предстоит узнать, как можно запустить/остановить любой сервис в системе или вогнать в его паузу. Судя по названию рубрики, мы будем делать это программно с помощью Delphi. Менеджер сервисов Приступим. За управление сервисами в окнах отвечает менеджер сервисов (Service Control Manager, что на нашем великом и могучем означает «менеджер управления сервисами». Очень часто, в том числе и в документации MSDN, можно встретить сокращение SCManager. Чтобы получить контроль над сервисами, для начала необходимо подключиться к менеджеру. Для этого используется функция OpenSCManager, которая в общем виде выглядит так: function OpenSCManager ( lpMachineName, lpDatabaseName: PChar; dwDesiredAccess: DWORD ): SC_HANDLE; stdcall; Тут у нас всего 3 параметра: 1. Имя компьютера, к менеджеру которого необходимо подключиться. Если есть права, то можно управлять даже удаленным компьютером. Для подключения к локальному компьютеру этот параметр можно оставить нулевым. 2. База данных, которая нас интересует. Этот параметр должен быть равен SERVICES_ACTIVE_DATABASE или нулю. В обоих случаях результат один и тот же – выбирается активная база данных. 3. Флаг, определяющий желаемый доступ. В зависимости от прав, с которыми работает пользователь, можно указать различные флаги прав доступа к менеджеру сервисов. Нас интересует полный доступ, а значит, в третьем параметре необходимо указать SC_MANAGER_ALL_ACCESS. Фулл акцесс будет возможен, только если компьютер работает под админом. Слава богам за то, что большинство ламеров работает именно под такими правами, особенно в Windows Home Edition, где каждый юзер является локальным админом. |