bannerbannerbanner
Яйцо кукушки. История разоблачения легендарного хакера

Клиффорд Столл
Яйцо кукушки. История разоблачения легендарного хакера

Clifford Stoll

The Cuckoo’s Egg: Tracking a Spy Through the Maze of Computer Espionage – New York: Doubleday. 1989


© Столл К., 2022

© ООО «Издательство Родина», 2022

Глава 1

Волшебник, я? Еще неделю назад я был астрономом и в свое удовольствие орудовал телескопами. Сейчас, оглядываясь на это времечко, я вижу, что подремывал годами, пока не уплыли последние денежки по моему гранту.

К счастью, в обсерватории Кек при Лаборатории Лоуренса в Беркли астрономов принимали на вторичную переработку – и вместо биржи труда я оказался в компьютерном центре, в подвале Лаборатории. Могу показать парочку компьютерных фокусов, чтобы потрясти астрономов. Гораздо быстрее коллег разбираюсь во всяких головоломных ситуациях. Выходит, я – компьютерный волшебник? Не знаю, все-таки главное для меня – астрономия…

А что теперь-то? Уныло глядя на терминал, я продолжал думать об орбитах планет и астрофизических явлениях. Как новичку, мне довелось выбирать между застекленным отсеком с единственным окном, выходящим на мост Золотые Ворота, и душным кабинетом, заставленным книжными полками. Наплевав на свою клаустрофобию, я остановился на последнем в надежде незаметно дремать за письменным столом. Рядом располагались кабинеты Вэйна Грэйвса и Дэйва Клэвленда – «зубров»-системщиков. Они громко и постоянно цапались между собой, поэтому я разузнал много любопытного. Вэйн находился в натянутых отношениях с остальными работниками – по его мнению, некомпетентными лентяями. Сам-то он систему знал назубок, начиная с программ-драйверов и кончая СВЧ-антеннами. Единственной приличной вычислительной машиной он считал ВАКС, выпускаемый фирмой ДЭК. Других компьютеров для него просто не существовало – он не признавал ни ИБМ, ни ЮНИКС, ни Макинтош.

Дэйв Клэвленд – безмятежный Будда ЮНИКСа – терпеливо выслушивал бурные речи Вэйна, который безуспешно пытался его подначить: «Ученые всего мира выбирают ВАКСы. Эти машины позволяют создавать надежные программы дюжиной способов!» Дэйв парировал: «Вы осчастливьте „фанатов“ ВАКСа, а я позабочусь об остальных». Увы, Клэвленд не раздражался, поэтому неудовлетворенный Вэйн угасал и погружался в ворчанье.

Прекрасно. В первый же рабочий день я оказался маслом на бутерброде, который регулярно падал мною вниз и тем самым прерывал мой дневной сон. Зато мой внешний вид вполне соответствовал стандартному облику сотрудника лаборатории Беркли: поношенная рубашка, потертые джинсы, длинные волосы и дешевые кроссовки. На управленце можно было иногда увидеть и галстук, но при этом заметно снижалась производительность труда.

В обязанности нашей тройки (Вэйна, Дэйва и мои) входило обслуживание компьютеров лаборатории. Мы ведали дюжиной больших машин – громадных «тяжеловозов», решающих физические задачи. Стоили эти «рабочие лошадки» примерно шесть миллионов долларов. Надо полагать, что ученые, использующие эти компьютеры, рассматривали их как простых производителей, надежных не меньше, чем взаправдашние кони: работать они должны круглые сутки, а мы – старшие конюхи – несли ответственность за каждый цикл вычислений. Из четырех тысяч сотрудников лаборатории услугами главных компьютеров пользовалась примерно четверть. Для каждого из этой тысячи ежедневно велся учет машинного времени, при этом «гроссбухи» хранились в компьютере. Час вычислений стоит триста долларов, поэтому учет надо было вести страшно скрупулезно, и нам приходилось гоняться за каждой выводимой на печать страницей, за каждым блоком дискового пространства и за каждой минутой процессорного времени. Для сбора такой информации имелся отдельный компьютер. Раз в месяц на нем распечатывались отчеты и рассылались по отделам.

Однажды ко мне ввалился Дэйв и невнятно забормотал о неприличном поведении системы учета ЮНИКСа. Кто-то использовал несколько секунд машинного времени, не заплатив за них. Баланс не сходился; по счетам за прошлый месяц на сумму 2387 долларов была обнаружена недостача в 75 центов. Докопаться до источника ошибки в несколько тысяч долларов – пара пустяков. Но причины недостач в несколько центов обычно зарыты глубоко, и такие раскопки – стоящая проверочка для начинающего компьютерного волшебника.

– Чисто сработано, а? – наивно сказал я.

