Часть I Хакинг для «чайников»

1 Что такое хак

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

Определение

Хак{6} (англ. hack, hak – взлом)

1. Хитроумное, непредвиденное использование системы, которое: а) подрывает правила или нормы самой системы – б) за счет людей, так или иначе затронутых ее деятельностью.

2. Некое действие, допускаемое системой, недокументированное и не предусмотренное ее разработчиками.

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

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

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

Разница очевидна. Хакер – не тот, кто обводит вокруг пальца жертву. Хакер находит изъян в правилах системы и заставляет ее делать то, что системе делать не положено. Тем самым он обводит вокруг пальца саму систему и, соответственно, ее разработчиков.

Хак подрывает смысл системы, нарушая ее правила или нормы. Это именно «игра с системой». Хакерство занимает промежуточное положение между мошенничеством и инновациями.

«Хак» – термин во многом субъективный. Часто можно услышать: «Я скажу, хак это или не хак, лишь когда увижу своими глазами». О чем-то можно с уверенностью сказать, что это хак. О чем-то – что это точно не хак. Но есть довольно много явлений, которые находятся в серой зоне между этими двумя полюсами. Навык скорочтения – это не хак. Невидимые глазу микроточки, тайно наносимые принтером, чтобы идентифицировать ваш документ, – определенно хак. Но вот CliffsNotes[2]… Здесь я не берусь утверждать.

Хак всегда сделан с умом. Часто он вызывает сдержанное восхищение (порой вкупе с праведным гневом) и реакцию типа «Круто, хотел бы и я додуматься до этого», даже если речь идет о вещах принципиально вам чуждых. Такая реакция характерна даже в тех случаях, когда в роли хакеров выступают отъявленные злодеи. Моя книга 2003 г.{7} Beyond Fear («За пределами страха») начинается с подробного объяснения, почему теракт 11 сентября «поражал воображение». Террористы нарушили неписаные правила угона самолетов. До них захват самолета подразумевал полет в заданную точку, политические требования, переговоры с правительствами и полицией и в большинстве случаев мирное урегулирование ситуации. То, что террористы сделали 11 сентября, чудовищно, но нельзя не признать изобретательность их хака. Они использовали оружие, разрешенное службами безопасности аэропортов, и превратили гражданские самолеты в управляемые ракеты, в одностороннем порядке переписав нормы авиационного терроризма.

Хакеры и их деятельность заставляют по-новому взглянуть на системы, из которых выстроен наш мир. Они разоблачают то, что мы принимаем как должное, зачастую ставя в неловкое положение сильных мира сего, а иногда заставляя людей платить непомерную цену. Если не брать в расчет терроризм, можно сказать, что люди любят хакеров, потому что они умны. Макгайвер[3] был хакером. Фильмы о побегах из тюрьмы и хорошо спланированных ограблениях полны умных хаков: «Мужские разборки», «Большой побег», «Мотылек», «Миссия невыполнима», «Ограбление по-итальянски», «11-», «12-», «13 друзей-» и «8 подруг Оушена».

Хак всегда оригинален. «Разве это разрешено?», «Я и не знал, что так можно!» – вот обычная реакция людей на очередной хак. Со временем правила и общественные нормы меняются, а с ними меняются и представления о том, что является хаком. Все хаки в итоге либо подпадают под запрет, либо становятся разрешенными действиями. Соответственно, то, что еще недавно считалось хаком, перестает им быть. Когда-то вам приходилось хакать свой смартфон, чтобы превратить его в беспроводную точку доступа; сегодня точка доступа является стандартной функцией iOS и Android. Напильник в торте, переданном в тюрьму сообщнику, изначально был хаком, но теперь это стандартный сюжетный ход, заставляющий тюремщиков быть начеку.

В 2019 г. кто-то использовал дрон{8}, чтобы доставить мобильный телефон и марихуану в тюрьму штата Огайо. В то время я бы назвал это хаком, но сегодня запуски дронов рядом с тюрьмами в некоторых штатах напрямую запрещены, и подобный трюк перестал быть хаком. Недавно я прочитал о том, как некто использовал удочку{9}, чтобы перебросить контрабанду через стену тюрьмы, а также о коте{10}, пойманном в тюрьме Шри-Ланки с грузом наркотиков и SIM-карт. (За кота не волнуйтесь, он сбежал.) Все это определенно хаки.

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

