NT: проблемы безопасности
Дмитрий Леонов
Опубликовано: dl, 25.11.01 21:51
 (в настоящее время представляет собой разве что историческую ценность)
    Цель этой статьи - освещение некоторых проблем
    безопасности Windows NT и способов их устранения.
    Была использована информация из следующих
    источников: 
    Троянская конница     
    
Дистрибутивы NTWS4.0 и NTS4.0 включают утилиту
    rollback.exe, предназначенную для настройки
    пользователями предустановленной системы. Ее
    запуск приводит к очистке реестра (без
    предупреждения) и возврату к концу Character Based Setup
    (часть установки до появления GUI). Запуск ее из-под
    рабочей системы приводит к тем же невеселым
    последстиям (потеря аккаунтов, настроек
    протоколов, пользовательских настроек и т.п.).
    Найти ее можно на CD-ROM с NT в каталоге
    Support\Deptools\<system>\
    Подробности: http://support.microsoft.com/support/kb/articles/Q149/2/83.asp
        
    
Каталоги %systemroot% и %systemroot%\system32 имеют по
    умолчанию право доступа Change для Everyone.
    Это может привести к самым разнообразным
    последствиям типа замещения части системных dll
    "троянскими" и т.п. При этом они могут быть
    вызваны из самых разных программ - в том числе, из
    программ, работающих с системными правами
    доступа.
    Для защиты достаточно грамотно установить права
    доступа. Кстати, программа DumpAcl позволяет вывести
    права доступа для различных объектов - файлов,
    реестра, принтеров и т.п. в общий список, удобный
    для просмотра.     
    
В реестре есть ключ 
    <HKLM\SYSTEM\CurrentControlSet\Control\Lsa> 
    со значением 
    <Notification Packages: REG_MULTI_SZ: FPNWCLNT>     
    
Эта DLL существует в сетях, связанных с Netware. Поддельная FPNWCLNT.DLL в каталоге
    %systemroot%\system32 вполне может проследить все пароли.
    После копирования и перезагрузки все изменения
    паролей и создание новых пользователей будут
    отслеживаться этой dll и записываться (открытым
    текстом) в файл c:\temp\pdwchange.out.
    Для защиты достаточно удалить этот ключ и
    защитить эту часть реестра от записи.     
    
Испольняемые файлы могут быть переименованы в
    файлы с любым расширением (или без расширения), но
    они все равно запустятся из командной строки
    (например, переименуйте notepad.exe в notepad.doc и
    запустите "start notepad.doc"). Ну и что, спросите Вы ?
    Тогда попробуйте представить процесс прочтения
    файла rollback.exe, переименованного в
    readme.doc. Очень эффективно.     
    
Большая часть реестра доступна для записи
    группе Everyone. Это же относится и к удаленному
    доступу к реестру. Может оказаться опасным,
    особенно в сочетании с автоматическим импортом
    reg-файлов. В реестре NT4.0 появился ключ
    <HKLM\SYSTEM\CurrentControlSet\Control\SecurePipeServers\winreg>
    при наличии которого доступ к реестру отрыт
    только администраторам. В NT Server этот ключ
    существует по умолчанию, в NTWS может быть
    добавлен.
    Подробности: http://support.microsoft.com/support/kb/articles/Q155/3/63.asp
        
    
Проблемы приложений
        
    
В FrontPage 1.1 пользователь IUSR_* имеет право доступа Full
    Control к каталогу _vti_bin и Shtml.exe. Если взломщик
    узнал пароль IUSR_<hostname> (обычно достаточно
    простой), то он может получить доступ к каталогу с
    исполняемыми файлами. В FrontPage'97 это упущение
    исправлено.
    Подробности: http://support.microsoft.com/support/kb/articles/Q162/1/44.asp
        
    
При запуске администратором в Windows NT 3.51 File Manager
    из панели MS Office 7.0, он получает доступ к каталогу,
    на который у него нет прав доступа. Это связано с
    тем, что File Manager наследует права 'backup and restore permissions'
    от панели Office, которые используются Офисом для
    записи пользовательских настроек в реестр.
    Ошибка исправлена начиная с Office7.0a
    Подробности: http://support.microsoft.com/support/kb/articles/Q146/6/04.asp
        
    
Служба FTP позволяет устанавливать пассивные
    соединения на основе адреса порта, указанного
    клиентом. Это может быть использовано взломщиком
    для выдачи опасных команд службе FTP.
    Реестр содержит ключ 
    <HKLM\System\CurrentControlSet\Services\MSFTPSVC\Parameters> 
    со значением 
    <EnablePortAttack: REG_DWORD: > 
    Убедитесь, что значение установлено в '0', а не '1'.
    Подробности: http://support.microsoft.com/support/kb/articles/Q147/6/21.asp
        
    