– Разберись с этим – и ты удивишь мир, – ответил Дэйв.

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

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

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

Вторая программа отняла у меня больше времени. За час я слепил «заплату» и понял: все работает. Программа суммирует длительности промежутков времени и затем умножает их на стоимость. Потеря 75 центов – не на ее совести.

И третья программа ведет себя хорошо: рыщет по списку пользователей, имеющих право доступа, находит их регистрационные записи и распечатывает счета. Ошибка округления? Нет, ни в одной из программ не может пропасть и сотой доли цента. Странно. Откуда же взялись эти дурацкие 75 центов?

Ну что ж, пусть я гоняюсь за призраком, но упрямства мне не занимать: из принципа проторчу здесь до полуночи!

Еще пару-тройку раз все проверив, я сильно зауважал это доморощенное чудо света – программу учета. Факт, что баланс не сходился, но программы не виноваты. К этому времени я нашел список пользователей, имеющих право доступа, и понял, каким образом происходит составление счетов для отделов. Около 7 вечера мне на глаза попалось имя Хантер. У этого парня оказался неправильный адрес счета. Ага! В прошлый месяц он задарма попользовался компьютером ровно на 75 центов.

Вот оно что! Кто-то добавил подпольного пользователя. Элементарно! Победа! Когда я упивался сознанием своей гениальности, заглянула Марта, моя подружка, и мы отпраздновали мой маленький триумф в кафе «Рим» ночным капуччино.

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

Дэйв появился у меня около полудня и, шлепнув на стол стопку инструкций, мимоходом буркнул, что никогда не вводил пользователя по имени Хантер – это, скорее всего, сделал другой менеджер системы. Вэйн отрезал: «Это не я. ЧЧИ». Он частенько завершал свои сентенции аббревиатурами. Эта означала: «Читай Чертову Инструкцию».

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

И все же такой недотепа поработал. Правда, я не мог выяснить, кто он. Никто не знал Хантера. Не было на него и учетной документации. Поэтому я удалил это имя из системы – если начнет вопить, все вернем обратно.

Спустя день компьютер по имени Докмастер прислал нам сообщение по электронной почте: якобы некто из нашей лаборатории нагло пытался вломиться в его компьютер в прошлый уикенд.

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

 

Дэйв ответил на послание неизменным: «Разберемся». Жди, когда перестанет болеть голова от своих проблем. Однако что-то привлекло внимание Дэйва в полученном от Докмастера сообщении и он передал его Вэйну, сопроводив вопросом: «Что это еще за Докмастер?» Вэйн отдал послание мне и предположил: «Наверное, какой-нибудь банк». Я полагал, что Докмастер это одна из верфей военно-морского флота. Сообщение не выглядело документом особой важности, хотя может быть и стоило потратить пару минут и повнимательней присмотреться к нему. В послании указывались дата и время попытки ворваться в Докмастерский компьютер с нашего ЮНИКСа. Поэтому я проштудировал файлы, в особенности записи, сделанные в субботу утром, и опять наткнулся на расхождения в двух системах учета. По файлу, созданному «родной» системой ЮНИКСа, было видно, что пользователь, некто Свентек, зарегистрировался в 8-25, полчаса пробездельничал и отключился. Наша доморощенная программа также зафиксировала подключение Свентека, но по ее данным он активно использовал сеть с 8-31 до 9-01 утра. Мой бог! Время не совпадает, одна программа показывает активное бодрствование, а другая – глубокий сон.

Тут на меня навалилась куча других дел и я отвлекся.

Обедая с Дэйвом, я мимоходом заметил, что единственным пользователем, подключавшимся в момент попытки взлома Докмастерского компьютера, был некто Свентек. Дэйв уставился на меня и вопросил: «Джо Свентек? Он в Кембридже. Что же он такое творит?» Оказалось, что Джо Свентек, бывший лабораторный «гуру» по части ЮНИКСа, – это настоящий компьютерный волшебник, создавший дюжину дивных программ за последние десять лет. Джо год назад уехал в Англию, но его немеркнущая слава продолжала сиять по всей программистской Калифорнии.

Дэйва удивило, что Джо снова в городе – ни один из приятелей Свентека ничего о нем не слышал. «Должно быть, он подключился к нашему компьютеру через сеть», – предположил Дэйв.

– Ты считаешь, это Джо напроказничал? – спросил я.

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

Любопытно: целый год Джо Свентек живет в Англии, ничем не проявляя себя вплоть до субботнего утра, затем пытается ворваться в мерилэндский компьютер и отключается, оставляя «отпечатки пальцев» в системе учета. Все это я высказал Вэйну в коридоре. Оказывается, Вэйн слышал, что сейчас Джо проводит свой отпуск в лесах, вдали от всяких компьютеров. «Забудь про эту чепуху. Приедет Свентек – и все прояснится. Я, правда, точно не знаю когда. ТУС.» Теперь Уже Скоро, если расшифровать Вэйна.