В итальянском языке есть слово для обозначения такого рода вещей – furbizia, то есть изобретательность, которую итальянцы проявляют, чтобы обойти бюрократические препоны и неудобные законы. В хинди есть похожее слово, подчеркивающее ловкость и находчивость при решении проблем, – jugaad. В бразильском португальском эквивалентом является gambiarra.

Хаки бывают моральными и аморальными. Некоторые полагают, что если какая-то деятельность или поведение не противоречат закону, то они по умолчанию являются нравственными, но, конечно, мир устроен гораздо сложнее. Точно так же, как существуют аморальные законы, существуют и моральные преступления. Большинство хаков, которые мы будем обсуждать в этой книге, технически законны, но противоречат самому духу закона. (А законы – это лишь один из типов систем, которые можно взломать.)

Слово «хак» в своем нынешнем значении появилось на свет{11} в 1955 г. в Клубе технического моделирования железных дорог МIT[4] и быстро перекочевало в зарождающуюся область компьютерных наук. Первоначально оно описывало способ решения проблем, предполагающий сообразительность, новаторство и находчивость, без какого-либо криминального или даже соревновательного подтекста. Но к 1980-м гг. «хакингом» все чаще стали называть взлом систем компьютерной безопасности. Хакнуть компьютер означало заставить его сделать не просто что-то новое, а нечто такое, чего он делать не должен.

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

И это не новость. Люди взламывали системы общественного устройства на протяжении всей истории.

2 Системы и хакинг

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

Налоговый кодекс невероятно сложен. Существует огромное количество нюансов, исключений и особых случаев, возможно, не для большинства из нас как физических лиц, но для богатых людей и разного рода предприятий. Он состоит из правительственных законов, административных постановлений, судебных решений и юридических заключений. В него также входят законы и нормативные акты, регулирующие деятельность корпораций и разнообразных партнерств. Дать достоверную оценку размерам налогового кодекса затруднились даже эксперты, по крайней мере, когда я их об этом спросил. Непосредственно налоговый кодекс{12} занимает около 2600 страниц. Нормативные акты и постановления Налогового управления увеличивают этот объем примерно до 70 000 страниц. Законы, касающиеся корпоративных структур и партнерств, не менее сложны, поэтому я предположу, что в общей сложности налоговый кодекс США занимает 100 000 страниц или 3 млн строк. Объем кода Microsoft Windows 10{13} составляет около 50 млн строк. Довольно странно сравнивать количество строк текста и строк компьютерного кода, но подобное сравнение все равно полезно. В обоих примерах высокий уровень сложности во многом связан с тем, как разные части кода взаимодействуют друг с другом.

Любой компьютерный код содержит баги. Баги – это ошибки в спецификации, ошибки программирования, ошибки, возникающие на разных этапах создания программного обеспечения, порой столь же обыденные, как опечатка или типографская неточность. Современные программные приложения, как правило, содержат сотни, если не тысячи багов. Баги есть во всем без исключения программном обеспечении, которое вы сейчас используете на компьютере, на телефоне и на любых устройствах интернета вещей (IoT) у вас дома или на работе. То, что все это программное обеспечение прекрасно работает большую часть времени, говорит о том, насколько малозаметными и несущественными могут быть баги. Вы вряд ли столкнетесь с ними в ходе обычного использования устройств, но они есть. Точно так же они имеются и в налоговом кодексе, со многими частями которого вы просто никогда не сталкивались.

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

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

Недавний пример – Закон о сокращении налогов и занятости от 2017 г. Этот закон был разработан в спешке, в закрытом режиме и принят без должного рассмотрения законодателями и даже без корректуры. Некоторые его части были написаны от руки, и просто невозможно представить себе, что голосовавшие за или против принятия этого закона точно знали его содержание. В результате в текст вкралась ошибка, из-за которой пособия по смерти военнослужащих были отнесены к трудовым доходам. Следствием этой ошибки стало то, что члены семей погибших неожиданно получили налоговые счета{14} на суммы свыше $10 000. Это типичный баг.

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

