Добавлен: 29.10.2018
Просмотров: 48105
Скачиваний: 190
Вопросы
781
37. Назовите свойство компилятора C, позволяющее закрыть большое количество дыр
в системе безопасности. Почему оно не получило более широкого применения?
38. Может ли быть осуществлена атака с помощью троянского коня, работающего
в системе, защищенной перечнем возможностей?
39. При
удалении файла его блоки обычно возвращаются в список свободных блоков,
но информация в них не стирается. Как вы думаете, стоит ли операционной систе-
ме стирать содержимое каждого блока перед его освобождением? В ответе следует
учесть как факторы безопасности, так и факторы производительности и объяснить
влияние каждого из них.
40. Как может паразитический вирус:
а) гарантировать, что он будет выполнен, прежде чем выполнится зараженная им
программа;
б) вернуть управление зараженной программе после того, как он выполнит свою
задачу?
41. Некоторые операционные системы требуют, чтобы начало разделов диска со-
впадало с началом дорожки диска. Каким образом это облегчает жизнь вирусу,
заражающему загрузочный сектор?
42. Измените программу, показанную в листинге 9.2, чтобы она вместо всех исполня-
емых файлов искала все файлы с программами на языке C.
43. Вирус на рис. 9.28, г зашифрован. Как может аналитик из антивирусной лабора-
тории определить, какая часть файла представляет собой ключ к шифру, чтобы
расшифровать его и восстановить исходный текст вируса? Что может сделать
Вирджил для усложнения этой работы?
44. У вируса на рис. 9.28, в есть как упаковщик, так и распаковщик. Распаковщику
нужно вернуть в исходное состояние и запустить сжатую выполняемую программу.
А зачем нужен упаковщик?
45. Назовите один из недостатков полиморфного зашифрованного вируса с точки
зрения его создателя.
46. Часто встречается следующая инструкция по ликвидации последствий вирусной
атаки:
а) загрузите зараженную систему;
б) создайте резервную копию всех файлов на внешнем носителе;
в) запустите программу fdisk для форматирования диска;
г) переустановите операционную систему с исходного компакт-диска;
д) перенесите файлы с внешнего носителя.
Назовите две серьезные ошибки, допущенные в этой инструкции.
47. Возможно ли существование в системе UNIX «компанейских» вирусов (которые
не модифицируют никакие существующие файлы)? Если да, то каким образом?
Если нет, то почему?
48. Для
распространения программ или программных обновлений часто используются
самораспаковывающиеся архивы, содержащие один или несколько запакованных
782
Глава 9. Безопасность
файлов и программу распаковки. Рассмотрите влияние такой технологии на во-
просы безопасности.
49. Почему руткиты очень сложно, почти невозможно, обнаружить в отличие от ви-
русов и червей?
50. Можно ли машине, зараженной руткитом, вернуть прежнее здоровье простым
откатом состояния программного обеспечения к ранее сохраненной точке вос-
становления системы?
51. Рассмотрите возможность создания программы, которая в качестве входных дан-
ных использует другую программу и определяет, содержит ли эта программа вирус.
52. В разделе «Брандмауэры» представлен набор правил, ограничивающих внешний
доступ только к трем службам. Дайте описание другого набора правил, который
можно было бы добавить к этому брандмауэру, чтобы еще больше ограничить до-
ступ к этим службам.
53. На некоторых машинах команда SHR, используемая в программе, приведенной
на рис. 9.33, б, заполняет неиспользуемые биты нулями, на других машинах для
этого используется распространяемый вправо знаковый разряд. Влияет ли на
работоспособность этой программы тип используемой команды сдвига? Если да,
то какая из команд лучше?
54. Чтобы проверить, что апплет был подписан доверенным производителем, можно
включить в него сертификат, подписанный доверенной третьей стороной и со-
держащий открытый ключ. Но чтобы прочитать сертификат, пользователю нужен
открытый ключ доверенной третьей стороны. Этот ключ может быть предоставлен
четвертой доверенной стороной, но тогда пользователю понадобится и ее откры-
тый ключ. Похоже, что способа исходной загрузки системы проверки не суще-
ствует, и все же существующие браузеры ее используют. Как это может работать?
55. Дайте описание трех свойств, благодаря которым Java считается лучшим, чем C,
языком для создания безопасных программ.
56. Предположим, что в вашей системе используется JDK 1.2. Изложите правила
(подобные представленным в табл. 9.3), которые будут использоваться для раз-
решения поставки апплета с веб-сайта
www.appletsRus.com
для запуска на вашей
машине. Этот апплет может загружать дополнительные файлы с веб-сайта
www.
appletsRus.com
, осуществлять операции чтения и записи над файлами каталога
/
usr/tmp/
, а также читать файлы из каталога
/usr/me/appletdir
.
57. Чем
апплеты
отличаются от приложений? Как это отличие влияет на обеспечение
безопасности?
58. Напишите пару программ на C или на языке сценариев оболочки для отправки
и получения сообщения по тайному каналу в операционной системе UNIX.
Подсказка
: бит разрешения может быть виден, даже если любой доступ к файлу
запрещен, а команда sleep или системный вызов гарантируют задержку на опре-
деленное время, указанное в их аргументах. Измерьте скорость передачи данных
в простаивающей системе. Затем искусственно создайте на ней большую загружен-
ность за счет запуска множества различных фоновых процессов и снова измерьте
скорость передачи данных.
59. В некоторых системах UNIX для шифрования паролей используется алгоритм
DES. Эти системы, как правило, для получения зашифрованного пароля приме-
Вопросы
783
няют в строке DES 25 раз. Загрузите реализацию DES из Интернета и напишите
программу, шифрующую пароль и проверяющую допустимость пароля для такой
системы. Создайте список из десяти зашифрованных паролей, используя схему
защиты Морриса — Томпсона. Используйте 16-разрядную соль.
60. Представьте, что система использует в качестве своей матрицы защиты ACL-
списки. Создайте набор функций, обслуживающих ACL-списки, когда:
а) создается новый объект;
б) удаляется объект;
в) создается новый домен;
г) удаляется домен;
д) домену предоставляются новые права доступа к объекту (сочетание прав на
чтение, запись и выполнение — r, w, x);
е) у домена отзываются права на доступ к объекту;
ж) всем доменам предоставляются новые права доступа к объекту;
з) у всех доменов отзываются права доступа к объекту.
61. Реализуйте программный код, структура которого показана в разделе 9.7.1, чтобы
посмотреть, что получится, когда произойдет переполнение буфера. Поэкспери-
ментируйте со строками разной длины.
62. Напишите программу, эмулирующую перезаписывающие вирусы, структура ко-
торых показана в разделе 9.9.2, в подразделе «Вирусы, заражающие исполняемые
файлы». Выберите существующий исполняемый файл, о котором известно, что
он может быть переписан без нанесения какого-либо вреда. Для двоичного кода
вируса выберите любой безвредный исполняемый двоичный файл.
Гл а в а 10
.
Изучение конкретных примеров:
Unix, Linux и Android
В предыдущих главах мы изучили принципы многих операционных систем, их аб-
стракции, алгоритмы и общие методы. Теперь настало время взглянуть на некоторые
конкретные системы, чтобы увидеть, как эти принципы применяются в реальном мире.
Мы начнем с Linux (это популярный вариант операционной системы UNIX) , так как
она работает на самых разных компьютерах. Эта система — одна из доминирующих
операционных систем для старших моделей рабочих станций и серверов, используется
она и на различных других системах — от смартфонов (операционная система Android
основана на Linux) до суперкомпьютеров. Она хорошо иллюстрирует многие важные
принципы построения операционных систем.
Обсуждение мы начнем с истории и пути развития UNIX и Linux. Затем приводится
общий обзор Linux, который должен будет дать представление о том, как она ис-
пользуется. Этот обзор будет особенно важен для тех читателей, кто знаком только
с системой Windows, так как последняя скрывает от пользователя практически все
детали системы. Хотя графические интерфейсы могут быть крайне удобными для на-
чинающих пользователей, они обладают низкой гибкостью и не дают представления
о том, как работает система.
Затем мы подойдем к сердцу этой главы — изучению процессов управления памятью,
ввода-вывода, файловой системы и безопасности в системе Linux. Для каждой темы
мы сначала обсудим фундаментальные понятия, затем системные вызовы и, наконец,
методы реализации.
Сразу же возникает вопрос: почему именно Linux? Linux — это вариант системы
UNIX, однако существует множество других версий и вариантов UNIX, включая AIX,
FreeBSD, HP-UX, SCO UNIX, System V, Solaris и др. К счастью, фундаментальные
принципы и системные вызовы для всех этих систем во многом совпадают (это обу-
словлено их дизайном). Более того, сходными являются общие стратегии реализации,
алгоритмы и структуры данных, хотя имеются и некоторые различия. Чтобы примеры
были конкретными, лучше всего выбрать одну из них и последовательно описать ее.
Поскольку большинство пользователей вероятнее всего сталкивались именно с Linux
(а не с другими версиями), то именно ее мы и будем использовать в качестве примера,
однако не забывайте, что, за исключением информации по реализации, большая часть
этой главы применима ко всем UNIX-системам. Использованию UNIX посвящено
большое количество книг, однако есть книги по расширенным функциональным воз-
можностям и внутреннему строению системы (Love, 2013; McKusick and Neville-Neil,
2004; Nemeth et al., 2013; Ostrowick, 2013; Sobell, 2014; Stevens and Rago, 2013; Vahalia,
2007).
10.1. История UNIX и Linux
785
10.1. История UNIX и Linux
У операционных систем UNIX и Linux долгая и интересная история, поэтому с нее мы
и начнем наше изучение. То, что исходно было развлечением одного молодого иссле-
дователя, стало индустрией с оборотом в миллиарды долларов, в которую включились
университеты, многонациональные корпорации, правительства и международные
организации по стандартизации. На следующих страницах мы рассмотрим, как разво-
рачивалась эта история.
10.1.1. UNICS
В 1940-е и 1950-е годы все компьютеры были персональными в том смысле, что в те
времена пользователь обычно получал доступ к компьютеру по записи на определенное
время и машина на этот период оказывалась в его полном распоряжении. Конечно, фи-
зические размеры этих компьютеров были огромными, но работать на таком компьюте-
ре в каждый момент времени мог тогда только один пользователь (программист). Когда
на смену этим машинам в 1960-е годы пришли пакетные системы, то программисты
стали приносить в машинный зал задания в виде колоды перфокарт. Когда накапли-
валось достаточное количество заданий, оператор вводил их все как единый пакет. От
сдачи задания до получения программистом распечатки проходил час или более. При
такой схеме на отладку программ уходило очень много времени, так как всего одна не
там набитая запятая могла привести к потере программистом нескольких часов.
Чтобы как-то усовершенствовать эту схему, которую практически все считали не-
удовлетворительной и непродуктивной, в Дартмутском колледже и Массачусетском
технологическом институте были изобретены системы разделения времени. Дартмут-
ская система, в которой работал только BASIC, имела кратковременный коммерческий
успех, после чего полностью исчезла. Система Массачусетского технологического
института, CTSS, была универсальной системой, достигшей большого успеха в науч-
ных кругах. За короткое время исследователи из Массачусетского технологического
института объединили усилия с лабораторией Bell Labs и корпорацией General Electric
(в те времена General Electric производила компьютеры) и начали разработку системы
второго поколения MULTICS (MULTiplexed Information and Computing Service —
мультиплексная информационная и вычислительная служба), уже обсуждавшейся
нами в главе 1.
Хотя лаборатория Bell Labs была одним из основополагающих партнеров проекта
MULTICS, она вскоре вышла из него, в результате чего один из исследователей этой
лаборатории, Кен Томпсон (Ken Thompson), оказался в ситуации поиска какого-ни-
будь интересного занятия. В конце концов он решил сам написать (на ассемблере)
усеченный вариант системы MULTICS, для чего у него был старый списанный ми-
ни-компьютер PDP-7. Несмотря на крошечные размеры PDP-7, система Томпсона
действительно работала и позволяла ему продолжать свои разработки. Впоследствии
еще один исследователь лаборатории Bell Labs, Брайан Керниган (Brian Kernighan),
как-то в шутку назвал эту систему UNICS (UNiplexed Information and Computing
Service — примитивная информационная и вычислительная служба). Несмотря на все
каламбуры и шутки на тему о кастрированной системе MULTICS (кое-кто предлагал
назвать систему Томпсона EUNUCHS, то есть евнухом), эта кличка прочно пристала
к новой системе, хотя написание этого слова позднее превратилось в UNIX .