15 лет назад 10 марта 2004 в 15:39 97

Большинство хакеров взламывает чужие компьютеры через всем известные бреши в программном обеспечении. Чтобы понять, как это делается, попробуйте протестировать собственную систему на наличие таких брешей. А помогут вам в этом встроенные средства Windows XP.

УЯЗВИМОСТЬ СИСТЕМЫ
Учиться на ошибках Microsoft приходится хотя бы потому, что эти ошибки легко могут превратиться в ваши собственные. Возьмем, к примеру, приложение “Центр справки и поддержки”. Internet Explorer содержит обработчик для этого приложения, который может быть запущен при переходе по специальной ссылке в браузере.

Проблема состоит в том, что браузер выполняет такие запросы с неправильными ограничениями безопасности. Один из элементов приложения “Центр справки и поддержки” (а именно uplddrvinfo.htm) содержит компонент ActiveX, позволяющий удалять файлы, которые передаются в него в качестве параметра. В результате нападающий может создать злонамеренную ссылку, которая без предупреждения пользователя удалит файлы на диске.

Хотите проверить? Создайте HTML-страницу и разместите в ней ссылку hcp://system/DFS/uplddrvinfo.htm?file://c:\windows\temp\*. После перехода по ней запустится “Центр справки и поддержки”. Если в появившемся окне нажать кнопку “Отмена” (в системе с установленными обновлениями безопасности этой кнопки не будет), а затем “Готово”, то все файлы из папки Temp будут удалены. С таким же хладнокровием “Центр справки и поддержки” может стереть и более важные файлы – достаточно просто подкорректировать ссылку. Так что закрывайте неожиданно появляющиеся окна щелчком мыши по “крестику” в правом верхнем углу и, конечно же, — качайте заплатки с сайта www.microsoft.com.

Подобные уязвимые места дают лишний аргумент в пользу того, чтобы использовать ограниченную учетную запись (например, “Опытные пользователи”) в повседневной работе. Кроме того, имеет смысл отказаться от услуг “Проводника” и прибегнуть к помощи другого файлового менеджера, например Total Commander.

Впрочем, если в коде ядра операционной системы присутствуют ошибки, позволяющие пользователю вмешиваться в работу системных процессов, он сможет получить любые привилегии, в том числе и администратора. Такие ошибки трудно исправить, подтверждением чему служит программа GetAdmin2 (smbdie.narod.ru/soft/exploit). Результатом ее запуска является открытие консоли от имени и с правами самой системы. Показательно, что уязвимое место, которое использует GetAdmin, в Windows 2000 было устранено одной из версий Service Pack, однако в коде Windows XP оно появилось вновь и для его “лечения” требуется установка SP1.

Раз уж речь зашла о системных службах, то нелишним будет упомянуть о возможности подмены такой службы на свою. Сделать это можно, отредактировав реестр. В приведенном примере замене будет подвергнута не очень нужная и малозаметная сетевая служба QoS RSVP.

Находим в реестре ветвь HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RSVP и изменяем значение строкового параметра ImagePath на такое: C:\windows\system32\srvany.exe. Далее в ветви HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RSVP\Parameters создаем строковый параметр Application со значением C:\windows\system32\net.exe и параметр AppParameters со значением “user администратор новый_пароль”.

Алгоритм работы таков. Системная утилита srvany.exe используется для запуска программы net.exe в качестве сервиса. Передавая ей параметры из AppParameters, мы добиваемся того же эффекта, что и при выполнении команды: “net user администратор новый_пароль”. Данная команда устанавливает пароль “новый_пароль” для пользователя с именем “Администратор” (в англоязычной версии – Administrator).
Для внесения этих изменений в реестр потребуется либо краткосрочный доступ с правами администратора, либо редактирование реестра из-под другой операционной системы, либо загрузка с дискеты и программа Offline NT Password and Registry Editor (о ней будет рассказано ниже).

ВЗЛОМ БАЗЫ С ПАРОЛЯМИ ПОЛЬЗОВАТЕЛЕЙ
Вскрыть базу данных с паролями пользователей — заветная мечта любого злоумышленника. В Windows XP информация о пользовательских учетных записях хранится в базе данных SAM (Security Accounts Manager). Резервная копия базы, созданная при установке, располагается в каталоге WINDOWS\repair, оригинал – в WINDOWS\system32\config. В реестре база находится в ветви HKEY_LOCAL_MACHINE\SAM. Еще со времен Windows NT пароли в SAM хранятся не в открытом виде, а в виде хэша (они зашифрованы при помощи односторонней функции). Не зная ключа, расшифровать хэш можно только методом прямого перебора.

