Да, реакцию босса можно предугадать, но как на нее ответить? Первое, что пришло в голову Дэйву это заблокировать чертов доступ и забыть обо всем. Мне же казалось, что следует попугать этого хулигана: пригрозить вызвать родителей. Вламывается-то, скорее всего, какой-нибудь студентишка из ближайшего университета. Но мы не были до конца уверены, что к нам вообще кто-то вламывается. Да, это объясняло некоторые неполадки в системе учета кто-то узнает пароль менеджера системы, подключается к нашей машине, вводит нового пользователя и сует нос в учетную систему. Но зачем пользоваться новым именем, если уже есть доступ к системе на правах менеджера?
Наш начальничек не любит плохих новостей, но все же ему пришлось, тяжело вздохнув, встретиться с нами во время обеда. У нас не было прямых доказательств хакерства просто логические умозаключения, выведенные из обстоятельств: налицо банальная ошибка в системе учета. Если была попытка взлома, то неизвестно, как далеко она зашла. Не знаем мы также, кто взломщик. Рой Керт оборвал нас сразу же: «Почему я должен терять из-за вас время? Вы еще ничего не знаете. Разберитесь и представьте доказательства.»
Итак, как же разоблачить хакера? Найти хулигана, использующего атрибуты доступа Свентека, и проследить за его подключениями. Я провел весь четверг, беря на карандаш всех, кто подключался к компьютеру. Даже написал программу, заставляющую пищать мой терминал в начале каждого сеанса связи. Я не мог знать, что делает каждый пользователь, но я мог видеть его имя. Каждые две минуты мой терминал взвизгивал, и я смотрел, кто подключился. Вот несколько моих приятелей-астрономов, работающих над научным отчетом, вот аспиранты, корпящие над своими диссертациями. Больше всего подключалось чужаков, и я спрашивал себя: «Как определить, кто из них может быть хакером?»
В этот день в 1233 подключился Свентек. Я почувствовал, как в мою кровь обильными порциями поступает адреналин. Затем полный упадок сил, когда он исчез. Единственное, что осталось это идентификатор его терминала: он использовал терминальный порт tt23. Задача определить физические провода, соответствующие логическому имени tt23. Терминалам нашей лаборатории и модемам, подключаемым через телефонные линии, присвоены метки «tt», а сетевым подключениям «nt». До меня дошло, что подключался этот парень либо из лаборатории, либо по телефонному каналу через модем. Теоретически можно было проследить всю цепочку от компьютера до человека на противоположном конце. Но чтобы проверить все и всех, потребовалось бы месяцев шесть. Первоочередной задачей было выявить подключения из здания. Я подозревал, что использовался модем, связанный по телефонному каналу, но нельзя исключать и вход в компьютер из лаборатории. За несколько лет было подсоединено добрых пять сотен терминалов, и только Поль Мюррей во всем этом разбирался. К счастью, доморощенные схемы соединений были задокументированы лучше доморощенных программ.
Поль, один из наших аппаратчиков, как одинокий волк скрывался в логове из проводов. За панелью одного устройства он подсоединял детектор частиц к локальной системе Этернет. Эта система образует электронные конвейеры, объединяющие сотни малых вычислительных машин. Несколько миль оранжевого этернетовского кабеля, извиваясь как змея, пролегало по всей лаборатории. Поль знал каждый его дюйм. Когда я появился, он припаивал какой-то провод и встретил меня потоком отборной ругани. Он отказался помочь, пока я не представлю официального подтверждения, что мне действительно нужны схемы соединений. О, черт! Аппаратчики никогда не интересуются программистскими проблемами, а сами программисты в аппаратуре ни бум-бум. Но я-то паять умел, поэтому взял его запасной паяльник и через две минуты, дуя на обожженные пальцы, выслушал скупую похвалу. Наконец, он выбрался из клубка этернетовских кабелей и показал мне все коммутационное хозяйство лаборатории. Здесь были телефоны, системы внутренней связи, радиоаппаратура и компьютеры, и все это в переплетении кабелей, проводов, волоконно-оптических линий. Подозрительный порт tt23 входил в эту комнату, и вторичный компьютер подключал его к одному из тысячи возможных терминалов. Любому, кто наберет номер лаборатории, произвольным образом назначался какой-нибудь юниксовский порт. В следующий раз, когда я увижу что-то подозрительное, я должен буду сломя голову нестись к коммутатору и определять соединение, исследуя вторичный компьютер. Если соединение будет разорвано до того, как я успею, то, считайте, ничего не вышло. И даже в случае успеха я смогу лишь определить пару проводов, идущих в лабораторию. До хакера еще далеко.
По счастливому стечению обстоятельств дневное подключение не прошло бесследно. Поль набирал статистику о том, сколько человек использовало коммутатор. Случайно он записал номера портов для всех подключений за последний месяц. Так как я знал время, когда Свентек использовал порт tt23, то можно было выяснить, как он подключался. Распечатка статистики показала, что сеанс, начавшийся в 1233, длился одну минуту, а темп передачи данных составлял 1200 Бод. Это уже кое-что. Темп передачи это скорость, с какой данные передаются по проводу. 1200 Бод это 120 символов в секунду, т. е. несколько страниц текста в минуту. Подключаемые к телефонной линии модемы работают именно с темпом 1200 Бод. А для терминалов лаборатории используются более высокие значения 9600 или даже 19200 Бод. Только человек, связывающийся с компьютером через модем по телефону, вынужден гонять свои данные через такую тонкую соломинку. Но именно анонимность и удобство телефонной связи наиболее привлекательны для посторонних пользователей. Так! Концы начинают сходиться. Я еще не мог доказать, что с системой балуется хакер, но уже видел, что кто-то подключается к ней через телефонный канал и использует атрибуты доступа Свентека.
Конечно, подключение с темпом передачи 1200 Бод еще не доказательство факта хакерства. Все это неубедительно для босса. Я должен найти явное свидетельство хакерства. Но как?
Рой Керт однажды показал мне детектор частиц высоких энергий, подсоединенный к Беватрону: они зафиксировали огромное количество взаимодействий на субатомном уровне, которые в 99,99 процентах случаев можно было объяснить, применяя законы физики. Если потратить время, исследуя след каждой частицы, то можно прийти к заключению, что вообще-то все частицы подчиняются известным физическим законам и что открытие не состоялось. Другой подход отбросить все объяснимые взаимодействия и заняться только теми, которые не подчиняются каноническим правилам. Астрономы дальние родственники физиков действуют аналогично. Успех им приносит изучение аномалий квазаров, пульсаров, гравитационных линз всего, что не укладывается в рамки построенных моделей. Знание статистики распределения кратеров на Меркурии позволяет вычислить, с какой частотой эта планета подвергалась бомбардировке на ранних стадиях развития солнечной системы. Но обратите внимание на несколько кратеров, пересекаемых скрепами и кряжами, и вы узнаете, как сжималась планета в процессе охлаждения в первый миллиард лет. Собирайте информацию и отбрасывайте все ожидаемое. Все, что осталось предмет для размышлений.
Так, теперь попробуем применить все эти рассуждения и вычислить нежданного гостя. На моем столе стоял терминал, кроме того, я мог позаимствовать еще парочку. Предположим, что я пытаюсь контролировать все пути, ведущие в компьютерный центр. В систему входит примерно пятьсот линий подключения. Большая их часть работает с темпом передачи 9600 Бод, что соответствует приблизительно ста пятидесяти словам в секунду. Если одновременно работает половина линий, то мне придется читать свыше десяти тысяч страниц каждую минуту. Да, так ничего не выйдет.
Но быстродействующие линии связаны только с лабораторными терминалами. Мы уже отследили одно подозрительное подключение с темпом передачи 1200 Бод. Таких линий гораздо меньше и работают они намного медленнее. Пятьдесят линий с темпом 1200 Бод дадут сто страниц текста в минуту все еще слишком быстро, чтобы можно было читать с экрана. Я не могу одновременно наблюдать за работой пятидесяти человек, но могу сделать распечатки всех интерактивных сеансов связи и потом прочесть. Кроме того, распечатка уже доказательство, что некто вмешивается в работу системы; если же не обнаружится ничего подозрительного, то можно будет поставить точку. Тогда мне нужно будет фиксировать каждое подключение с темпом передачи 1200 Бод. Технически это вряд ли возможно, поскольку я не знаю, по какому телефону будет подключаться хакер: придется контролировать примерно четыре дюжины каналов. И еще меня беспокоит этическая сторона. Имею ли я право следить за потоками информации, проходящими через наши каналы? Моя подружка Марта как раз заканчивала юридический колледж. За пиццей мы говорили на тему привлечения к ответственности взломщиков компьютеров. Я поинтересовался, будут ли проблемы, если я «прослушаю» потоки чужих данных.
Значит, так, невнятно проговорила она, пытаясь жевать и объяснять одновременно, ты не фараон, поэтому тебе не нужен ордер на обыск. Худшее, что тебя ждет это обвинение в нарушении прав личности. Вряд ли люди, подключающиеся к компьютеру через телефонный канал, будут требовать, чтобы владелец системы не заглядывал к ним через плечо. Поэтому слушай на здоровье.
С чистой совестью я начал создание системы контроля. У нас пятьдесят линий с темпом передачи 1200 Бод. Хакер может воспользоваться любой из них. У меня не было оборудования, чтобы регистрировать информационные потоки.
Но есть простой способ зафиксировать хакерскую активность: так переделать операционную систему, чтобы при любом подозрительном подключении сама система фиксировала бы каждое нажатие клавиши на клавиатуре. Чертовски соблазнительно. Все, что потребуется добавить несколько строк в программу «демон».
Демоны это программы, копирующие данные из внешнего мира в операционную систему глаза и уши ЮНИКСа. (Древнегреческие демоны низшие божества что-то среднее между богами и людьми. В этом смысле мои демоны были чем-то средним между богоподобной операционной системой и низшим миром, в котором живут диски и терминалы.) Я могу раскурочить демона и устроить этакий тройник: символы, введенные с клавиатуры хакера, будут одновременно поступать и в операционную систему, и на принтер. Просто и элегантно.
Вэйн напутствовал меня: «Если ты напортачишь, то развалишь всю систему. Превратишь ее в кучу навоза и ройся потом. Только и радости, что увидишь на распечатке Аварийное прерывание ядра. Потом не рыдай у меня на плече!» Тут подскочил Дэйв: «Сынок, если твой хакер хоть что-то петрит в ЮНИКСе, то он просто обязан заметить изменения в демонах!»
Убедительно. Любой дока-программист заметит изменения в операционной системе. Как только хакер почует контроль, он превратит наши базы данных в груду мусора и слиняет. Перехваты следует производить так, чтобы их никто не засек. Невидимая и неслышимая слежка вот что надо.
Может быть, просто записать поступающую по телефонным каналам информацию на магнитную ленту? Нет, магнитофоны не годятся, слишком много хлопот. Запись придется воспроизводить, когда хакер уже отключится. И, наконец, где я найду пятьдесят магнитофонов?! Единственный участок тракта, где можно перехватить поток данных между модемом и компьютером. Модемы преобразуют телефонные гудки в электрические импульсы, понятные для наших компьютеров и демонов. Модемные шины представляют собой плоские двадцатипятипроводные кабели, проложенные под фальшполом коммутатора. К ним можно подключить принтер или персональный компьютер, регистрирующий каждый передаваемый через шины символ.
Потребуется всего-то пятьдесят телетайпов, принтеров и портативных компьютеров. Несколько телетайпов достать легко обратиться в отдел снабжения. Портативные терминалы можно выклянчить у Дэйва, Вэйна и остальных ребят. В пятницу вечером мы подняли из коммутаторной дюжину мониторов. Остальные тридцать можно заполучить, когда все уйдут. Я бродил среди столов секретарш, заимствуя персональные терминалы. В понедельник, конечно, будет скандальчик, но легче после извиниться, чем сперва добиться.
Уставленный четырьмя дюжинами стареньких телетайпов и портативных терминалов пол воплощал ночной кошмар компьютерщика. Я дремал среди всего этого и мурлыкал колыбельную принтерам и компьютерам. Каждый из них перехватывал данные на отдельном канале, и всякий раз, когда кто-то подключался, я вздрагивал от треска телетайпов. Каждые полчаса один из мониторов сообщал, что кончилась бумага или дисковое пространство, поэтому мне приходилось устанавливать новый рулон и перезагружаться.
В субботу утром я проснулся оттого, что Рой Керт тряс меня за плечо: «Ну, где же твой хакер?» Запах от меня шел, как от козла: я все еще был в спальном мешке. Я глупо моргал и бормотал, что надо просмотреть пятьдесят стопок распечаток.
Он фыркнул: «Ну, прежде, чем погрузишь свой нос в эти бумаги, верни принтеры. Ты, как маньяк, таскал оборудование. Думаешь, здесь твой личный огород?»
С осоловелыми глазами я поволок принтеры законным владельцам. На первых сорока девяти не было ничего интересного. Из пятидесятого свисало восемьдесят футов распечатки. Ночью некто пытался пробраться через дыру в операционной системе.
Глава 4
Хакер лазал по нашей системе три часа. Втайне мой Декрайтер записал весь сеанс на восьмидесяти футах бумаги. Зафиксирована была каждая команда, каждая ошибка набора с клавиатуры и все реакции компьютера. Этот принтер контролировал телефонный канал из Тимнета. Я не знал, что несколько наших линий с темпом передачи 1200 Бод не связаны с модемами, а идут из Тимнета телекоммуникационной компании, обеспечивающей компьютерную связь по всему миру.
Ранее компания «Белл» монополизировала средства связи. Позвонить из Нью-Йорка в Чикаго можно было только по каналам фирмы AT&T. Используя модемы, можно передавать данные по местной телефонной линии, однако для междугородней связи помехи и дороговизна делают ее непригодной для организации взаимодействия между компьютерами. К концу 70-х годов другие фирмы тоже захотели погреть руки и предложили специализированный вид услуг «телефон» для данных. Тимнет создал сеть, связывающую компьютеры главных городов. Идея Тимнета проста и элегантна: создать «хребет» для передачи цифровой информации, позволить любому желающему подключаться к этому хребту, используя внутригородские телефонные каналы, и затем передавать данные в любой компьютер. Система Тимнета весьма экономична: она обеспечивает сжатие данных, поступающих от нескольких десятков пользователей, в несколько пакетов и передачу этих пакетов в нужные компьютеры. Система устойчива к помехам и обеспечивает любое нужное быстродействие. Клиенты, кроме того, экономят свои денежки, поскольку для них обеспечивается доступ в удаленный компьютер с помощью телефонного звонка.
Чтобы удовлетворить потребности научных работников из различных уголков страны, лаборатория в Беркли также была абонентом Тимнета. Когда ученому из Стоунибрука, штат Нью-Йорк, надо подключиться к нашему компьютеру, то он просто набирает городской номер Тимнета. Поскольку его модем связан с Тимнетом, то все, что требуется попросить подсоединить его к Лоуренсовской лаборатории в Беркли, и можно начинать работать, как у нас за терминалом. Физикам из отдаленных уголков очень нравился этот вид услуг, и нам всегда было очень приятно сознавать, что что они спускают свои баксы на наш компьютер, а не на какой-нибудь другой.