Искусство вторжения - Митник Кевин 2 стр.


Алекс с гордостью описывал усилия команды на этом этапе: « М ы были профессиональными программистами, и все сделали хорошо. Мы выяснили, как цифры кода программы превращаются в карты на табло игрального автомата, а затем написали небольшую добавку на языке С, которая делала то же самое», — говорил он.

«У нас был стимул для работы, и мы работали ночи напролет. Нам потребовалось около трех недель, чтобы досконально разобраться в том, как работает программа.

Для этого мы изучали текст, делали определенные предположения о его назначении, писали некоторые добавки к программе, помещали ее в R O M (компьютерный чип) и возвращали его в машину, а потом смотрели, что происходит. Например, мы написали специальную программу, которая располагала числа над изображением карт на экране. Так мы определили, каким образом программа оперирует с картами. Н а ш а работа ш л а по м е т о д у проб, ошибок, и постоянного анализа, достаточно быстро строки кода начали наполняться смыслом. Мы досконально разобрались в том, как числа в компьютерной программе превращаются в карты на экране.

Мы надеялись, что генератор случайных чисел будет устроен достаточно просто. Дело происходило в начале девяностых годов, и это было именно так. После небольшого анализа я понял, что мы имеем дело с генератором, который Дональд К н у т написал е щ е в 60-е годы. Авторы программы для игрового автомата не стали изобретать велосипед, а просто скопировали в свою программу имеющиеся разработки по методу Монте-Карло.

Мы точно установили, какой алгоритм использовали авторы программы в своем коде для случайной выборки карт; он назывался линейным регистром сдвига с обратной связью (linear feedback shift register) и это был очень хороший генератор случайных чисел (RNG)».

Очень скоро «взломщики» поняли, что в этом генераторе случайных чисел есть очень серьезная «прореха», которая существенно упрощает их задачу. Как объяснял Майк, «это был достаточно простой 32-битный RNG, поэтому взломать его не составляло особого труда, а с помощью нескольких хороших оптимизаций стало совсем просто».

Итак, выдаваемые генератором числа не были абсолютно произвольными. Но, по мнению Алекса, есть серьезная причина для этого:

«Если они абсолютно произвольны, то не могут создавать неравные условия. Они не знают о том, что такое неравные условия. Некоторые автоматы выдают один за другим два последовательных королевских флэша (очень редкую комбинацию карт в покере — прим. переводчика). Такого не должно быть никогда. Поэтому дизайнеры хотят быть уверены, что у них правильная статистика, иначе им кажется, что они теряют контроль над игрой.

Одна вещь, которую дизайнеры не понимали, когда создавали свой автомат, заключается в том, что им и не нужен настоящий генератор случайных чисел. В любом покерном розыгрыше участвуют десять карт: пять сдаются сначала и еще пять для замены каждой из пяти по желанию игрока, В автомате эти десять карт выбирались, как десять последовательных случайных чисел в RNG».

Итак, Алекс и его партнеры поняли, что программа в том автомате, который они изучали, недостаточно продумана. Из-за наличия ошибок стало ясно, что они могут написать несложный, но элегантный алгоритм, который поможет им победить машину.

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

«Итак, мы работали на нашей тестовой машине и пробовали нашу маленькую программу, которая точно предсказывала нам следующие последовательности карт. Возбуждение нарастало».

Алекс приписывает это возбуждение «осознанию того, что вы умнее кого-то и можете переиграть его. А в нашем случае еще и заработать немного денег».

Они отправились в магазин, отыскали там наручные часы Casio с возможностью отсчета десятых долей секунды и приобрели сразу три штуки для всех троих, кто собирался быть в казино: Ларри должен быть оставаться у компьютера.

Они были готовы начать проверку своего метода. Один из команды должен был начать игру и фиксировать набор карт, которые ему выбрасывал автомат — масть и старшинство каждой из пяти карт. Ларри вводил бы эти данные в их собственный компьютер; хотя их машина и не принадлежала к известным брэндам, это был очень приличный компьютер для их целей, поскольку его процессор был во много раз быстрее тех, что использовались в японских игральных автоматах. Всего за несколько мгновений он вычислял точный момент времени, который должен быть установлен в один из секундомеров Casio.