В Windows XP хэши паролей для каждого пользователя хранятся в структуре, называемой V-блок. Она содержит NT-хэш – для локального входа, а также LM (LAN Manager) хэш – для сетевой регистрации. Более уязвимый LM-хэш используется для совместимости с ранними версиями операционной системы.
В системах Windows XP/2000 информация, передаваемая при установке связи по сети, шифруется с помощью одного из двух протоколов аутентификации: Kerberos V5 или NTLM (NT LAN Manager). А в системах Windows 9x/3.11 используется протокол LAN Manager. Windows XP вынуждена поддерживать более слабую LM-аутентификацию, дабы иметь возможность работать в сети вместе с престарелыми операционными системами.

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

С появлением утилиты Syskey (случилось это еще в версии Windows NT 4 Service Pack 3) вскрытие базы SAM стало занятием весьма утомительным. В Windows XP утилита эта активизирована по умолчанию и дополнительно шифрует хэш паролей так называемым стартовым ключом, который случайным образом генерируется компьютером.

При возможности кратковременного доступа с правами администратора порядок действий по взлому паролей элементарен. В программе LC+4 (lcp.da.ru) надо создать дамп базы SAM: следуйте в меню “Импорт” > “Импорт с локального компьютера”. Далее взлом можно продолжать с правами обычного пользователя. Успех мероприятия будет зависеть от настроек LC+4, длины паролей и наличия LM-хэша.

Для защиты базы с паролями пользователей первым делом следует отказаться от использования LM-хэша. Эта мера приемлема для локальных машин и компьютеров, которым не требуется сетевое взаимодействие с Windows 9x/3.11. Выполните в меню “Пуск” команду secpol.msc и в оснастке “Локальные параметры безопасности” > “Локальные политики” > “Параметры безопасности” включите политику “Сетевая безопасность: не хранить хэш значений LAN Manager при следующей смена пароля”. Теперь вам потребуется заново установить пароли для каждого пользователя (можно переустановить старые), чтобы обновить информацию в базе SAM и заменить предыдущий LM-хэш паролей на пустую строку.

Обязательное использование Syskey повысило защищенность SAM и, как следствие, общий уровень безопасности всей системы. Теперь условия взлома ужесточились и для успеха требуется либо получение прав администратора (чтобы создать дамп), либо использование платных программ. В частности, утилита SAMInside (www.insidepro.com) может выполнять подбор паролей, если с атакуемого компьютера удается скопировать файлы реестра sam и system. Но, как показали эксперименты, обезвредить такие программы очень просто.

Выполняем в командной строке команду syskey, в появившемся окошке “Защита БД учетных записей Windows XP” нажимаем “Обновить” и самостоятельно указываем пароль запуска (для простоты он может быть таким же, как пароль администратора). Затем подтверждаем свои намерения нажатием “ОК”.
При следующей загрузке Windows вам просто придется вводить пароль два раза. Теперь, даже зная пароль запуска, хакер средней руки не сумеет использовать его себе во благо, поскольку программ, позволяющих это сделать, пока нет.

СБРОС ПАРОЛЯ
Хэш пустого пароля в Windows точно известен и неизменен. Благодаря этому недостатку пароль пользователя можно сбросить, установив в V-блоке хэши, соответствующие пустому паролю. Эту задачу успешно решает программа Offline NT Password and Registry Editor (home.eunet.no/~pnordahl/ntpasswd).
Поскольку утилита работает в диалоговом режиме, вам нужно будет только выбрать монтируемый диск, на котором расположен системный реестр, и для установки пустого пароля указать соответствующий пункт меню. Даже при включенном Syskey метод срабатывает, и учетная запись остается без пароля.
Более совершенный метод сброса пароля – замена V-блока в базе SAM.

При помощи программы Offline NT Password and Registry Editor или ERD Commander (www.winternals.com) можно вычислить хэш для нового пароля и поместить его в SAM. Результат – несанкционированная смена пароля любой учетной записи.

Для того чтобы обезопасить себя от такого рода атак, необходимо полностью запретить загрузку со сменных носителей, физически удалив из системного блока привод компакт-дисков и дисковода. Если компьютер является сервером, следует принимать меры на уровне оборудования: парольную защиту, встроенную в жесткий диск, или механические замки.

Кроме того, можно установить пароль в BIOS как на изменение настроек, так и на загрузку. Но, к сожалению, такая защита снимается нехитрой манипуляцией с батарейкой.

КРАЖА ЗАШИФРОВАННЫХ ДАННЫХ
Конфиденциальность данных не может гарантировать даже такая служба, как EFS (Encrypting file system, шифрующая файловая система). Во-первых, после шифрования файла на диске остается его первоначальный образ, который можно восстановить программой для работы с жестким диском на низком уровне (diskedit.exe из Norton Utilities), а затем беспрепятственно прочитать незашифрованные данные.