Вот как это работало{15}. Американская компания передавала активы ирландской «дочке», которая взимала с нее огромные роялти с продаж клиентам в США. Это заметно снижало налоги компании в Штатах, а ирландские налоги на роялти были существенно ниже. Затем, используя лазейку в ирландском законодательстве, компания переводила прибыль на счета фирм в налоговых гаванях, таких как Бермуды, Белиз, Маврикий или Каймановы острова, чтобы освободить ее от налогов. Вторая ирландская компания, также облагаемая низким налогом, создавалась для продаж европейским клиентам. Наконец, использовалась еще одна уязвимость и в цепочке возникала голландская компания-посредник, с помощью которой прибыль перегоняли обратно в первую ирландскую компанию и далее в офшор. Эта схема особенно популярна у высокотехнологических компаний, которые передают права интеллектуальной собственности своим иностранным «дочкам», а те, в свою очередь, укрывают денежные активы в налоговых гаванях.

Именно таким образом Google, Apple и другие технологические гиганты избегают уплаты справедливой доли налогов в США, несмотря на то что являются американскими компаниями. Это определенно не предусмотренное законодателями использование налоговых кодексов трех стран, хотя стоит отметить, что Ирландия намеренно придерживалась мягких налоговых правил, чтобы привлечь американские компании. И это очень выгодная ситуация для хакеров. По оценкам, только в 2017 г. американские компании уклонились от уплаты налогов{16} в США почти на $200 млрд, разумеется, за счет остальных налогоплательщиков.

В налоговом мире баги и уязвимости называются лазейками, а их использование злоумышленниками – стратегией ухода от налогов. Тысячи профессионалов – налоговые юристы и бухгалтеры из числа тех, кого в мире компьютерной безопасности мы называем «черными шляпами»[5], – скрупулезно исследуют каждую строку налогового кодекса в поисках уязвимостей, которые можно было бы использовать для собственной выгоды.

Мы знаем, как исправлять баги в компьютерном коде. Во-первых, мы можем использовать различные инструменты для их обнаружения еще до того, как код будет закончен. Во-вторых, уже после того, как код начнет работать, мы можем выискивать, а самое главное – быстро устранять баги различными способами.

Эти же методы применимы и к налоговому кодексу. Налоговое законодательство 2017 г. ограничило вычеты по налогу на имущество{17}. Это положение вступило в силу только в 2018 г., поэтому кое-кто придумал хитрый хак – досрочно уплатить налог на недвижимость за 2018 г. в 2017 г. Незадолго до конца года налоговое управление США вынесло решение о том, в каких случаях это было законно, а в каких нет, и приняло исправления в Налоговый кодекс для защиты от подобных действий. В большинстве случаев они были сочтены незаконными.

Однако зачастую все не так просто. Некоторые лазейки прописаны в законе и не могут быть исключены из него в мгновение ока. Принятие любого налогового законодательства – это всегда большая проблема, особенно в США, где оно обсуждается с особым пристрастием. Ошибку с подоходным налогом для семей военнослужащих, возникшую в 2017 г., начали исправлять лишь в 2021 г. И до сих пор конгресс не устранил ее: пока исправлена только еще более старая ошибка, которая взаимодействовала с ошибкой 2017 г., а ее окончательное устранение будет завершено в 2023 г. (И это еще довольно легкий случай, поскольку все признают, что ошибка имеет место.) У нас нет возможности править налоговый кодекс с той же оперативностью, с которой мы устраняем баги в программном обеспечении.

Есть и другой вариант: уязвимость остается в системе и постепенно становится частью обычного порядка вещей. Многие налоговые лазейки прекращают свое существование именно так. Иногда их принимает Налоговое управление США, иногда суды подтверждают их законность. Уязвимости могут не совпадать с целями налогового законодательства, но текст закона позволяет их использовать. Иногда они даже задним числом легализуются конгрессом после того, как за них заступятся избиратели. Все это и есть процесс развития систем.

