Служба компьютерной безопасности предупреждает!
   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 должно войти в обыденную практику администрирования, чтобы не подвергать систему ненужному риску.

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) переубедил автора.
   Однажды ночью за чашечкой кофе автор совместно с Дэвидом обсуждали тему получения доступа к системе. Автор, основываясь на своем опыте обеспечения безопасности компьютерных систем, был совершенно убежден в их неприступности даже в том случае, если злоумышленнику удастся получить локальный доступ к системе. Автор был убежден, что защита, основанная на недопущении хранения в стеке выполнимого кода (non-executable stacks), ограниченный по своим возможностям пользовательский интерфейс, средства подмены корневой директории (chrooted environments) и небольшие setuid-программы не позволят злоумышленнику получить права администратора. Дэвид был настолько любезен, что доказал автору вопиющую неправоту его убеждений.
   В распоряжении злоумышленника имеются различные способы получения доступа непривилегированного пользователя к локальной системе. Возможно использование непривилегированных сервисов, таких как HTTP-демоны, процессов, работающих в рамках подмененной корневой директории, или других сервисов, запущенных со стандартными правами пользователей. Имеются и иные способы получения доступа к системе. В некоторых случаях пароли, полученные из исходных текстов ASP (Active Server Pages – активные серверные страницы (протокол ASP – разработанная корпорацией Microsoft технология, с помощью которой Web-мастер может динамически формировать автоматически обновляемые Web-страницы)), позволяют злоумышленнику получить доступ обычного пользователя. Печально известная проблема заключается в ошибке фильтрования спецсимволов программами Web-интерфейсов. Если атакующий сможет добиться передачи спецсимволов из Web-интерфейса в систему, то он сможет связать порт системы с оболочкой. Вероятно, это и не позволит ему сейчас получить права администратора, но он получит права HTTP-процесса позднее. По словам Дэвида Ахмада: «Это – только вопрос времени».
 
   Удаленный привилегированный пользовательский доступ
   Приобретение злоумышленником удаленного привилегированного пользовательского доступа чревато более тяжкими последствиями. Если удаленный пользователь сможет получить доступ к системе с правами привилегированного пользователя, целостность системы будет нарушена. Можно говорить о получении злоумышленником удаленного привилегированного пользовательского доступа при условии приобретения им прав, предоставляемых учетными записями uucp, root, bin или sys в UNIX-системах, или же Administrator либо LocalSystem в Windows 2000.
   Методы получения удаленного привилегированного или непривилегированного пользовательского доступа по существу одинаковые, за исключением нескольких ключевых моментов. Одно отличие заключается в использовании сервисов. Для того чтобы получить удаленный доступ на правах пользователя, злоумышленник должен использовать процесс с правами привилегированного пользователя.
   Большинство сервисов UNIX все еще выполняются с правами привилегированных пользователей. В некоторых из них, как telnet и SSH, недавно были обнаружены серьезные уязвимости. Особенно серьезна ошибка в SSH, первоначально обнаруженная Михаилом Залевски (Michal Zalewski) и преданная огласке в феврале 2001 года. Не вникая в сложные детали, отметим только, что уязвимость позволяет удаленному пользователю инициировать злонамеренное сетевое соединение, защищенное криптографическими средствами, с демоном. После установления соединения злоумышленник может, воспользовавшись недостатками протокола, запустить произвольную программу с правами администратора, связав оболочку с портом, закрепленным за нулевым идентификатором пользователя.
   Аналогичная уязвимость была недавно обнаружена в Windows 2000 IIS (Internet Information Server – информационный сервер Internet), что позволило успешно атаковать системы Windows NT. IIS 5.0 выполняется с правами, эквивалентными правам администратора. Проблема заключалась в переполнении буфера индексации инфраструктуры ISAPI IIS 5.0. Благодаря ей стали возможны различные вторжения, например червя Code Red и его модификаций.
   Получение удаленного привилегированного пользовательского доступа является целью большинства Троянских коней и скрытых программ (backdoor programs). Такие программы, как SubSeven, Back Orifice, и их варианты могут применяться для получения злоумышленником удаленного привилегированного пользовательского доступа к инфицированной системе. Эти программы широко используют методы социотехники, дезинформации или убеждения, для того чтобы заставить пользователя запустить программу с правами привилегированного пользователя. После их выполнения злоумышленнику потребуется связаться тем или иным способом с запущенной программной, чтобы наблюдать за инфицированной системой, управлять ее работой и работой ее пользователей.
   Целью других атак может быть получение прав иных привилегированных пользователей, отличных от администратора. Злоумышленник, завладевший такими правами, сильно отличается по своим возможностям от обычного пользователя, поскольку теперь он может получить доступ к жизненно важным компонентам системы. К тому же пользователь, получивший доступ к системным учетным записям, отличным от записи администратора, вероятно, позднее сможет получить его права.
   То же самое справедливо и для повышения прав на локальной системе. При помощи социотехники или вредной программы пользователь с локальными непривилегированными правами может добиться повышения своих прав на локальной системе.