Все дело в том, что после шифрования исходный файл лишь помечается как “удаленный”, на самом же деле он продолжает существовать на жестком диске, пока на его место не будет записана другая информация. Чтобы исправить такое положение, следует после шифрования запускать утилиту командной строки cipher с ключом /w. Она заполняет случайными значениями все неиспользуемое дисковое пространство, исключая восстановление первоначального образа.

Во время обращения к файлу, защищенному EFS, он автоматически расшифровывается и хранится в памяти в открытом виде, поэтому не исключено, что в процессе работы Windows может поместить расшифрованный файл во временные папки TEMP или TMP. К тому же некоторые программы из семейства Microsoft Office при работе создают временные копии открытых файлов для восстановления данных в случае сбоя. Эти копии не шифруются автоматически. Поэтому лучше шифровать не отдельные файлы, а директории, где они хранятся. Можно зашифровать и папку TEMP, тогда временные файлы и копии ваших данных будут зашифровываться автоматически.

Однако то, что данные зашифрованы, совсем не означает, что их никто не сможет прочесть. Последняя версия программы Advanced EFS Data Recovery (www.elcomsoft.com/aefsdr.html) позволяет расшифровывать данные, закодированные при помощи EFS в версиях Windows XP/2000 даже при наличии Service Pack.

АТАКА ЧЕРЕЗ СЕТЬ
Алгоритм работы брандмауэра, встроенного в Windows XP, тоже имеет свои недостатки — из-за особенностей реализации он позволяет контролировать только входящий трафик. В некоторых случаях – например, если в компьютере уже сидит троянский вирус, позволяющий злоумышленнику удаленно управлять машиной, – этого бывает недостаточно. Брандмауэр ХР тут бесполезен, поскольку контролировать исходящий трафик он не может. Чтобы застраховать себя от подобных угроз, воспользуйтесь еще одним встроенным средством – фильтрами протокола IP Security.

Довольно интересно, что возможности, которыми мы собираемся воспользоваться, первоначально создавались только для управления протоколом защищенной передачи данных. Однако после выпуска бета-версии Windows 2000 (в которой впервые появился IPSec) бета-тестеры нашли способ использовать IPSec как гибкую систему пакетной фильтрации, которая позволяет серверу выборочно пропускать либо блокировать трафик. А несколько позже Microsoft выпустила соответствующую документацию.
Фильтры протокола IPSec устанавливаются в оснастке “Локальные параметры безопасности”, в разделе “Политики безопасности IP”. По умолчанию здесь уже определены три политики — они используются для работы IPSec и их трогать не стоит, лучше создать собственную.

Для этого в контекстном меню выберите пункт “Создать политику безопасности IP”, в окне мастера уберите галочку “Использовать правило по умолчанию”. Каждая политика состоит из списка фильтров и наша — не исключение. Чтобы получить возможность блокировать порты, нужно создать свой список фильтров. Для начала в свойствах политики на закладке “Правила” уберем галочку “Использовать мастер”, а затем воспользуемся кнопкой “Добавить”. На закладке “Список фильтров IP” снова нажмем “Добавить”.

В появившемся окне указываем имя списка (например, “Блокировка портов”) и приступаем к процессу создания фильтров. Вновь нажимаем кнопку “Добавить”. В появившемся окне свойств фильтра, в принципе, все понятно – адрес источника пакетов устанавливаем в “Мой IP-адрес”, адрес назначения в “Любой IP-адрес”. Теперь, чтобы заблокировать порт, используемый Back Orifice 2000, следуем на вкладку “Протокол”, выбираем TCP, в разделе “Пакеты из этого порта” указываем 54320. Сконфигурировав параметры, закрываем окно и переходим к списку (в нем уже появился наш фильтр).

Закрываем и это окно. Выбираем имя нашего списка фильтров (если помните, мы назвали его “Блокировка портов”) и переходим на вкладку “Действия фильтра”. Здесь указываем “Запретить” — это означает, что действия описанные нашими фильтрами, следует запрещать. Результатом будет блокировка для исходящего и входящего трафика порта 54320, на котором по умолчанию работает Back Orifice 2000. Ориентируясь на данные о портах, используемых троянами (www.simovits.com/nyheter9902.html), заблокируйте наиболее популярные из них. Для активирования политики в оснастке “Локальные параметры безопасности” щелкните по ней правой клавишей мыши и выберите “Назначить”.