Когда отсчет времени заканчивался, человек у игрового автомата должен был нажать кнопку «Игра». Это должно было произойти предельно четко, в течение доли секунды. Но это не было слишком сложной проблемой, как объяснил Алекс.

«Двое из н а с какое-то время занимались музыкой. Е с л и вы музыкант и у вас хорошее чувство ритма,то вы можете нажать кнопку в нужный момент в пределах десяти миллисекунд».

Если бы все сработало так, как предполагалось, то машина должна была выбросить игроку набор из пяти последовательных карт одной масти — королевский флэш.

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

Несколько месяцев они, по словам Марка, «занимались восстановлением программы автомата, определяли, каким образом случайные числа превращаются в карты на экране автомата, установили точно, как и когда выбрасывает числа RNG, изучили все особенности автомата и создали программу, учитывающую все эти особенности, чтобы в любой момент времени знать состояние RNG на часы и даже дни вперед».

Они победили автомат и сделали его своим рабом. Они бросили настоящий хакерский вызов и выиграли. Это знание могло сделать их богатыми.

Как прекрасно было мечтать об этом. Удастся ли им реализовать свои мечты в дебрях казино?


НАЗАД В КАЗИНО ВРЕМЯ ИГРАТЬ

Одно дело совершать любые махинации на автомате, стоящем в безопасном месте. Пробовать их в центре переполненного казино и красть у него деньги — это совсем другая история. Для этого нужны стальные нервы.

Их девушки считали все происходящее забавой. Ребята советовали им надеть обтягивающие шорты и вести себя повеселее — играть, шуметь, кривляться, заказывать выпивку — надеясь, что служба наблюдения казино, следящая за всем происходящим через камеры наблюдения, будет отвлечена веселыми лицами и ужимками. «Поэтому мы поощряли такой стиль поведения, как только могли», — вспоминал Алекс.

Они надеялись, что смогут смешаться с толпой. «Лучшим для такой цели был Макс. У него совершенно незапоминающееся лицо, и они с женой выглядели, как типичные посетители казино».

Алекс описывал сцену так, как если бы все происходило вчера. У Марко и Майка это получалось по-другому: дело в том, что Алекс со своей женой Энни были первыми, кто совершал попытку единоборства с покерным автоматом в казино. Он должен был с высокой точностью знать цикл срабатывания автомата. Одним из способов. которым они старались достичь этого знания, была видеокамера в рюкзаке; в казино надо было направить видеокамеру на экран покерного автомата и некоторое время снимать происходящее на видеокассету. «Это совсем не просто, — вспоминал Алекс, — ориентировать рюкзак в нужном направлении, не видя результата; при этом надо было себя вести естественно, чтобы не выглядеть подозрительно и не привлекать внимания». Майк предпочитал другой, менее сложный, метод: «Временной цикл для неизвестного игрального автомата можно определить, если зафиксировать выбрасываемые им карты всего дважды, но через много часов». При этом он должен быть...


Страницы 16-17 отсутствуют


...«Я подумал о том. что казино проводит эту проверку из-за тех ребят, которые действительно подменяли программу в автомате. Не представляю, как им удавалось сделать это и не быть пойманными». По мнению Алекса, они применяли методы социальной инженерии, обманывали охрану и давали взятки кому-то в казино. Он подозревал, что они могли подменить даже тот «золотой эталон», с которым сверялись чипы в машине при крупном выигрыше.

Прелесть работы его команды, по мнению Алекса, была в том, что они никоим образом не вмешивались в работу автомата. По их мнению. их подход был куда более гибким.

Естественно, ребята не могли постоянно выигрывать; они были уверены: «в конце концов, кто-то скажет — „Эй, мы уже видели этих ребят“. Мы все время опасались того, что нас поймают».

