Спецвыпуск журнала «Хакер» #47, октябрь 2004 г.

Хакер

Электронная версия известного компьютерного журнала

Теория

История UNIX / Как это было…

История *nix-систем насчитывает более 30 лет. Давай совершим небольшое путешествие во времени к самым истокам этой оси, в то время, когда компы были большие, а собственную ОС не писал разве что ленивый программер. Конечно, большая часть таких осей не дожила до нашего времени, а о многих из них не сохранилось даже малейших сведений.

UNIX был разработан американской лабораторией Bell Labs, входившей в состав конторы Bell Systems. История этой компании в области информационных технологий началась в 1957 году, когда ее сотрудникам потребовалась операционная система для собственного вычислительного центра, в котором использовалась ЭВМ второго поколения. От такой системы требовалось автоматизировать запуск некоторых программ и управление вычислительными ресурсами. Новоиспеченную систему назвали BESYS. Разумеется, она была совершенно не похожа на современные операционные системы, и применять ее могли разве что сами разработчики для собственных целей. А в те времена больше ничего и не требовалось – компьютеров было мало, и работали с ними лишь программисты и ученые, а уж о необходимости компьютера дома или в офисе никто не задумывался. В 1964 году контора приобрела более мощную машину третьего поколения, и тут же возник вопрос о новой оси, так как старая годилась лишь для той машины, для которой ее делали. Никаких общих стандартов совместимости тогда не существовало. Для участия в разработке операционной системы были приглашены специалисты из Массачусетского института и корпорации General Electric. И закипела работа над новой осью, названной впоследствии Multics (Multiplexed Information and Computing System), – многозадачной, многопользовательской ОС с разделением времени и пользовательским интерфейсом. С помощью нее несколько пользователей одновременно могли получать доступ к вычислительным ресурсам. При создании были использованы наработки Массачусетского института, реализованные ранее в другой экспериментальной оси – CTSS. В итоге, получилась достаточно сложная в использовании, громоздкая и дорогая операционка, в которой, к тому же, существовал ряд ошибок, связанных, в основном, с неудачно выбранным языком программирования PL/I. Кроме этого, среди разработчиков возникли некоторые организационные разногласия. Короче говоря, проект загнулся. Но оставил после себя различные идеи, в частности, идеи по файловой системе, которые были использованы в дальнейших разработках.

Отец демона и пингвина / Особенности архитектуры UNIX

«Linux в массы!», «FreeBSD на рабочий стол!» – эти лозунги все чаще можно увидеть в интернете. Народ захотел Open Source на свои домашние машины. Но что же объединяет Linux и BSD? Этого многие не понимают. По сути, Linux и все возможные клоны BSD происходят от одной системы – UNIX. Давай рассмотрим архитектуру этой ОС более подробно.

На дворе 1969 год. К компьютерам имеют доступ лишь избранные профессора крупнейших университетов. Время работы у терминала строго ограничено, и за каждой минутой загрузки машины ведется строгий учет. Стоимость одного вычислительного центра приближается к бюджету небольшой страны. Именно на такой машине, называвшейся PDP-7, программисты Денис Ритчи (Dennis Ritchie), Радд Кенедей (Rudd Canaday), Дуг Макилрой (Doug McIlroy) и Кен Томпсон (Ken Thompson) в течение месяца написали ОС, оболочку, ассемблер и редактор.

ОС для Кремля / Ищем самую защищенную систему

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

Самыми надежными считаются *nix. У них очень много плюсов – от простой логики работы с пользователем до высокой отказоустойчивости. Но не йогурты одинаково полезны, а *nix одинаково стабильны – некоторые из них просто не рассчитаны на создание безопасных хостов. Определимся с требованиями к системе, при выполнении которых ее смело можно будет ставить на сервера и другие критически важные системы. Итак, ОС должна иметь жесткую политику разграничения доступа, должны быть встроенные или подключаемые средства для создания комплексов firewall, необходимо ПО для отражения атак, наличие регулярных обновлений, возможность быстрого обнаружения взломов.

Взглянем на рынок ОС сегодняшнего дня. Мой выбор пал на следующие дистрибутивы: Mandrake 10 Official, Gentoo Linux 2004.2, FreeBSD 5.1, OpenBSD 3.5, QNX 6.2.1.

Взлом

Атака интеллекта / Обзор удаленных и локальных атак

Грамотный взломщик никогда не ограничивается одной неудавшейся атакой. Он пытается найти конкретный подход к серверу. В большинстве случаев ему это удается. А все потому, что он знаком со большинством видов атак и последовательно перебирает их, пока, наконец, несчастный сервер не подчиниться заветной команде.

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

Стенка всмятку / Обход брандмауэров снаружи и изнутри

