femap
Главная / Статьи / Windows / Основы безопасности Windows XP

Основы безопасности Windows XP

( 0 Голосов )
Adrax 08.12.2008

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

На момент написания этой статьи (2 декабря 2006 г.) на моей Windows XP Pro SP1 установлены следующие патчи: на WMF-уязвимость (причём неофициальный, от Ильфака Гильфанова - он справляется лучше, чем творение Майкрософта), на уязвимость в CSRSS (WindowsXP-KB835732-x86-RUS), GDI+(WindowsXP-KB833987-x86-RUS), Plug'n'Play (WindowsXP-KB899588-x86-RUS), Server (WindowsXP-KB923414-x86-RUS), на способность повышения привилегий локального пользователя через сообщение WM_TIMER (Q328310_WXP_SP2_x86_RUS), на дырки в реализации протокола IPv6 (WindowsXP-KB922819-x86-RUS), куча заплаток на MS Internet Explorer 6 (IE6.0sp1-KB925486-WindowsXP-x86-RUS, IE6.0sp1-KB918899-Windows-2000-XP-v2-x86-RUS, IE6.0sp1-KB916281-Windows-2000-XP-x86-RUS, IE6.0sp1-KB905915-Windows-2000-XP-x86-RUS).

Разумеется, что это не полный список уязвимостей Windows XP. Я советую всем зайти сюда - здесь 3APA3а перечислил основные уязвимости и даже присвоил им рейтинги согласно их потенциальной опасности.

Ну а теперь перейдём к тому, что нужно делать руками. Я надеюсь, что все знают о редакторе реестра - программе REGEDIT, вызываемой одноимённой командой из "Пуск"->"Выполнить"? В реестре нам придётся частенько ковыряться...

Итак, сначала разделаемся со страшным багом всех NT-систем, начиная с NT 4.0 и заканчивая Vista - с дырой RPC DCOM. Если у вас есть программа DCOM Bobulator - это можно сделать и ей, а если нет - заходим REGEDIT'ом в HKLMSOFTWAREMicrosoftOLE и находим там параметр EnableDCOM. Чтобы отключить DCOM, нужно присвоить этому параметру значение 0. Кроме bobulator'а RPC можно прикрыть и wwdc (Windows Worms Doors Cleaner) - это будет даже лучше, потому что эта утилита способна прикрыть ещё несколько опасных дырок в вашей обороне. Также советую отключить Windows Task Scheduler: HKLMSystemCurrentControlSetServicesSchedule, параметру Start присвоить значение 0.

Заходим в "Панель управления" ->"Администрирование" ->"Управление компьютером" ->"Локальные пользователи и группы". Из пользователей нужно удалить всех, кто реально не нужен. В том же "Администрировании" переходим в "Локальные политики безопасности" ->"Настройки безопасности" ->"Учётные записи". Рекомендую переименовать Гостя и Администратора во что-нибудь невообразимое. Эти меры повысят сетевую безопасность.

Набираем в "Пуск" ->"Выполнить" gpedit.msc, давим Enter и попадаем в редактор групповой политики. Там выбираем "Конфигурацию компа", потом "Конфигурацию Windows" ->"Локальные политики" ->"Параметры безопасности" Там выберем "Сетевая безопасность: уровень проверки подлинности" - значение должно быть "Отправлять только NTLM-ответ" - так надёжнее. Где-то здесь, кстати, можно отключить учётку Гостя.

Ещё один потенциально опасный момент: когда вы вставляете CD или DVD в оптический привод, система анализирует находящийся на нём файл autorun.inf и автоматически запускает прописанный там файл. Я отключил Autorun: HKLMSYSTEMCurrentControlSetServicesCdrom, находим параметр Autorun типа dword, приравниваем его к нулю.

