Многие облачные системы поддерживают сложное многоуровневое делегирование полномочий. Текст «Терминология и понятия организаций» одного из поставщиков облачных услуг начинается с обсуждения «базовой организации, состоящей из пяти учетных записей, которые организованы в четыре организационные единицы под корнем». Существует управляющая учетная запись, которая обладает бóльшими полномочиями, а также возможность назначать разрешения этим учетным записям в политиках. Если существует более одной учетной записи и человек их регулярно использует, скорее всего, возникнет путаница. (Хочу подчеркнуть: сложность быстро растет!)
Если образ компьютера в облаке содержит пароли или криптографические ключи, то каждый запущенный экземпляр будет иметь одни и те же аутентификаторы, и любой, кто украдет образ компьютера, также будет иметь копии. Современная практика, как правило, заключается в том, что машина запрашивает или регистрирует случайные ключи в секретном хранилище той или иной структуры. У каждого крупного облачного провайдера есть рекомендации по безопасной начальной загрузке этих ключей.
Нам регулярно приходится удостоверять свою личность в организациях, включая наши банки, школы, коммунальные компании и тому подобное. Нам также необходимо подтверждать свои свойства, такие как кредитоспособность, трудоспособность или возраст для покупки алкоголя.
Когда люди отвечают за проверку информации о незнакомцах, удивительно трудно определить, что такое «хорошо», и претворить это в жизнь нормальным образом. Трудно сопоставить человека с маленькой фотографией, сделанной много лет назад и напечатанной как часть удостоверения личности. Когда свойство – это «коллега по работе в крупной организации», социальное давление, заставляющее сказать «ОК», может оказаться высоким. Злоумышленники будут изучать руководства целевой организации, чтобы говорить как их жертвы. Люк и Хан знают, что у них нет хорошего ответа на вопрос «Ваш боевой номер?», когда они притворяются штурмовиками, поэтому им приходится сделать вид, что их рация неисправна.
Есть много нюансов. Например, мое удостоверение личности университета штата является «удостоверением личности государственного образца», но оно, вероятно, не позволит мне сесть в самолет. Уровень требуемых доказательств, как правило, должен уравновешивать требования безопасности и бизнеса, то есть быть достаточно хорошим, чтобы можно было сказать: «Мы честно старались соблюсти правила», – и не растерять при этом слишком много клиентов. Многие свойства этих проверок подлинности являются общими с проверкой подлинности на компьютерах; люди, как правило, справляются с исключениями, но компьютер менее гибок, хорошо это или плохо. Точно так же требования к обширной документации должны быть сбалансированы с потребностями клиентов, которые могут посчитать ее чрезмерно навязчивой. Безопасность является одной из нескольких важных составляющих в этих расчетах.
Мы также должны регулярно подтверждать, что тот, кто обратился к нам, действительно представляет организацию, которую он якобы представляет. Ваш банк, налоговая, магазин с проблемами доставки… откуда мы знаем, что это они? Мой вам совет: возьмите разговор под свой контроль, начав новое взаимодействие с подтвержденного адреса. Другими словами, позвоните по номеру телефона, указанному на вашей карте, войдите в систему, используя закладку, чтобы связаться с подлинным банком, или иным образом убедитесь, что вы попали в нужное место. Часто бывает трудно достучаться до человека, который знает о вашей проблеме. Большинство организаций могли бы справляться с этим гораздо лучше.
Механизмы спуфинговых атак
Мы говорили о подмене файлов и процессов на компьютере, подмене между узлами в сети и подмене людей. Я хочу обратить ваше внимание на некоторые общие черты в механике, а не в жертве.
Используемые механизмы включают ложную репрезентацию, воровство, захват, путаницу в пространстве имен, использование отображений между уровнями и сбивание с толку представителей. Существует также обширный набор атак на техники аутентификации.
Ложная репрезентация – это просто утверждение другой идентичности. Я мог бы в электронном письме назваться Люком Скайуокером, но никто не примет меня за мастера-джедая только поэтому. В конце концов, у джедаев нет электронной почты. Но я при этом и не предлагаю точной информации о себе. У меня может быть учетная запись «инструктора по моделированию угроз», которая является точной, но это не указано в моем удостоверении личности. Обычно я не считаю это ложной репрезентацией. Люди должны иметь возможность называть себя так, как они хотят, если только они не делают это для того, чтобы обмануть, и правила, пытающиеся ограничить их «настоящими именами», почти всегда вызывают больше проблем, чем они того стоят.
Существуют слои, в которых может иметь место ложная репрезентация. Я могу установить отображаемое имя Билл Гейтс; возможно, я получу адрес электронной почты billg59@example.com. Я мог бы зарегистрировать домен, gatesfoundation.com или gatesfoundat1on.com, который, по мнению кого-то, представляет Фонд Гейтса (и его несуществующую лотерею).
Иногда происходит прямая ложная репрезентация: «Я нигерийский принц», в других случаях подразумевается, что подобные выводы сделает сам адресат. А еще бывает, что утверждение может быть и правдивым, и вводящим в заблуждение: существует не один Гейтс с фондом, но только один приходит на ум.
Существует также ложная репрезентация, когда текст показывает не то, что, по вашему мнению, он показывает. Например, легко узнаваемая строка Υοda не совпадает с, казалось бы, идентичной строкой Yoda. Если вы посмотрите на рис. 1.6, вы увидите следующие символы (обозначенные здесь их номерами в Юникоде). Левая строка состоит из греческой прописной буквы ипсилон (03a5), греческой строчной буквы омикрон (03Bf), кириллической строчной буквы д для языка коми (0501) и, где наша не пропадала, латинской строчной буквы a (0061). В правой строке используются латинские буквы: прописная Y (0059), строчная o (006F), строчная d (0064) и строчная a (0061). Юникод называет такие начертания «ведущими к путанице» и имеет хороший инструмент для генерации списка с «ведущими к путанице» текстами. Но на этом веселье не заканчивается.
Рис. 1.6. Подмена Йоды
Когда вы читаете это, вы читаете слева направо, но не все языки работают таким образом. Многие языки читаются справа налево, поэтому текстовым процессорам часто нужен способ обозначить изменение направления. Добавление его в общий набор путаницы (для создания ложного текста) означает, что исходный код, отображаемый редактором, может не совпадать с кодом, который анализирует компилятор. Среди способов использования этого – ранний вызов return, превращение явно исполняемого кода в комментарии и многое другое [Anderson, 2021].
Воровство
Злоумышленник может украсть и использовать как статические аутентификаторы (пароли, одноразовые URL-адреса), так и криптографические ключи.
Поддельные сайты часто используют украденный HTML-код. Даже если спуфер не обновляет свою версию вашего сайта, люди не могут не доверять: они знают, что мир интернета включает в себя почти постоянные незначительные изменения, и поэтому небольшие расхождения неотличимы от последних правок, внесенных вашей командой поддержки бренда.
Захват
Возможно, мне не понадобится ложная репрезентация, если я смогу использовать вашу учетную запись для выполнения действий, которые люди приписывают вам или на которые вы имеете право. Для этого я обхожу факторы аутентификации, защищающие вашу учетную запись, или нарушаю целостность системы, которую вы используете для входа. Я могу сделать это с помощью вредоносного ПО, инструментов управления системами или другого кода или скриптов.
Имена, сопоставления и канонизация
Конечно, «роза пахнет розой, хоть розой назови ее, хоть нет», но вы не можете позвонить флористу, заказать цветы под каким-то другим именем и ожидать, что вам привезут розы. Мы используем имена для обозначения вещей, и общность имен, которые мы с вами используем, является полезным и трудным свойством. Имена людей имеют свободную форму, не претендуют на уникальность. В компьютерах имена часто контролируются какой-либо инстанцией, целью которой является обеспечение уникальности для всех, кто принимает пространство имен. Некоторые пространства имен являются локальными; /etc/passwd ссылается на разные файлы на каждой машине. Другие, такие как IP-адрес, адрес электронной почты или доменные имена, – глобальными. Но не все адреса являются глобальными и не все системы маршрутизации будут учитывать глобальную природу адреса. Пространство IP-адресов, как правило, глобально до тех пор, пока вы не дойдете до адресов типа 10.0.0.2, но это не означает, что каждый маршрутизатор будет направлять 1.2.3.4 в одно и то же место. Если я управляю вашим маршрутизатором, я могу легко написать специальные таблицы маршрутизации, которые отправляют пакеты, адресованные этой машине, в любое место, какое захочу. Скорее всего, я отправлю их какому-нибудь прокси-серверу, который скажет вам, что это 1.2.3.4, и притворюсь вами на этой машине.
Интуитивно предполагается, что адреса электронной почты сопоставляются с человеком, но на самом деле это не так. Подумайте о noreply@bank.com или support@bank.com. Мы считаем, что доменные имена сопоставляются с IP-адресом, который сопоставляется с машиной, и все, кто обращается к www.google.com, попадают в одно и то же место. То, что мы получаем на самом деле, отличается от того, что мы ожидаем, и злоумышленники часто скрываются в этих различиях. Такое сопоставление между слоями является еще одним источником путаницы и атак. Если мы вернемся к предыдущему примеру dst.threatsbook.com в разделе «Подмена машин», мы увидим, что многие атаки происходят в точке сопоставления, но, как вы обнаружите, многое зависит от вашей точки зрения.