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