Несанкционированный доступ
        
    
Драйвер ntfsdos.exe
    позволяет читать раздел с NTFS из DOS,Windows,Windows'95.
    Права доступа при этом игнорируются. Авторами
    был обещан вариант драйвера с возможностью
    записи.
    Аналогичный драйвер (read only) существует для Linux: http://www.informatik.hu-berlin.de/~loewis/ntfs/
        
    
Один из популярных методов проникновения в
    систему - подбор пароля. Для борьбы с этим обычно
    устанавливают блокировку учетной записи
    пользователя после определенного числа
    неудачных попыток входа. Приятным исключением
    является учетная запись администратора. И если
    он имеет право доступа на вход через сеть, это
    открывает лазейку для спокойного угадывания
    пароля.
    Для защиты рекомендуется переименовать
    пользователя Administrator, установить блокировку
    учетных записей, запретить админитратору вход в
    систему через сеть, запретить передачу SMB пакетов
    через TCP/IP (порты 137,138,139), установить
    протоколирование неудачных входов.
    Подробности: http://somarsoft.com/ntcrack.htm     
    
Еще один способ - перехват
    проходящей по сети информации.
    Подробности:     
    
    Проблемы IIS     
    
Пользователь Anonymous может получить в IIS права
    пользователей домена при установке IIS на
    контроллер домена (PDC)
    Подробности: http://www.microsoft.com/kb/articles/q147/6/91.htm
        
    
Internet Information Server 1.0 (IIS) допускает использование
    batch-файлов в качестве CGI-прилложений. Это весьма
    опасно, поскольку batch-файлы выполняются в
    контексте командного процессора (cmd.exe). 
    Подробности:
    http://www.microsoft.com/kb/articles/q155/0/56.htm
    http://www.microsoft.com/kb/articles/Q148/1/88.htm
    http://www.omna.com/iis-bug.htm     
    
В IIS 1.0 адрес типа 'http://www.domain.com/..\.."
    позволяет просматривать и скачивать файлы вне
    корневого каталога web-сервера.
    Адрес 'http://www.domain.com/scripts..\..\scriptname" позволяет
    выполнить указанный скрипт.
    По умолчанию пользователь Guest или IUSR_WWW
    имеет права на чтение всех файлов во всех
    каталогач. Так что эти файлы могут быть
    просмотрены, скачаны и запущены.
    Адрес "http://www.domain.com/scripts/exploit.bat>PATH\target.bat"
    создаст файл 'target.bat'. Если файл существует, он
    будет обрезан.
    К тем же последствиям приведет адрес 
    "http://www.domain.com/scripts/script_name%0A%0D>PATH\target.bat".
    Подробности: http://www.omna.com/iis-bug.htm
        
    
