Компьютерный мир! :: Просмотр темы — Как защитить WinXP без Firewall, SP1, и заплаток от атак …

Автор: | 29.09.2004

http://timhome.hut.ru/security/security.htm Безопасность — это процесс. © 2003 Юрий Трофимов, mr(точка)Root(улитка)tut(точка)by Поводом для написания данной статьи послужили новые уязвимости операционной системы Windows, которые совсем недавно были использованы семейством интернет-червей LoveSan/Blaster, вызвавших в середине августа одну из крупнейших эпидемий в вирусной истории. Однако эпидемия вроде бы отшумела, а вопросы остались. Мы поговорим о технологиях Microsoft, которые оказались под ударом, чтобы лучше уяснить суть происходящего, поскольку я уверен, что подавляющее большинство пользователей и системных администраторов весьма посредственно ориентируются в сути вопроса. А наша практическая часть все-таки будет больше ориентирована на простых пользователей, потому что системные администраторы обязаны все это знать по определению. Скажу сразу, что я весьма далек от той части публики, которая, не разобравшись, кричит «виндовс — мастдай». События последних лет, статистика, красноречиво показывают какие системы подвергаются взломам чаще всего. А тех, кто думает, что сможет на коленке написать безглючную СуперОС или даже просто 100 строк кода, я отошлю к Ф.Бруксу, вернее к его труду «Мифический человеко-месяц (или как создаются программные системы)»: «Время от времени можно прочесть в газете о том, как в переоборудованном гараже пара программистов сделала замечательную программу, оставившую позади разработки больших команд. И каждый программист охотно верит в эти сказки, поскольку знает, что может создать любую программу со скоростью, значительно превышающей те 1000 операторов в год, которые, по сообщениям, пишут программисты в промышленных бригадах. Почему же до сих пор все профессиональные бригады программистов не заменены одержимыми дуэтами из гаражей?» Итак, вернемся на главную дорогу и начнем наше неспешное повествование. Согласно исследованиям университета Карнеги-Меллона (http://www.sei.cmu.edu) и ФБР (http://www.fbi.gov) 98% инцидентов возникает из-за проблемы, о которой ответственные сотрудники IT-отдела уже знали, но не приняли адекватных мер к устранению. Эксперты Gartner (http://www.gartner.com) считают, что эта цифра — около 90%. Аналитики координационного центра по безопасности CERT (http://www.cert.org) утверждают, что 95% инцидентов, о которых им сообщают, используют известные дыры. Можно заметить печальную общую тенденцию — около 90% всех проблем с компьютерной безопасностью происходит по причине невнимательности со стороны системных администраторов, одной из задач которых и является своевременная защита постоянно появляющихся дыр в корпоративной сети. Далее. Компания Qualys представила интересную статистику, касающуюся ликвидации дыр в программном обеспечении корпоративными пользователями. Эта статистика была получена на основе данных сканирования на предмет уязвимостей 1,5 млн. компьютерных систем. По данным Qualys, процесс ликвидации уязвимостей идет недостаточно быстро. В частности, в течение первых 30 дней после появления информации о критических дырах, патчи устанавливают менее половины компаний. На устранение менее серьезных уязвимостей уходит, в среднем, на 60 дней больше, чем на борьбу с критическими дырами. За это время хакеры и специалисты по безопасности в 80% случаях успевают создать программы, использующие эти дыры. Именно поэтому существует опасность повторения атак с использованием уже, казалось бы, давно обезвреженных уязвимостей. «Переполнение буфера RPC», «уязвимое место в системе безопасности интерфейса DCOM» — такими фразами пестрели сообщения об опасности еще вчера. Попытаемся разобраться, что скрывается за этими понятиями, ибо «практика без теории слепа». DCOM. Введение. Microsoft Distributed COM (DCOM) — это расширение модели COM, для поддержки связей объектов для разных компьютеров, находящихся в локальной сети (LAN), глобальной сети (WAN), или Интернет. Используя DCOM, ваше приложение может быть распределенным, т.е. может работать на нескольких компьютерах как на одном. Общающиеся посредством COM/DCOM программы называются клиентом и сервером. Клиент является инициатором общения. Он обращается к одной из служб сервера для получения некоторых данных или для выполнения некоторой работы над данными, которые передаются серверу. Службы сервера реализуются в виде одного или нескольких входящих в его состав объектов COM. Один объект может содержать произвольное количество служб. Component Object Model (COM) разработан для того, чтобы позволить клиентам прозрачно связываться с объектами, независимо от того, где объекты выполняются — в том же самом процессе, на той же самой машине, или на разных машинах. Это обеспечивает единую модель программирования для всех типов объектов, и для клиентов и для серверов. Поскольку DCOM развивает объектную модель COM, вы можете использовать существующие приложения, компоненты и инструментальные средства на базе COM для продвижения в мир распределенных вычислений. DCOM берет на себя обработку нижнего уровня сетевых протоколов, так что вы можете сосредоточиться на решении ваших задач. Архитектура DCOM. Объектная модель компонентов (COM) является краеугольной технологией MS Windows, она определяет взаимодействие компонентов и их клиентов таким образом, что клиент и компонент могут соединиться напрямую без какого-либо посредника в лице системного компонента. Клиент вызывает методы в компоненте без использования каких бы то ни было надстроек. В современных операционных системах, процессы защищены друг от друга. Клиент, который должен связаться с компонентом в другом процессе, не может вызвать компонент непосредственно, он должен использовать некоторую форму взаимодействия процессов, обеспечиваемую операционной системой. COM обеспечивает эту связь полностью прозрачным способом: перехватывает запросы от клиента и посылает их компоненту находящемуся в другом процессе. Когда клиент и компонент находятся на различных машинах, DCOM просто заменяет местное взаимодействие процессов сетевым протоколом. Ни клиент, ни компонент не знают, что провод, который их соединяет, становится немного длиннее. DCOM может использовать любой транспортный протокол, включая TCP/IP, UDP, IPX/SPX и NetBIOS. Это также кросс-платформенный стандарт. Существуют реализации для Mac, UNIX, Linux. Сетевой протокол DCOM основан на Distributed Computing Environment (DCE) RPC. DCE RPC определяет стандарт для преобразования структур данных и параметров в сетевые пакеты. Конкурирующий с DCOM стандарт — CORBA. Свойства DCOM можно конфигурировать с помощью DCOMCNFG.EXE. При использовании операционной системы Windows 2000 к модели COM добавляется концепция центрального хранилища классов COM. Вся информация о компоненте, связанная с активацией, может быть опционально сохранена в Active Directory на контроллере домена, так же, как сервисы входа в систему и идентификации сохраняют пользовательские мандаты на контроллере домена. Библиотеки COM в прозрачном режиме получат информацию для активации из Active Directory. Изменения информации о конфигурации компонентов в Active Directory автоматически размножатся всем клиентам, связанным с этой частью AD. Защита DCOM. DCOM использует расширенную структуру защиты Windows NT. Windows NT обеспечивает набор встроенных провайдеров защиты, которые поддерживают множественные идентифицирующие и опознавательные механизмы: от традиционных моделей защиты на базе доверительных доменов до защиты на основе публичных ключей. Центральная часть структуры защиты — пользовательский каталог, в котором хранится необходимая информация: имя пользователя, пароль, публичный ключ. Большинство DCOM, реализованных на платформах отличных от Windows NT, обеспечивают подобный или идентичный механизм. RPC. Что такое RPC. RPC — Remote Procedure Call — стандарт сетевого программирования, определяющий мощную технологию для того, чтобы создавать распределенные программы клиент/сервер. RPC заглушки (stub) и библиотеки времени выполнения (run-time library) управляют большинством процессов, касающихся сетевых протоколов и связи. Это дает возможность разработчику программного обеспечения сосредоточиться на разработке приложения, а не на особенностях сетевых протоколов. Вы можете конфигурировать RPC чтобы использовать один или более транспортов, один или более сервисов имен, и один или более серверов защиты. Стандарт RPC разработан в начале 1980-ых годов организацией Open Software Foundation (OSF). Реализация RPC от Microsoft совместима со стандартом OSF. В природе существует еще один стандарт — SunRPC. Как работает RPC. Средства RPC предоставляют возможность пользователям посредством клиента непосредственно вызвать процедуру, расположенную в удаленной серверной программе. Клиент и сервер имеют собственные адресные пространства, то есть каждый имеет свой собственный ресурс памяти для используемых данных. Приложение-клиент вызывает локальную заглушку (stub) вместо фактического кода процедуры. Заглушки откомпилированы и связаны с приложением-клиентом. Вместо того чтобы содержать в себе полный код удаленной процедуры, клиентская заглушка: получает нужные параметры из адресного пространства на клиенте. транслирует параметры в стандартный формат (NDR) для передачи по сети. вызывает RPC-функции клиентской библиотеки времени выполнения (run-time library) для того, чтобы послать запрос и необходимые параметры на сервер. Сервер выполняет следующие действия: серверные RPC-функции библиотеки времени выполнения принимают запрос и вызывают серверную заглушку. серверная заглушка получает параметры из сетевого буфера и конвертирует данные из сетевого формата в формат серверного приложения. серверная заглушка вызывает фактическую процедуру на сервере. Удаленная процедура выполняется. При этом, возможно, генерируя выходные параметры и возвращаемое значение. Когда выполнение удаленной процедуры заканчивается, следующая последовательность шагов возвращает данные клиенту: удаленная процедура возвращает данные серверной заглушке. серверная заглушка преобразовывает выходные параметры к формату, требуемому для передачи по сети и возвращает их в RPC-функцию библиотеки времени выполнения. серверные RPC-функции библиотеки времени выполнения передают данные по сети на клиентский компьютер. Клиент завершает процесс, принимая данные по сети и возвращая их запрашивающей функции: клиентская RPC-функция библиотеки времени выполнения получает возвращаемые удаленной процедурой значения и передает их клиентской заглушке. клиентская заглушка преобразовывает данные из NDR до формата, используемого клиентским компьютером. заглушка пишет данные в клиентскую память и возвращает результат запрашивающей программе на клиенте. Запрашивающая программа продолжает выполняться, как будто вызов функции произошел на том же самом компьютере. Что такое переполнение буфера. Технология использования переполнения буфера (buffer overflow) стара как мир. Первое наиболее известное применение ее было в вирусе-черве Морриса в далеком 1988 году. Причем сам принцип не зависит от конкретной операционной системы. Как показала практика, везде можно найти уязвимый участок кода. Сама по себе проблема хорошо известна программистам. Попытаемся рассмотреть ее более подробно с точки зрения специалистов самой Microsoft. Для того чтобы произошло переполнение буфера необходимо наличие многих факторов, включая следующие: использование языка программирования, не обеспечивающего безопасность типов (non-type-safe), такого как C/C++. доступ к буферу или копирование буфера небезопасным способом. размещение компилятором буфера в памяти рядом с критическими структурами данных. Рассмотрим каждое положение более детально. Переполнение буфера прежде всего проблема C/C++ , потому что в этих языках программирования не выполняется никаких проверок границ массива и проверок типов переменных. В результате такого подхода увеличивается скорость работы программы. Переполнение буфера существует и в других языках, но они редки. И если такая ошибка существует, то это обычно не ошибка разработчика, а скорее ошибка времени выполнения (run-time error). Далее, если программа берет данные от пользователя (или нападающего) и копирует данные в свой буфер без проверки размера, то вы можете переполнить буфер. Наконец, и это наиболее важный момент, буфера часто помещаются компилятором рядом с «интересными» структурами данных. Например, в случае вызова функции, которая имеет буфер в стеке, адрес возврата функции помещается в память после буфера. И если нападающий сможет переполнить буфер, он может записать поверх правильного адреса возврата свои данные и возврат из функции произойдет по адресу, определенному нападающим. Другие интересные структуры данных включают v-таблицы C++, адреса обработчиков исключительных ситуаций (exception handler addresses), указатели на функции и так далее. Дальше без рассмотрения конкретного учебного примера нам не обойтись. Посмотрите, что неправильно в этом коде: void CopyData(char *szData) { char cDest[32]; strcpy(cDest,szData); // использование cDest … } Удивительно, но не может быть ничего неправильного в этом коде. Все зависит от того, как происходит вызов функции CopyData(). Например, следующий код безопасен: char *szNames[] = {«Michael»,»Cheryl»,»Blake»}; CopyData(szName[1]); Этот код безопасен, потому что имена жестко закодированы и точно известно, что длина любой строки не превышает 32 символа. Следовательно, запрос к strcpy всегда безопасен. Однако, если единственный аргумент для функции CopyData() поступает из ненадежного источника, такого как сокет или файл, то strcpy будет копировать данные до тех пор, пока не встретит нулевой символ и если эти данные будут больше, чем 32 символа, то буфер cDest будет переполнен и вся память выше буфера будет затерта, перезаписана. К сожалению, в этом случае затертые данные — это адрес возврата из функции CopyData(). А это означает, что когда функция CopyData() закончит работу, программа продолжит выполнение из места, указанного нападающим. Это плохо. Для предотвращения переполнения буфера специалисты из Microsoft рекомендуют: переносить приложения и инструментальные средства с родного Win32 C++ кода на управляемый код. Естественно, вы должны быть реалистами и не пытаться за один вечер переместить все ваши разработки с C++ на C# или другой язык. при написании кода на C/C++ вы должны обращать особое внимание на управление пользовательскими данными: требуйте, чтобы код передавал длину буфера; проверяйте передаваемые данные на допустимость значений; защищайтесь. Например, в вышеприведенном примере вместо strcpy используйте более безопасную функцию strncpy. Итак, переполнение буфера успешно выполнено. Теперь задача хакера внедрить в систему свой код желательно, но не обязательно, переданный в той же строке. Эта задача не проста, но выполнима. Если внедрить свой код не удалось, то найденная уязвимость отлично подойдет для организации DoS атаки (отказ в обслуживании). Поскольку возврат из функции совершается на произвольный адрес, то программа или даже операционная система может аварийно завершиться, что и требовалось. Остается только подобрать длину буфера. Новые уязвимости и защита. Итак, теперь мы владеем основами для того, чтобы лучше разобраться в сути стоящих проблем. MS03-026: Переполнение буфера RPC. Как уже упоминалось, в основе протокола RPC лежит другой протокол — OSF (Open Software Foundation) RPC. Используемый в Windows протокол RPC представляет собой расширенную версию последнего. Одно из таких расширений, которое отвечает за обмен сообщениями по TCP/IP, является уязвимым местом. Обработка некорректно составленных сообщений может привести к сбою в работе системы. Это уязвимое место связано с интерфейсом DCOM, который ведет прослушивание портов RPC. Этот интерфейс обрабатывает запросы на активацию объектов DCOM, отправляемых клиентскими компьютерами на сервер, например, запросы путей в стандартном формате записи имен (UNC). Злоумышленник, которому удастся воспользоваться этим уязвимым местом, получит возможность запускать на компьютере пользователя собственный код от имени учетной записи «Локальный компьютер». Он сможет выполнять в системе любые действия, в том числе устанавливать программы, просматривать данные, изменять и удалять их, а также создавать новые учетные записи с полными правами. Чтобы воспользоваться уязвимостью, злоумышленник должен направить на порты 135, 139, 445, или любой другой специально настроенный RPC-порт, удаленного компьютера специальный запрос. Внутри локальной сети эти порты обычно открыты. Защита: установить соответствующий патч. Обратите внимание: система, исправленная патчем, выпущенным для уязвимости MS03-026 все еще остается незащищенной для уязвимости, объявленной в MS03-039. В качестве временного решения Microsoft в разных статьях предлагает: заблокировать UDP-порты: 135, 137, 138 и 445. заблокировать TCP-порты: 69 (TFTP), 135, 139, 445, 593 — используется RPC over HTTP End Point Mapper, эта служба нужна для работы RPC over HTTP, 4444 — используется удаленной командной оболочкой. отключить COM-службы Интернета (CIS) и RPC over HTTP, которые ведут прослушивание портов 80 и 443. кроме того, необходимо закрыть все остальные RPC-порты удаленного компьютера, которые, возможно, были специально настроены. Для блокировки портов в Windows XP, Windows 2003 нужно использовать встроенные брандмауэры (файрволы). В операционных системах Windows 2000 и Windows NT отсутствует брандмауэр подключения к Интернету, поэтому предлагается воспользоваться фильтрами TCP/IP. Для защиты обмена данным по сети между компьютерами под управлением Windows 2000 можно использовать протокол IPSec (Internet Protocol Security). Также предлагается отключить DCOM на всех компьютерах, которым угрожает опасность, но при этом объекты этого компьютера не смогут взаимодействовать с объектами других компьютеров. Для домашних ПК это небольшая потеря. После отключения протокола DCOM на удаленном компьютере вы уже не сможете удаленно подключить его заново. Теперь для его подключения вам потребуется физический доступ к компьютеру. Для отключения DCOM запустите Dcomcnfg.exe, выберите закладку «Свойства по умолчанию», снимите галочку с «Разрешить использование DCOM на этом компьютере», нажмите кнопку «Применить» и «OK». Dcomcnfg.exe облегчает установку значений по умолчанию в системном реестре, которые применяются ко всем приложениям на компьютере. Также можно просто выполнить REG-файл следующего содержания: REGEDIT4 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole] «EnableDCOM»=»N» Либо выполнить команду (в одну строку): reg add \\\HKLM\Software\Microsoft\OLE /v EnableDCOM /t REG_SZ /d N /f После этого необходимо перезагрузить компьютер. Примечание: отключение DCOM на компьютере не имеет никакого эффекта на локальные COM-объекты. Даже если вы отключили DCOM, а пользователь имеет физический доступ к компьютеру, то он может запустить сервер, при условии, если это явно не запрещено. Список приложений (неполный), которые требуют DCOM или имеют проблемы при отключенном DCOM: Microsoft Access Workflow Designer. FrontPage с Visual Source Safe на IIS. BizTalk Server schedule client. Win95 требует Client for Microsoft Networks или DCOM, чтобы работать с MS SNA Server. Microsoft Exchange Conferencing Server. Dell entire Open Manage suite. Veritas Backup Exec, Network based backup. Citrix NFuse Elite. Sophos (Antivirus) Enterprise Manager. SMS 2.0. Впервые бюллетень MS03-026 и соответствующее исправление безопасности были выпущены корпорацией Microsoft 16 июля 2003 года. И как всегда проигнорированы многими системными администраторами. А уже 11 августа 2003 года Microsoft начала исследование компьютерного червя, о котором сообщили службы поддержки продуктов Microsoft, а группа Microsoft Security Team выпустила соответствующее оповещение. Этот червь представляет собой компьютерный вирус, который обычно распространяется по сетям без участия пользователя и создает свои точные копии, иногда с небольшими изменениями, он выполняет сканирование порта TCP 135 произвольного диапазона IP-адресов в поисках уязвимой системы. Этот червь и его разновидности известны под именами: W32.Blaster.Worm, W32.Lovsan.Worm. Отправленный в систему пользователя код загружает и запускает файл MSBLAST.EXE с удаленного компьютера по протоколу TFTP. После запуска червь создает в реестре следующий раздел: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run «windows auto update» = msblast.exe I just want to say LOVE YOU SAN!! bill Уязвимым оказалось все семейство операционных систем на базе NT: Windows 2000, XP, 2003. Признаки заражения этим вирусом следующие: наличие необычных файлов TFTP. появляются сообщения об ошибках: «Служба удаленного вызова процедур (RPC) неожиданно прервана. Система завершает работу. Сохраните результаты выполняемых задач и выполните выход из системы. Любые несохраненные изменения в данных будут потеряны. Это завершение работы инициировано пользователем NT AUTHORITY\SYSTEM». компьютер отключается или перезагружается через небольшие промежутки времени. в папке Windows\System32 имеется один из файлов с именем Msblast.exe, Nstask32.exe, Penis32.exe, Teekids.exe, Winlogin.exe, Win32sockdrv.dll или Yuetyutr.dll. Некоторые способы защиты мы уже рассмотрели выше. MS03-039: Переполнение буфера в службе RPCSS может привести к запуску кода. 10 сентября 2003 г. корпорация Microsoft опубликовала бюллетень MS03-39, посвященный обнаружению сразу трех серьезных уязвимостей в системе безопасности операционной системы Microsoft Windows, классифицируемых по шкале угроз компании как «критические» (Critical). В который раз уязвимым опять оказалось все семейство операционных систем на базе NT. Опубликованный в рамках данного бюллетеня патч устраняет уязвимость, описанную в распространенном ранее бюллетене MS03-026, а также три новых дефекта в системе безопасности Microsoft Windows. Две из них могут привести к запуску произвольного кода на пораженном компьютере, а одна — к организации DoS атаки. Первопричина уязвимостей кроется, как всегда, в ошибочной обработке неправильных пакетов. RPCSS.EXE — это так называемый resolver/end-point mapper process, который выполняется прежде любых удаленных DCOM запросов. RPCSS представляет собой Windows NT сервис, запускающийся при старте системы. Кроме того, остаются в силе все рекомендации по временной защите, приведенные в бюллетене MS03-26. Чтобы убедиться, что в системе установлен необходимый патч: в Windows 2000 проверьте наличие ключа реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows 2000\SP5\KB824146 в Windows XP с установленным SP1 проверьте наличие ключа реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows XP\SP2\KB824146 в Windows 2003 Server проверьте наличие ключа реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Window Server 2003\SP1\KB824146 Также можно воспользоваться специальными утилитами, о которых читайте далее. MS03-034: Дыра в NetBIOS может привести к раскрытию информации. И совсем уж незамеченным на этом фоне проскочил бюллетень MS03-034 от 4 сентября. Возможно эта уязвимость не так критична, а возможно ее время еще не пришло. Уязвима опять-таки вся линейка ОС Windows: NT, 2000, XP, 2003. Проблема в защите MS Windows была в том, что атакующий мог удаленно по сети просматривать память компьютера. Эта уязвимость касается одного из сервисов NetBIOS over TCP/IP (NetBT) называемого как NetBIOS Name Server (NBNS). Сервис NBNS стандартно используется для нахождения IP-адреса компьютера по его NetBIOS имени и наоборот. При некоторых условиях, ответ на NBNS запрос в дополнение к обычному ответу, может содержать случайные данные из памяти компьютера адресата. Это данными может быть часть HTML-страницы, если пользователь на компьютере адресата использует браузер Интернет, или это могут быть другие типы данных, которые существовали в памяти в то время, когда компьютер адресата отвечал на запрос NBNS. Атака может проводиться на UDP-порт номер 137. Необходимо установить следующие патчи: для Windows 2000: Windows2000-KB824105-x86-RUS.exe для Windows XP: WindowsXP-KB824105-x86-RUS.exe для остальных систем также имеются соответствующие заплатки. Временные решения, предлагаемые Microsoft такие: заблокировать порты TCP и UDP 137, например файрволом. настроить фильтры IPSec. запретить NetBT (NetBIOS over TCP/IP). Эти способы являются временными мерами. Они могут только помочь блокировать пути нападения, но они не исправляют основную уязвимость. Эксплоит или полезная утилита? 12 августа появился эксплоит KaHT2 использующий уязвимости RPC DCOM. Он работает против большинства версий Windows, поддерживает макросы, доступен его исходный код. Короче говоря, в наше время не нужно быть суперхакером, чтобы заниматься взломом чужих систем, достаточно вовремя скачать нужную утилиту. С другой стороны KaHT2 оказался полезен автору этих строк не только для того, чтобы выявить уязвимые системы и установить необходимые заплатки, но и для того, чтобы убедить пользователей и администраторов сделать это. Кстати, KaHT2.exe опознается антивирусным пакетом DrWeb 4.30a как Exploit.DCom.6, антивирусом Касперского 4.5 как Exploit.Win32.DCom.Y. Но, естественно, нападающий не будет у себя на компьютере лечить этот файл, а заблокировать сетевую атаку антивирус не сможет, если только не скрестить антивирус и файрвол, как это уже сделала компания F-Secure со своим пакетом F-Secure AntiVirus Client Security. И опять же, скачав исходные тексты и немного поправив их, можно сделать так, что антивирус не «узнает» новую версию «утилиты».

