Жизнь и смерть беспозвоночных в системе Крис Касперски Хакер, номер #089, стр. 089-050-1 Выживание в системах с жестоким квотированием Время глобальных вирусных эпидемий давно прошло, и большинство червей сейчас гибнет еще на излете, даже локальные вспышки удается зажечь лишь немногим. Давай попробуем разобраться, что мешает вирусам распространяться и заодно обсудим новые вирусные концепции, адаптированные к суровым условиям современной жизни. [введение] Вплоть до появления W2K пользователи Windows даже не знали, что существует такая штука, называемая «квотированием» ресурсов. Каждый процесс получал в свое распоряжение 4 Гб адресного пространства (из которых реально можно было использовать только полтора) и все свободное пространство, которым только располагали смонтированные диски. Подсистема безопасности разграничивала доступ к файлам, запрещала вызывать некоторые API-функции и так далее, но никаких других ограничений не налагалось. Любой процесс, даже обладающий гостевыми правами, мог забить весь диск целиком, создать максимальное количество окон и сожрать всю оперативную память. Единственное, что мог предпринять администратор, — нажать RESET, надеясь на то, что неожиданная перезагрузка не превратит дисковый том в труху (NTFS - хорошая вещь, но поддержка транзакций лишь уменьшает вероятность сбоя, при этом ничего не гарантируя). В W2K (с большим опозданием против UNIX) наконец-то появилась поддержка дисковых квот, определяющих максимальный размер доступного дискового пространства для каждого из пользователей. Вслед за этим XP SP2 ограничила количество TCP/IP-соединений в единицу времени для каждого из процессов, что по идее должно было предотвратить «заторы» в Сети, вызванные вспышками вирусных эпидемий. В настоящее же время Microsoft бьется над созданием системы, которая загружается с Read-Only носителей (UNIX это умеет), и, когда это будет сделано, возможность модификации исполняемых файлов исчезнет (правда, вирусы по-прежнему смогут внедряться в память и командные файлы, создаваемые администратором). Возможности квотирования практически никем не используются (многие администраторы о них даже не подозревают), но будущее не дремлет, надвигаясь на нас со всей своей неотвратимой тяжестью. Очередной конец вирусам? Или, может быть, наступает волнующий момент перерождения вирусов, когда в результате борьбы за существование они вынуждены научиться паразитировать на программах, как это делают настоящие биологические вирусы, или сойти с арены, пополнив свалку истории новыми строками кода. [каждому пользователю по квоте!] Механизмы квотирования, реализованные в Windows, затрагивают все аспекты жизнедеятельности системы и прежде, чем расчехлять свой хвост, это хозяйство надо как-то классифицировать. В первую группу попадают квоты, "привязанные" к отдельно взятому процессу, а точнее его PID. Система позволяет отслеживать и ограничивать общее время "жизни" процесса, количество затраченного процессорного времени (как на прикладном уровне, так и в режиме ядра), число операций ввода/вывода (то есть прочитанных/записанных байт), объем затребованной (реально выделенной) памяти и т. д. Остальные параметры можно узнать из "Диспетчера Задач". Пока еще NT не умеет квотировать память и объем ввода/вывода, но это несложно реализовать путем перехвата базовых native-API функций, чем уже занимаются некоторые антивирусные программы и персональные брандмауэры. Windows наконец-то начинает приобретать черты многопользовательской системы, что несет в себе как преимущества, так и угрозу для существования вирусов. Кто-то может возвратить, что NT была многопользовательской с самого начала. Ну и в чем же это реально проявлялось? В каждый момент времени в системе может находиться только один пользователь (запуск программ от имени другого пользователя не в счет), и прежде чем создать новый сеанс, предыдущий должен быть завершен. Хуже того, пользователи не могут устанавливать приложения в "свои" домашние папки, и многопользовательский доступ ограничивается одним лишь разграничением доступа к данным и индивидуальным настройками (каждому пользователю — свой HKEY_CURRENT_USER)! А вот в UNIX кто угодно может себе позволить установить свою собственную версию системных библиотек и программ, доступную только ему и никак не влияющую на остальную часть системы! Допустим, Маша хочет работать с Word 97, Ира — с Word 2000, а Марине подавай только Word XP. Что может сделать администратор?! Да ничего! Либо долго плясать с бубном, устанавливая утилиты от сторонних разработчиков, либо всерьез задуматься о том, сколько пользователей _реально_ может выдержать NT. |