Если соединиться через telnet с портом 80, команда
    "GET ../.." <cr> приведет к краху IIS и сообщению
    "The application, exe\inetinfo.dbg, generated an application error The error occurred
    on date@ time The exception generated was c0000005 at address 53984655
    (TCP_AUTHENT::TCP_AUTHENT"     
    
Атаки типа Denial of Service
        
    
Ping of Death     
    
Фрагментированный ICMP-пакет большого размера
    может привести к зависанию системы. Так, команда PING
    -l 65527 -s 1 hostname на NT 3.51 приведет к
    "синему экрану" с сообщением.     
    
      STOP: 0X0000001E
      KMODE_EXCEPTION_NOT_HANDLED - TCPIP.SYS
      -ИЛИ-
      STOP: 0x0000000A
      IRQL_NOT_LESS_OR_EQUAL - TCPIP.SYS     
    
    Подробности: http://www.microsoft.com/kb/articles/q132/4/70.htm
    Исправление: 3-й Service Pack c последующей установкой ICMP-fix     
    
SYN-атака.     
    
Послав большое количество запросов на
    TCP-соединение (SYN) с недоступным обратным адресом,
    получим следующий результат:
    При получении запроса система выделяет ресурсы
    для нового соединения, после чего пытается
    ответить на запрос (послать "SYN-ACK") по
    недоступному адресу. По умолчанию NT версий 3.5-4.0
    будет пытаться повторить подтверждение 5 раз -
    через 3, 6, 12, 24 и 48 секунд. После этого еще 96 секунд
    система может ожидать ответ, и только после этого
    освободит ресурсы, выделенные для будущего
    соединения. Общее время занятости ресурсов - 189
    секунд.     
    
Подробности: http://www.microsoft.com/kb/articles/q142/6/41.htm
    Исправление: 3-й Service Pack     
    
WinNuke
    Посылка данных в 139-й порт приводит к
    перезагрузке NT 4.0, либо вывод "синего экрана
    смерти" с установленным 2-м Service Pack'ом.
    Исправление: 3-й Service Pack c последующей установкой OOB
    fix. Это исправление включено также в ICMP-fix.     
    
Аналогичная посылка данных в 135 и некоторые
    другие порты приводит к значительной загрузке
    процессора RPCSS.EXE. На NTWS это приводит к
    существенному замедлению работы, NTS практически
    замораживается.
    Исправление: 3-й Service Pack     
    
Service Pack 3     
    
Многие проблемы безопасности NT4.0 были
    устранены в 3-м Service Pack'е. Список исправлений весьма
    внушителен. В первую очередь это атаки типа Denial of
    Service - WinNuke, ошибка со 135-м портом, перехват
    сообщений SMB ("man-in-the-middle attack") и т.д.
    Настоятельно рекомендуется установить SP3, если
    Вас волнует вопрос безопасности Вашей системы. С
    момента выхода SP3 вышло еще несколько обновлений
    (hot-fixes), доступных на 
    ftp://ftp.microsoft.com/bussys/winnt/winnt-public/fixes/usa/nt40/hotfixes-postSP3.
        
  
  
    
  
    
      | asp-fix | Устранение проблем производительности с Active
      Server Pages 1.0b, установленных на IIS3.0 | 
    
      | dblclick-fix | Некоторые программы (например, Visio Professional 4.x)
      после установки SP3 стали реагировать на двойной
      щелчок мыши как на одинарный. Включен в состав getadmin-fix. | 
    
      | dns-fix | Устраняет некоторые проблемы, связанные с
      сервером DNS | 
    
      | getadmin-fix | Решает проблему, связанную с программой
      getadmin.exe, которая позволяла пользователям (кроме Guest)
      добавить себя в группу Administrators
      локальной машины. Также включает dblclick-fix и java-fix. | 
    
      | icmp-fix | Решение проблем с зависанием системы при
      получении фрагментированного ICMP-пакета большого
      размера. Включает также oob-fix. | 
    
      | iis-fix | Остановка IIS 2.0 и3.0 при получении большлго
      CGI-запроса (от 4 до 8k) | 
    
      | java-fix | Зависание IE3.02 при открытии страниц с Java после
      установки SP3. Включен в состав getadmin-fix. | 
    
      | lm-fix | Позволяет отключить аутентификацию Lan Manager (LM).
      Добавляет в реестр новый параметр к следующему
      ключу: HKLM\System\CurrentControlSet\control\LSA Value: LMCompatibilityLevel
 Value Type: REG_DWORD - Number
 Возможные значения: 0,1,2, по умолчанию - 0
 
        0 - Использовать аутентификацию LM и
        Windows NT authentication (default).1 - Использовать аутентификацию Windows NT, иLM - только
        по запросу сервера.
 2 - Никогда не использовать аутентификацию LM.
 В последнем случае невозможно соединение с
      Windows'95 и Windows for Workgroups | 
    
      | lsa-fix | Устраняет ошибку доступа в Lsass.exe, возникающую
      при передаче неправильного размера буфера
      удаленным клиентом при соединении с LSA (Local Security
      Authority) через именованный канал (named pipe). Включен в lsa2-fix | 
    
      | ndis-fix | Устраняет ошибку, вызывающую утечку памяти и
      синий экран с сообщением о неверной команде в
      ndis.sys при использовании промежуточных драйверов
      NDIS. | 
    
      | oob-fix | Посылка "Out of Band" - данных в 139-й порт
      приводила к зависанию или перезагрузки системы
      (Атака WinNuke). Первоначальный вариант исправления,
      включенный в SP3, не решил все проблемы. Включен в
      состав icmp-fix. | 
    
      | scsi-fix | Устранение ошибок при работе с системами
      защиты от сбоев (Fault Tolerant Systems) | 
    
      | simptcp-fix | Атака Denial of Service, состоящая в посылке
      большого количества UDP-дейтаграмм с ложного
      адреса на 19-й порт, при установленных Simple TCP/IP
      services, приводила к повышенному UDP-траффику. | 
    
      | winsupd-fix | Исправление ошибки в WINS, приводящей к его
      завершению при получении неверных пакетов UDP | 
    
      | zip-fix | Устранение проблем с ATAPI-версией Iomega ZIP | 
  
  За время, прошедшее с момента
  написания этой статьи, было выпущено еще
  несколько hot-fixes:
      
  
    
      | 2gcrash | Устраняет некоторые проблемы на машинах с RAM
      более чем 1.7 Gb. Подробности меня как-то не
      заинтересовали :) | 
    
      | ide-fix | Устраняет проблемы с новыми IDE/ATAPI винчестерами
      на компьютерах с возможностью автоматического
      выключения (shut down and power down feature). | 
    
      | iis4-fix | Исправляет ошибку в Afd.sys | 
    
      | joystick-fix | Устраняет проблему калибровки ножных педалей,
      подключенных к game-порту. Полезная штука. В
      отличие от большинства фиксов, версия для Alpha
      почему-то отсутствует :) | 
    
      | land-fix | Ответ на "Land Attack". Включает icmp-fix и oob-fix | 
    
      | pent-fix | Исправление ошибки f00f в Pentium | 
    
      | roll-up | Исправление ошибок в MS Transaction Server 2.0 и MS Cluster Server
      1.0 | 
    
      | SAG-fix | Исправление ошибок конвертации EBCDIC->ANSI при
      работе с IBM-системами | 
    
      | wan-fix | Устранение возможного "синего экрана" при
      копировании файлов через RAS по SLIP | 
    
      | teardrop2-fix | Исправление зависания при атаке "teardrop". Включает ICMP-fix, OOB-fix, и Land-fix | 
    
      | tapi21-fix | Исправление ошибок TAPI 2.1 | 
    
      | pcm-fix | Исправление ошибки в драйвере PC-карт при работе с Xircom CBE-10/100BTX | 
    
      | srv-fix | Очередная атака типа "Denial of Service". Зависание/перезагрузка при получении SMB-запроса, размер которого не
      соответствует указанному в заголовке. | 
    
      | pptp-fix | Исправление ошибок в работе сервера Point-to-Point Tunneling Protocol (STOP при получении
      неверного управляющего пакета PPTP). Включен в pptp2-fix. | 
    
      | y2k-fix | Устранение ряда ошибок, связанных с проблемой 2000 года (нераспознавание 2000 года как високосного,
      проблемы с офисными приложенями, Find File, пропуск дня при изменении даты). | 
    
      | euro-fix | Дополнения, связанные с введением новой европейской валютой. | 
    
      | atapi-fix | Исправление некорректной работы с IBM-овскими дисками DTTA-351010 - из 10.1Gb видны только 7.5. | 
    
      | netbt-fix | Устранение задержки (до 90 секунд) при обращении к удаленному серверу при использовании файла LMHOSTS. | 
    
      | prnt-fix | Устранение некоторых ошибок при работе с принтерами (неверный сброс, проблемы со старыми принтерами и т.п.) | 
      | lsa2-fix | Вышел на замену lsa-fix, но был отозван из-за обнаруженных проблем | 
    
      | sfm-fix | Исправление десятка проблем, связанных с Services for Macintosh (SFM) - от неверной модификации
      времени создания файла до синего экрана. | 
    
      | pptp2-fix | Обновление реализации Point to Point Tunneling Protocol (PPTP) - улучшена производительность, повышена надежность. | 
    
      | rras20-fix | Обновление Routing and Remote Access Service (в девичестве Steelhead). Требует установки pptp2-fix.
      Добавлены новые Demand dial фильтры, возможность фильтрации фрагментированных IP-пакетов и т.д. | 
    
      | ssl-fix | Включает обновленную версию Schannel.dll. Исправляет свежеобнаруженные проблемы в 
      Secure Sockets Layer (SSL) и некоторые мелкие ошибки. Банки за пределами США теперь могут
      воспользоваться 128-битной шифрацией. | 
    
      | priv-fix | Используя программу Sechole.exe, локальный пользователь может получить администраторские
      привилегии. | 
  
  
  При необходимости установки нескольких hot fix'ов рекомендуемый порядок установки выглядит следующим
  образом:
asp-fix
dns-fix
iis-fix
zip-fix
roll-up
getadmin-fix
lm-fix
roll-up/cluster
winsupd-fix
ndis-fix
scsi-fix
2gcrash
simptcp-fix
ide-fix
wan-fix
pent-fix (x86 only)
joystick-fix (x86 only)
SAG-fix
iis4-fix
pptp-fix
teardrop2-fix
tapi21-fix
pcm-fix
srv-fix
y2k-fix
euro-fix
atapi-fix
netbt-fix
prnt-fix
lsa2-fix
sfm-fix
pptp2-fix
rras20-fix
ssl-fix
priv-fix
Число исправлений уже пошло на четвертый десяток, их установка уже давно представляет собой весьма занудный и мучительный процесс.
Так что мировая общественность с нетерпением ждет выхода 4-го Service Pack'а, выход которого назначен
на лето 1998 года (прошедшая в апреле информация о преждевременном выходе оказалась неверна - речь шла
всего лишь о бета-версии).
SP3 и некоторые hotfix'ы для русской версии NT можно найти на 
ftp://ftp.microsoft.com/bussys/winnt/winnt-public/fixes/rus/nt40/.