Есть и другие утилиты-сканеры на предмет уязвимости DCOM, например, от самой Microsoft (утилита KB824146scan.exe легко находится на сайте, но она не работает под Win9Х) или от авторов XSpider: http://www.securitylab.ru/_tools/PTms03039.zip. Правда, в отличие от KaHT2 они лишь сообщают о проблеме и никак не влияют на стабильность работы сканируемой системы.

Для оценки защищенности (но не только для уязвимостей MS03-026 и MS03-039) Microsoft выпускает бесплатную утилиту — Microsoft Baseline Security Analyzer (MBSA). Загрузить ее можно отсюда: http://www.microsoft.com/technet/security/tools/Tools/MBSAhome.asp. Или отсюда: http://www.microsoft.com/mbsa/

Для проведения анализа с ее помощью, локально или удаленно, вы должны иметь права администратора. Утилита предназначена для серверов или рабочих станций работающих под Windows NT/2000/XP/.NET. Теперь попробуем понять, что же делать дальше. Обратимся к опыту самой Microsoft. Специалисты корпорации предлагают инструкцию, состоящую из трех шагов. Итак: Шаг 1. Используйте интернет-брандмауэр (firewall). До того как вы подключите свой компьютер к Интернет вам необходимо установить файрвол. Я бы добавил, что файрвол на своем компьютере необходимо иметь, даже если ваша локальная сеть не имеет выхода в Интернет. Файрвол — это первый эшелон вашей защиты. Если вы используете Windows 2000, Windows ME, 98, 95 или Windows NT, вы должны установить софтверный или хардверный файрвол. Далее следует список знакомых всем, хотя бы по названиям, софтверных файрволов: BlackICE PC Protection, McAfee Security, Symantec, Tiny Personal Firewall, ZoneAlarm. Лично я бы рекомендовал Agnitum Outpost Firewall v2. Сейчас на время отвлечемся от рекомендаций-шагов Microsoft и коротко рассмотрим опасности, поджидающие нас в сети. Главная проблема безопасности связана с тем, что, получая доступ к ресурсам многих тысяч и миллионов компьютеров в Интернете или даже нескольких десятков в вашей локальной/корпоративной сети, вы одновременно предоставляете доступ, в той или иной степени, к ресурсам вашего компьютера со стороны других компьютеров сети. Поэтому, при работе в сети: вы можете подвергаться атакам, например, того же Lovesan/Blaster; на вашем компьютере могут начать исполняться, например, при отображении на активных Web-страницах, содержащих ActiveX или Java апплеты, поступившие извне программы, которые в принципе могут выполнять на вашем компьютере любые действия, например, передавать файлы с вашей частной информацией другим компьютерам в сети, причем управлять работой удаленных компьютеров вы не имеете возможности; другие компьютеры в сети могут получить или попытаться получить доступ к файлам на вашем компьютере; на вашем компьютере может размещаться информация, типа Cookie или Referrers, по которой другие компьютеры сети смогут определить, к какой информации вы обращались; на вашем компьютере могут быть размещены без вашего ведома троянские программы, т. е. программы, передающие приватную информацию, например, пароли или номера кредитных карточек с вашего компьютера на компьютер-злоумышленника. Основным отличием «троянца» от программ-вирусов является именно то, что вирус, попавший на ваш компьютер, никак не связан со своим создателем, а «троянец» как раз и предназначен для последующего взаимодействия с пославшим его злоумышленником; вместе с запрашиваемой, в компьютер загружается и ненужная информация рекламного характера — баннеры, всплывающие окошки, флэш-ролики и т.п. Хотя сами по себе эти объекты, как правило, не могут вызвать потерю или искажение информации на компьютере, однако они существенно увеличивают время загрузки веб-страниц, особенно при работе через модем; на вашем компьютере без вашего ведома может быть размещена Spyware — программа, которая передает своему разработчику информацию о владельце компьютера и его пристрастиях, например, информацию о получаемых из сети файлах. Система Outpost Firewall относится к разряду персональных брандмауэров и обладает следующими основными свойствами: русский/английский интерфейс и документация; возможностью использования сразу же после установки без необходимости предварительной настройки; возможностями использования большого количества настроек для ограничения доступа из сети и выхода в сеть работающих приложений. Говоря конкретнее, при использовании Outpost Firewall вы можете ограничить список приложений, получающих доступ в сеть, при этом для каждого из этих приложений указать список допустимых протоколов, портов, направлений обращения. возможностью создания «невидимого» режима работы, при котором остальные компьютеры в сети не в состоянии обнаружить ваш компьютер; совместимостью со всеми версиями Windows 95/98/ME/NT/2000/XP и низкими системными требованиями: минимум iP-166, RAM 16Mb, 4Mb свободной памяти на жестком диске. используя Outpost Firewall, вы можете запретить или ограничить поступление на локальный компьютер незатребованной информации, в частности: баннерной рекламы; всплывающих окон в Web-страницах; данных с определенных Web-страниц. Ограничить или запретить использование программных компонент, встроенных в веб-страницы, таких как Java-апплеты и программы на языке JavaScript, ActiveX и т. д. Ограничить или запретить использование cookie. также вы можете: определить зону «дружественных» IP-адресов, например, адресов локальной сети, в которой установлен ваш компьютер. В этой зоне Outpost Firewall не будет осуществлять контроль и ограничивать сетевой обмен. Outpost Firewall может выдавать предупреждение при попытке атаковать ваш компьютер из сети и предотвращать такие попытки; при всем прочем Outpost Firewall ведет необходимые протоколы, которые можно просмотреть, распечатать, экспортировать, отфильтровать и т.д. Например, вот реальный протокол подозрительных пакетов, зафиксированных Outpost Firewall, на мой компьютер после моего недавнего выхода в Интернет всего лишь минут на 20: Все вышеуказанные IP-адреса — динамические и принадлежат таким же «беспарольникам» как и я. И зачем так настойчиво «продалбливать» мой 135 порт? Вопрос. И, между прочим, хотя этот трафик и невелик, за него я тоже плачу деньги. Итак, продолжим наши шаги. Шаг 2. Загрузите последние обновления. На этом шаге предлагается воспользоваться службой автоматического обновления операционной системы для загрузки свежих обновлений с сайта Microsoft. Вопрос этот для нас спорный, поскольку вместе с нужными обновлениями можно накачать и кучу не совсем нужных, да и вообще как отделить первые от вторых? А деньги придется платить одинаковые. Во-вторых, не нужно забывать о происхождении некоторых наших копий данной операционной системы. В-третьих — читайте дальше. Примечание. В локальной или корпоративной сети может быть развернута система MS Software Update Services (SUS). Суть системы проста: нужно иметь сервер SUS, который будет периодически в автоматическом режиме обновляться с сайта Microsoft, а клиенты сети (Windows 2000, XP, 2003), в свою очередь, также автоматически будут получать и устанавливать обновления с этого сервера. Для всех своих бюллетеней и описываемых в них патчей Microsoft устанавливает следующую шкалу важности выявленных угроз безопасности: Чтобы быть вовремя спасенным, т.е. предупрежденным, я бы рекомендовал подписаться на соответствующие рассылки. Но не просто подписаться, но и читать, и много думать. Из этих рассылок вы узнаете о новых уязвимостях и заплатках к ним.