Хак подрывает замысел системы. Какой бы юрисдикцией ни обладала управляющая система, она либо блокирует хак, либо разрешает его – явно или неявно, просто не предпринимая ответных действий.

3 Что такое система

Хакер соблюдает правила системы, но нарушает ее дух и замысел.

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

Определение

Система (англ. system). Сложный процесс, ограниченный набором правил или норм, предназначенный для достижения одного или нескольких желаемых результатов.

Текстовый процессор, с помощью которого я набрал этот абзац, представляет собой систему: электронные сигналы, ограниченные набором программных правил, предназначенных для создания текста. Слова появились на экране – это и есть мой желаемый результат. Создание этой книги как продукта – результат уже другой системы, процессы которой включают в себя дизайн страниц, их печать, сшивание в определенном порядке, наложение суперобложки и транспортировочную упаковку. Каждый из этих процессов выполняется в соответствии с набором четких правил. Две эти системы, а также ряд других приводят к созданию бумажной книги, которую вы держите в руках, или электронного файла, который вы читаете на своем устройстве либо воспроизводите для прослушивания. Это верно независимо от того, собраны элементы системы под одной крышей или разбросаны по всему миру. Это верно независимо от того, является ли результат реальным или виртуальным, бесплатным или дорогостоящим, выпущенным ограниченной партией или общедоступным. В процессе всегда будут задействованы одна или несколько систем.

Всякая система имеет правила. Ими могут быть законы, правила игры, неформальные правила группы или процесса, негласные социальные правила. Когнитивные системы тоже следуют законам – законам природы.

Хак – это всегда то, что позволяет сама система. И под словом «позволяет» я имею в виду нечто конкретное. Дело не в том, законен ли хак, социально приемлем или этичен, хотя все это может быть ему свойственно. Речь идет о том, что система, как она создана, не препятствует взлому самой себя. Система допускает хак непреднамеренно, случайно, но эта случайность является следствием того, как она была спроектирована. В технических системах это обычно означает, что осуществить взлом позволяет программное обеспечение, в социальных системах – что правила или законы, управляющие системой, не запрещают взлом напрямую. Вот почему мы используем слово «лазейка» для описания хаков.

Исходя из сказанного, хакингу подвержены системы, участники которых заранее договорились – явно или неявно – соблюдать общий набор правил. Иногда внутренние правила системы не совпадают с законами среды, в которой она существует. Я понимаю, что это сбивает с толку, поэтому объясню на примере. Компьютер управляется набором правил в виде запущенного на нем программного обеспечения. Хакнуть компьютер означает так или иначе обойти эти правила. Но помимо этого существуют внешние по отношению к компьютеру законы, которые потенциально регулируют то, что с ним можно делать и чего нельзя. К примеру, в США Закон о компьютерном мошенничестве и злоупотреблениях квалифицирует большинство форм взлома как уголовное преступление. (Обратите внимание, что происходит: взламывается компьютерная система, но более общая правовая система защищает ее.) К слову, довольно спорный момент, насколько общим должен являться такой закон, ведь в своем нынешнем виде он создает ловушку, поскольку любой взлом компьютера считается незаконным.

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

В некоторых системах внутренними правилами являются сами нормативно-правовые акты или, по крайней мере, они и обеспечивают существование этих правил. Далее, когда мы будем знакомиться с хакингом финансовой и правовой систем, мы увидим, что незначительные опечатки или слишком запутанные формулировки в законопроектах, контрактах, судебных заключениях способны открыть путь всевозможным эксплойтам[6], которые не были предусмотрены составителями законов и судьями.

Обратите внимание на одну очень важную вещь: правила не обязательно должны быть явными. В нашем мире существует множество систем, особенно социальных, которые ограничены нормами. Нормы менее формальны, чем правила; часто неписаные, они, тем не менее, определяют поведение. Мы все время ограничены социальными нормами, причем для разных ситуаций они разные. Даже политика регулируется нормами в той же степени, что и законом, чему мы неоднократно становились свидетелями в последние годы, когда в США нарушались норма за нормой.

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

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