Большинство корпоративных сетей ограждено по периметру недемократично настроенными брандмауэрами, защищающими внутренних пользователей от самих себя и отпугивающими начинающих хакеров. Между тем, для опытного взломщика даже качественный и грамотно настроенный брандмауэр – не преграда.

Брандмауэр (он же фаервол) в общем случае представляет собой совокупность систем, обеспечивающих надлежащий уровень разграничения доступа, достигаемый путем управления проходящим трафиком по более или менее гибкому набору критериев (правил поведения). Короче говоря, брандмауэр пропускает только ту часть трафика, которая явно разрешена администратором и блокирует все остальное.

На рынке доминируют два типа брандмауэров – пакетные фильтры, также называемые шлюзами фильтрации пакетов (packet filter gateway), и программные прокси (application proxy). Примером первого типа является Firewall от компании Check Point, а второго – Microsoft Proxy Server.

Пакетные фильтры полностью прозрачны для пользователей и весьма производительны, однако недостаточно надежны. Фактически они представляют собой разновидность маршрутизаторов, принимающих пакеты как извне, так и изнутри сети, и решающих, как с ними поступить – пропустить дальше или уничтожить, при необходимости уведомив отправителя, что его пакет сдох. Большинство брандмауэров этого типа работает на IP-уровне, причем полнота поддержки IP-протокола и качество фильтрации оставляют желать лучшего, поэтому атакующий может легко их обмануть. На домашних компьютерах такие брандмауэры еще имеют смысл, но при наличии даже плохенького маршрутизатора они лишь удорожают систему, ничего не давая взамен, так как те же самые правила фильтрации пакетов можно задать и на маршрутизаторе!

Рыбная ловля в локальной сети / Все аспекты снифинга под *nix

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

Снифером (от англ. sniff – вынюхивать) называют утилиты для перехвата сетевого трафика, адресованного другому узлу, или – в более общем случае – всего доступного трафика, проходящего или не проходящего через данный хост. Большинство сниферов представляют собой вполне легальные средства мониторинга и не требуют установки дополнительного оборудования. Тем не менее, их использование в общем случае незаконно или же предполагает соответствующие полномочия (например, монтер может подключаться к телефонным проводам, а ты – нет). Кстати говоря, слово «sniffer» является торговой маркой компании Network Associates, распространяющей сетевой анализатор «Sniffer(r) Network Analyzer». Использовать этот термин в отношении других программ с юридической точки неправомерно, но… XEROX тоже торговая марка, а в просторечии все копировальные аппараты независимо от производителя называют «ксероксами», и никто от этого еще не пострадал.

Xploits. How to? / Эксплоиты под *nix для начинающих

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

Эксплоиты – специальные программы, использующие уязвимости в том или ином компоненте системы или сервисе с целью повышения или получения прав в системе либо для деструктивных целей, например, DOS-атак. Для поиска уязвимостей чаще всего берутся сервисы или компоненты системы, запущенные с высокими привилегиями, или приложения, принадлежащие руту, у которых установлен бит SUID/SGID. Практически все программные эксплоиты используют уязвимости класса buffer overflow. Как ты, наверное, уже догадался, взломщик, а, точнее, shell-код (набор машинных инструкций, который заполняет собой переполненный буфер), встроенный в эксплоит, получит права дырявого приложения и предоставит их атакующему, например, в виде открытого на каком-либо порту shell’а с повышенными правами. Немного по-другому обстоят дела с DoS-эксплоитами, shell-код которых представляет из себя своего рода «кракозябру», не имеющую никакого лексического значения, и поэтому приложение, пытаясь понять, что же это такое, сваливается в кору (core), или, говоря простым языком, глючит и зависает. Если ты не знаешь, что значит выпадать в core, приведу аналогичный пример из Винды, с которым ты уж точно не раз сталкивался: программа зависает и выдает окошко «programm.exe – Ошибка приложения» примерно такого содержания: «Инструкция по адресу 0x12121212 обратилась к памяти по адресу 0x13131313. Память не может быть 'read'». Отличие лишь в том, что *nix-системы пишут на диск своеобразный дамп памяти, по которому можно определить причину ошибки.

Невидимость в *nix / Обзор stealth-механизмов бэкдоров

После взлома системы чрезвычайно сложно оставить там незаметный черный ход. Опытные администраторы очень быстро обнаруживают все известные и неизвестные бэкдоры. О том, как перехитрить админа и скрыть присутствие лазейки в системе, и пойдет речь в этой статье.

Давай подумаем, чем простейший бэкдор может выдать свое присутствие.

Во-первых, он существует как файл. Администратор спосоен запросто обнаружить его с помощью элементарной утилиты ls и просто-напросто стереть, что нас ни в коей мере не устраивает.

Во-вторых, если бэкдор запущен и работает, то он присутствует в системе как процесс. Соответственно, может быть обнаружен админом с помощью утилиты ps, вываливающей в консоль список процессов.