Пара уязвимых моментов связана с чтением файлов при загрузке системы. Оказывается, процесс Winlogon ищет системные DLL, начиная с домашнего каталога юзеров, а поиск оболочки (Explorer.exe) начинает вообще с корня диска, ориентируясь только по имени файла. Т.е., кто-нибудь из тех, кто имеет учётную запись на вашем компе (а при желании и из сетевого окружения), может поиметь системный процесс при загрузке оси, подкинув свои файлики в нужное место. Для предотвращения такой ситуации необходимо включить безопасный режим поиска DLL: зайти в HKLMSYSTEMCurrentControlSetControlSessionManager и создать dword-параметр SafeDllSearchMode, равный 1. Далее, зайдите в HKLMSoftwareMicrosoftWindowsNTCurrentVersionWinlogon, найдите там параметр Shell и пропишите в нём полный путь до используемой оболочки. В моём случае это c:WINDOWSExplorer.exe Если кто-то ненавидит стандартный Проводник, пусть пропишет здесь путь к любимому Total Commander'у или Far'у.

По умолчанию Windows не показывает расширения файлов. Кому-то это кажется удобным, я считаю это небезопасным. В окне Проводника есть менюшка "Сервис", в ней "Свойства папки". В них выберите "Вид" и уберите лишние галочки: "Скрывать расширения...", "Не показывать скрытые...", "Скрывать защищённые системные файлы", "Использовать простой общий доступ". Теперь вы видите гораздо больше в своих папках. Объясню, что к чему.

Файлы с расширением .exe - исполняемые. Стоит вам его запустить, как он сможет сотворить с вашим компом почти всё. Поэтому необходимо запомнить хотя бы основы компьютерной гигиены:

  1. .exe - не фотки и не фильмы. Файл с именем foto.exe или multik.exe - это 100% обман, рассчтанный на полного ламера
  2. .exe - это потенциальная опасность. Не запускайте .exe-шники, полученные из сомнительных источников

