Коллектив авторов - Защита от хакеров корпоративных сетей
Oracle – не единственный уязвимый программный продукт. Просматривая различные технические отчеты или базу язвимостей SecurityFocus, можно найти большое количество слабо защищенных программ, например MySQL или Microsoft SQL. Не дайте себя одурачить, делая поспешные выводы о безопасности тех или иных программ, поскольку в отчетах приведены cведения только об известных уязвимостях.
Разграничение доступа в базах данных
Напоследок обсудим разграничение доступа в базах данных. Большинство баз данных используют собственные средства разграничения доступа. Например, Microsoft SQL Server версии 6.5 (и более ранних) при выборе стандартной защиты использует свои собственные процедуры подтверждения достоверности при регистрации, а не аналогичные процедуры, предоставляемые операционной системой. Есть учетная запись SA с пустым паролем, которая создается при инсталляции SQL Server, она описывает права администратора во всех базах данных на сервере. Администратору рекомендуется заменить пароль по умолчанию учетной записи SA сразу же после инсталляции.
Системы управления, работающие под управлением UNIX, также могут иметь собственные средства разграничения доступа. Например, у MySQL собственный список пользователей, не связанный со списком пользователей UNIX. В MySQL есть учетная запись root (которую не следует путать с основной учетной записью операционной системы UNIX), устанавливаемая по умолчанию без пароля. Если не назначить пароля этой учетной записи, то любой сможет подключиться к MySQL c максимально возможными правами, введя следующую команду:mysql – u root
Если кто-нибудь захочет изменить записи в доступных таблицах, а пароль учетной записи не назначен, то ему достаточно ввести следующую команду:
mysql – u root mysql
Но даже если учетной записи root базы данных MySQL был назначен пароль, а какому-то пользователю нет, то пользователь всегда может подключиться под другим именем, введя вместо собственного имени имя пользователя с неназначенным паролем после флага —u. По этой причине назначение паролей всем пользователям MySQL должно войти в обыденную практику администрирования, чтобы не подвергать систему ненужному риску.
Удаленное выполнение программ
Наиболее часто в атаках на систему используется так называемое удаленное выполнение программ. Несколько заслуживающих внимания нападений на известные Web-сайты оказались для злоумышленника успешными благодаря удаленному выполнению программ. Удаленное выполнение программ – серьезная проблема, потому что в этом случае аутентификация не требуется и процесс может быть инициирован кем угодно.
Возвращаясь к примеру о разведчиках, предположим, что вражеская разведка просочилась мимо сторожевых постов и выследила позиции наших войск, нанесла их на карту и доложила о результатах разведки.
Оценив полученные сведения, неприятель может принять решение о нанесении артиллерийского удара по выявленным целям. Предположим, что, зная технологию выдачи целеуказания, противоборствующая сторона в состоянии подменить выявленные цели ложными, для того чтобы вражеская артиллерия нанесла удар по своим силам.
Точно так же и злоумышленник, имея возможность удаленного запуска произвольных программ в системе, может извлечь для себя выгоду, заставив программы работать против собственной системы. Известно несколько методов удаленного выполнения программ. Наиболее известны атаки, основанные на переполнении буфера и форматированных строках.
Атака
Удаленное выполнение программ всегда осуществляется с использованием автоматизированного инструментария, как правило, при помощи скриптов. Практически невозможно выполнить программу вручную.
Чаще всего целью удаленного выполнения программ является получение прав администратора на уязвимой системе. Подобным атакам обычно предшествует сбор информации при помощи автоматизированных средств сканирования для поиска уязвимых версий программного обеспечения. Если уязвимое программное обеспечение найдено, то для получения прав администратора злоумышленник запускает сценарий, использующий бреши в системе защиты идентифицированных программ.
...Примечание
Для дополнительного ознакомления с вопросами использования атак, основанных на переполнении буфера, рекомендуется познакомиться с работой Алефа (Alephl) «Smashing The Stack For Fun And Profit» («Разрушение стека для забавы и обогащения»), Phrack, выпуск 49, статья 14 по адресу www.phrack.com/show.php?p=49&a=14. Или с главой 8 книги.
Дополнительные сведения об уязвимостях форматированных строк можно найти в главе 9 книги, которая посвящена детальному обсуждению уязвимостей форматированных строк, и дополнительно в официальном документе Team Teso's по адресу www.team-teso.net/articles/formatstring/index.html.
Получив права администратора, он выполняет комплекс мероприятий по дезинформации, освещенный в секции «Дезинформация». Злоумышленник будет стараться скрыть свое присутствие в системе. После этого он может использовать скомпрометированный хост для начала атак.
Хотя удаленное выполнение программ позволяет злоумышленнику вводить команды, тем не менее на их выполнение накладываются некоторые ограничения.
Ограничения удаленного выполнения программ
Групповое членство и монопольное использование ресурса накладывают на удаленное выполнение программ точно такие же ограничения, как на процессы и работу пользователей.
Как правило, в UNIX-системах привилегированные процессы – это процессы, взаимодействующие с портами, чьи номера меньше, чем 1024. Но некоторые пакеты программ, например Apache Web Server, тоже могут модифицировать групповое членство и условие монопольного использования ресурса, несмотря на то что это разрешено делать лишь привилегированным процессам. Злоумышленник, контролирующий HTTP-процесс Apache, может присвоить себе его привилегии. Но в этом случае он может получить доступ к системе только как непривилегированный пользователь, потому что по умолчанию предусмотрено понижение привилегий Apache после его запуска. Для расширения своих привилегий воспользовавшемуся непривилегированным процессом злоумышленнику потребуются другие уязвимости локальной системы и незаурядные способности, если он не хочет быть пойманным.
Он может попытаться повлиять на процесс таким образом, чтобы вместо пользователя с более высокими привилегиями его могли запускать пользователи с более низкими. Это называется понижением привилегий (dropping privileges). В качестве ответной меры используется так называемая подмена корневого каталога (change root или chroot), которая заключается в следующем: Apache помещается в фальшивый корневой каталог для изоляции его процессов. Для подмены корневого каталога разработаны специальные программные средства, например программы-оболочки большинства сервисов, запирающие сервисы в так называемые изолированные подмененные корневые каталоги (chroot jail). Изолированные подмененные корневые каталоги были придуманы для ограничения пользователя рамками определенного каталога. Программа подмены корневого каталога разрешает доступ только к программам и библиотекам внутри этого каталога. Это ограничение – западня для неопытного злоумышленника.
Если злоумышленник получает доступ к системе, но его прав недостаточно для осуществления своих замыслов, то, вероятнее всего, он попытается расширить свои права.
Расширение прав
Расширение прав присуще большинству нападений. Оно наблюдается после получения пользователем доступа к ранее недоступному ресурсу. Этим ресурсом может быть все, что угодно: от получения удаленного доступа к системе до получения прав администратора на хосте. Известны различные формы расширения прав.
Удаленное расширение прав
Классификация удаленного расширения прав предусматривает два варианта. Первый – удаленный непривилегированный доступ, позволяющий удаленному пользователю получить неавторизованный доступ законного пользователя к системе. Второй – мгновенный доступ с правами администратора.
Пользователь может получить удаленный доступ при помощи обработки специальных символов в Web-интерфейсах, программных ошибок переполнения буфера, ошибок форматирования строк или утечки информации. Это серьезная угроза для нормальной работы системы.
Удаленный непривилегированный пользовательский доступ
При атаках на систему с использованием непривилегированных процессов можно наблюдать удаленное расширение прав непривилегированного пользователя. Подобное квалифицируется как расширение прав из-за того, что злоумышленник, не имеющий доступа к локальной системе до атаки, в результате атаки получает его. Некоторые люди, как ранее и сам автор, только усмехнутся, прочитав это. Координатор Bugtraq Дэвид Ахмад (David Ahmad) переубедил автора.