Так должно быть, и в некоторых ситуациях эти права действительно имеют силу. Но большинство этих прав почти единодушно игнорируется. Значит, взломы необходимы.
Хакерство позволяет использовать компьютеры в соответствии с вышеперечисленными идеалами. Хакеры обладают идеалами относительно всех людей и всего человечества в целом, и у меня есть набор таких идеалов, которые лично я использую. Вот главные из них: Никогда и никаким образом не наноси вред ни компьютеру, ни программному обеспечению, ни системе, ни человеку, ничего не изменяй и не уничтожай. Если вред все же был нанесен, сделай все, что в твоих силах, чтобы исправить содеянное, и предотвратить подобное в будущем. Не позволяй ни себе, ни другим откровенно наживаться на взломах. Сообщай компьютерным менеджерам о наличии прорех в защите их компьютеров. Учи других, если тебя просят об этом, делись знаниями, если тебе есть чем делиться. Это не необходимость, но простая вежливость. Помни о своей уязвимости во всем, что касается компьютеров, включая секреты, которые тебе удалось узнать с помощью взломов. Будь осторожен. Проявляй настойчивость, но не делай глупостей и не рискуй понапрасну.
Я не хочу сказать, что следование этим принципам делает мои занятия хакерством моральными или правомочными. Но я также не считаю, что мое хакерство аморально. И я не стану выслушивать ничьих возражений по этому поводу. Мы-то знаем, что законно, а что - нет. Я собираюсь заниматься хакерством вне зависимости от того, насколько моральным я его считаю. И если у вас возникнет вопрос типа "Неужели вы действительно думаете, что этот ваш кодекс чести может оправдать что-нибудь вроде "вынюхивания"?", значит, у вас в крови нет хакерства.
комбинирование принципов
В данной книге я попытался предложить основные указания по различным темам, которые подготовят вас к любой, связанной с компьютерами, ситуации, в которой вы можете оказаться.
Когда речь заходит о понятии "хакерства", невозможно говорить о какой-то определенной последовательности шагов, которые следует предпринимать для достижения своих целей. Надо, скорее, выбрать основные идеи, дополнять их по мере необходимости, и взламывать до тех пор, пока что-то не выйдет. Зная, что вас ожидает, вы будете знать, как реагировать на очередное изменение, - и ваши хакерские способности только увеличатся. Я хочу рассказать вам еще одну, последнюю, историю. Она демонстрирует многое из того, о чем вы прочли в книге: исследования, копание в мусоре, подглядывание через плечо, упорство и логические рассуждения, программистские методы и методы грубой силы, общие знания о компьютерах, простую и обратную социальную инженерию, анализ экранов и модели систем. Эта история показывает, как все это вместе работает на конечный результат удачный взлом.
"команда тигров" в моем лице
Недавно мне представилась возможность показать себя в хакерстве, взламывая только что установленную компьютерную систему специализированной библиотеки. Директор библиотеки был в курсе дела, поскольку они недавно обратились к этой новой системе, которая, в отличие от предыдущих, давала возможность получения коммутируемого доступа с внешних линий. Директор захотел узнать, возможно ли, находясь в режиме поиска, проникнуть в запретные зоны, имеющие дело с штрафами за просроченные книги, именами и адресами клиентов и можно ли вообще выйти из библиотечной программы в ОС? И многое-многое другое. Я сообщил ему, что буду счастлив разобраться с этой проблемой. Он предложил дать мне один из номеров для соединения с системой, но я отказался. Ведь я - хакер! (На самом деле я просто хотел произвести на него впечатление - я уже знал этот номер, когда он демонстрировал мне работу общедоступной части системы.)
Я вызвал систему из дома и изучил ее вдоль и поперек. Это была система, работавшая по командам. На экране я смог выбрать функцию, вводя такие команды, как 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 посылал им свою карточку. Но - нет. Мне пришлось сказать, что я перезвоню на следующий день. Я решил, что в библиотеке компании должна быть эта документация, но не мог же я там появиться и попросить директора дать мне ее на время. Я должен был действовать как независимый хакер. Пришло время серьезно заняться социальной инженерией. Директор для этой цели не годится он знает мой голос. Все, что мне было надо, - это серийный номер. Я позвонил секретарше библиотеки и сказал, что я - программист из компании, которая установила им новую компьютерную систему, и хотел бы знать, нет ли у них восьмой версии программы? Этого она, конечно, не знала, но я вежливо объяснил, что ей нужно просто найти несколько дискет с приклеенными на них ярлычками... Найдя их в директорском офисе, она сообщила мне серийный номер. Одной из его цифр оказалась восьмерка, и я сказал ей, что все верно, и я просто хотел убедиться, что компания поставила им самую новую версию, и как только появится девятая версия, мы пошлем ее им.