Естественно, что самая лучшая рассылка в плане оперативности — это рассылка компании-производителя ПО. После каждого выпуска бюллетеня вы будете получать уведомления по e-mail. Для IT-специалистов рассылаются технические версии, для остальных предоставляются облегченные версии бюллетеней и только тогда, когда проблема может затронуть широкие массы пользователей. Различия будут в уровне детализации технической информации, а также в том, что бюллетени для пользователей будут ограничены заплатками для Офиса и Windows. Обе рассылки бесплатны. По этой ссылке вы найдете более подробную информацию: http://www.microsoft.com/security/security_bulletins/alerts.asp

Начиная с октября 2003г. Microsoft переходит на систему ежемесячного выпуска заплаток во второй вторник каждого месяца. Главное преимущество, по мнению специалистов корпорации, будет состоять в том, что это позволит клиентам установить много заплат за один раз с одной перезагрузкой в конце процесса; вторая выгода в том, что устанавливается достаточно большой промежуток времени между выпусками, для того, чтобы оценить, установить и протестировать заплатки, а также график их выпуска станет более предсказуемым. Исключения из графика могут быть сделаны, если Microsoft решит, что угроза велика и клиенты могут пострадать раньше, чем выйдет очередной патч. Бюллетени защиты кодируются именами вида MS гг-xxx, где ГГ — цифры года, XXX — уникальный номер в течение года. Дополнительно будет указываться номер для Knowledge Base.