Используя подобную технику, можно отсеять львиную долю посягательств со стороны не слишком компетентных взломщиков. В контексте сетевой безопасности хочется нельзя не упомянуть о некоторых настройках. Не расставаясь с оснасткой “Локальные параметры безопасности” загляните в “Локальные политики” > “Параметры безопасности”. Если в вашей сети используются машины с операционными системами версии Windows 2000 и выше, то для усложнения перехвата аутентификационных пакетов установите значение политики “Сетевая безопасность: уровень проверки подлинности LAN Manager” в “Отправлять только NTLMv2 ответ, отказывать LM и NTLM”.

Политику “Сетевой доступ: пути в реестре, доступные через удаленное подключение” настоятельно рекомендуется очистить, поскольку открывать реестр для удаленного доступа потенциально опасно. К политике “Сетевой доступ: разрешать анонимный доступ к общим ресурсам” также следует отнестись скептически: в большинстве случаев ее лучше отключить.

Напоследок заблокируем в оснастке “Службы” (меню “Пуск” > services.msc) встроенных троянских коней Windows: NetMeeting Remote Desktop Sharing и “Удаленный реестр”.

НАБЛЮДЕНИЕ ЗА СВОЕЙ СИСТЕМОЙ
За безопасностью, как и за здоровьем, нужно следить регулярно. В Windows XP это можно делать при помощи командной строки (“Пуск” > cmd).

Контролировать процессы, работающие в системе, помогает утилита tasklist. Используя ключ /v, можно получить информацию о пользователях, запустивших процессы на выполнение. К примеру, из полученного листинга хорошо видно, что программа GetAdm2, которую мы описывали в начале статьи, присваивает себе права NT AUTHORITY\SYSTEM, в то время как обычная консоль запускается с правами локальной учетной записи.

Указав после команды tasklist ключ /m, вы получите информацию о DLL-библиотеках, которые используют процессы. Иногда это помогает при отслеживании инфицированных вирусом программ.
Для отлавливания троянов весьма полезной может оказаться утилита netstat. С ключом -o эта команда показывает идентификаторы процессов (PID), использующих сетевое подключение. Информацию о подозрительном процессе можно получить, применив следующий шаблон (допустим, нам крайне подозрителен процесс с PID 333): tasklist /svc /fi “PID eq 333”.

Кроме того, у вас есть возможность контролировать файлы, открытые каждым процессом, – за это отвечает утилита openfiles. Для работы с ней нужно ввести команду openfiles /local on, активизировав таким образом режим мониторинга. Системные ресурсы жалеть не стоит: утилита весьма эффективна в борьбе с различными “бортовыми самописцами” – клавиатурными шпионами, которые перехватывают информацию, введенную с клавиатуры, и записывают ее в файл. После перезагрузки просмотреть список процессов и открытых ими файлов можно, выполнив в консоли openfiles.

Если вы хотите обеспечить безопасность Windows, не ленитесь ее взламывать. Занимаясь этим увлекательным делом и одновременно размышляя о “противоядии”, вы поднимете свои знания о работе операционной системы на качественно новый уровень.

Размер имеет значение…

Увлекаясь новыми методиками взлома и защиты, не стоит забывать о вечном — о паролях. Достойный пароль с использованием грозных символов */~%#)@ и комбинаций клавиши Alt с цифровым кодом делает честь любому системному администратору и уж тем более простому пользователю.

Убедительный размер пароля способен свести на нет все усилия программ вроде LC+4 или SAMInside. Устанавливая пароль, не забывайте, что в Windows XP/2000 его длина может достигать 128 символов! И уже при длине более 14 знаков отключается столь уязвимый LM-хэш. Пароль в виде хорошо известного отрывка из “Евгения Онегина”, набранного латинскими буквами, может привести в трепет кого угодно. Посудите сами: Vjq lzlz cfvs[ xtcnys[ ghfdbk, Rjulf yt d ienre pfytvju, Jy edf;fnm ct,z pfcnfdbk B kexit dslevfnm yt vju. Пароль выглядит угрожающе, но запомнить его совсем не сложно:

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

Специалисты разработали рекомендации по созданию усиленных паролей, использование которых уменьшает вероятность успешной “атаки со словарем”:
1. Пароль должен содержать не менее шести символов. Среди них должны быть символы по крайней мере трех из следующих типов: заглавные буквы, строчные буквы, цифры и специальные символы (то есть *, %, &, !).
2. Пароль не может включать в себя учетное имя пользователя.
3. Пароль не может содержать часть полного имени пользователя.

Заставить Windows автоматически проверять устанавливаемые пароли на соответствие данным правилам можно в оснастке “Локальные параметры безопасности” > “Политики учетных записей” > “Политика паролей”, где следует активировать политику “Пароль должен отвечать требованиям сложности”.
Кстати, пароль на основе “Евгения Онегина” полностью удовлетворяет требованиям данной политики.