«Команда тигров» в моем лице
Недавно мне представилась возможность показать себя в хакерстве, взламывая только что установленную компьютерную систему специализированной библиотеки. Директор библиотеки был в курсе дела, поскольку они недавно обратились к этой новой системе, которая, в отличие от предыдущих, давала возможность получения коммутируемого доступа с внешних линий. Директор захотел узнать, возможно ли, находясь в режиме поиска, проникнуть в запретные зоны, имеющие дело с штрафами за просроченные книги, именами и адресами клиентов и можно ли вообще выйти из библиотечной программы в ОС? И многое-многое другое. Я сообщил ему, что буду счастлив разобраться с этой проблемой. Он предложил дать мне один из номеров для соединения с системой, но я отказался. Ведь я — хакер! (На самом деле я просто хотел произвести на него впечатление — я уже знал этот номер, когда он демонстрировал мне работу общедоступной части системы.)
Я вызвал систему из дома и изучил ее вдоль и поперек. Это была система, работавшая по командам. На экране я смог выбрать функцию, вводя такие команды, как CAT для поиска библиотечного каталога, и HOL, чтобы помечать пункты. Правильно завершать сеанс работы следовало с помошыо команды END. Я попробовал вводить другие, не указанные, команды. Очень часто бывает так, что часть системы является открытой, а часть —.секретной. Почти всегда общедоступная часть располагает по крайней мере одной секретной командой для входа в закрытую часть. Итак, я использовал множество ключевых слов: EXIT, BYE, LATER и т. д. Я видел, что некоторые из них используются в действующих прикладных программах. Так, команда LEAVE открывала доступ в специальную область для кураторов и сотрудников музея. Но ни одна из испробованных мною команд не сработала. Так как система была новой и не устоявшейся, я не сомневался, что в ней должна быть куча ошибок, которые я смогу обнаружить. В разговоре с директором он упомянул о том, что определенные функциональные клавиши на терминалах еще не установлены, и их нажатие означает провал в непонятную программную оболочку. Ага! Вот это-то мне и надо! Но, если вы вызываете систему по телефонной линии, вы не сможете добраться до функциональных клавиш. Я думал, что, возможно, функциональные клавиши являлись макросами команд, которые пользователь так или иначе должен вводить вручную, но я не знал этих команд.
Под покровом ночи я извлекал содержимое находящихся возле здания мусорных контейнеров в поисках полезной информации, и наконец нашел кое-что — ужасно изорванную брошюрку — документацию по интересующей меня системе. Лома я увидел, что среди перечисленных в карточке вешей были и имена команд, присвоенных функциональным клавишам. Одну-две из них можно было прочесть, остальные же прочесть не удалось. Но и двух было достаточно. Мне сразу стало ясно, что я исходил из неверных предпосылок — не ВСЕ команды представляли собой стандартные слова английского языка или аббревиатуры. Присутствовали и двузначные команды, и точечные. Вводя точечную команду, вы набираете сперва точку, а вслед за ней — буквенно-иифровую команду. Они часто используются в прикладных программах, когда непосредственный ввод буквенно-цифровой команды может быть истолкован как ввод данных. В программах часто используется точка перед командами, поскольку точка простой, неприметный символ, который очень просто набрать. Но иногда в «точечных» командах используются и другие символы — слеш, апостроф и т. п. Из карточки я узнал, нажатие клавиши F1 соответствует команде. QUIT, a F2 команде. HELP. Это показалось многообещающим —.QUIT могла давать доступ к закрытым областям, а помощи, скорее всего, вообще пока нет, так как система только что установлена. Возможно, эта функция и ведет к остановке системы. Я вызывал компьютер по внешней линии, а через модем нажатие функциональных клавиш передать невозможно; так что мне оставалось надеяться на. QUIT и. HELP. Конечно, я уже пытался их вводить, но без точки. Может быть, теперь… Нет! Ничего! Команда. QUIT просто отсоединила меня от компьютера. В ответ на. HELP экран очистился, и на нем появилось следующее:
*EOFtxthlphelpOOO* Я предположил, что это означало End Of File helpOOO в директории txthlp, то есть файл существовал, но был пустым. Я тут же обрадовался — теперь я знаю о директориях текстовых файлов и файлов помощи. И я заметил еще кое-что:
каждый раз при смене экрана вверху появлялось нечто вроде:
*** J. Smith Co Special Library On-Line ***
(000)U,SYSv55.6 Три цифры в скобках изменялись в соответствии с тем, какую часть программы я использовал. Три нуля, возможно, означали открытый экран, где я пытался набирать не указанные в списке команды. Если я наберу команду. HELP вместе с номером экрана, допустим, (013), значит, решил я, система начнет искать файл «txthlphelp013». Так и случилось. Аля ввода эта система использовала, в том числе, и команды, сопровождающиеся номером. Мне стало интересно, подходит ли такой формат и для команд помощи. Я попробовал ввести «HELP99999», надеясь, что такое большое число система просто не проглотит — ведь, такого экрана просто не может быть. В ответ я получил сообщение о неверной команде. Я попробовал другие варианты, но они тоже не сработали. Наконец, я снова набрал «HELP99999», и на этот раз команда подействовала! Наверно, в первый раз я сделал ошибку. Теперь система полетела, и я оказался в отладочной среде программы. Это было нечто вроде мини-системы для редактирования текстовых и командных файлов. Я не нашел в ней ничего ценного, кроме копирайта с первыми буквами названия компании, выпустившей программу. Я просмотрел несколько каталогов компаний по производству программного обеспечения, пытаясь расшифровать аббревиатуру, и наконец мне это удалось. Позвонив туда, я выяснил, что именно они написали интересующую меня программу. Я попросил прислать мне запасную документацию к пакету. Конечно, сказали они, просто вышлите нам серийный номер своей программы, и они вышлют мне книгу за соответствующую плату. Я попытался схитрить, но не тут-то было: секретарша сообщила, что серийный номер можно найти на ярлыке инсталляционных дискет. «У меня сейчас нет дискет… Я звоню из машины. Я уверен, что высылал свою карточку, может, вы проверите? Меня зовут Ажонатан Смит из…» Я молил бога, чтобы настоящий J. Smith посылал им свою карточку. Но — нет. Мне пришлось сказать, что я перезвоню на следующий день. Я решил, что в библиотеке компании должна быть эта документация, но не мог же я там появиться и попросить директора дать мне ее на время. Я должен был действовать как независимый хакер. Пришло время серьезно заняться социальной инженерией. Директор для этой цели не годится он знает мой голос. Все, что мне было надо, — это серийный номер. Я позвонил секретарше библиотеки и сказал, что я — программист из компании, которая установила им новую компьютерную систему, и хотел бы знать, нет ли у них восьмой версии программы? Этого она, конечно, не знала, но я вежливо объяснил, что ей нужно просто найти несколько дискет с приклеенными на них ярлычками… Найдя их в директорском офисе, она сообщила мне серийный номер. Одной из его цифр оказалась восьмерка, и я сказал ей, что все верно, и я просто хотел убедиться, что компания поставила им самую новую версию, и как только появится девятая версия, мы пошлем ее им.
Я больше суток разбирался в отладочной документации. Я обнаружил, как можно обойти программное окружение и как — самое главное! — выйти из него. Выйдя из отладки, я оказался перед приглашением к загрузке. Нажав в ответ «circ» и «JSC» — J. Smith Co. - я вошел внутрь. Разумеется, здесь я привожу вымышленное имя. После ввода верного пароля я оказался на втором уровне зашиты — circ,JSC была общая входная комбинация, известная любому легальному пользователю. Я знал, что означает «ваш личный девятизначный код». Номер социальной безопасности! Я знал, где родился и вырос директор, так что первые три цифры у меня были. Я написал программу для перебора последних шести цифр, и вскоре нашел верную комбинацию. Мне выдали сообщение: «Добрый вечер, Ажейн Торнбакл! Пожалуйста, введите ваш личный пароль». Директора звали иначе. Теперь мне был нужен пароль Ажейн. Я снова попробовал метод грубой силы, но безрезультатно. Я не знал, кто такая Ажейн Торнбакл, но у меня была извлеченная из мусора пачка рекламных проспектов компании. А вот и ответ: Торнбакл оказалась сотрудницей отдела службы управления информацией то есть программистом. Вычислить ее пароль мне так и не удалось; продолжив перебирать номера социальной безопасности, я опять вышел на номер директора библиотеки. Итак, чего я достиг? Программная оболочка — вещь интересная, и я научился с ее помощью как угодно редактировать файлы и т. п. Я сумел использовать одну из отладочных команд поиска для обнаружения слова «circ» в файлах системы. В одном из них среди абракадабры я обнаружил слово «minicirc», а затем «circ». Я попытался расшифровать абракадабру, идущую после «circ», думая, что это зашифрованное «JSC», и надеясь таким образом найти ключ к абракадабре после «minicirc». Безрезультатно. Вернувшись к входному приглашению, я попытался использовать «minicirc» с различными паролями. Проблема была в том, что я не знал, что такое «mini». Я подумал, что это может быть модель программы или руководство. Наконец, я нашел верный пароль — T.CIRC1. Он-то и привел меня к заветному сообщению: «Пожалуйста, введите вам личный девятизначный идентификационный код». Через несколько секунд я нашел нужный номер, и экран очистился. «Доброе утро, Новый Пользователь!» — появились на нем слова. — «Пожалуйста, введите ваш личный пароль». Я надеялся, что это — последний уровень зашиты. И точно: через несколько мгновений мне удалось войти, использовав пароль «TRAIN». Я гордился собой — я взломал-таки закрытую часть системы. Но приключения еще не закончились — ведь «minicirc» была всего лишь учебной моделью настоящей системы. Ее можно было использовать для проверки книг для выдачи посетителям, регистрации новых посетителей, поиска в базах данных и т. д. Но в базе данных содержались только вымышленные имена и адреса. Многие другие свойства системы были бесполезны, но мне помогло само их наличие.