Страница:
мой кодекс: чести
Компьютеры дали возможность каждому получать огромные количества информации быстрее и дешевле, чем когда-либо прежде. Свободное распространение информации является благом, но лишь постольку, поскольку не ущемляет прав человека. Существует два вида прав человека-права отдельной личности и права человечества в целом. Человечество должно иметь возможность виртуального доступа к любой информации, и эта информация должна использоваться в моральных целях.
Люди должны знать то, что они хотят знать, и нельзя скрывать от них информацию. Новые идеи должны публиковаться и обсуждаться. Знания должны доходить до людей. Технологии должны использоваться на благо людей, но не ради наживы и не в политических целях. Каждый человек должен иметь право на то, чтобы связанная с ним информация не использовалась во вред ему. Люди должны иметь право знать, если их личная информация внесена в базу данных, знать о том, кому и когда она отдается или продается. Они должны иметь право следить за тем, каким образом используется эта информация. Человек должен иметь право проверять информацию о самом себе, если она занесена в компьютерный файл или базу данных, и в этом ему не должны чиниться препятствия. Он должен иметь право беспрепятственно исправлять неточности в этих данных, и убирать оскорбительную для себя информацию. Аюди должны иметь гарантию, что те, кто создает и обслуживает базы данных, будут своевременно предоставлять им эти права.
Так должно быть, и в некоторых ситуациях эти права действительно имеют силу. Но большинство этих прав почти единодушно игнорируется. Значит, взломы необходимы.
Хакерство позволяет использовать компьютеры в соответствии с вышеперечисленными идеалами. Хакеры обладают идеалами относительно всех людей и всего человечества в целом, и у меня есть набор таких идеалов, которые лично я использую. Вот главные из них: Никогда и никаким образом не наноси вред ни компьютеру, ни программному обеспечению, ни системе, ни человеку, ничего не изменяй и не уничтожай. Если вред все же был нанесен, сделай все, что в твоих силах, чтобы исправить содеянное, и предотвратить подобное в будущем. Не позволяй ни себе, ни другим откровенно наживаться на взломах. Сообщай компьютерным менеджерам о наличии прорех в защите их компьютеров. Учи других, если тебя просят об этом, делись знаниями, если тебе есть чем делиться. Это не необходимость, но простая вежливость. Помни о своей уязвимости во всем, что касается компьютеров, включая секреты, которые тебе удалось узнать с помощью взломов. Будь осторожен. Проявляй настойчивость, но не делай глупостей и не рискуй понапрасну.
Я не хочу сказать, что следование этим принципам делает мои занятия хакерством моральными или правомочными. Но я также не считаю, что мое хакерство аморально. И я не стану выслушивать ничьих возражений по этому поводу. Мы-то знаем, что законно, а что - нет. Я собираюсь заниматься хакерством вне зависимости от того, насколько моральным я его считаю. И если у вас возникнет вопрос типа "Неужели вы действительно думаете, что этот ваш кодекс чести может оправдать что-нибудь вроде "вынюхивания"?", значит, у вас в крови нет хакерства.
комбинирование принципов
В данной книге я попытался предложить основные указания по различным темам, которые подготовят вас к любой, связанной с компьютерами, ситуации, в которой вы можете оказаться.
Когда речь заходит о понятии "хакерства", невозможно говорить о какой-то определенной последовательности шагов, которые следует предпринимать для достижения своих целей. Надо, скорее, выбрать основные идеи, дополнять их по мере необходимости, и взламывать до тех пор, пока что-то не выйдет. Зная, что вас ожидает, вы будете знать, как реагировать на очередное изменение, - и ваши хакерские способности только увеличатся. Я хочу рассказать вам еще одну, последнюю, историю. Она демонстрирует многое из того, о чем вы прочли в книге: исследования, копание в мусоре, подглядывание через плечо, упорство и логические рассуждения, программистские методы и методы грубой силы, общие знания о компьютерах, простую и обратную социальную инженерию, анализ экранов и модели систем. Эта история показывает, как все это вместе работает на конечный результат удачный взлом.
"команда тигров" в моем лице
Недавно мне представилась возможность показать себя в хакерстве, взламывая только что установленную компьютерную систему специализированной библиотеки. Директор библиотеки был в курсе дела, поскольку они недавно обратились к этой новой системе, которая, в отличие от предыдущих, давала возможность получения коммутируемого доступа с внешних линий. Директор захотел узнать, возможно ли, находясь в режиме поиска, проникнуть в запретные зоны, имеющие дело с штрафами за просроченные книги, именами и адресами клиентов и можно ли вообще выйти из библиотечной программы в ОС? И многое-многое другое. Я сообщил ему, что буду счастлив разобраться с этой проблемой. Он предложил дать мне один из номеров для соединения с системой, но я отказался. Ведь я - хакер! (На самом деле я просто хотел произвести на него впечатление - я уже знал этот номер, когда он демонстрировал мне работу общедоступной части системы.)
Я вызвал систему из дома и изучил ее вдоль и поперек. Это была система, работавшая по командам. На экране я смог выбрать функцию, вводя такие команды, как CAT для поиска библиотечного каталога, и HOL, чтобы помечать пункты. Правильно завершать сеанс работы следовало с помошыо команды END. Я попробовал вводить другие, не указанные, команды. Очень часто бывает так, что часть системы является открытой, а часть -.секретной. Почти всегда общедоступная часть располагает по крайней мере одной секретной командой для входа в закрытую часть. Итак, я использовал множество ключевых слов: EXIT, BYE, LATER и т. д. Я видел, что некоторые из них используются в действующих прикладных программах. Так, команда LEAVE открывала доступ в специальную область для кураторов и сотрудников музея. Но ни одна из испробованных мною команд не сработала. Так как система была новой и не устоявшейся, я не сомневался, что в ней должна быть куча ошибок, которые я смогу обнаружить. В разговоре с директором он упомянул о том, что определенные функциональные клавиши на терминалах еще не установлены, и их нажатие означает провал в непонятную программную оболочку. Ага! Вот это-то мне и надо! Но, если вы вызываете систему по телефонной линии, вы не сможете добраться до функциональных клавиш. Я думал, что, возможно, функциональные клавиши являлись макросами команд, которые пользователь так или иначе должен вводить вручную, но я не знал этих команд.
Под покровом ночи я извлекал содержимое находящихся возле здания мусорных контейнеров в поисках полезной информации, и наконец нашел кое-что - ужасно изорванную брошюрку - документацию по интересующей меня системе. Лома я увидел, что среди перечисленных в карточке вешей были и имена команд, присвоенных функциональным клавишам. Одну-две из них можно было прочесть, остальные же прочесть не удалось. Но и двух было достаточно. Мне сразу стало ясно, что я исходил из неверных предпосылок - не ВСЕ команды представляли собой стандартные слова английского языка или аббревиатуры. Присутствовали и двузначные команды, и точечные. Вводя точечную команду, вы набираете сперва точку, а вслед за ней - буквенно-иифровую команду. Они часто используются в прикладных программах, когда непосредственный ввод буквенно-цифровой команды может быть истолкован как ввод данных. В программах часто используется точка перед командами, поскольку точка простой, неприметный символ, который очень просто набрать. Но иногда в "точечных" командах используются и другие символы - слеш, апостроф и т. п. Из карточки я узнал, нажатие клавиши F1 соответствует команде .QUIT, a F2 команде .HELP. Это показалось многообещающим - .QUIT могла давать доступ к закрытым областям, а помощи, скорее всего, вообще пока нет, так как система только что установлена. Возможно, эта функция
и ведет к остановке системы. Я вызывал компьютер по внешней линии, а через модем нажатие функциональных клавиш передать невозможно; так что мне оставалось надеяться на .QUIT и .HELP. Конечно, я уже пытался их вводить, но без точки. Может быть, теперь... Нет! Ничего! Команда .QUIT просто отсоединила меня от компьютера. В ответ на .HELP экран очистился, и на нем появилось следующее:
*EOF\txt\hlp\helpOOO* Я предположил, что это означало End Of File helpOOO в директории \txt\hlp, то есть файл существовал, но был пустым. Я тут же обрадовался - теперь я знаю о директориях текстовых файлов и файлов помощи. И я заметил еще кое-что:
каждый раз при смене экрана вверху появлялось нечто вроде:
*** J. Smith Co Special Library On-Line ***
(000)U,SYSv55.6 Три цифры в скобках изменялись в соответствии с тем, какую часть программы я использовал. Три нуля, возможно, означали открытый экран, где я пытался набирать не указанные в списке команды. Если я наберу команду .HELP вместе с номером экрана, допустим, (013), значит, решил я, система начнет искать файл "\txt\hlp\help013". Так и случилось. Аля ввода эта система использовала, в том числе, и команды, сопровождающиеся номером. Мне стало интересно, подходит ли такой формат и для команд помощи. Я попробовал ввести "HELP99999", надеясь, что такое большое число система просто не проглотит - ведь, такого экрана просто не может быть. В ответ я получил сообщение о неверной команде. Я попробовал другие варианты, но они тоже не сработали. Наконец, я снова набрал "HELP99999", и на этот раз команда подействовала! Наверно, в первый раз я сделал ошибку. Теперь система полетела, и я оказался в отладочной среде программы. Это было нечто вроде мини-системы для редактирования текстовых и командных файлов. Я не нашел в ней ничего ценного, кроме копирайта с первыми буквами названия компании, выпустившей программу. Я просмотрел несколько каталогов компаний по производству программного обеспечения, пытаясь расшифровать аббревиатуру, и наконец мне это удалось. Позвонив туда, я выяснил, что именно они написали интересующую меня программу. Я попросил прислать мне запасную документацию к пакету. Конечно, сказали они, просто вышлите нам серийный номер своей программы, и они вышлют мне книгу за соответствующую плату. Я попытался схитрить, но не тут-то было: секретарша сообщила, что серийный номер можно найти на ярлыке инсталляционных дискет. "У меня сейчас нет дискет... Я звоню из машины. Я уверен, что высылал свою карточку, может, вы проверите? Меня зовут Ажонатан Смит из ..." Я молил бога, чтобы настоящий J. Smith посылал им свою карточку. Но - нет. Мне пришлось сказать, что я перезвоню на следующий день. Я решил, что в библиотеке компании должна быть эта документация, но не мог же я там появиться и попросить директора дать мне ее на время. Я должен был действовать как независимый хакер. Пришло время серьезно заняться социальной инженерией. Директор для этой цели не годится он знает мой голос. Все, что мне было надо, - это серийный номер. Я позвонил секретарше библиотеки и сказал, что я - программист из компании, которая установила им новую компьютерную систему, и хотел бы знать, нет ли у них восьмой версии программы? Этого она, конечно, не знала, но я вежливо объяснил, что ей нужно просто найти несколько дискет с приклеенными на них ярлычками... Найдя их в директорском офисе, она сообщила мне серийный номер. Одной из его цифр оказалась восьмерка, и я сказал ей, что все верно, и я просто хотел убедиться, что компания поставила им самую новую версию, и как только появится девятая версия, мы пошлем ее им.
Я больше суток разбирался в отладочной документации. Я обнаружил, как можно обойти программное окружение и как - самое главное! - выйти из него. Выйдя из отладки, я оказался перед приглашением к загрузке. Нажав в ответ "circ" и "JSC" - J. Smith Co. - я вошел внутрь. Разумеется, здесь я привожу вымышленное имя. После ввода верного пароля я оказался на втором уровне зашиты - circ,JSC была общая входная комбинация, известная любому легальному пользователю. Я знал, что означает "ваш личный девятизначный код". Номер социальной безопасности! Я знал, где родился и вырос директор, так что первые три цифры у меня были. Я написал программу для перебора последних шести цифр, и вскоре нашел верную комбинацию. Мне выдали сообщение: "Добрый вечер, Ажейн Торнбакл! Пожалуйста, введите ваш личный пароль". Директора звали иначе. Теперь мне был нужен пароль Ажейн. Я снова попробовал метод грубой силы, но безрезультатно. Я не знал, кто такая Ажейн Торнбакл, но у меня была извлеченная из мусора пачка рекламных проспектов компании. А вот и ответ: Торнбакл оказалась сотрудницей отдела службы управления информацией то есть программистом. Вычислить ее пароль мне так и не удалось; продолжив перебирать номера социальной безопасности, я опять вышел на номер директора библиотеки. Итак, чего я достиг? Программная оболочка - вещь интересная, и я научился с ее помощью как угодно редактировать файлы и т. п. Я сумел использовать одну из отладочных команд поиска для обнаружения слова "circ" в файлах системы. В одном из них среди абракадабры я обнаружил слово "minicirc", а затем "circ". Я попытался расшифровать абракадабру, идущую после "circ", думая, что это зашифрованное "JSC", и надеясь таким образом найти ключ к абракадабре после "minicirc". Безрезультатно. Вернувшись к входному приглашению, я попытался использовать "minicirc" с различными паролями. Проблема была в том, что я не знал, что такое "mini". Я подумал, что это может быть модель программы или руководство. Наконец, я нашел верный пароль - T.CIRC1. Он-то и привел меня к заветному сообщению: "Пожалуйста, введите вам личный девятизначный идентификационный код". Через несколько секунд я нашел нужный номер, и экран очистился. "Доброе утро, Новый Пользователь!" - появились на нем слова. - "Пожалуйста, введите ваш личный пароль". Я надеялся, что это - последний уровень зашиты. И точно: через несколько мгновений мне удалось войти, использовав пароль "TRAIN". Я гордился собой - я взломал-таки закрытую часть системы. Но приключения еще не закончились - ведь "minicirc" была всего лишь учебной моделью настоящей системы. Ее можно было использовать для проверки книг для выдачи посетителям, регистрации новых посетителей, поиска в базах данных и т. д. Но в базе данных содержались только вымышленные имена и адреса. Многие другие свойства системы были бесполезны, но мне помогло само их наличие.
Там была электронная лоска объявлений, на которой инсталлировавшие программу оставили несколько стандартных сообшений-приветствий. Прочитав их, я узнал немало полезного. Каждое сообщение открывалось списком пославших его, и тех, кому оно предназначалось. Я заключил, что можно посылать сообщения из "minicirc" в "circ", и наоборот. Во-вторых, там оказались сообщения, предназначавшиеся одному пользователю, но по ошибке посланные всем. С помошью текстового редактора я написал письмо и лично послал его. Затем вышел, перезвонил и снова оказался в программной оболочке. Использовав редакторы отладчика, я нашел написанное мною письмо, и изменил его содержание, адресовав его директору библиотеки. Свое имя, под которым хранился файл, - "Новый Пользователь" - я изменил на фиктивное имя представителя компании, произведшей программное обеспечение. В послании содержалась просьба к директору позвонить этому представителю для разговора насчет новой, девятой, версии - обратная инженерия! Телефонный номер, который я дал директору, принадлежал одному моему другу, которому я кратко объяснил, как действовать в случае, если директор позвонит. На всякий случай мы установили автоответчик. Когда директор позвонил, мой друг немного рассказал о новых разработках, а затем задал несколько технических вопросов о способе, с помошью которого в библиотеке была инсталлирована программа. Директор не знал этого, но сказал, что может посмотреть у себя на терминале, загрузившись в систему... "Отлично", - сказал мой друг. - "Делайте все то же, что обычно. Circ. JSC. Так, номер... Кстати, вы используете все тот же личный пароль?" "Ну да, "Firebird". Ну вот, я загрузился..." Итак, последний шаг оказался самым легким.
Для завершения проекта мы стали думать, что же можно сделать, используя директорский системный доступ. Оказалось, что сделать можно многое. Покинув данный уровень, мы вышли на сетевой сервер, а оттуда загрузились в один из главных компьютеров, используя имя и пароль директора. Под конец, для подтверждения своего успеха, я использовал редактор интерактивного отладчика и изменил программу так, чтобы вместо пояснений к командам она выдавала на экран непристойную шутку. Затем я оставил файл в директории директора библиотеки, в котором объяснил, каким образом был совершен взлом.
комбинирование принципов
Если вы хотите быть по-настояшему удачливым хакером, вы должны стать "хакером на все руки". Недостаточно хорошо владеть методами социальной инженерии, или быть гением-программистом, и т. д. Вы должны обладать всеми этими навыками в совокупности с богатым воображением и установкой на конкретные цели. Плюс этика. Я действительно считаю, что хакерство без этики не ведет ни к чему хорошему - если вы будете причинять неприятности другим, то неприятности вскоре начнутся и у вас. Присутствовала ли этика в описанном мною взломе? Конечно - ведь я просто переименовал экранный файл, а неприличную шутку поместил в другой, под прежним именем. Позднее мы вместе с директором и программистами компании вместе обсудили план действий по заделыванию дыр в защите системы.
мысли в заключение
Спросите мудреца о цели существования вселенной, или еще что-нибудь в том же духе - и он ответит:
- Этого нельзя выразить словами. Я знаю ответ, я его чувствую, но неописуемое словами не опишешь. "Ну и чушь!" - подумаете вы. Конечно. Но вместе с тем это правда. Мудрец действительно верит в то, что знает обо всех тайнах вселенной, но вы этого не поймете, пока сами не почувствуете то же самое. Вот ваш проводник в мире хакерства, лежащем за пределами этой книги. Из книги вы узнали идеи, методы и факты, которые позволят вам начать заниматься хакерст-вом, сводя к минимуму возможность совершения ошибок. Но это еще не все. Это хобби (игра? профессия?) требует, как и любое хобби, времени, сил, практики и еще, и еще, до тех пор, пока у вас все не начнет получаться так, как вы хотите.
несколько советов обеспокоенным администраторам
Если же вы прочли эту книгу с точки зрения соблюдения закона и обеспечения компьютерной безопасности - что ж, теперь вы знаете множество способов взлома самых "непробиваемых" систем. Вы, наверное, уже составили список мер, которые примете против описанных мною методов. Объясните вашим пользователям, что никогда нельзя открывать никакую конфиденциальную информацию по телефону, по почте или в режиме онлайн. В ответ на просьбу открыть пароль следует отвечать просто: "в этом я не смогу вам помочь". Нельзя раскрывать имена или телефонные номера, адреса электронной почты иди физические адреса. Если человек спрашивает такие веши, он, скорее всего, является хакером.
Установите правила, по которым легальные пользователи задавали бы вопросы любому подозрительному типу, шатающемуся по офисам. Но не стоит и слишком давить на пользователей проблемами безопасности. Если вы проявите излишнюю бдительность - например, поменяете все пароли, - пользователи могут вас не понять. Объясните им, что они потеряют, если компьютерная безопасность будет нарушена. Убедите их, что это важно для всех сотрудников организации. Чтобы убедиться в нерушимости зашиты на все 100%, возьмите за правило регулярную проверку и очистку компьютеров. Найдите и залатайте дыры в защите вашей системы. Уберите все отладочные опции, которые могут быть причиной появления таких дыр. Если вы увольняете сотрудника, немедленно сотрите его доступ и поменяйте код всех остальных. Существует специальная литература о мерах по компьютерной безопасности, которые должен предпринять администратор. Прочтите ее. Немного хорошей работы - и ваш труд не пропадет зря.
несколько советов обеспокоенным хакерам
Вы прочли всю книгу, и все еще сомневаетесь в успехе? Я гарантирую вам - если вы прилежно обучаетесь хакерству, вы станете настоящим мастером этого искусства. Лаже если вам пока не удалось совершить ни единого взлома, вы все же можете считать себя настоящим хакером - ведь у вас благородные намерения, вы соблюдаете правила хакерской безопасности, вы не станете вредить системе, которую взломаете, и вы стремитесь наслаждаться жизнью во всей ее полноте. А все это и есть хакерство. Поздравляю вас и желаю удачи: теперь вы знаете все Секреты Супер-Хакера! То есть ваши секреты.
Глоссарий
acoustic coupler (акустический соединитель) - прибор, состоящий из двух чашечек на основании, в которые вставляется микротелефонная трубка. Акустический соединитель соединяется с модемом, который посылает свои сигналы прямо на микрофон телефонной трубки, а принимает сигналы с телефона. Полезен для "хакерства на ходу".
amplifier (усилитель) - прибор для увеличения амплитуды сигнала без изменения его свойств.
analog signal (аналоговый сигнал) - выходной сигнал, который изменяется пропорционально изменениям входного сигнала.
anonymous FTP (анонимный протокол передачи файлов FTP) - возможность переноса файлов с удаленного компьютера, соединенного с Интернет, без обладания бюджетом на удаленном компьютере. Вместо имени пользователь вводит: "anonymous", а вместо пароля - обычно адрес электронной почты.
asynchronous (асинхронный) - название множественных программ или процессов, которые перекрывают друг друга в использовании и, возможно, в памяти. Асинхронная атака на систему заключается в том, что одна программа пытается изменить те параметры, которые другая программа проверила на достоверность с положительным результатом, но еще не использовала.
avatar (аватар) - альтернативное наименование для привилегированного пользователя системы (обычно UNIX). В индийской мифологии аватар инкарнация бога.
backbone site (магистральный узел) - ключевой узел USENET и электронной почты, обрабатывающий большое количество поточной информации. Получает и посылает на другие узлы новости и сообщения.
back door - см. Trapdoor baud (бод) - единица скорости передачи информации, импульс, секунду, причем импульсы равны по амплитуде. Один бод равняется одному биту в секунду.
BITNET - сеть, состоящая из миникомпыотеров или мэйн-фрэймов. В ITN ЕТ объединяет множество учебных заведений. Дает возможность посылать электронную почту и передавать файлы, но не позволяет осуществлять удаленный вход.
BBS - Bulletin Board System (Электронная доска объявлений) - компьютер, установленный на прием вызовов с модема. Пользователи устанавливают с ним связь и получают доступ к различным услугам, включая электронную почту, обмен сообщениями, игры и т. д.
boffin (боффин) - термин, использовавшийся во времена второй мировой войны для обозначения людей, подобных хакерам, которые стремились понять, как устроен этот мир, и использовали свои знания на благо этого мира.
buffer overflow (переполнение буфера) - переполнение происходит, когда в буфер поступает избыточное количество новых данных. Причин может быть две: буфер недостаточно велик, чтобы вместить все данные, которые необходимо, до начала обработки этих данных; либо несоответствие между приемом и обработкой данных.
С (Си) - язык программирования, с которым, равно как и Си++, должен быть знаком каждый хакер. На Си написана UNIX.
chat (беседа)-беседа с другом в режиме онлайн.
CCTV - внутренние системы телевизионного наблюдения.
СЮ (Chief Information Officer) - главный офицер службы информации.
console (консоль) - операторский терминал на мэйнфрэй-ме, с помощью которого оператор управляет системой.
console РВХ - настольный коммутатор.
covert channel ("плохой канал" ) - канал, не предназначенный для передачи информации, по которому все же можно нелегально получить секретную информацию о системе.
cracker (кракер) - хакер, плохо относящийся к компьютерам, которые взламывает.
cty - консоль tty (также ctty).
daemon (Disk And Execution Monitor) - "даемон", программа, которая не запускается пользователем или программой пользователя, но дожидается определенных условий, после чего запускается сама.
demodulation(дeмQдyляuия) - процесс перевода аналогового сигнала в цифровой.
demon - "демон"; то же, что даемон, но может вызываться пользователем.
DES (Data Encryption Standard) - стандарт шифровки данных.
detector - детектор, электрическая схема, используемая для изъятия модуляции из несущего сигнала.
dual-tone multifrequensy dialing - двухтональный многочастотный набор, метод коммутации с использованием пары тонов, высокого и низкого. Используется в кнопочных телефонах.
dumb terminal - "глупый" терминал, устройство, предназначенное только ввода в компьютер и вывода из него. Ср. "интеллектуальный" терминал.
duplex - дуплексный канал, позволяет одновременную связь в двух направлениях.
EDP (Electronic Data Processing) - электронная обработка данных.
e-mail - сокр., электронная почта.
firewall mashme - машина, оснащенная различными защитными свойствами. Используется в качестве шлюза для зашиты главных компьютеров.
FTP (File Transfer Protocol) - протокол передачи файлов. Набор протоколов, с помощью которых можно передавать файлы с одного компьютера на другой.
group accounts - групповые бюджегы, бюджета группового доступа. Компьютерная директория иди бюджет, защищенный паролями, принадлежащими группе пользователей.
hacker - прочтите эту книгу и вынесите собственное суждение о значении этого термина!
Компьютеры дали возможность каждому получать огромные количества информации быстрее и дешевле, чем когда-либо прежде. Свободное распространение информации является благом, но лишь постольку, поскольку не ущемляет прав человека. Существует два вида прав человека-права отдельной личности и права человечества в целом. Человечество должно иметь возможность виртуального доступа к любой информации, и эта информация должна использоваться в моральных целях.
Люди должны знать то, что они хотят знать, и нельзя скрывать от них информацию. Новые идеи должны публиковаться и обсуждаться. Знания должны доходить до людей. Технологии должны использоваться на благо людей, но не ради наживы и не в политических целях. Каждый человек должен иметь право на то, чтобы связанная с ним информация не использовалась во вред ему. Люди должны иметь право знать, если их личная информация внесена в базу данных, знать о том, кому и когда она отдается или продается. Они должны иметь право следить за тем, каким образом используется эта информация. Человек должен иметь право проверять информацию о самом себе, если она занесена в компьютерный файл или базу данных, и в этом ему не должны чиниться препятствия. Он должен иметь право беспрепятственно исправлять неточности в этих данных, и убирать оскорбительную для себя информацию. Аюди должны иметь гарантию, что те, кто создает и обслуживает базы данных, будут своевременно предоставлять им эти права.
Так должно быть, и в некоторых ситуациях эти права действительно имеют силу. Но большинство этих прав почти единодушно игнорируется. Значит, взломы необходимы.
Хакерство позволяет использовать компьютеры в соответствии с вышеперечисленными идеалами. Хакеры обладают идеалами относительно всех людей и всего человечества в целом, и у меня есть набор таких идеалов, которые лично я использую. Вот главные из них: Никогда и никаким образом не наноси вред ни компьютеру, ни программному обеспечению, ни системе, ни человеку, ничего не изменяй и не уничтожай. Если вред все же был нанесен, сделай все, что в твоих силах, чтобы исправить содеянное, и предотвратить подобное в будущем. Не позволяй ни себе, ни другим откровенно наживаться на взломах. Сообщай компьютерным менеджерам о наличии прорех в защите их компьютеров. Учи других, если тебя просят об этом, делись знаниями, если тебе есть чем делиться. Это не необходимость, но простая вежливость. Помни о своей уязвимости во всем, что касается компьютеров, включая секреты, которые тебе удалось узнать с помощью взломов. Будь осторожен. Проявляй настойчивость, но не делай глупостей и не рискуй понапрасну.
Я не хочу сказать, что следование этим принципам делает мои занятия хакерством моральными или правомочными. Но я также не считаю, что мое хакерство аморально. И я не стану выслушивать ничьих возражений по этому поводу. Мы-то знаем, что законно, а что - нет. Я собираюсь заниматься хакерством вне зависимости от того, насколько моральным я его считаю. И если у вас возникнет вопрос типа "Неужели вы действительно думаете, что этот ваш кодекс чести может оправдать что-нибудь вроде "вынюхивания"?", значит, у вас в крови нет хакерства.
комбинирование принципов
В данной книге я попытался предложить основные указания по различным темам, которые подготовят вас к любой, связанной с компьютерами, ситуации, в которой вы можете оказаться.
Когда речь заходит о понятии "хакерства", невозможно говорить о какой-то определенной последовательности шагов, которые следует предпринимать для достижения своих целей. Надо, скорее, выбрать основные идеи, дополнять их по мере необходимости, и взламывать до тех пор, пока что-то не выйдет. Зная, что вас ожидает, вы будете знать, как реагировать на очередное изменение, - и ваши хакерские способности только увеличатся. Я хочу рассказать вам еще одну, последнюю, историю. Она демонстрирует многое из того, о чем вы прочли в книге: исследования, копание в мусоре, подглядывание через плечо, упорство и логические рассуждения, программистские методы и методы грубой силы, общие знания о компьютерах, простую и обратную социальную инженерию, анализ экранов и модели систем. Эта история показывает, как все это вместе работает на конечный результат удачный взлом.
"команда тигров" в моем лице
Недавно мне представилась возможность показать себя в хакерстве, взламывая только что установленную компьютерную систему специализированной библиотеки. Директор библиотеки был в курсе дела, поскольку они недавно обратились к этой новой системе, которая, в отличие от предыдущих, давала возможность получения коммутируемого доступа с внешних линий. Директор захотел узнать, возможно ли, находясь в режиме поиска, проникнуть в запретные зоны, имеющие дело с штрафами за просроченные книги, именами и адресами клиентов и можно ли вообще выйти из библиотечной программы в ОС? И многое-многое другое. Я сообщил ему, что буду счастлив разобраться с этой проблемой. Он предложил дать мне один из номеров для соединения с системой, но я отказался. Ведь я - хакер! (На самом деле я просто хотел произвести на него впечатление - я уже знал этот номер, когда он демонстрировал мне работу общедоступной части системы.)
Я вызвал систему из дома и изучил ее вдоль и поперек. Это была система, работавшая по командам. На экране я смог выбрать функцию, вводя такие команды, как CAT для поиска библиотечного каталога, и HOL, чтобы помечать пункты. Правильно завершать сеанс работы следовало с помошыо команды END. Я попробовал вводить другие, не указанные, команды. Очень часто бывает так, что часть системы является открытой, а часть -.секретной. Почти всегда общедоступная часть располагает по крайней мере одной секретной командой для входа в закрытую часть. Итак, я использовал множество ключевых слов: EXIT, BYE, LATER и т. д. Я видел, что некоторые из них используются в действующих прикладных программах. Так, команда LEAVE открывала доступ в специальную область для кураторов и сотрудников музея. Но ни одна из испробованных мною команд не сработала. Так как система была новой и не устоявшейся, я не сомневался, что в ней должна быть куча ошибок, которые я смогу обнаружить. В разговоре с директором он упомянул о том, что определенные функциональные клавиши на терминалах еще не установлены, и их нажатие означает провал в непонятную программную оболочку. Ага! Вот это-то мне и надо! Но, если вы вызываете систему по телефонной линии, вы не сможете добраться до функциональных клавиш. Я думал, что, возможно, функциональные клавиши являлись макросами команд, которые пользователь так или иначе должен вводить вручную, но я не знал этих команд.
Под покровом ночи я извлекал содержимое находящихся возле здания мусорных контейнеров в поисках полезной информации, и наконец нашел кое-что - ужасно изорванную брошюрку - документацию по интересующей меня системе. Лома я увидел, что среди перечисленных в карточке вешей были и имена команд, присвоенных функциональным клавишам. Одну-две из них можно было прочесть, остальные же прочесть не удалось. Но и двух было достаточно. Мне сразу стало ясно, что я исходил из неверных предпосылок - не ВСЕ команды представляли собой стандартные слова английского языка или аббревиатуры. Присутствовали и двузначные команды, и точечные. Вводя точечную команду, вы набираете сперва точку, а вслед за ней - буквенно-иифровую команду. Они часто используются в прикладных программах, когда непосредственный ввод буквенно-цифровой команды может быть истолкован как ввод данных. В программах часто используется точка перед командами, поскольку точка простой, неприметный символ, который очень просто набрать. Но иногда в "точечных" командах используются и другие символы - слеш, апостроф и т. п. Из карточки я узнал, нажатие клавиши F1 соответствует команде .QUIT, a F2 команде .HELP. Это показалось многообещающим - .QUIT могла давать доступ к закрытым областям, а помощи, скорее всего, вообще пока нет, так как система только что установлена. Возможно, эта функция
и ведет к остановке системы. Я вызывал компьютер по внешней линии, а через модем нажатие функциональных клавиш передать невозможно; так что мне оставалось надеяться на .QUIT и .HELP. Конечно, я уже пытался их вводить, но без точки. Может быть, теперь... Нет! Ничего! Команда .QUIT просто отсоединила меня от компьютера. В ответ на .HELP экран очистился, и на нем появилось следующее:
*EOF\txt\hlp\helpOOO* Я предположил, что это означало End Of File helpOOO в директории \txt\hlp, то есть файл существовал, но был пустым. Я тут же обрадовался - теперь я знаю о директориях текстовых файлов и файлов помощи. И я заметил еще кое-что:
каждый раз при смене экрана вверху появлялось нечто вроде:
*** J. Smith Co Special Library On-Line ***
(000)U,SYSv55.6 Три цифры в скобках изменялись в соответствии с тем, какую часть программы я использовал. Три нуля, возможно, означали открытый экран, где я пытался набирать не указанные в списке команды. Если я наберу команду .HELP вместе с номером экрана, допустим, (013), значит, решил я, система начнет искать файл "\txt\hlp\help013". Так и случилось. Аля ввода эта система использовала, в том числе, и команды, сопровождающиеся номером. Мне стало интересно, подходит ли такой формат и для команд помощи. Я попробовал ввести "HELP99999", надеясь, что такое большое число система просто не проглотит - ведь, такого экрана просто не может быть. В ответ я получил сообщение о неверной команде. Я попробовал другие варианты, но они тоже не сработали. Наконец, я снова набрал "HELP99999", и на этот раз команда подействовала! Наверно, в первый раз я сделал ошибку. Теперь система полетела, и я оказался в отладочной среде программы. Это было нечто вроде мини-системы для редактирования текстовых и командных файлов. Я не нашел в ней ничего ценного, кроме копирайта с первыми буквами названия компании, выпустившей программу. Я просмотрел несколько каталогов компаний по производству программного обеспечения, пытаясь расшифровать аббревиатуру, и наконец мне это удалось. Позвонив туда, я выяснил, что именно они написали интересующую меня программу. Я попросил прислать мне запасную документацию к пакету. Конечно, сказали они, просто вышлите нам серийный номер своей программы, и они вышлют мне книгу за соответствующую плату. Я попытался схитрить, но не тут-то было: секретарша сообщила, что серийный номер можно найти на ярлыке инсталляционных дискет. "У меня сейчас нет дискет... Я звоню из машины. Я уверен, что высылал свою карточку, может, вы проверите? Меня зовут Ажонатан Смит из ..." Я молил бога, чтобы настоящий J. Smith посылал им свою карточку. Но - нет. Мне пришлось сказать, что я перезвоню на следующий день. Я решил, что в библиотеке компании должна быть эта документация, но не мог же я там появиться и попросить директора дать мне ее на время. Я должен был действовать как независимый хакер. Пришло время серьезно заняться социальной инженерией. Директор для этой цели не годится он знает мой голос. Все, что мне было надо, - это серийный номер. Я позвонил секретарше библиотеки и сказал, что я - программист из компании, которая установила им новую компьютерную систему, и хотел бы знать, нет ли у них восьмой версии программы? Этого она, конечно, не знала, но я вежливо объяснил, что ей нужно просто найти несколько дискет с приклеенными на них ярлычками... Найдя их в директорском офисе, она сообщила мне серийный номер. Одной из его цифр оказалась восьмерка, и я сказал ей, что все верно, и я просто хотел убедиться, что компания поставила им самую новую версию, и как только появится девятая версия, мы пошлем ее им.
Я больше суток разбирался в отладочной документации. Я обнаружил, как можно обойти программное окружение и как - самое главное! - выйти из него. Выйдя из отладки, я оказался перед приглашением к загрузке. Нажав в ответ "circ" и "JSC" - J. Smith Co. - я вошел внутрь. Разумеется, здесь я привожу вымышленное имя. После ввода верного пароля я оказался на втором уровне зашиты - circ,JSC была общая входная комбинация, известная любому легальному пользователю. Я знал, что означает "ваш личный девятизначный код". Номер социальной безопасности! Я знал, где родился и вырос директор, так что первые три цифры у меня были. Я написал программу для перебора последних шести цифр, и вскоре нашел верную комбинацию. Мне выдали сообщение: "Добрый вечер, Ажейн Торнбакл! Пожалуйста, введите ваш личный пароль". Директора звали иначе. Теперь мне был нужен пароль Ажейн. Я снова попробовал метод грубой силы, но безрезультатно. Я не знал, кто такая Ажейн Торнбакл, но у меня была извлеченная из мусора пачка рекламных проспектов компании. А вот и ответ: Торнбакл оказалась сотрудницей отдела службы управления информацией то есть программистом. Вычислить ее пароль мне так и не удалось; продолжив перебирать номера социальной безопасности, я опять вышел на номер директора библиотеки. Итак, чего я достиг? Программная оболочка - вещь интересная, и я научился с ее помощью как угодно редактировать файлы и т. п. Я сумел использовать одну из отладочных команд поиска для обнаружения слова "circ" в файлах системы. В одном из них среди абракадабры я обнаружил слово "minicirc", а затем "circ". Я попытался расшифровать абракадабру, идущую после "circ", думая, что это зашифрованное "JSC", и надеясь таким образом найти ключ к абракадабре после "minicirc". Безрезультатно. Вернувшись к входному приглашению, я попытался использовать "minicirc" с различными паролями. Проблема была в том, что я не знал, что такое "mini". Я подумал, что это может быть модель программы или руководство. Наконец, я нашел верный пароль - T.CIRC1. Он-то и привел меня к заветному сообщению: "Пожалуйста, введите вам личный девятизначный идентификационный код". Через несколько секунд я нашел нужный номер, и экран очистился. "Доброе утро, Новый Пользователь!" - появились на нем слова. - "Пожалуйста, введите ваш личный пароль". Я надеялся, что это - последний уровень зашиты. И точно: через несколько мгновений мне удалось войти, использовав пароль "TRAIN". Я гордился собой - я взломал-таки закрытую часть системы. Но приключения еще не закончились - ведь "minicirc" была всего лишь учебной моделью настоящей системы. Ее можно было использовать для проверки книг для выдачи посетителям, регистрации новых посетителей, поиска в базах данных и т. д. Но в базе данных содержались только вымышленные имена и адреса. Многие другие свойства системы были бесполезны, но мне помогло само их наличие.
Там была электронная лоска объявлений, на которой инсталлировавшие программу оставили несколько стандартных сообшений-приветствий. Прочитав их, я узнал немало полезного. Каждое сообщение открывалось списком пославших его, и тех, кому оно предназначалось. Я заключил, что можно посылать сообщения из "minicirc" в "circ", и наоборот. Во-вторых, там оказались сообщения, предназначавшиеся одному пользователю, но по ошибке посланные всем. С помошью текстового редактора я написал письмо и лично послал его. Затем вышел, перезвонил и снова оказался в программной оболочке. Использовав редакторы отладчика, я нашел написанное мною письмо, и изменил его содержание, адресовав его директору библиотеки. Свое имя, под которым хранился файл, - "Новый Пользователь" - я изменил на фиктивное имя представителя компании, произведшей программное обеспечение. В послании содержалась просьба к директору позвонить этому представителю для разговора насчет новой, девятой, версии - обратная инженерия! Телефонный номер, который я дал директору, принадлежал одному моему другу, которому я кратко объяснил, как действовать в случае, если директор позвонит. На всякий случай мы установили автоответчик. Когда директор позвонил, мой друг немного рассказал о новых разработках, а затем задал несколько технических вопросов о способе, с помошью которого в библиотеке была инсталлирована программа. Директор не знал этого, но сказал, что может посмотреть у себя на терминале, загрузившись в систему... "Отлично", - сказал мой друг. - "Делайте все то же, что обычно. Circ. JSC. Так, номер... Кстати, вы используете все тот же личный пароль?" "Ну да, "Firebird". Ну вот, я загрузился..." Итак, последний шаг оказался самым легким.
Для завершения проекта мы стали думать, что же можно сделать, используя директорский системный доступ. Оказалось, что сделать можно многое. Покинув данный уровень, мы вышли на сетевой сервер, а оттуда загрузились в один из главных компьютеров, используя имя и пароль директора. Под конец, для подтверждения своего успеха, я использовал редактор интерактивного отладчика и изменил программу так, чтобы вместо пояснений к командам она выдавала на экран непристойную шутку. Затем я оставил файл в директории директора библиотеки, в котором объяснил, каким образом был совершен взлом.
комбинирование принципов
Если вы хотите быть по-настояшему удачливым хакером, вы должны стать "хакером на все руки". Недостаточно хорошо владеть методами социальной инженерии, или быть гением-программистом, и т. д. Вы должны обладать всеми этими навыками в совокупности с богатым воображением и установкой на конкретные цели. Плюс этика. Я действительно считаю, что хакерство без этики не ведет ни к чему хорошему - если вы будете причинять неприятности другим, то неприятности вскоре начнутся и у вас. Присутствовала ли этика в описанном мною взломе? Конечно - ведь я просто переименовал экранный файл, а неприличную шутку поместил в другой, под прежним именем. Позднее мы вместе с директором и программистами компании вместе обсудили план действий по заделыванию дыр в защите системы.
мысли в заключение
Спросите мудреца о цели существования вселенной, или еще что-нибудь в том же духе - и он ответит:
- Этого нельзя выразить словами. Я знаю ответ, я его чувствую, но неописуемое словами не опишешь. "Ну и чушь!" - подумаете вы. Конечно. Но вместе с тем это правда. Мудрец действительно верит в то, что знает обо всех тайнах вселенной, но вы этого не поймете, пока сами не почувствуете то же самое. Вот ваш проводник в мире хакерства, лежащем за пределами этой книги. Из книги вы узнали идеи, методы и факты, которые позволят вам начать заниматься хакерст-вом, сводя к минимуму возможность совершения ошибок. Но это еще не все. Это хобби (игра? профессия?) требует, как и любое хобби, времени, сил, практики и еще, и еще, до тех пор, пока у вас все не начнет получаться так, как вы хотите.
несколько советов обеспокоенным администраторам
Если же вы прочли эту книгу с точки зрения соблюдения закона и обеспечения компьютерной безопасности - что ж, теперь вы знаете множество способов взлома самых "непробиваемых" систем. Вы, наверное, уже составили список мер, которые примете против описанных мною методов. Объясните вашим пользователям, что никогда нельзя открывать никакую конфиденциальную информацию по телефону, по почте или в режиме онлайн. В ответ на просьбу открыть пароль следует отвечать просто: "в этом я не смогу вам помочь". Нельзя раскрывать имена или телефонные номера, адреса электронной почты иди физические адреса. Если человек спрашивает такие веши, он, скорее всего, является хакером.
Установите правила, по которым легальные пользователи задавали бы вопросы любому подозрительному типу, шатающемуся по офисам. Но не стоит и слишком давить на пользователей проблемами безопасности. Если вы проявите излишнюю бдительность - например, поменяете все пароли, - пользователи могут вас не понять. Объясните им, что они потеряют, если компьютерная безопасность будет нарушена. Убедите их, что это важно для всех сотрудников организации. Чтобы убедиться в нерушимости зашиты на все 100%, возьмите за правило регулярную проверку и очистку компьютеров. Найдите и залатайте дыры в защите вашей системы. Уберите все отладочные опции, которые могут быть причиной появления таких дыр. Если вы увольняете сотрудника, немедленно сотрите его доступ и поменяйте код всех остальных. Существует специальная литература о мерах по компьютерной безопасности, которые должен предпринять администратор. Прочтите ее. Немного хорошей работы - и ваш труд не пропадет зря.
несколько советов обеспокоенным хакерам
Вы прочли всю книгу, и все еще сомневаетесь в успехе? Я гарантирую вам - если вы прилежно обучаетесь хакерству, вы станете настоящим мастером этого искусства. Лаже если вам пока не удалось совершить ни единого взлома, вы все же можете считать себя настоящим хакером - ведь у вас благородные намерения, вы соблюдаете правила хакерской безопасности, вы не станете вредить системе, которую взломаете, и вы стремитесь наслаждаться жизнью во всей ее полноте. А все это и есть хакерство. Поздравляю вас и желаю удачи: теперь вы знаете все Секреты Супер-Хакера! То есть ваши секреты.
Глоссарий
acoustic coupler (акустический соединитель) - прибор, состоящий из двух чашечек на основании, в которые вставляется микротелефонная трубка. Акустический соединитель соединяется с модемом, который посылает свои сигналы прямо на микрофон телефонной трубки, а принимает сигналы с телефона. Полезен для "хакерства на ходу".
amplifier (усилитель) - прибор для увеличения амплитуды сигнала без изменения его свойств.
analog signal (аналоговый сигнал) - выходной сигнал, который изменяется пропорционально изменениям входного сигнала.
anonymous FTP (анонимный протокол передачи файлов FTP) - возможность переноса файлов с удаленного компьютера, соединенного с Интернет, без обладания бюджетом на удаленном компьютере. Вместо имени пользователь вводит: "anonymous", а вместо пароля - обычно адрес электронной почты.
asynchronous (асинхронный) - название множественных программ или процессов, которые перекрывают друг друга в использовании и, возможно, в памяти. Асинхронная атака на систему заключается в том, что одна программа пытается изменить те параметры, которые другая программа проверила на достоверность с положительным результатом, но еще не использовала.
avatar (аватар) - альтернативное наименование для привилегированного пользователя системы (обычно UNIX). В индийской мифологии аватар инкарнация бога.
backbone site (магистральный узел) - ключевой узел USENET и электронной почты, обрабатывающий большое количество поточной информации. Получает и посылает на другие узлы новости и сообщения.
back door - см. Trapdoor baud (бод) - единица скорости передачи информации, импульс, секунду, причем импульсы равны по амплитуде. Один бод равняется одному биту в секунду.
BITNET - сеть, состоящая из миникомпыотеров или мэйн-фрэймов. В ITN ЕТ объединяет множество учебных заведений. Дает возможность посылать электронную почту и передавать файлы, но не позволяет осуществлять удаленный вход.
BBS - Bulletin Board System (Электронная доска объявлений) - компьютер, установленный на прием вызовов с модема. Пользователи устанавливают с ним связь и получают доступ к различным услугам, включая электронную почту, обмен сообщениями, игры и т. д.
boffin (боффин) - термин, использовавшийся во времена второй мировой войны для обозначения людей, подобных хакерам, которые стремились понять, как устроен этот мир, и использовали свои знания на благо этого мира.
buffer overflow (переполнение буфера) - переполнение происходит, когда в буфер поступает избыточное количество новых данных. Причин может быть две: буфер недостаточно велик, чтобы вместить все данные, которые необходимо, до начала обработки этих данных; либо несоответствие между приемом и обработкой данных.
С (Си) - язык программирования, с которым, равно как и Си++, должен быть знаком каждый хакер. На Си написана UNIX.
chat (беседа)-беседа с другом в режиме онлайн.
CCTV - внутренние системы телевизионного наблюдения.
СЮ (Chief Information Officer) - главный офицер службы информации.
console (консоль) - операторский терминал на мэйнфрэй-ме, с помощью которого оператор управляет системой.
console РВХ - настольный коммутатор.
covert channel ("плохой канал" ) - канал, не предназначенный для передачи информации, по которому все же можно нелегально получить секретную информацию о системе.
cracker (кракер) - хакер, плохо относящийся к компьютерам, которые взламывает.
cty - консоль tty (также ctty).
daemon (Disk And Execution Monitor) - "даемон", программа, которая не запускается пользователем или программой пользователя, но дожидается определенных условий, после чего запускается сама.
demodulation(дeмQдyляuия) - процесс перевода аналогового сигнала в цифровой.
demon - "демон"; то же, что даемон, но может вызываться пользователем.
DES (Data Encryption Standard) - стандарт шифровки данных.
detector - детектор, электрическая схема, используемая для изъятия модуляции из несущего сигнала.
dual-tone multifrequensy dialing - двухтональный многочастотный набор, метод коммутации с использованием пары тонов, высокого и низкого. Используется в кнопочных телефонах.
dumb terminal - "глупый" терминал, устройство, предназначенное только ввода в компьютер и вывода из него. Ср. "интеллектуальный" терминал.
duplex - дуплексный канал, позволяет одновременную связь в двух направлениях.
EDP (Electronic Data Processing) - электронная обработка данных.
e-mail - сокр., электронная почта.
firewall mashme - машина, оснащенная различными защитными свойствами. Используется в качестве шлюза для зашиты главных компьютеров.
FTP (File Transfer Protocol) - протокол передачи файлов. Набор протоколов, с помощью которых можно передавать файлы с одного компьютера на другой.
group accounts - групповые бюджегы, бюджета группового доступа. Компьютерная директория иди бюджет, защищенный паролями, принадлежащими группе пользователей.
hacker - прочтите эту книгу и вынесите собственное суждение о значении этого термина!