Кроме прочих, есть хорошая рассылка на русском «Russian Security Newsline»: http://www.bugtraq.ru

Также полезны рассылки производителей антивирусного ПО. Как правило, описания критических уязвимостей в них появляются довольно оперативно, как и сами обновления к антивирусному ПО.

Если все-таки вы чего-то пропустили или недоглядели, то по следующей ссылке вы попадете на страницу «Microsoft Security Bulletin Service», которая поможет найти все выпущенные ранее бюллетени защиты в зависимости от используемого продукта и установленного сервиспака: http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/current.asp

Вот еще несколько вопросов, на которые вам необходимо будет найти ответ: А надо ли ставить патч? Ведь обновление, как я уже отмечал, может устранять совсем уж пустяковую проблему. Что делать? Необходимо установить важность, критичность проблемы, которая устраняется данным обновлением. То есть воспользоваться оценкой, даваемой самой Microsoft. Однако и Microsoft свойственно ошибаться. Например, важность патча описанного в MS02-068 сначала была оценена как «умеренная»(moderate) и только после поднятой шумихи в одной из рассылок, была повышена до «критической»(critical). После обновления систему, установленное программное обеспечение необходимо тестировать, чтобы все работало как надо. И не нужно забывать о вопросах безопасности. Ведь новое обновление может или заблокировать работу важных приложений или, устранив одну дыру, откроет еще несколько новых. Однако, не установив заплатку нельзя точно сказать, как она повлияет на вашу систему или сеть. Например, 21 мая 2003 года Microsoft выпустила патч, который был несовместим с некоторыми персональными файрволами и заблокировал доступ в Интернет многим тысячам пользователей, которые потрудились оперативно установить это обновление. Через неделю Microsoft отозвала этот патч. Возможно случится и так, что некоторые ранее установленные заплатки будут конфликтовать, например, с 4-ым сервиспаком для Windows 2000. Однако инсталлятор SP4 предупредит о проблеме. Более подробная информация отражена в статье «Microsoft Knowledge Base Article — 822384». И еще. Во-первых, при установке заплаток необходимо следить за правильным порядком их установки, т.к. может случиться такая ситуация что перед установкой патча №1, вам нужен еще и патч №2, который в свою очередь требует патча №3 и так далее. Также см. выше вопрос о тестировании. И это еще не все. Установленные заплатки могут «исчезнуть» после установки нового программного обеспечения, например, если в процессе будет запрошена («старая») инсталляция самой Windows, или восстановления его с резервной копии, на которой патч не был установлен. Поэтому-то я и говорю о спорности применения службы автообновления Windows через Интернет. Шаг 3. Используйте современное антивирусное обеспечение. Комментарии тут не нужны, у всех уже давно сформировались свои предпочтения в этой области. Отмечу лишь два важных момента: В чем сила любого антивируса? — В регулярных обновлениях, брат. Никакой антивирус не сможет блокировать атаку червя типа Lovesan/Blaster. Антивирусный монитор или сканер может остановить фактическое инфицирование системы. Однако само нападение разрушит систему RPC и заставит систему перезагрузиться, несмотря на установленное антивирусное программное обеспечение. Примечание. По оценкам различных западных специалистов компьютерные вирусы перестали быть только проблемой программистов и пользователей Интернета. Они начали оказывать серьезное деструктивное влияние на мировую экономику. А исследователи из университета Карнеги-Меллона пришли к выводу, что борьба с компьютерными вирусами будет крайне долгой, и, судя по всему, безуспешной. Гхм, естественно, что это не означает, что вы должны сидеть сложа руки. Борьба будет безуспешной, бесконечной в философском плане, типа как борьба добра со злом, и это ясно как день. Но победить, вернее, стать непобедимым, конкретно здесь и сейчас — это вполне посильная задача. «Тот, кто хорошо сражается, может сделать себя непобедимым, но не может заставить противника обязательно дать себя победить», — Сунь-Цзы. А что, на войне как на войне. Проблемы создания персонального файрвола в Windows 2000 с помощью IPSec.

