Основы хакерства

         

Ваше будущее в качестве хакера


 

Глава 12. Ваше будущее в качестве хакера

— И что это за профессия такая, прости господи! Сын лейтенанта Шмидта, Ну, год еще, ну, два. А дальше что? Дальше ваши рыжие кудри примелькаются, и вас просто начнут бить.

— Так что же делать! — забеспокоился Балаганов.

— Надо мыслить, — сурово ответил Остап.

И. Ильф, Е. Петров. Золотой теленок

Многие хакеры и не хакеры излагают свои версии “хакерской этики”, и почти все версии похожи друг на друга. Но часто крутые ребята-хакеры сначала следуют принципам, моральным установкам — Кодексу чести, — а затем их уводит в сторону. Им начинает казаться, что, зная закон, они получают право его нарушать: “Мы не действуем вслепую”. Так поступают крутые ребята — они знают, что они крутые, забывая при этом, что порой даже самые крутые хакеры на поверку оказываются полными тупицами.

Я хочу изложить вам свою собственную версию хакерского Кодекса чести. Это список моих убеждений, относящихся к миру компьютеров. Возможно, у вас совсем другие убеждения, но это не страшно — хакеры люди независимые. Впрочем, я хочу, чтобы вы поняли, почему так важно сформулировать кодекс чести и следовать ему. Это может уберечь вас от неприятностей. Я не хочу сказать, что, если вас поймают, суд обратит внимание на то, что вы вели себя в соответствии со своими принципами, особенно если эти принципы включают в себя незаконную деятельность. Я имею в виду, что мне хотелось бы верить в следующее: если вы сформулировали свой моральный кодекс, и если все хакеры из вашего круга подпишут заверения в своей верности этому кодексу, то, быть может, судья или присяжные скажут себе: “Господи, да ведь он не собирался причинять никакого вреда”. Вы, возможно, помните наш разговор об умышленном причинении вреда. Хотелось бы думать, что суд обратит на это внимание, хотя в действительности люди редко пытаются посмотреть на веши с чужой точки зрения. По крайней мере, обладая кодексом чести, вы сможете избавиться от нежелательных людей, и участники вашей группы будут счастливы и в безопасности.
Но еще более важно то, что в подобном кодексе, которому вы следуете, присутствует какая-то необъяснимая скрытая ценность. Вам кажется, что я читаю вам проповеди? Ну что ж, я не стану спорить. Вот мой Кодекс Чести Хакера. Здесь мои принципы, касающиеся компьютеров и хакерства, которым я стараюсь следовать.
мой кодекс: чести
Компьютеры дали возможность каждому получать огромные количества информации быстрее и дешевле, чем когда-либо прежде. Свободное распространение информации является благом, но лишь постольку, поскольку не ущемляет прав человека. Существует два вида прав человека—права отдельной личности и права человечества в целом. Человечество должно иметь возможность виртуального доступа к любой информации, и эта информация должна использоваться в моральных целях.
Люди должны знать то, что они хотят знать, и нельзя скрывать от них информацию. Новые идеи должны публиковаться и обсуждаться. Знания должны доходить до людей. Технологии должны использоваться на благо людей, но не ради наживы и не в политических целях. Каждый человек должен иметь право на то, чтобы связанная с ним информация не использовалась во вред ему. Люди должны иметь право знать, если их личная информация внесена в базу данных, знать о том, кому и когда она отдается или продается. Они должны иметь право следить за тем, каким образом используется эта информация. Человек должен иметь право проверять информацию о самом себе, если она занесена в компьютерный файл или базу данных, и в этом ему не должны чиниться препятствия. Он должен иметь право беспрепятственно исправлять неточности в этих данных, и убирать оскорбительную для себя информацию. Аюди должны иметь гарантию, что те, кто создает и обслуживает базы данных, будут своевременно предоставлять им эти права.


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


Хакеры обладают идеалами относительно всех людей и всего человечества в целом, и у меня есть набор таких идеалов, которые лично я использую. Вот главные из них:
• Никогда и никаким образом не наноси вред ни компьютеру, ни программному обеспечению, ни системе, ни человеку, ничего не изменяй и не уничтожай.
• Если вред все же был нанесен, сделай все, что в твоих силах, чтобы исправить содеянное, и предотвратить подобное в будущем.
• Не позволяй ни себе, ни другим откровенно наживаться на взломах.
• Сообщай компьютерным менеджерам о наличии прорех в защите их компьютеров.
• Учи других, если тебя просят об этом, делись знаниями, если тебе есть чем делиться. Это не необходимость, но простая вежливость.
• Помни о своей уязвимости во всем, что касается компьютеров, включая секреты, которые тебе удалось узнать с помощью взломов.
• Будь осторожен. Проявляй настойчивость, но не делай глупостей и не рискуй понапрасну.
Я не хочу сказать, что следование этим принципам делает мои занятия хакерством моральными или правомочными. Но я также не считаю, что мое хакерство аморально. И я не стану выслушивать ничьих возражений по этому поводу. Мы-то знаем, что законно, а что — нет. Я собираюсь заниматься хакерством вне зависимости от того, насколько моральным я его считаю. И если у вас возникнет вопрос типа “Неужели вы действительно думаете, что этот ваш кодекс чести может оправдать что-нибудь вроде „вынюхивания"?”, значит, у вас в крови нет хакерства.
комбинирование принципов
В данной книге я попытался предложить основные указания по различным темам, которые подготовят вас к любой, связанной с компьютерами, ситуации, в которой вы можете оказаться.
Когда речь заходит о понятии “хакерства”, невозможно говорить о какой-то определенной последовательности шагов, которые следует предпринимать для достижения своих целей. Надо, скорее, выбрать основные идеи, дополнять их по мере необходимости, и взламывать до тех пор, пока что-то не выйдет. Зная, что вас ожидает, вы будете знать, как реагировать на очередное изменение, — и ваши хакерские способности только увеличатся.


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


Содержание раздела