Чёрные списки: Киберзащита в эру продвинутых устойчивых угроз
В связи с обилием сообщений о кражах баз данных в торговых компаниях, о промышленном шпионаже с помощью продвинутых устойчивых угроз, о взятии в «заложники» вредоносными программами-вымогателями важных данных, становится понятно, почему в сфере информационной безопасности многие начали отказываться от предупредительных мер и фокусироваться на выявлении угроз и своевременной реакции на чрезвычайные ситуации.
В основе большинства современных систем защиты лежат «чёрные списки». Однако анализирующие сигнатуры антивирусы и репутационные списки IP-адресов доказывают своим примером, что технологии на базе чёрных списков уже малоэффективны. Ведь атакующим ничего не стоит сменить IP или собрать новый исполняемый файл. Тем не менее, многие компании продолжают расширять свои сети, безопасность которых полностью зависит от чёрных списков. И перенос усилий в область определения угроз и своевременного реагирования не поможет улучшить ситуацию, пока мы не научимся надёжно блокировать большинство атак. Более того, сейчас очень трудно составлять и поддерживать чёрные списки IP-адресов, ведь в связи с исчерпанием адресного пространства IPv4 один и тот же адрес могут использовать десятки разных доменов через сети доставки контента (CDN).
Ярким примером вируса, наносящего большие убытки, стал CryptoLocker. Обычно он распространяется через фишинговые электронные письма с заархивированным исполняемым файлом. При его запуске приложение устанавливает себя в папку Application Data текущего пользовательского профиля Windows. Затем троян обращается к удалённому управляющему серверу, запрашивает криптоключ и шифрует все данные на компьютере, до которых может добраться. После этого начинается вымогание денег за предоставление ключа расшифровки. Если жертва не хочет или не может заплатить, то приходится восстанавливать данные из бэкапа. Авторы вируса позаботились об инструментарии для быстрого генерирования новых версий исполняемого файла, что делает неэффективными все системы обнаружения на базе сигнатур. А генерирование новой зловредной полезной нагрузки почти ничего не стоит.
Эффективным способом борьбы с CryptoLocker является использование белого списка приложений на пользовательском компьютере. Если приложение не является доверенным, то его исполнение не должно допускаться. К сожалению, большинство реализаций получаются слишком неудобными и тяжёлыми, из-за чего этот подход не обрёл большой популярности. С одной стороны, все корпоративные и серверные версии Windows имеют политику ограниченного использования программ (Software Restriction Policies) или AppLocker, так что дополнительными расходами на ПО для компании можно пренебречь. Однако нужно потратить время и силы на внедрение механизма белых списков. Зато затраты на его поддержку не превышают затрат на восстановление после «заражения». И важнее всего то, что белые списки многократно снижают риск нарушения системы безопасности.
Со времён Tripwire технология белых списков заметно эволюционировала. Например, для определения изменений используются статические хэши. Новые решения, наподобие AppLocker, для создания более гибких правил могут использовать сигнатуры, хэши файлов и контроль путей размещения (path rules). К примеру, с помощью сигнатуры можно занести в белый список какое-нибудь приложение начиная с определённой версии, и все остальные релизы будут наследовать прописанные политики.
Хотя контроль путей размещения технически не столь эффективен, как контроль хэшей или издателей, но всё же он существенно затрудняет работу атакующих, потому что белый список нельзя редактировать из-под неадминистраторских аккаунтов. Атакующий не может просто обмануть пользователя, выдав свой вирус за «хорошее» приложение, ему придётся использовать уязвимости в передаче привилегий, что затрудняет достижение цели. Кроме того, контроль издателей и путей размещения может помочь службе поддержки на выходных разобраться со всеми внеурочными приложениями без занесения их в политики белых списков. И как только клиентские машины войдут в корпоративную сеть, VPN позволит им обновить политики для новых приложений, подготовленных для удалённых пользователей.
Стоимость заражения
Рассмотрим затраты на восстановление после заражения каким-нибудь простым вирусом. В большинстве компаний справедливо полагают, что однажды заражённый компьютер больше не может считаться доверенным, и его систему нужно переустановить из образа. К примеру, для создания образов можно использовать System Center Configuration Manager. На копирование данных с заражённого компьютера, их проверку на чистоту, накатку системы из образа, заливку данных обратно на компьютер и проведение финальных проверок у технического специалиста уходит не менее двух часов. Даже если пользователю на это время предоставляется резервный ноутбук, теряется какое-то время на замену. А когда ему возвращают восстановленную машину, то возникают временные потери на приведение системы к привычному для пользователя состоянию. Допустим, час работы технаря стоит $25, а пользователя — $50; тогда общая стоимость восстановления составит около $150, не считая расходов на работу инфраструктуры по восстановлению из образов, и ликвидации прочего возможного урона. Время простоя можно сократить, если предоставить пользователю резервный ноутбук, но в любом случае будет наблюдаться потеря производительности из-за процедуры замены, переноса файлов и данных, а также установки на ноутбук необходимого ПО.
Сравнительная таблица стоимости восстановления в компании с 800 сотрудниками:
Тип затрат | Без белых списков | С белыми списками |
---|---|---|
Количество восстановлений из образов и количество правил | Еженедельно нужно восстанавливать 1-2 компьютера | Еженедельно нужно исследовать 2-3 новых приложения и создавать для них правила |
Стоимость одного инцидента | $50 на восстановление компьютера | $50 за час работы сисадмина |
Потери производительности | $50 на ожидание пользователем резервного компьютера | $25 на ожидание пользователем внесения приложения в белый список |
Ежегодные затраты | $5 200–10 400, не считая более высокого риска серьёзного нарушения системы безопасности | $5 200–6 800 |
Затраты существенно возрастают, если вирусу удаётся добраться до важных данных. Компьютерно-техническая экспертиза может стоить сотни долларов в час. Если скомпрометирована целая сеть, что часто случается при масштабных атаках, то заслуживающая доверия экспертиза может превысить $100 000. В 2014 году средняя стоимость одной утечки данных составила около $3,5 млн. Это ночной кошмар каждого руководителя компании.
Стоимость белых списков
Здесь основные расходы зависят от времени, которое уходит у сисадминов на занесение приложений в белые списки. По статистике, на одно приложение уходит менее получаса. Если в это время пользователь вынужден ждать, то стоимость работ удваивается. Но даже в этом случае получается вдвое дешевле по сравнению с самым простым восстановлением после заражения. Добавьте к этому ещё многократное снижение риска утечки данных, что можно считать окупанием затрат на использование белых списков.
Представленные в таблице данные по ежегодной стоимости получены на основании статистики инцидентов, происходивших в компании, где работают Аарон Бёринг и Кайл Салус, до и после внедрения белых списков. В условиях той IT-среды стоимость поддержки белых списков не превышает расходы на восстановление после заражений, а риски значительно ниже.
Также обратите внимание, что все расчёты были сделаны на основании принятых рабочих процессов и уровня оплаты труда в той компании. Возможно, в условиях вашей организации стоимость поддержки белых списков окажется гораздо меньше затрат на восстановление. Кроме того, ничто не мешает применять белые списки только на наиболее ответственных участках, при работе с наиболее важными данными. Но самое главное заключается не в сравнении затрат, а в факте снижения рисков. Именно это является главным преимуществом белых списков, ведь стоимость их поддержки не сравнима с возможными потерями при утечке важных данных, в том числе репутационными.
Внедрение белых списков
Для редко обновляемых систем, вроде киосков или терминалов в торговых точках, можно применять ограниченную политику AppLocker на базе «золотого» образа. Она позволяет выполнять только те приложения, которые имеются в этом образе. В более динамичных системах можно комбинировать стандартные правила и ограничение администраторских привилегий, с разрешением запуска только из тех папок, которые могут наполняться лишь администраторами. Увеличить гибкость правил можно с помощью контроля издателей, то есть запускать лишь приложения, подписанные доверенными вендорами. Это, конечно, не панацея, в этой системе есть свои уязвимости. Например, языки сценариев или эксплойты в ПО. Всем этим возможным путям проникновения нужно будет уделить отдельное внимание.
Согласно лучшим методикам обеспечения информационной безопасности, конечные пользователи не должны быть администраторами, и даже не должны обладать администраторскими правами на своём собственном компьютере. Вирусы зачастую используют для заражения хорошо продуманные подходы из социальной инженерии. К типичным уловкам относятся попытки убедить пользователя кликнуть по ссылке, открыть документ или напрямую установить приложение. Не существует способов однозначно удержать пользователя от попадания в подобные ловушки. Это означает, что ради защиты компьютеров и сетей необходимо проверять и подтверждать уровень доверенности любого исполняемого кода. Причём делать это должны те, кто может подтвердить легитимность каждого приложения. Похоже, такая идея пугает многих участников индустрии информационной безопасности, но всё же это наиболее эффективный способ защиты на сегодняшний день. Идея вовсе не революционная, она подразумевает лишь принудительное использование политик и процедур, которые мы, специалисты по IT-безопасности, уже создали.
Конечным пользователям предоставляются компьютеры, на которых установлены одобренные приложения соответствующих версий, чья функциональность и совместимость была протестирована. Использование белых списков подразумевает необходимость идентификации программ и предоставления явного разрешения на их запуск. Каждое новое приложение должно быть сначала внесено в белый список, а потом уже развёрнуто на машине или в сетевом рабочем окружении.
С помощью VPN можно быстро развёртывать белые списки как локально, так и удалённо. По умолчанию можно запускать любые приложения, установленные в папках Program Files или Windows. Контроль издателей позволяет устанавливать и выполнять любой код, подписанный доверенным вендором. Это уменьшает объём работ по поддержке белых списков, когда требуется создавать правила лишь для неподписанных приложений. При правильной настройке у пользователей нет администраторских прав, они не могут менять содержимое папок Program Files и Windows, а также не могут устанавливать приложения. На каждой машине можно настроить отдельный админский аккаунт с уникальным паролем, из-под которого можно удалённо устанавливать ПО с помощью службы поддержки.
Белые списки позволяют блокировать общие векторы заражения и общие методы сохранения состояния (common persistence techniques). Если атакующие не могут полагаться на свои дропперы, то для удалённого исполнения кода им придётся делать ставку на программные эксплойты. Это обычно даёт злоумышленникам удалённый доступ, который, однако, будет утрачен при перезагрузке системы или прерывании соответствующего процесса. Устойчивость атаки обычно обеспечивается с помощью установки бэкдора. Чаще всего он помещается в пользовательскую папку AppData, потому что это не требует администраторских прав. Но если белый список запрещает исполнение из любых мест, кроме Program Files и Windows, то бэкдор не сможет запуститься. Тогда атакующему придётся искать пути расширения привилегий.
Многие вирусы используют эксплойты для известных уязвимостей, заражая пользовательские машины во время посещения инфицированных сайтов. Защититься от этого вектора атак обычно можно с помощью регулярного патчинга часто используемого ПО. Если у атакующего нет возможности использовать известные эксплойты, то приходится разрабатывать собственные атаки нулевого дня. Это нетривиальная задача, насколько можно судить по уровню наград в программах Bug Bounties и цен на чёрном рынке. Надёжная атака нулевого дня может стоить более $100 000. При этом атакующему нужно использовать её с умом, чтобы об уязвимости не стало известно и её не закрыли патчем. К тому же применять такую атаку нужно в том случае, когда потенциальная выгода может окупить затраты на приобретение, иначе теряется весь смысл.
С помощью ряда мер разработчики ПО могут существенно усложнять злоумышленникам задачу разработки эксплойтов. Например, используя методики «закалки» памяти (memory hardening techniques), таких как DEP (предотвращение выполнения данных), ASLR (рандомизация адресного пространства) и SEHOP (структурная обработка исключений). Чтобы узнать, использовались ли эти технологии при компилировании исполняемых файлов используемых вами приложений, можете воспользоваться утилитой BinScope или скриптами PowerShell. Если подобные методики защиты не использовались, то с помощью набора средств EMET (Enhanced Mitigation Experience Toolkit) можно применять защиту принудительно. Согласно исследованиям, обойти её всё же можно, но это потребует больше времени и усилий.
Если в вашей компании используется SIEM (система управления информацией о безопасности), то вы знаете, что в большой и оживлённой сети всегда много шумов. SIEM собирают логи активности всех основных участников сети и конечных пользователей, нормализуют их, проводят корреляцию событий на основании нескольких источников информации, и предупреждают о возникновении подозрительной активности. Если все эти этапы используются для предотвращения атак низкого и среднего уровня, то систему SIEM можно настроить на поиск достаточно сложных событий, свидетельствующих о попытках обхода EMET, AppLocker или файрвола, с выдачей соответствующих предупреждений. Даже если такие атаки увенчаются успехом и злоумышленники проникнут в вашу систему, их будет легче обнаружить и обезвредить.
Конечно, белые списки не решат всех проблем в сфере безопасности. Всё-равно остаётся вероятность, что кто-то сможет проникнуть в вашу сеть через непропатченный эксплойт или атаку нулевого дня. Но даже в этом случае белые списки уменьшают устойчивость средств проникновения. К тому же злоумышленникам будет куда труднее получить доступ к привилегированным системам. То есть вы настолько затрудняете процесс взлома и присутствия в вашей сети, что менее продвинутые хакеры предпочтут выбрать более лёгкие цели.
Для встроенных языков сценариев, таких как язык командного файла, VBScript и PowerShell, AppLocker выполняет адресные скрипты, которые можно использовать для предотвращения установки и запуска интерпретатора. В любой технологии белых списков есть множество нюансов, которые необходимо учитывать. Например, макросы в документах Microsoft Office, JavaScript в PDF и веб-браузерах. Но в любом случае, сами по себе белые списки исполняемых файлов и динамически подключаемых библиотек заблокируют почти все массовые вирусы и большинство из продвинутых устойчивых угроз. К примеру, в одном из отчётов Mandiant описывалось фишинговое электронное письмо, залинкованное на ZIP-архив с исполняемым файлом, имеющим иконку PDF. Norton Antivirus его не обнаружил, а белый список предотвратил бы исполнение.
Если вы сможете ограничить круг тех, кто может пробить вашу систему безопасности, высококвалифицированными одиночками и организациями, обладающими достаточными ресурсами для разработки успешной атаки с обходом белых списков и блокировок эксплойтов, то тем самым вы значительно уменьшите свои риски и увеличите шансы обнаружения атак. Вам больше не придётся беспокоиться о тех, кто просто купил вирусы на чёрном рынке и рассылает фишинговые письма. Зато освободившиеся ресурсы можно будет направить на обнаружение активности более хитроумных злоумышленников.