Известно, что Windows NT сертифицирована по классу C2. Однако классификацию систем защиты Министерство обороны США разработало еще до массового распространения глобальных компьютерных сетей. Поэтому в ней классифицированы только системы безопасности отдельных компьютеров, которые не подключены ни к какой вычислительной сети. Таким образом, Windows NT версии 3.5 (и пока никакая другая  -  ни старше, ни младше) сертифицирована по спецификации “Оранжевой книги” в конфигурации одиночной рабочей станции. По-моему, сертификацию сетевой операционной системы в такой конфигурации можно расценивать только как маркетинговый ход, рассчитанный на не слишком квалифицированных пользователей.

 

Недавно я получил письмо, в котором речь идет о нападении на Web-сервер для Windows NT и 95. Идея атаки стара, как UNIX,  -  спровоцировать переполнение буфера. Этот способ уже много лет практикуют хакеры для взлома всевозможных систем защиты. Он основан на особенностях некоторых языков программирования, например Си, в которых отсутствуют проверки преобразования типов, контроль выхода за границы массива и др. Если в исходном тексте программы входные параметры описаны, например, следующим образом: char *argv[32];

 

а в самой программе нет проверки на переполнение массива параметров программы argv, то нападающий, передав в такую программу слишком много переменных, может заставить ОС работать неправильно. Самый известный пример такого нападения  -  Червь Морриса, который использовал переполнение буфера в программе finger.

 

Цель хакера  -  заставить ОС выполнять нужные ему действия. Этого можно добиться, внедрив в программы или операционную систему некий код. За время существования UNIX хакеры изобрели много различных способов внедрения собственного кода в атакуемую систему. Все они известны и, как правило, работают и в других ОС. Достаточно написать так называемый shellcode, который в результате атаки внедряется в ОС и позволяет хакерам исполнять команды операционной системы. Shellcode для UNIX-подобных операционных систем написан давно, и хакеры им успешно пользуются. Для новых систем написать shellcode сложнее, особенно если неизвестно, как работает система. Но пройти мимо столь привлекательной платформы, как Windows, хакеры не могли. В полученном мною письме были приведены примеры shellcode для Windows NT и Windows 95 и методы их внедрения в эти системы.

 

В письме указан способ нападения через CGI-скрипты, поставляемые вместе с WebSite версии 1.1. Первый способ нападения, описанный автором письма, основан на сценарии cgi-dos/args.cmd, в котором есть такие откровенные строки:

 

rem НИКОГДА НЕ ИСПОЛЬЗУЙТЕ НЕКОРРЕКТНЫЙ URL!!!

 

rem Строка типа xxx$del+/s+c:*.* может повредить драйвер жесткого диска

 

rem  То же самое относится и к аргументам сценария и пути к нему!!!

 

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

 

Не надо думать, что “дыряв” только Web-сервер. Просто он наиболее доступен, хакеру в нем легче затеряться среди большого числа пользователей. Человек, атакующий систему, может использовать для нападения и другие программы с встроенными языками, например WinWord или Access. Поэтому не стоит особенно надеяться на надежность защиты Windows NT, хотя она и сертифицирована по классу C2.

 

Мне трудно дать конкретные рекомендации по усилению защиты от нападений  -  их, вероятно, может дать только Microsoft, я же хочу сделать только общие замечания:

 

- ознакомьтесь с ответами на часто задаваемые вопросы по безопасности Windows NT, которые можно найти в Internet, например по адресу http://www.iss.net/ или ftp://ftp.iss.net /pub/;

 

- с осторожностью используйте Common Gateway Interface (CGI) и тщательно проверяйте CGI-сценарии;

 

- рекомендуйте пользователям выбирать надежные пароли, например с помощью программы генерации паролей;

 

- контролируйте действия пользователей и выявляйте странные команды, имеющие слишком много параметров или длинные строки;

 

- найдите все исправления (patch), которые необходимо установить во все используемые под Windows NT программы (например, в WinWord следует ввести специальную заплату, которая защищает от нападения с помощью макросов).

 

Это далеко не полный список необходимых действий, так как для каждой конкретной конфигурации корпоративной сети требуется принять свои меры безопасности.

 

Следует все же отметить, что Windows NT  -  достаточно защищенная система, и хакерам пришлось потрудиться, чтобы взломать ее систему безопасности. Хочется надеяться, что новые версии этой ОС и программ для нее будут более надежными и безопасными.

 

Валерий Коржов

 

С Валерием Коржовым можно связаться по адресу: oskar@jet.msk.su.

Версия для печати