При наличии антивируса проверьте их. Нет антивируса - откройте их отладчиком и поставьте бряки на основные потенциально опасные функции (если вы и вправду решились на это, помните - лучше проводить такие эксперименты на отдельном компе или хотя бы на виртуальной машине типа VMWare): CreateFileA, RegOpenKeyA, RegOpenKeyExA, LoadLibraryA, FindFirstFileA, FindFirstFileExA. Даже если код .exe-шника запакован или зашифрован, в момент остановки на вышеперечисленных функциях он будет распакован в памяти и пригоден для беглого анализа (опять же, никто не мешает вам использовать для снятия паковщика/протектора автоматическими распаковщиками; просто проверьте PEiD'ом имя пакера и поищите к нему распаковщик). Что должно вас насторожить в коде программы? Команды SMTP-сервера (HELO, MAIL FROM, MAIL TO, RCPT TO), команды виндовской консоли (DEL, COPY, RD, RMDIR), ветви автозапуска реестра (RunServices, Run, RunOnce). Нелишним будет и просмотреть таблицу импорта проверяемого файла. Если программа, которая , судя по описанию, не имеет никакого отношения к сети, импортирует библиотеку WS2_32.DLL, содержащую сетевые функции - насторожитесь. Вообще, чем больше вы просмотрите различных .exe-файлов, тем яснее вам будут отличия легальных программ от малвари.

Помните, кроме .exe-шников существует много других способов подачи юзеру вредоносного кода. Некоторые из них рассчитаны на незакрытые дыры в системе - это уязвимость в GDI+ (эксплоит в графическом файле), уязвимость WMF, уязвимость в zipfldr.dll и уязвимость в MSIE (Internet Explorer) при обработке .ani-файлов. Соответственно, эти дыры необходимо запатчить.

Отдельную тему представляют собой скрипты. .cmd- и .bat-файлы - это сценарии консоли, и не менее опасны, чем .exe-шники. Но никто не мешает вам щёлкнуть по скрипту правой кнопкой мыши, выбрать "Изменить" и просмотреть, какие же команды он запускает. Скрипты .js и .vbs можно отключить, зайдя в HKLMSoftwareMicrosoftWindows Script HostSettings и приравняв параметр Enabled к нулю. Хуже обстоит дело со скриптами, встраивающимися в документы и способными нести в себе макровирусы. Могу посоветовать только указать в MS Office высший уровень безопасности по отношению к скриптам и отсутствие доверенных источников (в MS Office XP это установки по умолчанию).

Помнится, в 64-битных версиях Windows была введена технология Patch-Guard, препятствующая перезаписи образа ядра в памяти. Хитрые хакеры выкрутились! Они отъедают всю оперативную память, заставляя Windows активно свопиться, а потом переписывают засвопленное ядро в файле подкачки. А ведь этого можно избежать: HKLMSYSTEMCurrentControlSetControlSessionManagerMemoryManagement, присваиваем параметру DisablePagingExecutive значение 1.

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

net share c$ /delete
net share d$ /delete
net share e$ /delete (и так с каждым диском)
net share admin$ /delete
net share ipc$ /delete

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

Многие называют MS Internet Explorer (MSIE) самым дырявым браузером в мире. Это не так. Просто большинство юзеров совершенно не уделяют внимания его настройкам безопасности. Откройте MSIE, выберите "Сервис", "Свойства обозревателя", "Безопасность". Для уровня "Интернет" нажмите "Другой" и нечеловечески урежьте всё, что там есть: откажитесь от Java, ActiveX, iframe, только "Передачу незашифрованных данных форм" оставьте, а то поисковиками попользоваться не дадут.

Тут, конечно, половина читателей завопит: "Adrax! Ты чё? Мы же на форумах отрываемся - нам без Явы и АктивИкс никак нельзя!" Спокойно, братва! Вы же помните URL-адреса форумов, где отрываетесь? Так вот, для уровня "Надёжные узлы" жмякаем "Узлы" и прописываем туда ваши форумы. Проще говоря, необходимо запретить потенциально опасные элементы web-страниц, разрешив их только там, где это действительно нужно. Хакер сможет заманить вас на свою страничку, чтобы впарить с помощью ActiveX трояна (а большинство уязвимостей в MSIE как раз реализуется активным содержимым страниц), но вряд ли он будет захватывать сервер, на котором крутится ваш любимый форум, чтобы добавить в него эксплоитный код. И поставьте в свойствах Интернет-подключения галочку на "Защитить" или, если не доверяете стандартному брандмауэру, поставьте какой-нибудь файрволл от стороннего производителя. И отключите IP-маршрутизацию от источника: HKLMSYSTEMCurrentControlSetServicesTcpipParameters, DisableIPSourceRouting=2 (тип dword).

Помните, я просил вас отключить "Простой общий доступ" в "Свойствах папки"? Если вы это сделали, то теперь сможете на NTFS раздавать права доступа к папкам и файлам. Лично я создал папку Storage, в её "Свойствах" на вкладке "Безопасность" я удалил всех юзеров, сняв заодно галочку с "Наследования" (Windows, конечно, ругалась на такой беспредел, но я был непреклонен). Теперь к этой папке не имеет доступа никто - даже я сам:) Но я как владелец обладаю привилегией изменять права доступа. Т.е., если мне нужно что-то из этой папки (а там у меня резервная копия ядра системы и кое-какие секретные документы), я добавляю сам себя с правами "Только чтение" в список допущенных юзеров, а когда закончил работу - снова себя оттуда удаляю. Такая фишка доступна владельцам Windows XP Professional, на Home вы простой общий доступ не отключите. Придётся изучать консольную команду cacls, хотя... зайдите в систему в безопасном режиме - тогда, говорят, кое-какие настройки появляются (хотя сам, честно говоря, не знаю - это к Andr0meda вопрос, он по Home спец) Аналогичные права доступа имеют и ветви реестра, настроить доступ к ним можно прямо из REGEDIT'а.

В борьбе с малварью можно пойти и другим путём. Подумайте, что делают большинство эксплоитов и бэкдоров? Правильно - предоставляют шелл! В качестве шелла используется штатный командный интерпретатор WinNT - CMD.EXE Соответственно, если лишить хакера cmd.exe, то атака провалится. Как это сделать? Ткните правой кнопкой мыши по пиктограмме "Мой компьютер" (или нажмите Win+Break), выберите "Дополнительно", "Переменные окружения". Смените переменную ComSpec с "cmd.exe", например, на "superconsol.exe", зайдите в c:Windowssystem32 и переименуйте cmd.exe в superconsol.exe Оп-па! Теперь у вас два командных интерпретатора: cmd.exe и superconsol.exe.

Дальше напишите небольшую программку, выводящую на экран MessageBox с сообщением типа "Nas poimeli!" (как это сделать - см. сюда) и назовите её cmd.exe Теперь осталось только заменить настоящий cmd.exe нашим, поддельным. В Windows работает ревизор системных файлов SFC, который не позволит вам этого сделать, поэтому придётся перезагружаться в безопасном режиме и там подменять cmd.exe.

