— Скажите, а вы-то сами помните восстание на броненосце «Очаков»?
— Смутно, смутно, — ответил посетитель. — В то героическое время я был еще крайне мал. Я был дитя.
— Простите, а как ваше имя?
— Николай… Николаи Шмидт.
— А по батюшке?
«Ах, как нехорошо!» — подумал посетитель, который и сам не знал имени своего отца.
— Аа-а, — протянул он, уклоняясь от прямого ответа, — теперь многие не знают имен героев. Угар нэпа. Нет того энтузиаста.
Председателю показалось позорным, что он забыл имя очаковскою героя. Действительно, — думал он, глядя на воодушевленное лицо героя, — глохнешь тут за работой. Великие вехи забываешь».
Существует два способа написать книгу о компьютерных взломах.
Можно написать энциклопедию всех известных систем, их номеров доступа, паролей, лазеек и способов повышения уровня доступа. Это неплохой способ, если забыть о том, что ко времени выхода такого издания большая часть ее содержания станет устаревшей. И уж, конечно, напечатанные в книге пароли можно будет считать недействительными. Такой подход лучше оставить для периодики, некоторые печатные и электронные издания пытаются этим заниматься.
Второй путь — написать книгу, которая являлась бы энциклопедией методов взлома систем. Это решит проблему распространения постоянно меняющейся информации, читатели же смогут следовать описанным в ней алгоритмам, добавляя немного собственного воображения и не боясь оказаться в какой-либо совершенно новой, не указанной в книге ситуации. Именно таким способом и написана эта книга.
Я старался построить данную книгу в логичной последовательности и сделать ее понятной, но порой мне приходилось нарушать плавное течение повествования, возвращаясь к уже сказанному в предыдущих разделах.
Если вам встретится незнакомый термин или ситуация — забудьте об этом. Скоро вы обретете опыт. Можете заглянуть в глоссарий, возможно, там содержится ответ на ваш вопрос.
Компьютерные взломы связаны с громадным количеством информации. Готовя книгу к печати, мне приходилось решать, стоит ли углубляться в подробности в том или ином разделе, или открывать некоторые тайные уловки. Кое-что мне пришлось опустить. На самом деле важно не написание книги, а прочтение ее и претворение в жизнь новых идей. Хакерство — это не чтение, а действие, это работа, работа для себя и над собой. Я рад, если мне удалось указать вам верное направление, но я не смогу быть проводником на вашем пути.
Я хотел бы поблагодарить Р. С. и Аж. за критику отдельных разделов моей книги, сотрудников Loompanics за понимание того, что наша конституция дает прессе право на свободу, а также многих хакеров за внесенные ими ценные предложения.
В данной книге описаны различные методы взлома компьютерных систем.
Легко сказать — взлома. В наши дни люди больше обеспокоены проблемой компьютерной безопасности, чем раньше. Но, несмотря на это, в защитной броне любой системы существует немало прорех. Системные администраторы могут бесконечно усиливать зашиту, но способ обойти ее все равно найдется. Запомните первое правило хакерства: то, до чего додумался один человек, додумается и другой, что один скрыл — другой раскроет. Люди в большинстве своем мыслят и действуют одинаково, и хакеры должны использовать это единомыслие.
Что же такое хакер? (Если вы не согласитесь с данным определением, можете закрыть эту книгу.)
Хакер — это человек, который чем-то увлечен, будь то компьютеры, написание книг, природа или спорт. Это человек, который, благодаря этой своей увлеченности, испытывает любопытство ко всему, связанному с его увлечением. Если хакер любит компьютеры, то будет стараться узнать как можно больше о компьютерах, а также о том, как ими пользуются другие люди. Хакеры уважают предмет своего увлечения. Для компьютерного хакера это означает уважение к компьютерам, которые предоставляют людям возможность входить в контакт друг с другом и получать информацию со всего мира, а это в свою очередь означает, что он уважает других людей и не допустит умышленного использования своих знаний о компьютерах в целях развлекательных или разрушительных. Серьезный компьютерный взломщик просто хочет знать обо всем, что делается в мире, особенно в мире компьютеров. Настоящий Компьютерный Взломщик — это компьютерный энтузиаст, и, что более важно, вселенский энтузиаст. Я надеюсь, что вы будете энтузиастами.
Итак, вы готовы познавать?
Для того, чтобы стать удачливым компьютерным взломщиком, вам потребуется один прибор — ваши мозги. Вам не нужен даже компьютер. Более того, иногда бывает лучше вообще не иметь компьютера, как вы увидите в дальнейшем. Впрочем, для начала вам все же потребуется компьютер, модем и телефонная линия для связи с внешним миром.
Компьютер может быть каким угодно. Гораздо важнее, какой у вас модем и коммуникационное программное обеспечение.
Хакерство — хобби, не требующее большого количества снаряжения; но если вам приходится что-то покупать, покупайте самое лучшее из того, что вы сможете себе позволить. Это не означает, что вы должны приобретать то, что вам предлагают продавцы или специальные журналы. Выбирайте то, что вам больше всего подойдет. Уверен, вы захотите, чтобы ваш модем был быстрым. Когда я приобрел свой первый модем, то считал 140-бодный модем просто копушей. Теперь я смотрю на 300-бодный и не понимаю, как я мог управляться с этой каракатицей.
Какой бы скоростью ни обладал ваш модем, он всегда будет работать несколько медленнее, чем вы ожидали. Из-за помех на линии модем бывает вынужден перепосылать данные снова и снова, пока не передаст или не примет их в неискаженном варианте. Модемы могут работать вполовину указанной скорости, и, если у них плохое настроение, и того медленнее. При передаче на дальние расстояния или если удаленные компьютеры слишком загружены, или при доступе к одному компьютеру через несколько других — чтобы вас труднее было выследить — скорость снижается еще больше.
Итак, если вы хотите получать удовольствие от своих занятий — покупайте высокоскоростной модем.
Бывает трудно найти действительно подходящую коммуникационную программу, но именно от нее, в совокупности с подходящим модемом, и зависит, принесет ли вам радость ваша работа в режиме он-лайн или только разочарует вас.
Существует много видов терминальных программ. Если какой-то пакет приложен к вашему модему, это еще не значит, что он вас устроит. Хорошая программа должна обладать нижеперечисленными свойствами и все они для хакера необходимы или хотя бы желательны.
Программа должна эммулировать достаточно большое количество разных терминалов, таких, например, как ANSI, VT52, VT100 и т. д. Неплохо, если программа располагает адресной таблицей — возможностью переводить входящие и выходящие символы в другие символы. Программа должна быть в состоянии посылать и принимать файлы, используя Xmodem, Ymodem, Zmodem и Kermit протоколы. Удостоверьтесь, что ваша терминальная программа располагает, по меньшей мере, этими четырьмя протоколами. Программа должна позволять управлять модемом используя «АТ»-команды. Вам также понадобится возможность обращаться к вашей операционной системе во время поддержания связи, т. к. иногда в процессе работы онлайн бывает нужно запустить другую программу. Программа должна включать в себя телефонную книжку, позволяющую хранить множество номеров, имен и комментариев. У вас должна быть возможность хранить более чем десятизначные телефонные номера, а также программа должна обеспечивать возможность написания сценариев соединения. Полезно также иметь автонабор, который сможет периодически перенабирать занятые телефонные номера. Наконец, программа должна быть простой и приятной в обращении. Если вы не можете найти одну программу, отвечающую всем вашим требованиям, имейте под рукой несколько, для выполнения различных функций. Я рекомендую коммуникационную программу PC Tools Desktop. Она не обладает многими из вышеперечисленных свойств, но весьма удобна в обращении. ProComm Plus для IBM и Macintosh, коммуникационная программа Lotus 1-2-3 — огромный пакет, обладающий всеми мыслимыми свойствами. Хорошая общедоступная программа для IBM — Qmodem. И последнее, что необходимо хакеру. Ваша терминальная программа должна обладать возможностью сбора данных. Это значит, что, когда информация проходит через ваш модем и появляется на экране, вы можете сбросить ее в файл на диске.
Функция сбора данных должна быть включена всегда, когда вы используете свой модем. Когда я вхожу в какую-либо систему, мне нравится иссследовать все имеющиеся там текстовые файлы, но, разумеется, я не читаю их в режиме онлайн. Вместо этого я включаю сбор данных, сохраняю все эти сотни страниц текста в отдельных файлах, а затем, отключившись от линии, сортирую собранные данные. Иногда бывает проше забрать эти файлы без просмотра.
Сбор данных удобен также для записи текста, который пробегает по экрану так быстро, что вы не успеваете его прочесть. А иногда текст вообще немедленно стирается сразу же после ввода. К тому же приятно иметь документированное свидетельство своей хакерской деятельности, которое можно использовать для справок и исследований.
Однажды я вызвал электронную доску объявлений (BBS) местной компании, созданную в рекламных целях. Модемы соединились, я несколько раз нажал ввод, на экране появились обычные случайные символы, и я стал ждать появления приглашения. Приглашение к загрузке несколько запоздало, чему я удивился, но все казалось обычным, и я приступил к работе.
Позднее я рассматривал распечатки, сделанные во время взлома, и повнимательнее взглянул на обычный загрузочный «мусор». Среди мешанины символов я увидел следующее: «d-b». А на следующей строке, между двумя плюсами, — «уе!» Получилось: «d-Ьуе». То есть, я обнаружил вторую половину слова «good-bye!». Я знал, что это означает прощание после выхода из системы. Другими словами, я вызвал систему непосредственно после того, как кто-то другой из нее вышел, и я поймал остаток его прощания. Значит, у того компьютера было что-то не в порядке с разьединениями. Это означало ошибку, которую можно было использовать. Я снова вошел в систему и открыл журнал пользователей, чтобы найти запись своей последней загрузки. Предыдущий пользователь являлся легальным пользователем системы, и его выход из системы записался как мой вход.
Затем, используя данную лазейку, мне удалось притвориться системным оператором: я вызывал систему сразу же после того, как настояший оператор заканчивал очередную проверку сопровождения. Я написал ему письмо, объяснявшее, в чем дело, и, спустя несколько дней, ошибку устранили.
Итак, вам следует быть готовыми ко всяким странностям и уметь анализировать их. Может случиться и такая неожиданная ситуация, когда системный оператор начинает проверку сопровождения системы у вас на глазах. Со мной такое случалось два раза на одной и той же неделе.
Однажды, когда я еще учился в старших классах, я заболел и остался дома, занимаясь вызовом BBS. В первый день я как раз подключился к системе и собрался посмотреть свою электронную почту, когда меня прервал системный оператор, которому срочно понадобилось кое-что сделать. Он вошел во внутренние экраны программы BBS, затем вышел на жесткий диск и снова вернулся. Я не успел проследить за его действиями, но позднее, выйдя из системы, я просмотрел файл, в который смог занести это событие, и проанализировал его. Это помогло мне не совершить никакого взлома, но я получил новые сведения о том, как работает программа на BBS.
Через несколько дней я находился в другой системе. Теперь уже этот оператор опаздывал на встречу, но перед этим ему потребовалось сделать какие-то перестановки. На этот раз я сумел понять, что происходит; среди прочего оператору было необходимо зарегистрировать пароль нового пользователя, возможно, оператор не понял, что я за ним наблюдаю. Я сбросил все это в текстовый файл, таким образом приобретя новый пароль.
Читая издания о хакерстве, вы еще многое узнаете об оборудовании, программном и аппаратном обеспечении и о том, что необходимо хакерам, специализирующимся в конкретных областях. Но пока вам необходимо понять…
Читая литературу по защите данных, можно всерьез обеспокоиться. Прошли времена ошибок и лазеек в системах и времена наивных пользователей. Прошли, казалось бы, времена благоговейного страха перед хакером-одиночкой, среди ночи проникающим в секретные правительственные базы данных, и времена самих хакеров-одиночек.
Так кажется.
Но это не так! Всего несколько лет назад Роберту Моррису-младшему удалось проникнуть в систему, используя ошибки, которые никто не потрудился заметить и исправить. Кто знает, сколько еще таких ошибок ждет своего часа? Не забывайте и о глупости: существуют демонстрационные режимы, меры по безопасности, которые никто не уничтожил и не изменил.
В июле 1987 года группа членов клуба Chaos Computer Club взломала компьютерную сеть системы NASA SPAN. Эти хакеры использовали изьян в инфраструктуре VMS, по заявлению DEC Corporation, реконструированной тремя месяцами раньше. А это свыше ста VAX компьютеров с неисправной операционной системой. Члены клуба посмеивались, что для «зашиты» этой системы часто использовались примитивные пароли, подчас взятые прямо из руководства пользователя. С одной стороны мы видим суперсекретные компьютеры, опекаемые NASA, а с другой — 4000 пользователей этих компьютеров. Понятно, что 4000 человек не сохранят секрета.
В наши дни хакерство может показаться более трудным занятием, нежели раньше, но на самом деле оно не стало таким. Меры по безопасности могли стать строже, но сам пользователь ничуть не изменился в своей беспечности, равнодушии, добродушии по отношению к другим пользователям. Более опытные пользователи всегда рады помочь менее осведомленным, а те, в свою очередь, просят совета у «гуру». Значит, социальная инженерия, простая и обратная, живет и побеждает, как вы увидите далее.
Людьми всегда руководит стремление к простоте. Никто не выберет в качестве пароля нечто вроде «bWoQt 0(@vbM-34trwX51»!
Сегодня создано немыслимое количество систем, в которых работает множество пользователей. Раньше на компьютерах работали лишь немногие, теперь же их может купить и использовать кто угодно. И далеко не все, кто этим занимается, помнят о компьютерной безопасности. Фактом является то, что большинство компьютерных систем не защищено от вторжения. Многие люди, связанные с компьютерами, понимают это, но ничего не предпринимают по этому поводу.
Причин, по которым компании не повышают уровень компьютерной безопасности, много. При этом приводятся следующие доводы: Усиление зашиты влечет за собой исчезновение открытости и доверия, которые мы стремимся развивать. Компьютерная зашита слишком неудобна. Усиление зашиты только привлечет любящих приключения хакеров. Закрывать существующие лазейки в защите слишком дорого и трудно. Перепрограммирование может повлечь за собой новые проблемы с безопасностью. У нас никогда не было проблем с безопасностью! Наша информация не нужна никому, кроме нас. Мы только что подверглись взлому; но уж теперь-то они точно не вернутся! А разве хакеры еще не исправились?
Все эти доводы не корректны. Последний вообще не выдерживает критики: компьютеры имеют такое большое значение в нашей жизни, что хакеры будут существовать всегда, пока существуют компьютеры.
В некоторых из этих доводов есть своя правда, во всяком случае, люди, занимающиеся компьютерами, верят в эти утверждения, так что работа для хакера всегда найдется.
К сожалению, в нашем мире существует такая штука, как компьютерные преступления. Хакерство занимает последнее место в списке безобразий, которые люди проделывают с компьютерами, и не имеет ничего общего с обычными преступлениями, убийствами, кражами и т. п. Настоящее хакерство не оставляет жертв, и я считаю его преступлением лишь чисто условно. Возможно, оно аморально, но есть и куда худшие веши.
Компьютерные преступления делятся на семь основных категорий, так или иначе связанных с хакерством: финансовые кражи, саботаж, кражи аппаратного обеспечения, кражи программного обеспечения, кражи информации и электронный шпионаж. А седьмое «преступление» — компьютерное хакерство.
Финансовые кражи происходят, когда компьютерные записи изменяются в иелях присвоения чужих денег. Часто это делается с помощью программы, направляющей деньги на конкретный банковский счет, обычно с помощью техники «салями».
«Салями» — это метод, предполагающий кражи небольших сумм в течение длительного времени в надежде, что это не будет замечено. Воры перепрограммируют банковский или какой-либо другой компьютер так, чтобы пенни поступали на липовые счета.
Например, на счете может храниться 713.14863, где 863 случайные цифры, т. к. при умножении учитываются все знаки. Обычно компьютер показывает, что у данного лица в банке 713.15 $, округляя 4 до 5. Однако, компьютер, запрограммированный с «салями» отделяет эти экстра-числа и помешает их на отдельные счета. И теперь человек имеет только 713.14 $, ну кто же заметит или пожалуется на потерю пенни.
Компьютер сам не в состоянии производить новые деньги, он может только перевести легальные деньги на нелегальный счет. Такие кражи довольно трудно обнаружить. Как только на счете у вора скапливается большая сумма, он снимает деньги со счета и, в большинстве случаев, удаляется вместе с ними Многие воры пытались использовать эту форму ограбления банка, и многие были пойманы, но сейчас это может сделать каждый.
Выявить применение подобной техники можно так: на компьютере создается список всех счетов с указанием, сколько раз в течение одного или нескольких дней к счету обращались. Затем любой счет, который затребывался слишком часто, проверяется, чтобы установить, сколько денег с него снималось во время каждого обращения. Если это небольшая сумма — значит кому-то повезло.
Хотя сам я не занимаюсь подобными вешами, хочу все же указать, в чем заключается ошибка таких грабителей. Вместо того, чтобы перепрограммировать компьютер для прямой передачи небольших сумм на счет, им следовало просто вычитать эти деньги и следить за тем, сколько денег соберется в области, отдельной от файлов со счетами. Затем изменяются те части программы, которые распечатывают общее количество банковских вкладов, для учета скрытой суммы, чтобы эти деньги не казались утерянными. Когда спрятанное число достигает определенной величины, только тогда его следует переводить на счет вора, причем переводящиеся суммы должны равняться случайным величинам, дабы избежать подозрений.
Такие действия предполагают наличие доступа к компьютеру. Обычно их совершают сотрудники банка, и о настоящем хакерстве здесь речь не идет. Впрочем, если такую кражу совершает сотрудник с ограниченным уровнем доступа или чужак, взлом бывает необходим.
Компьютерный саботаж — это физическое разрушение аппаратного или программного обеспечения, либо искажение или уничтожение содержащейся в компьютере информации. Причиной саботажа может быть желание избавиться от конкурента или получить страховку. Компьютерное хакерство лишь косвенно связано с саботажем, поскольку целью большинства хакеров является сохранение компьютеров, а не разрушение. Впрочем, иногда в хакерстве присутствуют элементы саботажа. Обратная социальная инженерия использует нечто вроде саботажа, но на самом деле это всего лишь временный и легко устраняемый вывод компьютера из строя.
Компьютерные вандалы часто подвергают саботажу информацию, хранящуюся в компьютерах, сперва использовав хакерские методы получения доступа к ним. Но не стоит путать вандалов и других приверженцев саботажа данных с хакерами. Эти люди вводят ложную информацию в компьютерные системы, так или иначе повреждая базы данных.
Могут включать в себя кражи аппаратного обеспечения или самого компьютера и периферии, а также воровство компьютерных разработок. Они относятся к хакерству постольку, поскольку украденный компьютер может использоваться для получения кодов доступа. В случае компьютерного пиратства хакер может тайно читать электронную почту или файлы разработчика, пытаясь украсть новые идеи.
Кражи программного обеспечения, или программное пиратство, — это нелегальное копирование программ, защищенных авторскими правами. Хакеры часто делают для себя копии программ, найденных в компьютерной системе, чтобы понять, как они работают. Что касается краж аппаратного обеспечения, здесь присутствует желание догнать конкурента в области новых разработок программ.
Кражи информации включают кражи кредитных карточек, результатов лабораторных исследований, данные о пациентах или клиентах и вообще любых данных, обладающих потенциальной ценностью. Электронным шпионажем называется продажа такой информации третьей стороне, когда хакер начинает шпионить на другую компанию или страну. В обоих случаях для краж информации, а иногда и для установления контакта со шпионским агентством используется хакерская техника.
Наконец, мы подошли непосредственно к хакерству. Хакеры способны совершать любые из вышеперечисленных преступлений, но они предпочитают этого не делать. Так можно ли считать их преступниками?
Конечно, перед тем, как сделать такой выбор, хакер нелегально взламывает чужие компьютеры. Но мы не видим никакого вреда в самом акте «взлома».
Там, где имеют место другие компьютерные преступления, мотивы преступника ясны. Вполне понятно, когда человек крадет компьютер, заказывает преступление из чуства мести или из корыстных побуждений.
Но в случае «чистого» хакерства мотивы могут и не лежать на поверхности.
Традиционная причина для занятий хакерством — стремление к знаниям. Но в наши дни этим стремлением могут руководить более сильные желания, например, жажда денег. Существуют хакеры, относящиеся к своему таланту не как к хобби, а как к профессии. Насчитывается несколько причин, как моральных, так и аморальных, для занятий хакерством за деньги. Прежде чем начать разговор о том, как заниматься хакерством, давайте рассмотрим, почему им занимаются.
Самым честным побуждением к занятиям хакерством является распространение информации. Том Форестер и Перри Моррисон в своей «Компьютерной этике» пишут, что после чернобыльской аварии хакеры Chaos Computer Club«…опубликовали большее количество информации о событиях, чем даже правительство Восточной Германии. Вся эта информация была получена путем незаконных взломов содержимого государственных компьютеров…». Конечно, это было весьма благородно и «по-нашему».
Хакеры занимаются также предотвращением компьютерных несчастий. Недавно несколько компаний по компьютерной безопасности из разных стран решили подвергнуть свою продукцию проверке. Они опубликовали телефонные номера, по которым могли бы звонить хакеры и пытаться проникнуть в систему. Конечно, это был рекламный трюк, но сама идея была неплоха, поскольку дала хакерам возможность совершения взлома из лучших побуждений.
Хакеры, которые используют свои незаконные методы для предотвращения несчастий, обладают высокой нравственностью. Обнаружив прореху в защите системы (но не воспользовавшись ею!) они предупреждают о ней системного оператора. Таким образом, они помогают нашему миру свободно и безопасно пользоваться информацией. Мы только можем надеяться, что жизненное кредо хакеров не позволит им вести себя неэтично.
К сожалению, волнующая и заманчивая природа хакерства зачастую влечет к себе нравственно неразвитых людей, питающих слабость к вандализму и чужим кредитным карточкам. Настоящие хакеры не должны иметь никакого отношения к подобной деятельности, дабы не уронить звание «Хакера».
Многие хакеры, даже лучшие из них, внесли свой вклад в создание плохой репутации хакерства, т. к. ими руководили сомнительные мотивы. Встречаются и хакеры-разрушители, и такие, которые просто не могут вовремя выйти из игры.
Существует и «хакерство по найму». Частные лица готовы платить хакерам за то, чтобы те изменили для них информацию на компьютере: счета, уровни доступа и т. п. Иногда люди хотят уничтожить информацию о самих себе, поскольку скрываются. Частные сыщики тоже могут воспользоваться услугами хакеров, чтобы найти телефонные номера, адреса и другую необходимую им частную информацию, хранящуюся в компьютерах. Сотрудники офисов нанимают хакеров, чтобы прочесть электронную почту и файлы своих коллег и конкурентов. Хакеры могут заниматься не только промышленным, но даже государственным шпионажем. Все это ЕСТЬ, и этим занимаются хакеры, которые совершают взломы за деньги.
В хакерской среде с пренебрежением относятся к «наемникам». Один раз еще можно пойти на такое, но заниматься этим постоянно — значит лишиться хакерской чести. Мне хочется думать, что все читатели этой книги, в том числе и хакеры, будут использовать свои таланты для добрых дел: обеспечения общественной осведомленности, предотвращения трагедий, а также для изучения новых технологий и открытий в целях саморазвития.