В сети существует любопытный материал http://www.3dnews.ru/communication/firewall2000xp/ посвященный вопросу организации IP брандмауэра встроенными средствами Windows 2000 и XP. Статья написана несколько путано, но создать политику IPSec, следуя указаниям, вы сможете. В комментариях другого специалиста к данному материалу правильно указано, что «общий тон статьи может создать впечатление мнимой простоты и ложной защищенности у начинающего пользователя».

В действительности все еще сложнее. Для начала, освежим некоторые теоретические моменты. Схема работы IPSec представлена на рисунке. Фильтры IP реализуют определенные вами правила обработки сетевых пакетов. Каждый пакет на уровне протокола IP сравнивается с набором фильтров и выполняется одно из следующих действий: пакет (датаграмма) передается на обработку службам IPSec; датаграмма передается без каких-либо изменений; датаграмма игнорируется. Также вспомним, что хотя номера портов для TCP и UDP похожи, но это разные протоколы и номера портов у них тоже разные. Номера портов большинства служб стандартизированы, и вы можете посмотреть их в файле %systemroot%\system32\drivers\etc\services. Например, когда ваш браузер обращается к удаленному веб-серверу (служба HTTP, номер порта 80, протокол TCP), ваш компьютер выступает в роли клиента и выделяет свой произвольный порт, из диапазона доступных портов от 1024 до 65535 (это теоретически), например 1030, для получения пакетов от удаленного сервера. Практически в Windows 2000 номер произвольного порта выбирается из диапазона по умолчанию 1024-5000, для расширения диапазона до положенных 65535 нужно править реестр. А теперь конкретно и по делу. По умолчанию, в Windows 2000/XP/2003 IPSec не блокирует пакеты, которые связаны с Kerberos или IKE (Internet Key Exchange). То есть система пропускает любой пакет, имеющий порт источника или порт назначения UDP 88 или TCP 88 (Kerberos) или UDP 500 (IKE). Поэтому, применяя IP-spoofing (подмену адресов) опытный злоумышленник может получить доступ к любым портам, в том числе блокированным с помощью IPSec, определяя порт TCP 88 или UDP 500 как исходный порт. В дополнение к вышесказанному политики IPSec пропускают также трафик Broadcast, Multicast, RSVP (Resource Reservation Protocol, использует протокол IP 46 и относится к службе QoS). Начиная с SP1, в Windows 2000 добавлен параметр реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPSEC\NoDefaultExempt [dword]. Если NoDefaultExempt установлен в 1, то Windows 2000 не позволит пакетам с исходным портом TCP 88 поступать на порты компьютера, которые вы заблокировали соответствующей политикой IPSec. Этот же ключ позволяет блокировать и трафик RSVP. Microsoft настоятельно рекомендует устанавливать этот параметр равным 1. Если NoDefaultExempt установлен в 0, то это эквивалентно применению следующих IPSec-фильтров: Нижеследующая таблица описывает заданное по умолчанию поведение для разрешения трафика в различных версиях Windows 2000 и XP. В Windows Server 2003 появились еще два допустимых значения для параметра реестра NoDefaultExempt: Значение NoDefaultExempt равное 2 определяет, что multicast и broadcast трафик не освобождается от фильтрации IPSec. Но трафик RSVP, Kerberos и IKE — освобождаются. Значение равное 3 определяет, что только трафик IKE освобожден от фильтрации IPSec. Windows Server 2003 задает такое поведение по умолчанию, хотя ключ реестра NoDefaultExempt по умолчанию не существует. Однако параметр NoDefaultExempt по-прежнему не действует на пакеты IKE, и документация Microsoft объясняет этот момент следующим образом. IKE всегда получает пакет от любого исходящего адреса. Возможно нападающий использует порты IKE, чтобы напасть на IKE непосредственно и вызвать возможные проблемы. Однако порт IKE не может использоваться, чтобы атаковать другой открытый UDP или TCP порт. В этом случае IKE выполнит поиск IPSec-политики, чтобы определить, как ответить на входящий пакет. Поскольку IKE используется для того, чтобы согласовать параметры защиты между двумя хостами, то IKE в этом случае не найдет соответствующую политику защиты и не будет отвечать на входящие запросы. IKE может быть заблокирован лишь одним способом: остановкой службы IPSec, которая отключит также и фильтры IPSec. Кроме прочего, по утверждению разработчика, в IKE используются различные методы для предотвращения DoS-атак. Но если все-таки IKE подвергается атакам и эта служба не используется по назначению, но вместе с тем фильтрация IPSec необходима, то возможны следующие варианты: используйте блокировку трафика на порту UDP 500 на вашем шлюзе или файрволе; используйте TCP/IP фильтрацию (опцию «Разрешить только») и команду netstat -a для просмотра открытых UDP-портов; в Windows XP используйте встроенный файрвол. Резюме: организация IP брандмауэра встроенными средствами Windows 2000 и XP не совсем простая задача. И как верно отмечено в комментариях к все той же статье, упомянутой в начале раздела: «опыт работы показывает, что 90% попыток пользователя настроить брандмауэр, основываясь на информации, почерпнутой из указаний «нажать сюда, потом сюда» заканчивается проблемами с доступом в сеть и звонками пользователя в службу поддержки провайдера». Эпилог. Пока писалась эта статья, появились весьма интересные новости. «Корпорация Microsoft признала, что ее стратегия выпуска патчей для отдельных «дыр» в операционных системах по мере их появления оказалась неэффективной. Специалисты компании планируют развернуть новую стратегию в области безопасности программного обеспечения — безопасность по периметру. «Речь идет о глубоком партнерстве с миром firewall»,- отметил представитель корпорации. А Стив Балмер выразился так: «Мы знаем, что плохие парни продолжают писать вирусы. Цель состоит в том, чтобы блокировать их прежде, чем они достигнут ПК». Хотя Microsoft продолжит работать над совершенствованием процесса установки обновлений и патчей для своих операционных систем и продуктов, становится ясно, что слишком многие пользователи пренебрегают или попросту не успевают «залатывать» свои программы, оставаясь таким образом уязвимыми для вирусных и хакерских атак. До сих пор усилия Microsoft в области безопасности своих программ сводились к обеспечению надежности изначально создаваемого кода и последующему выпуску патчей по мере обнаружения новых «дыр». Однако последние вирусные атаки показали, что пользователи продолжительное время остаются незащищенными после публикации патчей на сайте Microsoft». Для системных администраторов, уставших от установки патчей на Windows-компьютеры, главным новшеством станет переход софтверного гиганта на ежемесячный график выпуска поправок. Microsoft приступает к выпуску обновлений для своих программ один раз в месяц, за исключением тех случаев, когда, чтобы предупредить опасность атаки, поправки надо внести немедленно, сказала директор по управлению продуктами отделения безопасности Microsoft Эми Кэрролл. «Наши заказчики жалуются, что устанавливать патчи еженедельно слишком трудоемко, — пояснила она. — А бывает, что распространение патча провоцирует появление кода-эксплойта». На сайте Microsoft будут публиковаться ежемесячные выпуски с рекомендациями по приемам защиты, а в качестве примера для обучения системных администраторов способам защиты систем компания использует свой собственный опыт — в сериях под названием «Как Microsoft защищает Microsoft». В тоже время различные специалисты высказываются в том духе, что сейчас самое время анонсировать продукт управления патчами, так как это тот рынок, на котором можно делать деньги. И это несмотря на существование Software Update Services (SUS) от самой Microsoft. Помимо прочего шквала новостей есть и такая: в Лос-Анджелесе уже подан гражданский иск к Microsoft, обвиняющий компанию в небезопасности ее продуктов. Иск подан от имени жительницы Лос-Анджелеса, которая утверждает, что из-за дефекта программы была украдена ее персональная информация. Иск станет также важным тестом для нового закона штата Калифорния, который требует, чтобы компании электронной коммерции предупреждали заказчиков, что их персональные данные могут быть украдены. Однако, по мнению независимых юристов, дело против софтверной компании практически невозможно выиграть, если только кто-нибудь не будет убит или ранен. Вот такие дела. Кроме всего прочего в октябре Microsoft выпустила еще несколько критических патчей: MS03-040 — Кумулятивный патч для Internet Explorer версий 5.01, 5.5, 6.0, 6.0 для Windows Server 2003. Публикуемый патч закрывает все ранее обнаруженные уязвимости в системе безопасности данного клиента, а также несколько новых. Новые уязвимости состоят в некорректном определении приложением Internet Explorer типа объекта возвращаемого веб-сервером в случае со всплывающим окном и во время обработки XML-данных. При посещении пользователем специально разработанного сайта, созданного нападающим, или получения от последнего специальным образом сконструированного сообщения в формате HTML, становится возможным запуск произвольного кода в атакуемой системе без осуществления каких-либо действий со стороны пользователя. MS03-041 — Уязвимость в процедуре аутентификации кода может привести к запуску удаленного кода. Уязвимость состоит в процедуре аутентификации кода, когда при условии нехватки памяти становятся возможными загрузка и запуск произвольного кода в режиме удаленного доступа посредством элементов управления ActiveX. Для проведения атаки нападающему необходимо сконструировать и разместить в Интернете вредоносный веб-сайт, эксплуатирующий данную уязвимость и убедить каким-либо образом пользователя посетить такой сайт, либо отослать вредоносное почтовое сообщение в формате HTML. MS03-042 — Переполнение буфера в сервисе диагностики ActiveX может привести к запуску кода. MS03-043 — Переполнение буфера в Messenger Service может привести к запуску кода. Нападающий может выполнять любые действия, включая создание пользовательских учетных записей с полными правами на атакуемой системе. Защита: установить соответствующий патч или отключить этот сервис. MS03-044 — Переполнение буфера в справочной системе Windows и в Центре поддержки может привести к компрометации системы. Уязвимости подвержены все без исключения версии операционной системы MS Windows. Для проведения атаки нападающему необходимо сконструировать URL, который при обращении к нему пользователя, смог бы запустить на атакуемом компьютере любой код по желанию нападающего, а также читать, удалять, вносить изменения в данные или запускать файлы в пользовательской системе. URL также может быть размещен на веб-странице или отослан непосредственно пользователю по электронной почте. Стоит отметить, что действие пользователя все же необходимо: нужно кликнуть на ссылке, но разве проблема заставить его это сделать? Короче говоря: безопасность — это не продукт, это — процесс. © 2003 Юрий Трофимов, mr(точка)Root(улитка)tut(точка)by_________________»A computer lets you make more mistakes faster than any invention in human history — with the possible exceptions of handguns and tequila.»

http://zor.org/alfa-art