Ограбление казино на миллионы долларов
Кевин Митник, Вильям Саймон
Искусство вторжения
PDF OCR: Ego
«Искусство вторжения»: ДМК пресс, Компания АйТи; 2005
ISBN 5‑98453‑020‑1, 0‑76456‑959‑7
Аннотация
Истории, рассказанные в этой книге, демонстрируют, как небезопасны все компьютерные системы, и как мы уязвимы перед подобными атаками. Урок этих историй заключается в том, что хакеры находят новые и новые уязвимости каждый день. Читая эту книгу, думайте не о том, как изучить конкретные уязвимости тех или иных устройств, а о том, как изменить ваш подход к проблеме безопасности и приобрести новый опыт.
Если вы профессионал в области информационных технологий или обеспечения безопасности, каждая из историй станет для вас своеобразным уроком того, как повысить уровень безопасности в вашей компании. Если же вы не имеете отношения к технике и просто любите детективы, истории о рисковых и мужественных парнях — вы найдете их на страницах этой книги.
Кевин Митник, Вильям Саймон
Искусство вторжения
Предисловие
Все хакеры — и самые молодые и не очень — постоянно соревнуются друг с другом. Один из крупных призов в этом соревновании — возможность похвалиться проникновением на Интернет‑сайт моей (Кевина Митника) компании, занимающейся безопасностью, или же на мой сайт.
Другой приз — хакерская история, рассказанная мне или моему соавтору Биллу Саймону так убедительно, чтобы мы, поверив в ее истинность, включили ее в эту книгу.
Все это представляло собой увлекательное занятие, игру умов, которой мы предавались долгое время, проводя многочисленные интервью для написания этой книги. Для большинства журналистов и авторов установление личности говорящего — дело совсем простое: действительно ли это тот человек, за которого себя выдает? Действительно ли он работает на ту компанию. о которой говорит? Действительно ли он занимает в ней тот пост, на который претендует? Есть ли у него документальные подтверждения рассказанной истории, и могу ли я удостовериться в их подлинности? Есть ли заслуживающие доверия свидетели всей его истории или хотя бы ее части?
Для хакеров ответить на эти простые вопросы совсем не так легко. Большинство из людей, чьи истории приведены в этой книге (за исключением тех немногих, кто уже сидит в тюрьме), должны были бы подвергнуться судебному преследованию, если бы их личность была установлена. Поэтому не надо пытаться узнать подлинные имена рассказчиков или искать доказательства изложенных фактов.
Все эти люди поделились своими историями только потому, что полностью доверяли мне. Они знали, что на меня можно положиться, и я их не предам. Именно поэтому, несмотря на весь риск, они рассказали о своих хакерских «достижениях».
Тем не менее, нельзя забывать о том, что рассказчики иногда кое‑что преувеличивают, — для большей убедительности, а может быть, и вся история — выдумка, но построена на таких правдивых деталях, что выглядит правдой.
Осознавая, что такой риск есть, в процессе всех интервью я проверял достоверность каждой детали, требуя подробных доказательств тому, что вызывало хоть какое‑то подозрение. и требуя повторных рассказов, чтобы удостовериться, что рассказанная второй раз история звучит в точности так же, как и в первый. У меня подозрения вызывало даже то, что рассказчик порой не мог вспомнить важные детали, или же объяснить, как он попал из точки А в точку В.
Если я специально не оговариваю в какой‑то части истории, что она выдумана, значит — это правда. Мы с моим соавтором включили в эту книгу только истории тех рассказчиков, кому могли доверять. Тем не менее, мы часто меняли некоторые детали, чтобы защитить не только хакеров, но и их жертвы.
В то же время надо понимать, что производители ПО и оборудования постоянно повышают уровень безопасности, поэтому большинство из описанных здесь «лазеек» в системах безопасности уже устранены. Это может породить иллюзию того, что поскольку они устранены, то читателям и их компаниям не о чем беспокоиться. Однако мораль этих, историй, независимо от того, произошли они шесть месяцев или шесть лет назад, заключается в том, что хакеры находят новые и новые лазейки каждый день. Читая эту книгу, думайте не о том, чтобы изучить конкретные уязвимые места тех или иных устройств. а как изменить ваш подход к проблеме безопасности и приобрести новый опыт.
Думаю, в процессе чтения книги вы испытаете удивление, восторг и даже восхищение фантастическими ухищрениями этих невероятно изобретательных хакеров.
Некоторые из них могут вас шокировать, другие — откроют глаза, а третьи — заставят рассмеяться над находчивостью этих ребят. Если вы профессионал в области информационных технологий (ИТ) или обеспечения безопасности, каждая из историй станет для вас своеобразным уроком того, как повысить уровень безопасности в вашей компании. Если же вы не имеете отношения к технике и просто любите детективы, истории о рисковых и мужественных парнях, то все это вы найдете на страницах этой книги.
В каждой из рассказанных историй ее герои постоянно существуют под страхом того, что полицейские или агенты службы безопасности постучат в дверь с наручниками наготове. И довольно часто именно так и происходит.
Для тех, кому повезло, остается возможность попадать в новые истории. Как правило, участники событий, описанных в этой книге, никогда о них не рассказывали. Большинство из приключений, о которых вы прочтете, видят свет впервые.
Глава 1.
Ограбление казино на миллионы долларов
Как только кто‑то скажет: «Ни у кого не возникнет желания ввязываться в проблемы, чтобы сделать это», как появятся несколько финских ребятишек, которые как раз и захотят ввязаться в эти проблемы.
Алекс Майфилд
В судьбе игрока всегда наступает такой момент, когда нервное напряжение материализуется в нечто реальное, азарт берет верх над осторожностью, и рулетка в казино становится похожа на гору, ждущую, чтобы ее покорили. В такой момент идея обхитрить рулетку или игральный автомат кажется вполне осуществимой.
Алекс Майфилд и три его приятеля сделали то, о чем многие могли бы только мечтать. Как и многие другие хакеры, они начали с простых мысленных упражнений и проверки их на правдоподобность. В конце концов, они победили систему казино и «облегчили» его, по словам Алекса, примерно на миллион долларов.
В начале девяностых годов все четверо работали консультантами в сфере высоких технологий и считали свою жизнь скучной и обычной. «Что такое жизнь: вы работаете, зарабатываете деньги, потом перестаете работать и, наконец — умираете».
Лас‑Вегас был от них очень далек, — где‑то в кинофильмах и телевизионных шоу. Поэтому, когда им предложили разработать некоторое ПО и затем представить его на выставке в Лас‑Вегасе, они с удовольствием согласились. Для каждого из них это был первый визит в Лас‑Вегас, причем за чужой счет — кто откажется от этого? Отдельные номера для каждого из них в одном из лучших отелей Лас‑Вегаса позволяли Алексу взять с собой жену, а Майку — подружку. Таким образом, две пары плюс Ларри и Марко готовились хорошо провести время в этом «городе греха».
По словам Алекса, они мало что знали об азартных играх и не знали, чего ждать от Лас‑Вегаса: « В ы выходите из самолета и видите старушек, играющих в игральные автоматы, и постепенно заражаетесь всем этим»…
…После того как выставка завершилась, они сидели все вместе с двумя своими дамами в игровом зале своего отеля, поигрывали в автоматы и потягивали пиво, когда жена Алекса произнесла роковую фразу:
— Ребята, ведь эти машины построены на основе компьютеров. а вы — специалисты по компьютерам, так почему вы не можете сделать так, чтобы мы выигрывали почаще?
Ребята тут же направились в номер Марка и уселись в кружок, рассуждая о том, как могут быть устроены игральные автоматы.
ИССЛЕДОВАНИЕ
Как говорится, процесс пошел. «Идея буквально втемяшилась в четыре наши головы и, вернувшись домой, мы начали ее обсуждать», — с удовольствием вспоминает Алекс эту креативную стадию всей истории. Очень быстро исследователи утвердились в своих начальных подозрениях: «Действительно, игральные автоматы основаны на компьютерных программах. Поэтому мы стали обдумывать способы взлома этих машин».
Есть люди, которые побеждают игральные автоматы, «заменяя программу», то есть, добираясь до компьютерного чипа в автомате и заменяя ПО на ту версию, которая будет выплачивать им большие выигрыши, чем предусматривает казино. Другие преуспевают в своем мошенничестве при помощи техника, обслуживающего автоматы. Для Алекса с приятелями такое грубое вмешательство в жизнь автомата было похоже на то, «как если бы мы ударили старушку по голове и отобрали у нее кошелек». Они рассматривали свою будущую «схватку» с казино, как своеобразный вызов своему интеллекту и программистским способностям. Кроме того, ни у кого из них не было талантов социального инженера — они были компьютерными специалистами и не знали, как втереться в доверие к сотруднику компании и убедить его реализовать схему изъятия некоторой суммы денег у казино.
Однако, как подступить к проблеме? Вот что вспоминает Алекс: «Мы рассуждали о том, как мы могли бы предсказать возможные последовательности выпавших карт. Или же, о том, как отыскать „черный ход“ (программное обеспечение, дающее возможность несанкционированного доступа к программе), который некоторые программисты могут использовать в своих целях. Все программы пишутся программистами, а программисты такие же люди, как и все мы. Мы думали о том, как можно было бы пробраться через заднюю дверь, нажимая определенный набор клавиш, или же отыскать определенные просчеты программистов, которые можно было бы использовать в своих интересах».
Алекс прочел в свое время книгу «The Eudaemonic Pie» Томаса Басса (Penguin, 1992), — историю о том, как компания компьютерщиков и физиков в восьмидесятые годы обыграла рулетку в Лас‑Вегасе при помощи собственного изобретения — переносного компьютера размером с пачку сигарет, который предсказывал цифры, которые выкидывала рулетка. Один из членов команды находился около стола и определял скорость вращения колеса рулетки и движения шарика по ней, а компьютер затем передавал по радио информацию другому члену команды, который делал соответствующую ставку. Они хотели забрать чемоданы денег, но им это не удалось. По мнению Алекса «у методики этих ребят был большой потенциал, но он не реализовался из‑за достаточно сложной и ненадежной технологии. Кроме того, в игре принимали участие слишком много человек, поэтому вставала проблема их контактов и взаимоотношений. Мы не должны были повторить их ошибок».
По мнению Алекса, победить компьютерную игру проще, «поскольку действия компьютера полностью предопределены заложенной в него программой» — каждое последующее действие основано на результате предыдущих, можно выразить это в таком девизе: «хорошие данные на входе — хорошие данные на выходе» (на самом деле, пословица компьютерных инженеров звучит так: «мусор на входе — мусор на выходе»).
С этими выводами были согласны и партнеры Алекса. Между прочим, Алекс был самым молодым из членов команды, он играл в рок‑группе и мечтал о карьере рок‑звезды. Только после того, как эти мечты не сбылись, он занялся математикой. У него был настоящий талант к математике и, хотя он не утруждал себя лекциями и семинарами (его даже выгнали из колледжа), он изучил предмет настолько, что был в нем настоящим авторитетом.
Он решил, что имеет смысл провести серьезное исследование и отправился в Вашингтон, чтобы изучить патенты в библиотеке Патентного общества. «Я подумал, что автор патента мог быть настолько глупым, чтобы поместить в него подробный текст программы для автомата для игры в покер». Оказалось, что он был прав. «Помещение полного текста всех программ в патент было единственным способом зашиты оригинальности своего изобретения, поскольку именно они и содержали подробное описание сути изобретения, правда. в форме, которая была непонятна большинству читателей. Никакого труда не составило получить микрофильмы со всеми кодами и скопировать их».
Анализ кодов помог выявить несколько деталей, которые они сочли интересными, но все пришли к выводу, что только работа с конкретными автоматами может приблизить их к желаемому результату.
Кстати, ребята отлично подходили для командной работы. Майк был очень способным программистом, гораздо более сильным в сфере дизайна оборудования, чем три его приятеля. Марко — еще один сильный программист, был эмигрантом из Восточной Европы и выглядел тинейджером. но обладал совершенно дьявольской изобретательностью. Алекс хорошо разбирался в программировании и был единственным, кто знал криптографию, очень нужную им. Ларри не слишком хорошо знал программирование, и не слишком хорошо двигался из‑за последствий мотоциклетной аварии, но он был прекрасным организатором, который мог отслеживать все стадии проекта, фокусируясь на том, кто и что должен сделать в тот или иной конкретный момент.
После первой исследовательской стадии проекта казалось, что Алекс к нему охладел, а Марко, наоборот, воодушевился. Он повторял: «Я не вижу большой проблемы: есть тринадцать штатов, где мы вполне легально можем приобрести игральный автомат». В конце концов, он уговорил всех остальных: « М ы решили, что можем рискнуть". Каждому пришлось внести свою долю на необходимые транспортные расходы и покупку автомата. Они еще раз отправились в Лас‑Вегас, но на этот раз за собственный счет.
Алекс говорил: «Чтобы купить игровой автомат, надо предъявить документ с регистрацией в том штате США. где приобретение игровых автоматов — вполне законное дело. При наличии водительских прав, выданных в таком штате, все должно было пройти гладко». Оказалось, что у одного из участников команды то ли дядя его знакомой девушки, то ли кто‑то еще жил в Лас‑Вегасе.
Для переговоров с этим человеком команда выбрала Майка, поскольку у него были самые хорошие манеры и вообще — он имел представительную внешностью. «Подобные покупки всегда были подозрительным делом, как и нелегальное приобретение оружия», — поясняет Алекс. Игровые автоматы часто приобретают нечестным путем — по незаконным каналам — чтобы использовать их в клубах и других местах. И, тем не менее, к его удивлению, такой автомат удалось купить.
За автомат японского производства пришлось заплатить 1500 долларов. «Мы поместили его на заднее сидение автомобиля и повезли домой так бережно, как будто у нас в машине был ребенок».
РАЗРАБОТКА ПРЕСТУПЛЕНИЯ
Майк, Алекс и Марко втащили автомат на второй этаж, и разместили в свободной спальне. Удивительное волнение перед началом работы с автоматом, по словам Алекса, запомнилось всем, как один из поворотных моментов в жизни.
«Мы открыли его, вытащили из него чипы памяти и процессор. Я подумал, что при производстве автомата на заводе крупной корпорации инженеры и сборщики вполне могли работать в режиме конвейера и потому быть немного ленивыми или невнимательными, они использовали чип 6809, аналогичный чипу 6502, который использовался в компьютерах Apple II или Atari. Это был 8‑битный чип с размером памяти 64К. Он был хорошо знаком мне».
Машина, которую приобрели будущие хакеры, была одна из тех, что использовалась в игровом бизнесе уже около десяти лет. Если какое‑то казино хочет приобрести автомат новой конструкции, то комиссия по играм Лас‑Вегаса должна тщательно изучить его программное устройство и убедиться в том, что его выплаты организованы таким образом, что никто не будет обижен — ни игроки, ни казино. Процесс одобрения нового автомата — долгое и нелегкое дело, поэтому казино стараются держаться за старые автоматы столько, сколько это возможно. Это играло на руку нашей команде хакеров, потому что они справедливо надеялись, что более старые автоматы будут основаны на устаревшей технологии, которую им легче будет победить.
Компьютерная программа, которую исследователи обнаружили в чипе, состояла из череды нулей и единиц, то есть самого общего вида компьютерных инструкций. Перед тем, как приступить к изменению программы, надо было совершить, так сказать, «ретрансляцию», — операцию, которую совершают инженеры и программисты, когда хотят воссоздать процесс создания того или иного продукта: в данном случае это означало перевод программных нулей и единиц в форму, с которой могут оперировать программисты.
Для совершения этой операции Алексу был нужен «антиассемблер». Наша четверка не хотела приобретать эту программу законным путем, потому что это действие выглядело бы, как запрос в библиотеку о руководстве по изготовлению бомб. Ребятам пришлось написать собственный антиассемблер, Алекс описал этот процесс такими словами: «Это, естественно, была не легкая прогулка, но мы получили от этого занятия немало удовольствия».
После того, как компьютерные коды программы из покерного автомата были пропущены через новый антиассемблер, три программиста сели над ними, чтобы вникнуть в их суть. Обычно для профессионального программиста не составляет особого труда быстро отыскать в программе интересующие его секции. Так происходит, потому что программист, пишущий программу, расставляет на всем ее протяжении своеобразные «дорожные знаки» — метки, комментарии и объяснения того, как действует каждый из разделов. Это похоже на книгу, в которой есть заголовки частей, разделов, глав, а иногда и более мелких частей.
При переводе программы в цифровую форму, которую компьютер может понять, эти «дорожные знаки» игнорируются — ни компьютеру. ни микропроцессору они совершенно не нужны.
Поэтому, когда программа восстанавливается из машинных кодов при помощи антиассемблера, в ней нет ни одного традиционного пояснения; продолжая метафору «дорожных знаков», такой восстановленный код можно сравнить с картой, на которой нет названий населенных пунктов и маркировки дорог.
Наши исследователи тщательно изучали страницы кодов на экране, стараясь отыскать ответ на простые вопросы: «Какова логика программы? Каким образом перемешиваются карты перед выбросом? Как фиксируется замена карт?» Но главной задачей на этом этапе был поиск генератора случайных чисел. Алекс предполагал, что японские программисты, написавшие программу, вполне могли допустить незначительные ошибки в написании этого самого генератора, он не ошибся.
ПЕРЕПИСЫВАНИЕ КОДА
Алекс с гордостью описывал усилия команды на этом этапе: « М ы были профессиональными программистами, и все сделали хорошо. Мы выяснили, как цифры кода программы превращаются в карты на табло игрального автомата, а затем написали небольшую добавку на языке С, которая делала то же самое», — говорил он.
«У нас был стимул для работы, и мы работали ночи напролет. Нам потребовалось около трех недель, чтобы досконально разобраться в том, как работает программа.
Для этого мы изучали текст, делали определенные предположения о его назначении, писали некоторые добавки к программе, помещали ее в R O M (компьютерный чип) и возвращали его в машину, а потом смотрели, что происходит. Например, мы написали специальную программу, которая располагала числа над изображением карт на экране. Так мы определили, каким образом программа оперирует с картами. Н а ш а работа ш л а по м е т о д у проб, ошибок, и постоянного анализа, достаточно быстро строки кода начали наполняться смыслом. Мы досконально разобрались в том, как числа в компьютерной программе превращаются в карты на экране.
Мы надеялись, что генератор случайных чисел будет устроен достаточно просто. Дело происходило в начале девяностых годов, и это было именно так. После небольшого анализа я понял, что мы имеем дело с генератором, который Дональд К н у т написал е щ е в 60‑е годы. Авторы программы для игрового автомата не стали изобретать велосипед, а просто скопировали в свою программу имеющиеся разработки по методу Монте‑Карло.
Мы точно установили, какой алгоритм использовали авторы программы в своем коде для случайной выборки карт; он назывался линейным регистром сдвига с обратной связью (linear feedback shift register) и это был очень хороший генератор случайных чисел (RNG)».
Очень скоро «взломщики» поняли, что в этом генераторе случайных чисел есть очень серьезная «прореха», которая существенно упрощает их задачу. Как объяснял Майк, «это был достаточно простой 32‑битный RNG, поэтому взломать его не составляло особого труда, а с помощью нескольких хороших оптимизаций стало совсем просто».
Итак, выдаваемые генератором числа не были абсолютно произвольными. Но, по мнению Алекса, есть серьезная причина для этого:
«Если они абсолютно произвольны, то не могут создавать неравные условия. Они не знают о том, что такое неравные условия. Некоторые автоматы выдают один за другим два последовательных королевских флэша (очень редкую комбинацию карт в покере — прим. переводчика). Такого не должно быть никогда. Поэтому дизайнеры хотят быть уверены, что у них правильная статистика, иначе им кажется, что они теряют контроль над игрой.
Одна вещь, которую дизайнеры не понимали, когда создавали свой автомат, заключается в том, что им и не нужен настоящий генератор случайных чисел. В любом покерном розыгрыше участвуют десять карт: пять сдаются сначала и еще пять для замены каждой из пяти по желанию игрока, В автомате эти десять карт выбирались, как десять последовательных случайных чисел в RNG».
Итак, Алекс и его партнеры поняли, что программа в том автомате, который они изучали, недостаточно продумана. Из‑за наличия ошибок стало ясно, что они могут написать несложный, но элегантный алгоритм, который поможет им победить машину.
Идея, по мнению Алекса, заключалась в том, чтобы начать игру, увидеть, какой набор карт выбросил автомат, и ввести эти сведения в свой компьютер. Затем с помощью разработанного алгоритма вычислить положение, в котором находится генератор случайных чисел, и определить, сколько ему еще номеров осталось до того, как будет выброшена комбинация, соответствующая королевскому флэшу.
«Итак, мы работали на нашей тестовой машине и пробовали нашу маленькую программу, которая точно предсказывала нам следующие последовательности карт. Возбуждение нарастало».
Алекс приписывает это возбуждение «осознанию того, что вы умнее кого‑то и можете переиграть его. А в нашем случае еще и заработать немного денег».
Они отправились в магазин, отыскали там наручные часы Casio с возможностью отсчета десятых долей секунды и приобрели сразу три штуки для всех троих, кто собирался быть в казино: Ларри должен быть оставаться у компьютера.
Они были готовы начать проверку своего метода. Один из команды должен был начать игру и фиксировать набор карт, которые ему выбрасывал автомат — масть и старшинство каждой из пяти карт. Ларри вводил бы эти данные в их собственный компьютер; хотя их машина и не принадлежала к известным брэндам, это был очень приличный компьютер для их целей, поскольку его процессор был во много раз быстрее тех, что использовались в японских игральных автоматах. Всего за несколько мгновений он вычислял точный момент времени, который должен быть установлен в один из секундомеров Casio.
Когда отсчет времени заканчивался, человек у игрового автомата должен был нажать кнопку «Игра». Это должно было произойти предельно четко, в течение доли секунды. Но это не было слишком сложной проблемой, как объяснил Алекс.
«Двое из н а с какое‑то время занимались музыкой. Е с л и вы музыкант и у вас хорошее чувство ритма,то вы можете нажать кнопку в нужный момент в пределах десяти миллисекунд».
Если бы все сработало так, как предполагалось, то машина должна была выбросить игроку набор из пяти последовательных карт одной масти — королевский флэш.
Наши экспериментаторы попробовали этот трюк на своем автомате и практиковались до тех пор, пока каждый из них не научился добиваться выпадения королевского флэша практически с каждой попытки.
Несколько месяцев они, по словам Марка, «занимались восстановлением программы автомата, определяли, каким образом случайные числа превращаются в карты на экране автомата, установили точно, как и когда выбрасывает числа RNG, изучили все особенности автомата и создали программу, учитывающую все эти особенности, чтобы в любой момент времени знать состояние RNG на часы и даже дни вперед».
Они победили автомат и сделали его своим рабом. Они бросили настоящий хакерский вызов и выиграли. Это знание могло сделать их богатыми.
Как прекрасно было мечтать об этом. Удастся ли им реализовать свои мечты в дебрях казино?