Кроме боязни быть пойманным за мошенничество, они были озабочены и налоговыми проблемами: любого, кто выигрывал более 1200 долларов, казино просило предъявить документы и докладывало о выигрыше в налоговые органы, Майк вспоминает: « М ы полагали, что налоги автоматически будут вычитаться из выигрыша, если у игрока нет удостоверения личности. Но мы не хотели привлекать к себе внимание. Заплатить налоги не было проблемой, но при этом создавалась запись о том, что вы выиграли большую сумму денег. Мы стали напряженно думать о том. как избежать „засвечивания“.

Надо было искать другой подход. После достаточно короткого периода раздумий они начали разрабатывать новую идею.


НОВЫЙ ПОДХОД

У ребят тогда было две цели: разработать метод, который позволил бы им гарантированно выигрывать заметные суммы с помощью выигрышных комбинаций в покере, но сделать выигрыши не такими большими, чтобы они привлекали внимание окружающих. И путь к этому выигрышу должен быть совсем незаметным, без постоянной беготни к телефону.

Поскольку в казино есть лишь небольшое число японских автоматов, наша команда обратила свое внимание на гораздо более распространенные американские автоматы. Они приобрели его и разобрали уже испытанным путем и обнаружили, что генерация случайных чисел в нем происходит гораздо более сложным образом: машина одновременно использует два генератора, работающих совместно друг с другом. «Программисты, готовившие этот автомат, были уже осведомлены о возможностях жульничества с простыми генераторами», — пришел к выводу Алекс.

Тем не менее, и в этом случае разработчики автомата сделали фатальную ошибку. «Они прочли статью, в которой говорилось, что вы повысите уровень случайности чисел, если используете второй генератор, но они воплотили идею неправильным образом». Чтобы определить выбрасываемую карту, они складывали число из первого генератора с числом из второго генератора.

Правильно было бы менять число из второго генератора после каждой карты. Конструкторы автомата не сделали этого; они меняли его только перед выбросом каждой пятерки карт, так что к выброшенному числу первого генератора для каждой карты из пятерки прибавлялось одно и то же число из второго генератора.

Для Алекса использование двух генераторов было своеобразным криптографическим вызовом: он вспомнил, что аналогичный прием иногда используется при шифровании текстов. Однако он не помнил, как надо действовать в подобных случаях и для повышения квалификации стал ходить в библиотеку соседнего университета.

«Если бы создатели программ для автоматов читали книги по криптографии более тщательно, они бы не сделали этой ошибки. Кроме того, они более внимательно проверяли бы свою систему на возможность взлома и не оставили нам лазейки.

Любой компьютерный инженер смог бы написать программу и сделать то, что сделали мы, поняв, что от него требуется. Самой сложной частью работы было создание быстродействующего алгоритма, чтобы всего за несколько секунд вы могли понять, что происходит; если создавать такой алгоритм недостаточно тщательно, он мог работать несколько часов перед тем, как выдать решение.

Мы все были хорошими программистами, и работа была существенной частью нашей жизни, поэтому мы все сделали правильно. Но это было совсем не просто».

Я помню, как аналогичную ошибку сделал программист компании Norton (до того, как Symantec купил их), разрабатывавший продукт Diskreet — приложение, которое дает пользователю возможность создавать шифрованные виртуальные драйвы. Разработчики некорректно построили алгоритм — а может, даже сделали это намеренно, и это привело к уменьшению длины ключа шифрования с 56 до 30 бит. Государственный стандарт шифрования использует 56-битный ключ, который считается практически не взламываемым, поэтому Norton гарантировал своим пользователям ощущение защищенности. Из-за ошибки программистов на самом деле данные пользователя шифровались при помощи ключа в 30 бит, а не 56. Даже в те годы 30-битный ключ можно было взломать простым «методом грубой силы» (так называется метод последовательного перебора вариантов — прим. переводчика). Любой человек, используя этот продукт, ошибочно думал, что он находится в полной безопасности: атакующий вполне мог сломать ключ шифрования достаточно быстро и получить доступ к данным пользователя. Примерно такую же ошибку обнаружили наши ребята и в программе игрального автомата.