Моя головная боль – не Свентек, а расхождения в системах учета. Почему программы показали разное время? И почему в одном файле была зафиксирована активная деятельность, а в другом нет? Выяснилось: расхождение объясняется тем, что используется двое часов, и одни из них ежедневно отстают на несколько секунд. За месяц и набежало пять минут.

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

Глава 2

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

– Что значит эта попытка попользоваться задарма нашим компьютером? – спрашивал я себя. – Неужели нашли способ обойти систему учета?

Для больших вычислительных машин существует два типа программного обеспечения: программы пользователей и системные программы. То, что вы сами пишете и инсталлируете – это пользовательские программы, например, мои программы анализа атмосферы планет. Сами по себе они работать не могут. Они неспособны отдавать команды непосредственно компьютеру и вынуждены «разговаривать» с операционной системой. Когда астрономической программе требуется что-то сообщить, она не в состоянии просто взять и «выплюнуть» текст на экран моего терминала. Этот текст передается операционной системе, которая отдает команду аппаратуре на вывод.

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

Программа учета – это системная программа. Чтобы влезть в нее или обойти, нужно либо быть менеджером, либо исхитриться получить право привилегированного доступа к операционной системе. Но как получить это право? Самое простое – войти в компьютер с паролем менеджера системы. Наш пароль не менялся месяцами, но вряд ли кто-то проболтался. Чужаку же никогда его не разгадать: «вайверн» – мифологический крылатый дракон. Но даже если вы и придуритесь под менеджера системы, то вряд ли будете валять дурака с системой учета. Она слишком туманна и, к тому же, плохо задокументирована. Хотя и работает. Стоп! Наша доморощенная программа работает, как надо. Кто-то добавил нового пользователя, не обращаясь к ней. Может, этот кто-то не подозревал о ее существовании. Чужак не знает о наших маленьких хитростях. А наши менеджеры системы и операторы на них собаку съели. Джо Свентеку наверняка все известно. А как насчет чужака – хакера?

У слова «хакер» два разных значения. Приличные люди, компьютерные волшебники, способные заставить работать любую программу. Это не обычные инженеры-программисты, добросовестно отрабатывающие свои сорок часов в неделю, а фанаты, не отходящие от терминала, пока компьютер полностью не удовлетворит их любопытство. Хакер отождествляет себя с компьютером и знает его как самого себя. Именно таким меня считают астрономы: «Клифф не столько астроном, сколько хакер!» (Программистский народец, конечно, придерживается иной точки зрения: «Клифф не силен в программировании, зато какой астроном!» Еще в аспирантуре я понял, что лучше всего оставить каждую сторону при своем мнении). Но в общепринятом смысле хакер – это компьютерный взломщик[1]. В 1982 году, когда группа студентов использовала терминалы, модемы и телефонные линии междугородней связи для взлома Компьютеров в Лос Аламосе и в Колумбийском Медицинском Центре, всей околокомпьютерной публике стало известно об уязвимости сетевых систем.

Частенько до меня доходят слухи о вторжении в чью-то систему; жертвами обычно оказываются университеты, а виновниками – студенты или подростки. «Способные студенты вломились в компьютер, хранящий совершенно секретные сведения». Обычно такие шалости не причиняют существенного вреда и списываются на хакерские проказы. Могли бы события, показанные в фильме «Военные игры», произойти в действительности – мог бы хакер-подросток взломать пентагоновский компьютер и спровоцировать войну? Сомневаюсь. Нетрудно напакостить в университетском компьютере в котором напрочь отсутствует система защиты. В конце концов, коллеги редко запирают двери друг от друга. А вот военные системы – другое дело. Попасть в них так же трудно, как и на военные базы. И даже проникнув в военный компьютер, войну не развяжешь. Такие решения, я думаю, принимаются не компьютером.

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

Чтобы не лишать счастья общения с компьютером наших друзей-ученых, обитающих по соседству, мы завели несколько учетных записей для гостей. Зная гостевые учетное имя и пароль, любой может пользоваться компьютером, пока на счет за машинное время не набежит несколько долларов. Хакер запросто может проникнуть в систему – дверь широко открыта. Однако много он не наработает – время ограничено примерно одной минутой. И все же, можно успеть полазить по системе, считать несколько файлов общего доступа и выяснить, кто еще подключился. Мы полагали, что небольшая брешь в системе защиты окупается прочими удобствами.

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

За пятьдесят миль отсюда располагалась Лоуренсовская Ливерморская Лаборатория, выполнявшая секретные работы по разработке ядерных бомб и проекту Звездных Войн. Вот где непаханое поле для хакера! Но не подключенные ни к одной из сетей ливерморские компьютеры не допускали никакого внешнего доступа: полная изоляция.