Методы тестирования уязвимостей

   Тестирование – лучший способ удостовериться в присутствии уязвимостей у системы. Тестирование уязвимостей – необходимая обязанность каждого, кто связан с администрированием или безопасностью информационных систем. Убедиться в безопасности охраняемого компьютера можно только после собственных попыток его взлома.
   До этого момента в главе были обсуждены различные типы уязвимостей, которые могли привести к проникновению злоумышленника в систему. В этой секции будет уделено внимание поиску и доказательству существования уязвимостей в системе, в том числе с использованием специальных программ. Также будут рассмотрены методы сбора информации о системе до начала атаки на нее, например применение программы Nmap.

Доказательство возможности нападения

   Общепризнанный метод, используемый сообществом безопасности, получил название доказательство возможности нападения (proof of concep). Про доказательство возможности нападения можно сказать, не вдаваясь в излишние подробности, что это изученный со всех сторон надежный метод тестирования систем на уязвимости. Обычно он применяется разработчиком программы или аналитиком по безопасности в форме максимально гласной дискуссии.
   Доказательство возможности нападения проводится для демонстрации уязвимостей в системе. Доказательство не проводится само по себе, оно проводится для демонстрации проблем с использованием небольших безопасных для системы программ или технического описания, позволяющего пользователю воспроизвести проблему. Доказательство возможности нападения может использоваться членом сообщества для выявления источника проблем, формулирования рекомендаций по вычищению программ с целью максимального устранения недоделок в них и, в некоторых случаях, рекомендаций по исправлению ошибок до выхода патчей производителя, а также для обнаружения уязвимых систем.
   Доказательство возможности нападения используется как средство уведомления сообщества безопасности о проблеме при возникновении даже незначительных подозрений с целью опережения злоумышленника. Узнав о проблеме, у производителя появляется возможность решить ее и выпустить заплатку раньше, чем злоумышленник научится извлекать из нее выгоду и ринется в безумную атаку.
Написание программ, демонстрирующих проблему
   Написание программ, демонстрирующих проблему, — еще один метод, используемый сообществом безопасности. В первом написание демонстрирующих проблему программ может быть определено как написание программ, так или иначе использующих выявленную уязвимость и преимущества программирования. Конечно, это может быть использовано для извлечения личной выгоды.
   Написание программ, демонстрирующих проблему, может быть отнесено к доказательству возможности нападения, поскольку в результате на практике демонстрируется существование уязвимости и детали атаки на нее. Программа может быть написана на разных языках: например, C, Perl или ассемблер.
   Написание подобных программ – обоюдоострый меч. С одной стороны, общественности предоставляются программы, демонстрирующие уязвимости и возможности их использования для личной выгоды, а с другой – злоумышленнику невольно предоставляются средства нападения на системы. В целом же написание демонстрирующих проблему программ – хорошая вещь, потому что вносит ясность в рассмотрение выявленной уязвимости и подталкивает производителей к исправлению ошибок и выпуску заплаток.
   Зачастую производитель с удовольствием не торопился бы с выпуском заплаток, позволяя злоумышленнику, знающему об уязвимости и инструментарии работы с ней, воспользоваться ею. Поэтому написание демонстрирующих проблему программ позволяет акцентировать на ней внимание и подстегнуть производителей, перекладывая на их плечи всю ответственность после обнародования сведений об уязвимости.
   Как уже говорилось, обсуждаемые программы – обоюдоострый меч. Предание гласности программ, демонстрирующих проблему, на практике означает появление работающих программ, которые могут служить источником личной выгоды. Большинство форумов, на которых разглашаются технические детали уязвимостей программного обеспечения и распространяются использующие их программы, многими участниками оцениваются по-разному. Обсуждение программ на форуме может позволить некоторым непорядочным членам форума воспользоваться свободно распространяемыми программами демонстрации проблем для личной или злонамеренной выгоды.
Автоматизированный инструментарий безопасности
   Автоматизированный инструментарий безопасности – это пакеты программ, разработанные производителями для автоматизированного тестирования систем безопасности. Обычно это программы с хорошим пользовательским интерфейсом и средствами генерации отчетов. Генерация отчетов позволяет пользователям инструментальных средств распечатать детальный список проблем и наметить пути их решения.
   Автоматизированный инструментарий безопасности – еще один обоюдоострый меч. С одной стороны, он позволяет законным владельцам инструментария проводить аудит безопасности своих сетей и повышать тем самым их безопасность. А с другой – позволяет злонамеренным пользователям находить уязвимости в системе и использовать их для личной выгоды.
   Но все же автоматизированный инструментарий безопасности полезен всем. Он позволяет недостаточно квалифицированным пользователям определить уязвимые хосты и обеспечить их безопасность. Еще полезнее средства обновлений с подключаемыми программами (plug-ins), разработанными для выявления новых или недавно обнаруженных уязвимостей.
   Различные производители выпускают различные средства автоматизированного тестирования. Среди них можно выделить CyberCop Security Scanner, выпущенный Network Associates, NetRecon компании Symantec и Internet Scanner – производитель Internet Security Systems. Свободно распространяется Nessus от Nessus Project. Более подробно с ними можно познакомиться в главе 17 книги.