Однако многие системы, которые мы будем обсуждать в этой книге, не имеют индивидуальных разработчиков. Рыночный капитализм проектировался не кем-то одним – это результат труда многих людей, приложивших руку к его эволюции на протяжении немалого времени. То же самое относится и к демократическому процессу; в США это проявляется как сочетание Конституции, законодательства, судебных решений и социальных норм. Поэтому, когда хакер замахивается на социальные, политические или экономические системы, он намеревается переиграть целую комбинацию факторов, куда входят обособленные друг от друга разработчики системы, социальный процесс, посредством которого система развивалась, и социальные нормы, управляющие этой системой.

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

Хакинг – это естественный результат системного мышления. Системы пронизывают практически все сферы нашей жизни. Системы лежат в основе нашего общества. Они становятся не только все более многочисленными, но и все более сложными по мере усложнения самого общества. И хакинг систем становится все более важным условием их развития. По сути, если вы хорошо и глубоко понимаете систему, вам нет нужды играть по правилам, придуманным для всех остальных. Вместо этого вы можете искать и находить недостатки и упущения в этих правилах. В какой-то момент вы замечаете, что те или иные ограничения, которые система накладывает на вас, не вполне справляются со своей задачей. И тогда вы взламываете систему. Если же при этом вы еще богаты и влиятельны, то, скорее всего, проделка сойдет вам с рук.

4 Жизненный цикл хака

С точки зрения компьютерной безопасности хак состоит из двух частей: уязвимости и эксплойта.

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

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

В качестве примера приведу историю EternalBlue. Это кодовое название эксплойта для операционной системы Windows, который работал на АНБ (Агентство национальной безопасности) в течение как минимум пяти лет, вплоть до 2017 г., когда его выкрали у агентства русские. EternalBlue использует уязвимость, допущенную Microsoft в протоколе Server Message Block (SMB), ответственном за обмен данных между клиентом и сервером. То, каким образом был закодирован SMB, давало возможность злоумышленнику отправить через интернет тщательно подготовленный исполняемый код, запустить его выполнение на принимающем компьютере под управлением Windows и таким образом получить над этим компьютером контроль. Строго говоря, АНБ могло использовать EternalBlue для удаленного управления практически любым компьютером, подключенным к интернету, на котором установлена операционная система Windows.

Процесс хакинга часто бывает распределенным между несколькими участниками, каждый из которых обладает специфическими навыками, однако под словом «хакер» подразумевают их всех, что вносит изрядную путаницу. Как минимум, существуют три группы участников. Во-первых, это творцы – те, кто используют свое любопытство и опыт для обнаружения возможности взлома и создания эксплойта. В случае с EternalBlue уязвимость обнаружил специалист из АНБ, а ирландскую налоговую лазейку – эксперт по налогам, который кропотливо изучал законодательства разных стран и их взаимодействие. Во-вторых, это те, кто применяют эксплойт на практике. В АНБ это были сотрудники, которые использовали эксплойт против конкретных целей, а в бухгалтерской фирме – бухгалтеры, реализующие стратегии ухода от налогов конкретных корпораций.

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

И, наконец, есть организации или конкретные люди, которые являются заказчиками. Откройте новости: АНБ хакает иностранную сеть, Россия – США, а Google – налоговый кодекс. Важно это понимать, поскольку мы еще не раз будем говорить о том, как богатые и влиятельные люди хакают разнообразные системы. Да, богатство и власть сами по себе не являются непременным условием появления продвинутых хакеров, но они открывают доступ к такого рода услугам. США, Россия и Google могут себе позволить нанимать самых одаренных и с их помощью успешно взламывать системы.

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

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

