Немного жаргона
Жаргон описания цепочек атак довольно быстро теряет свою актуальность. Имейте это в виду – терминология быстро меняется. Например, когда эта книга была отправлена в печать, Рич Могулл, чьи работы упоминаются в разделе «Облако», объявил, что он переименовывает свою работу с «цепочек атак» на «последовательности атак».
Аббревиатура APT расшифровывается как «целенаправленная персистентная угроза» (advanced persistent threat). Термин «угроза» используется в этой фразе иначе, чем я использовал его в этой книге. Здесь угроза – это скорее сокращение от «субъект угрозы», чем обещание насилия в будущем: «Дарт Вейдер – угроза». Во-вторых, термин «APT» был чем-то вроде джедайского трюка с разумом, позволяя людям иметь в виду, но не говорить «нападающий от имени государства», то есть он подразумевал какое-то шпионское или военное агентство, которое преследуют другую страну. У этих «злоумышленников» есть дисциплина, организованность и разделение работы, чтобы настойчиво добиваться целей. В начале этой главы я упоминал взлом компании и компрометацию ее продуктов как ступень в цепочке: якобы китайцы взломали RSA, чтобы скомпрометировать токен RSA, используемый в многофакторной аутентификации, в рамках взлома Lockheed [Greenberg, 2021]. Это и есть «устойчивость». Примерно в то же время вредоносное ПО Stuxnet включало в себя четыре эксплойта нулевого дня и программное обеспечение для контроля и управления, которое перепрыгивало через воздушные зазоры, передавая ПО и сообщения на USB-накопителях. Это довольно «целенаправленное» вооружение, управление и командование. Считается, что Stuxnet создали Соединенные Штаты и Израиль [Сэнгер, 2012].
ТТП (тактики, техники, процедуры; tactics, techniques, procedures; TTP) – это тактики, техники и процедуры, которые использует злоумышленник, а ТТП злоумышленника – это те, на использовании которых данный злоумышленник был пойман защитниками, если они готовы поделиться информацией. Откровенно говоря, этим термином обычно разбрасываются не уточняя, что является тактикой, а что – техникой или процедурой. Я использовал шаг и стадию, чтобы описать наборы тактик. Если вам интересно, ATT&CK – хорошее руководство по тому, что такое тактика, техника или процедура.
«Бум!» (Boom!) – это момент, когда взрывается бомба. Приравнивается ли это к запуску эксплойта в контексте компьютера? Когда он управляет персистентностью? Когда он получает команду от своего контроллера? Что такое «бум!» в фишинговой атаке? Когда пользователь вводит свои учетные данные на поддельном веб-сайте, когда злоумышленник возвращается, чтобы использовать их, или когда он переводит деньги из банка? Я не знаю, и, как правило, те, кто говорит «бум!», тоже не знают. Вам следует избегать использования этого выражения.
Радиус поражения – это объекты, на которые влияет атака. Атака на один компьютер имеет в радиусе поражения только этот компьютер; атака на службу каталогов или систему сборки имеет радиус поражения всего операционного домена. Проектирование с изоляцией систем уменьшает радиус поражения атаки, в то время как административные и эксплуатационные потребности, как правило, подвергают большее количество систем возможному повреждению.
Защита
Есть такая поговорка: «Нападающему должно повезти только один раз, а обороняющемуся должно везти все время». Необходимость многократного движения по цепочке является сильным контраргументом против этой идеи.
Это движение по цепочке вдохновило команду Lockheed. Одна из их основных идей заключалась в том, что, если вы обнаружили установленное вредоносное ПО, оно каким-то образом туда попало. Если вы пропустили шаги, которые привели к этому, вы можете вернуться и найти их, а также вы можете найти действия, предпринятые с момента установки. Методы и процедуры, которые использует продвинутый злоумышленник, как правило, довольно похожи от атаки к атаке, поэтому, если вы найдете одну часть цепочки и сравните ее с базой данных ТТП, вы можете найти, что еще поискать.
Использование цепочки атак для упреждающего информирования защиты – отличный способ организовать свое мышление. Целью обороны является противодействие угрозе. Надежные средства защиты, способные противостоять многим угрозам, лучше, чем альтернативы. Средства защиты, направленные на выявление узких мест, более эффективны, чем те, которые выявляют редкие или малоизвестные угрозы.
Использование цепочки атак для информирования защиты также имеет удивительно много нюансов. Выражение «Цепь прочна настолько, насколько прочно ее самое слабое звено» здесь неприменимо. Защита, которая эффективна против конкретного атакующего, остановит этого атакующего. Точнее, не даст ему пройти какое-то звено в цепи. Она защищает вашу систему только в том случае, если защиту нельзя легко обойти. У вас может быть слабое звено – например, у ваших сотрудников есть профили в социальных сетях, – но это не мешает вам развернуть сильную защиту на более поздних этапах цепочки.
Примером защиты, которую можно легко обойти, является требование регулярной смены паролей. Люди используют небольшое количество хорошо понятных стратегий, таких как добавление 1, и поэтому третье изменение приводит к RememberAlderaan111. В противоположность этому, такую защиту, как требование интернета вещей, чтобы двоичные файлы были подписаны для запуска, трудно обойти. Злоумышленник может использовать все, что захочет, но для запуска двоичного файла требуется подпись из App Store. У них могут быть обходные пути; тем не менее слабое звено в цепочке – плохо закодированный двоичный файл – не означает, что вся цепочка такая же слабая.
Использование цепочки атак для информирования защиты усложняется, потому что существует множество аспектов защиты системы. Средства защиты, которые занимают важное место в нашем сознании (управление исправлениями, управление идентификацией и доступом), часто обращаются к отдельным этапам одной цепочки. Чтобы сделать кривую обучения более крутой, многие часто упоминаемые сегменты рынка вообще не очень хорошо сочетаются друг с другом. Например, управление информационной безопасностью и событиями безопасности (SIEM) предназначено для сбора и анализа журналов. Если это так, то это становится полезным для расследования целых цепочек событий.
Когда вы начинаете думать о цепочке атак, вы часто думаете о системе более крупными частями, чем при применении STRIDE. Возможно, вы работаете с деталями, созданными другими. В обоих случаях защита различна. Существуют защитные технологии, такие как брандмауэр или система обеспечения целостности файлов. Существуют оборонительные операции, такие как обнаружение вторжений или реагирование на них. Нужные цели часто достигаются с помощью дополнительных технологических продуктов (или услуг), а не путем улучшения системы.
Мы можем представить себе защиту как достижение пяти основных целей: идентификация того, что мы хотим защитить, защита, обнаружение атак, реагирование на атаку и исправление вещей до приемлемого или улучшенного состояния. (Цели заимствованы из NIST Cybersecurity Framework.) Кроме того, необходимо убедиться, что ваша защита надежна и хорошо управляема.
Для каждого шага цепочки атак мы можем думать о различных ответах (в оригинальной статье о цепочке кибератак также была использована защитная модель обмана, разрушения, отрицания, уничтожения [deceive, disrupt, deny, destroy] и других слов, начинающихся с буквы D. Но она не прижилась). Тем не менее важнейшими средствами обороны являются предотвращение и обнаружение, особенно обнаружение успешных атак. Фильтр успеха гораздо полезнее, когда есть много неудачных атак. Кого волнуют многочисленные сканеры, пытающиеся войти в ваш VPN-сервис для выхода в интернет, если им это не удастся? Если копнуть поглубже, я обычно надеюсь, что атака необычна и заслуживает внимания.
Цель этой книги – дать глубокое представление об угрозах и обзор средств защиты. Если рассматривать их как стороны одной медали, то было бы логично потратить примерно одинаковые усилия на каждую из них. Однако отношение здесь не один к одному. Они не являются сторонами одной медали, и метафоры, скорее всего, уведут вас по ложному пути.
Существует четыре типа кода, который необходимо защитить. Во-первых, код, который мы запускаем; во-вторых, код, который мы пишем; в-третьих, код, который мы включаем в другой код; и, в-четвертых, конвейеры, которые их объединяют. Код, который мы запускаем, включает в себя продукты, которые мы получаем из других источников. Код, который мы запускаем, также включает в себя код, который мы пишем, и у нас есть больше гибкости в том, как его обезопасить. Мы можем предоставить этот код другим лицам, которые могут извлечь выгоду из нашей работы по обеспечению безопасности. Люди, создавшие код, который мы включаем, могли это сделать, а могли и не сделать, и мы можем захотеть оценить их работу по мере включения их кода. Наконец, мы можем беспокоиться о безопасности систем, которые создают наши системы: конвейеры, которые объединяют предыдущие три набора в развертываемые пакеты. Эти четыре отдельных сценария требуют четырех отдельных подходов к борьбе с каждой угрозой, как показано в таблице 9.1.
Многие традиционные продукты безопасности пытались прикрутить защиту к коду, который мы запускаем, и этот подход должен преодолеть множество проблем. (Отчасти именно поэтому безопасность часто оказывается дорогой, медленной или неэффективной.)
Таблица 9.1. Четыре защитных сценария
В каждом из этих сценариев мы можем быть обеспокоены желаемыми качествами и свойствами безопасности или защитами, которые создаются, и мы можем быть обеспокоены нашей уверенностью в том, что все построено хорошо. Все важно, и у всего есть разные свойства. Например, у нас может быть брандмауэр, который обещает остановить все вредоносные программы. Как бы тщательно это ни было реализовано, я скептически отношусь к подобному заявлению и потребовал бы веских доказательств. В другом случае у нас может быть инструмент защиты от вредоносных программ, и я могу скептически отнестись к качеству его анализаторов.