Контроль версий
   Контроль версий (versioning) – отказоустойчивый метод тестирования систем на наличие уязвимостей. По сравнению с ранее упомянутыми методами его не так часто используют, но он приводит к надежным результатам.
   Контроль версий заключается в определении версии или редакции используемого программного обеспечения. Это может оказаться сложным, поэтому большинство программного обеспечения различается версиями, как, например, Windows 2000 Professional или Solaris 8, а многие из пакетов, помимо своей версии, характеризуются еще и версиями включаемых программ, например wget версии 1.7. На практике это часто приводит к необходимости решения сложных проблем, как, например, кошмар с дистрибутивом Linux, который является сборищем различных версий разного программного обеспечения.
   Контроль версий осуществляется во время анализа ассортимента предлагаемых программ. Идея очень проста – ищутся версии программ с известными уязвимостями. Поиск выполняется различными способами. Один из способов состоит в выдаче команды отображения версии проверяемой программы, например команды uname, как это показано на рис. 3.7.
   Рис. 3.7. Определение редакции ядра Linux с помощью команды uname-a
 
   Другой метод использует предоставляемые производителем средства определения на вашей машине последней редакции системы (см. рис. 3.8).
   Рис. 3.8. Проверка редакции Sun Solaris System при помощи команды showrev-p
 
   Для упрощения контроля версий предложены различные варианты. Один из них заключается в использовании базы данных версий программ хоста, куда можно помещать дополнительную информацию о необходимых мерах предупреждения ее краха, нерационального использования ресурсов и потенциальных уязвимостях.

Стандартные методы исследования

   Уже говорилось о том, что 97 % злоумышленников – это неопытные пользователи-недоумки. Действительно опасные – остальные 3 %. У этой группы есть чему поучиться, при условии что полученные знания не будут использованы для достижения зловредных целей. Ланс Спитзнер (Lance Spitzner), один из наиболее хорошо подготовленных специалистов по вопросам безопасности (и вообще всесторонне развитый человек), некоторое время назад написал несколько работ, в которых все расставил по своим местам. Заимствуя принцип Сан Цзу (Sun Tzu) из его книги «Искусство войны», работы Спицнера были озаглавлены «Узнай своего врага». Они доступны по адресу http:// project.honeynet.org.
   В первую очередь следует обратить внимание на интеллектуальные нападения. Нападение – акт агрессии, а интеллектуальность предполагает твердые навыки познавательной деятельности. При подготовке интеллектуальной атаки осуществляется сбор информации либо с использованием утечки информации, либо при помощи доступных ресурсов Интернета. Рассмотрим некоторые методы, основанные на использовании базы данных Whois, службы имен доменов (DNS – Domain Name System), программы Nmap и индексирования Web.
База данных Whois
   Whois – это общедоступная база данных, содержащая информацию о владельцах сетевых ресурсов. База данных Whois подразделяется на базы данных Whois доменов. com, biz и базу данных Американского регистра Интернет-адресов (ARIN – American Registry of Internet Numbers), которые содержат сведения об именах служб и сетях.
 
   База данных Whois имен служб
   В базе данных Whois имен служб хранится разнообразная информация о доменах: зарегистрировавшее домен лицо, его адрес и контактные номера телефонов и факса, а также другие сведения, позволяющие при необходимости легко и быстро связаться с владельцем домена. Это идеальный способ решения возникающих проблем, хотя в последнее время, как кажется автору, наблюдается тенденция увеличения числа необоснованных жалоб на провайдера по поводу той или иной проблемы и нарушения сетевого этикета. Проанализируйте следующую информацию:
 
   elliptic@ellipse:~$ whois cipherpunks.com
   Whois Server Version 1.3
   Domain names in the .com, .net, and .org domains can now be
   registered
   with many different competing registrars. Go to http://
   www.internic.net
   for detailed information.
   Domain Name: CIPHERPUNKS.COM
   Registrar: ENOM, INC.
   Whois Server: whois.enom.com
   Referral URL: http://www.enom.com
   Name Server: DNS1.ENOM.COM
   Name Server: DNS2.ENOM.COM
   Name Server: DNS3.ENOM.COM
   Name Server: DNS4.ENOM.COM
   Updated Date: 05-nov-2001
   >>> Last update of whois database: Mon, 10 Dec 2001 05:15:40
   EST <<<
   The Registry database contains ONLY .COM, .NET, .ORG, .EDU
   domains and Registrars.
   Found InterNIC referral to whois.enom.com.
   Access to eNom’s Whois information is for informational
   purposes only. eNom makes this information available “ as is,”
   and does not guarantee its accuracy. The compilation,
   repackaging, dissemination or other use of eNom’s Whois
   information in its entirety, or a substantial portion
   thereof, is expressly prohibited without the prior written
   consent of eNom, Inc. By accessing and using our Whois
   information, you agree to these terms.
   Domain name: cipherpunks.com
   Registrant:
   Cipherpunks