В ряде систем выгода, которую может приносить хак, определяется тем, как часто и насколько публично им пользуются. Обнаруженная уязвимость в банковской системе может использоваться преступниками «по-тихому», время от времени и оставаться для банка слепой зоной в течение многих лет. Хорошие хаки в сфере Налогового кодекса, как правило, распространяются очень быстро, поскольку становятся объектом продажи{18}. Искусная психологическая манипуляция может стать достоянием общественности, как только о ней заговорит достаточное количество людей, а может и оставаться неизвестной широкому кругу на протяжении многих поколений.

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

Контроль над целевой системой и ответственность за процессы ее обновления очевидны в случае, например, операционных систем, таких как Windows, или любых других крупных программных пакетов, за которыми стоит разработчик. Microsoft и Apple сделали исправление своих систем обязательным регулярным процессом.

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

В целом в технических системах уязвимости часто исправляют сразу после их обнаружения. Это далеко не так просто в случае систем социальных, о которых пойдет речь в этой книге. Обновление Налогового кодекса, например, требует многолетнего законодательного процесса. Люди, получающие выгоду от хака, могут успешно лоббировать против любых изменений в законе. Часто возникают законные разногласия по поводу того, приносит ли тот или иной хак пользу обществу, что еще больше затрудняет устранение уязвимостей. И, как мы увидим далее, богатые люди, наделенные властью, имеют колоссальное влияние на процессы решения подобных проблем, которые номинально являются демократическими.

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

5 Вездесущность хакинга

Какой бы закрытой ни была система, уязвимости будут присутствовать в ней всегда, а следовательно, и возможность взлома. В 1930 г. австро-венгерский математик Курт Гёдель доказал, что все математические системы либо неполны, либо имеют внутренние противоречия. На мой взгляд, это утверждение справедливо не только для математических систем, но и в более широком смысле. В любых системах существуют несоответствия и упущения, которыми можно воспользоваться. В частности, системы правил вынуждены балансировать на тонкой грани между полнотой и доступностью, связанные языковыми ограничениями и возможностями понимания. Соедините это с естественной человеческой потребностью в преодолении разнообразных границ, а также с тем фактом, что уязвимости для любой системы – это неизбежность, и вы поймете, что хакеры есть везде.

Club Penguin – детская онлайн-игра компании Disney, просуществовавшая с 2005 по 2017 г. Общение детей с незнакомцами в интернете справедливо вызывает беспокойство их родителей, поэтому Disney создала режим Ultimate Safe Chat, который запрещал свободный ввод текста, ограничивая игроков заранее подготовленным списком реплик. Идея заключалась в том, чтобы оградить детей от буллинга и контакта с потенциальными педофилами. Но дети есть дети, они хотят общаться друг с другом несмотря ни на что. Поэтому они просто хакнули это ограничение, изображая буквы и цифры фигурками своих аватаров.

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

Подобно Club Penguin, многие детские онлайн-игры вводили ограничения на высказывания в чате, чтобы предотвратить саму возможность травли и любого преследования. Дети взломали их все без исключения{19}. Чтобы обойти модераторов и фильтры ненормативной лексики, дети используют такие уловки, как намеренные ошибки в написании, например PHUQ вместо fuck you, разделение ключевой информации на несколько высказываний, чтобы ни одно из них не нарушало правил, и акростих, шифруя свои послания начальными буквами разрешенных фраз. Некоторые сайты запрещали пользователям вводить цифры – в ответ на это дети стали использовать слова: win вместо one (один), too вместо two (два), tree вместо three (три) и т. д. Тот же прием с созвучными искажениями применялся и для нанесения оскорблений: lose her означало looser (неудачник), а stew putt – stupid (дурак).

Школы пытаются ограничить использование учениками школьных компьютеров, в ответ на это ученики их взламывают. Успешные хаки такого рода распространяются моментально. После того как в школах одного из округов ограничили количество сайтов, которые разрешено посещать ученикам, те быстро сообразили, что VPN позволяет обойти ограничения и к тому же сделать это скрытно. Когда в другом районе заблокировали доступ к чатам, дети тут же нашли решение и стали общаться с помощью общего файла Google Doc.