Если кто-то вломится в нашу систему, что он сможет натворить? Ну, считать файлы общего доступа. Многие из наших ученых хранят в них свои данные, там же находится большая часть программного обеспечения. Хотя они и называются файлами общего доступа, чужак не может лазить по ним. Некоторые данные защищены законами о частной собственности или авторских правах, например, наша библиотека программ или программа обработки слов. Другие базы данных тоже не предназначены для широкого использования: списки адресов сотрудников лаборатории и незавершенные отчеты по текущим работам. Все это, правда, вряд ли может стать объектом охоты, поэтому ни о каком засекречивании сроду речи не было. Меня не трогает, если кто-то из гостей-пользователей узнает чей-то телефонный номер. Есть проблема посерьезнее: может ли чужак стать суперпользователем?

Чтобы одновременно удовлетворить потребности около сотни пользователей, операционная система разделяет аппаратные ресурсы (как многоквартирный дом разделяется на отдельные квартиры). Жизнь в каждой квартире течет независимо от соседей. Один квартиросъемщик смотрит телевизор, другой болтает по телефону, а третий моет посуду. И все это одновременно. Необходимые для этого средства – электроэнергия, телефонная связь и вода – предоставляются комплексом коммунального обслуживания. И каждый квартиросъемщик ворчит по поводу плохого обслуживания и непомерной квартплаты. Так же компьютеры: один пользователь может решать задачу, другой – слать сообщение по электронной почте, а третий – рисовать картинки. Компьютерные ресурсы предоставляются системным программным обеспечением и операционной системой; и каждый пользователь нудит о ненадежности программ, путанице в документации и высоких расценках на машинное время.

Чтобы никто не совал нос в чужие дела, в двери каждой квартиры имеется замок, а у каждого квартиросъемщика – ключ. Нельзя зайти в чужую квартиру без ключа. Если стены толстые, то возня одного соседа не докучает другому. Право на «частную жизнь» в компьютере обеспечивает операционная система. Нельзя забраться в чужую область памяти, не зная пароля. И если операционная система позаботится о правильном распределении ресурсов, то пользовательские программы не будут мешать друг другу.

Но стены домов не такие толстые, чтобы голоса подвыпивших приятелей соседа не будили меня. А мой компьютер взбрыкивает, если одновременно на нем работает больше сотни человек. Как дому нужен управляющий, так и нашим компьютерам необходим менеджер системы, или суперпользователь. У управляющего есть специальный ключ-отмычка, которым он может открыть дверь в любую квартиру. Менеджер может прочитать или изменить в компьютере любую программу или данные, обойти защиту операционной системы и орудовать в компьютере на всю катушку. Такая власть необходима для обслуживания системного программного обеспечения («Разберись с редактором!»), для регулировки быстродействия системы («Что-то сегодня ни шатко, ни валко») и для того, чтобы люди могли выполнять свои задания («Эй, выдай Барбаре отчетец»). Привилегированные пользователи учатся ступать осторожно. Они не могут особо напортить, если их привилегии распространяются только на чтение файла. Но лицензия суперпользователя позволяет вносить изменения в любую часть системы – от его плюх не увернешься! Суперпользователь всемогущ. Когда наступает момент перехода на зимнее время, он переводит системные часы. Новый дисковый накопитель? Только он может поставить нужный драйвер. В различных операционных системах программисты с привилегированным доступом называются по-разному: суперпользователь, корень, менеджер системы. Их пароли и учетные имена ревниво скрываются от посторонних.

 

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

Лектор монотонно бубнил о гравитационных волнах. Внезапно я проснулся. Я все понял! Я подождал, пока слушатели задавали вопросы, сам что-то спросил, вскочил на велосипед и помчался в Лабораторию Лоуренса в Беркли. Хакер-суперпользователь! Кто-то вломился в нашу систему, завладел ключом-отмычкой, присвоил себе привилегии и превратился в суперпользователя. Но кто? Как? Когда? И, самое главное, зачем?

1Каким же словом лучше назвать компьютерного взломщика? Компьютерные волшебники старой закалки гордятся, когда их называют хакерами, и презирают проходимцев, присвоивших это имя. При общении по сетям они называют этих хулиганов века электроники не иначе как кракерами (от англ, cracker – хлопушка) и киберпанками. В Нидерландах существует специальный термин «computervredebreuk», что буквально означает «нарушение компьютерного мира». Хотите знать мое мнение? Такого варвара, как компьютерный взломщик, я могу обозвать только непарламентарно: «злодей», «негодяй» и «свинья».
1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24 
Рейтинг@Mail.ru