Параллельно с работой над компьютерной программой, которая позволила бы им победить новый игральный автомат, ребята заставляли Алекса думать над новой моделью поведения, чтобы не приходилось постоянно бегать к телефону. Ответом стала страница из книги «Endaemonic Pie» — карманный компьютер. Алекс разработал систему, сделанную из миниатюрного компьютера, который Майк и Марко отыскали в каталоге, В этой системе управляющая кнопка была упрятана в ботинок, а для приема сигнала использовался виброзвонок от сотового телефона. «Нам пришлось немало поработать над тем, чтобы построить систему на основе маленького чипа и маленькой памяти», — рассказывает Алекс. « М ы создали прекрасную эргономичную систему, которая помещалась в ботинке». Вероятно, под словом «эргономичный» он подразумевает то, что его устройство было настолько маленьким, что не натирало ногу при ходьбе!


НОВАЯ АТАКА

Началась отработка новой схемы работы, и это был достаточно нервный процесс. Они избавились от необходимости бегать к телефону перед каждым выигрышем. Но даже после многочисленных тренировок в домашних условиях, «работа» в реальных условиях происходит перед огромной аудиторией, существенная часть которой очень подозрительно к вам относится.

На этот раз программа была разработана так, что ребята могли сидеть у автомата, не отходя от него, осуществляя целую серию небольших менее подозрительных выигрышей. Алекс и Майк вспоминают некоторые непростые моменты в процессе «работы».

Алекс: «Я обычно помещал свой компьютер в корпус маленького транзисторного приемника. Провод от него шел через носок в ботинок к управляющей кнопке».

Майк: «Я приматывал провод к лодыжке. Мы изготавливали переключатели из небольших кусочков материала, который используется для изготовления интегральных схем. Эти переключатели были размером два на два сантиметра, с небольшой кнопкой. Затем мы вырезали такого же размера дыру в стельке и помещали переключатель в ботинок. Он доставлял неудобство только в том случае, если вам приходилось целый день носить его — мог натереть пальцы».

Алекс: «Итак, мы входили в казино и старались выглядеть максимально спокойно, а действовать так, как будто никаких проводов в наших ботинках не было. Мы подходили к автомату и начинали играть. Для передачи сигналов у нас была разработана система, аналогичная азбуке Морзе. Мы начинали играть и передавали значения выпавших карт при помощи кнопки в ботинке.

С и г н а л от э т о й кнопки ш е л в компьютер, лежащий в кармане. Д л я точного определения места, в котором находился генератор случайных чисел, надо было дождаться выброса восьми карт. П я т ь карт автомат выбрасывал для начала игры, а следующие три мы получали, попросив его заменить три карты для продолжения игры».

Майк: «Наш код для передачи информации о выпавших картах был двоичным, кроме того, он использовал технологию сжатия информации под названием код Хафмана. Например, длинный и короткий сигнал означал один-ноль, то есть два в двоичной системе. Длинный-длинный означал три и т.д. Для обозначения любой карты требовалось не более трех нажатий».

Алекс: «Нажатие кнопки в течение трех секунд означало прерывание информации. Е с л и компьютер выдавал вам три коротких сигнала — пи-пи-пи — это означало, что вам пора переходить к решительным действиям. Естественно, этому пришлось поучиться, и мы практиковались делать это, например, поддерживая беседу с посетителями или служащими казино. Однажды я передал информацию о восьми картах и получил в ответ через минуту три коротких гудка. Я был готов к действиям.

В этот момент компьютер в кармане обнаружил место в алгоритме, которое соответствовало выкинутым картам. Алгоритм в карманном компьютере был аналогичен алгоритму в игральном автомате, поэтому компьютер в кармане «знал», какие карты будут выброшены автоматом в следующий раз. Поэтому он мог вам дать совет, какие карты надо придержать, а какие — поменять, чтобы получить в результате выигрышную комбинацию, продолжал свой рассказ Алекс:

«Компьютер говорил, что надо делать, посылая сигналы на вибратор в кармане, который мы пристроили к нему, вытащив из старого пейджера. Е с л и компьютер хотел, чтобы вы держали третью и п я т у ю карту, он сигналил бип, бип, би-и-и-п, бип, би-и-и-п, — что вы ощущали, как вибрацию в кармане.

Назад Дальше