Этот прием не нов. У него даже есть название – фолдеринг{20}. В разное время его использовали для сокрытия информации экс-глава ЦРУ генерал Петреус, руководитель избирательной компании Дональда Трампа 2016 г. Пол Манафорт и террористы, устроившие атаку 11 сентября 2001 г. Все они понимали, что могут избежать слежки, если будут пользоваться одним почтовым ящиком со своими сообщниками и писать друг другу письма, сохраняя их в виде неотправленных черновиков.

Во времена моего детства существовали хаки для обхода правил телефонной системы. Если вы слишком молоды, чтобы помнить такое, я объясню. Человек звонил на телефонную станцию, вызывал оператора, сообщал ему, кто он такой, и говорил, что хочет сделать междугородний групповой звонок. Оператор звонил по указанному номеру и спрашивал абонента, согласен ли тот принять групповой звонок за свой счет. Групповые звонки стоили весьма недешево. Но поскольку оператор сам инициировал звонок другой стороне, информация могла быть передана ей еще до того, как начинала взиматься плата. Итак, мы делали запрос группового звонка, оператор спрашивал указанного абонента – как правило, кого-то из наших родителей, – согласен ли тот принять групповой звонок, родители отвечали «нет», а затем перезванивали нам уже по стандартным, не таким дорогим тарифам. Подобные трюки можно было сделать и более эффективными. В некоторых семьях был даже список имен, которыми звонивший представлялся оператору в зависимости от ситуации; к примеру, имя Брюс могло означать «прибыл благополучно», Стив – «перезвоните» и т. д. (Оператор не знал настоящего имени звонившего.) Даже сегодня люди пользуются телефонными хаками, чтобы обойти правила тарификации. В Нигерии это называется «подмигнуть»{21}: звонишь кому-нибудь и кладешь трубку до того, как он успеет ответить. В Индии в первой половине 2010-х гг. такие хаки тоже были широко распространены{22}, поскольку стоимость звонков на сотовые и стационарные телефоны заметно отличалась. Все эти хаки предназначены для подрыва телефонных систем, чтобы обмениваться информацией, не платя за эту привилегию.

Домашнее обучение во время пандемии{23} COVID-19 пробудило хакерские способности во многих школьниках. Один сообразительный ученик переименовал себя в «Reconnecting…» и просто выключил видеосвязь, чтобы учитель думал, что у него проблемы с подключением. В марте 2020 г., в первые месяцы пандемии, власти Китая полностью закрыли город Ухань, а его школы перевели на дистанционное обучение. В ответ на это ученики стали заваливать приложение DingTalk, через которое осуществлялся образовательный процесс, отзывами с одной звездой{24}, надеясь, что таким образом оно будет удалено из магазинов приложений. (Увы, это не сработало.)

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

Само по себе это не означает, что абсолютно все системы взломаны. Вспомните Гёделя{25}. Среди юристов есть поговорка: «Все контракты неполны». Контракты исполняются не потому, что они жестко препятствуют нарушению сторонами договорных условий, а потому, что, как правило, имеют место доверие и благонамеренность. Если же дела идут плохо, существуют системы арбитража{26} и судебного разбирательства. Да, это может показаться наивным и идеалистичным, но именно благодаря системам, основанным на доверии, и функционирует наше общество. Мы не требуем от наших соглашений абсолютной защиты, потому что: 1) этого невозможно достичь, 2) любая попытка будет слишком долгой и громоздкой и 3) нам это попросту не нужно.

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

Не все системы одинаково подвержены взлому. Далее, по мере изложения, вы познакомитесь с характеристиками систем, которые делают их более или менее уязвимыми для хакеров. Самыми уязвимыми являются сложные системы с большим количеством правил, хотя бы в силу того, что в них скрыто больше непредвиденных последствий. Сложность – злейший враг безопасности{27}. Это безусловно верно в отношении систем компьютерных, но справедливо и для таких систем, как налоговый кодекс, финансовые рынки и искусственный интеллект. В целом чем более гибкими социальными нормами и правилами ограничена система, тем более она уязвима для взлома, поскольку оставляет больше возможностей для интерпретации и, следовательно, содержит в себе больше лазеек.

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

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

Загрузка...