Итак, после проведённых манипуляций у нас есть superconsol.exe, запускающий командный интерпретатор, и cmd.exe, выдающий предупреждение. Зачем это нужно? Эксплоиты и черви используют, как правило, ошибки переполнения буфера. Буфера малы, поэтому размер эксплоитного кода тоже ограничен - хватает места на десяток ассемблерных команд, и cmd.exe из эксплоита вызывается просто по имени. Командные скрипты при запуске также запрашивают cmd.exe А теперь прикажите Total Commander'у открыть сеанс DOS - он послушно открывает superconsol.exe! И Far Manager тоже передаёт команды в новый интерпретатор - всё потому, что они анализируют переменную среды ComSpec, в которой мы прописали новое имя шелла. Правда возникает проблема с .bat-скриптами: как я уже сказал, они запускаться не будут (вернее будет запускаться поддельный cmd.exe с предупреждением). Это плохо, если у вас есть необходисмость регулярно вводить десяток-другой консольных команд. Как выкрутиться? Создайте в Блокноте файл, пропишите в нём необходимую вам последовательность команд (ясный хрен, отделяя их друг от друга клавишей Enter) и разместите его под именем 1.bat в c:Windowssystem32 Понадобится запустить этот батник - "Пуск"->"Выполнить", superconsol.exe и уже в консоли наберёте 1.bat Другим путём скрипт запустить не получится.

Такая нехитрая мера заставит хакеров идти лесом (не всех, конечно, ведь можно и свой шелл написать и на атакуемую тачку залить), но... сколько же легального софта построено на .bat-скриптах! Denwer, Bart's PE Builder, даже Rootkit Revealer! Понятно, что поюзать их вы уже не сможете. Я выкрутился так - перенёс Denwer на виртуальную машину VMWare, где у меня стоит Windows XP с конфигурацией по умолчанию. Вы вправе сами решать: использовать такую меру защиты или нет.

"А как же антивирус? А файрволл?" - спросят читатели. Файрволл - стандартный брандмауэр Windows XP, антивирус ставлю где-то раз в месяц, чтобы проверить самого себя (разумеется, антивирус ничего не находит, и я тут же его удаляю). В остальное время использую набор системных утилит с SysInternals:

Process Explorer NT
Просмотрщик запущенных процессов. Выдаёт тотальную инфу о процессах: образ файла и путь к нему, потоки, подгружаемые DLL.
Autoruns
Уникальная тулза! Мониторит все места автозапуска малвари, список драйверов и служб, BHO (BrowserHelperObjects), native-API-приложения, интерфейс входа в систему, плагины Проводника и ещё кучу всего! Позволяет создавать обстоятельный отчёт и сравнивать отчёты между собой. Must have для каждого.
Filemon и Regmon
Просматривают обращения процессов, соответственно, к файлам и реестру.

Плюс ещё использую Process Hunter от Ms-Rem - классный просмотрщик скрытых процессов, RootkitHookAnalyzer - утилита, показывающая перехваты функций ядра руткитами. Резидентно у меня висит WinPatrol - маленькая смешная программа, тем не менее, умеющая мониторить многие важные параметры системы и предупреждать об их изменении.

Данный арсенал сводит на нет всякую потребность в антивирусах. Могу также добавить, что, несмотря на необходимость самому проводить аудит системы, данный комплекс утилит обеспечивает гораздо более прочную защиту, чем любая автоматика. Я забочусь о безопасности и стабильности своей системы и потому не хочу отдавать её на попечение каких-то софтовых монстров, отъедающих море ресурсов, требующих ежесекундного обновления и не справляющихся с элементарной угрозой. Лучше я лишний раз ручками поворошу свою Винду, просмотрю - что нового появилось, и чем это новое занимается - и буду спокоен.

Советую всем читателям осознать преимущества подобного подхода и последовать моему примеру

Добавить комментарий


Защитный код
Обновить

© ProCae.ru 2007-2010 При полной или частичной перепечатке редакционных и авторских материалов гиперссылка на «ProCae.ru» обязательна

Rambler's Top100
доска объявлений размещение