Безопасность операционной системы – один из приоритетов Microsoft. Разработчики очередного поколения Windows активно отреагировали на наиболее актуальные угрозы для Windows-платформы, реализовав множество защитных технологий, ранее доступных лишь в сторонних решениях. Система стала защищеннее, труд киберпреступников – тяжелее.
Тем не менее, средств самой операционной системы в ряде случаев недостаточно – разработчикам приходится идти на компромиссы во многих аспектах, что негативно влияет на защищенность системы и оставляет необходимость использования внешних инструментов информационной безопасности.
Windows в силу своей распространенности была и остается излюбленной мишенью киберпреступников всех мастей, и каждую новую версию тщательно исследуют тысячи «черных шляп», пытающихся изыскать новые возможности заработать. Исследуют ее и «белые шляпы», для которых Windows – основное поле боя с их криминальными визави. Естественно, и «Лаборатория Касперского» в обязательном порядке досконально разбирает все изменения в системе безопасности, вводимые Microsoft, с тем, чтобы обеспечить своим пользователям максимальную защиту от киберугроз.
Наш обзор включает три части, которые посвящены наиболее заметным нововведениям в Windows 10, влияющим на безопасность. Это браузер Microsoft Edge, технология безопасности на основе виртуализации и обновленный Защитник Windows – встроенное антивирусное решение. Все они привнесли в систему безопасности Windows новые возможности, но, увы, не лишены некоторого количества слабых мест. В этой статье мы на примерах рассмотрим, как работают защитные технологии Windows 10, и как их можно дополнить, усилив безопасность системы с помощью сторонних решений.
Microsoft Edge
Новейший браузер Microsoft Edge призван заменить Internet Explorer и включен в состав Windows 10 в качестве браузера по умолчанию. Компания провела большую работу и реализовала множество нововведений, в том числе, касающихся безопасности.
Против межсайтовых атак в Edge появились технологии Content Security Policy и HTTP Strict Transport Security. Они призваны не только снизить вероятность успешной атаки, но и оповестить о такой попытке владельца веб-сервиса.
Также в Microsoft продумали защиту Edge от эксплойтов, от атак которых так страдал Internet Explorer. Теперь, благодаря использованию контейнеров и вынесению операции по обработке контента в разные процессы, стало гораздо труднее эксплуатировать уязвимости. Наконец, предотвращать переходы на сайты с вредоносным контентом призвана интеграция со SmartScreen.
Помимо поддержки новых технологий, защищенность Edge усилена отказом от уязвимых старых технологий. Больше не поддерживаются VML, BHO, ActiveX, на использовании которых основана масса рекламных приложений и вредоносных дополнений к браузеру.
Однако защищенность браузера определяется его способностью отражать реальные атаки. Большинство вредоносных программ, ориентированных на кражу денег через интернет-банкинг, успешно работают с такими браузерами как Internet Explorer, Chrome, Firefox, Opera. Это и старый, но до сих пор используемый вирусописателями Zeus (Zbot), и нашумевшая Dyreza (Dyre), и пиринговый бот Cridex (Dridex).
Функциональность типичного банкера сводится к реализации атаки MiTB (Man-in-The-Browser). Большинство банкеров реализуют ее путем внедрения своего кода в процесс браузера и перехвата функций сетевого взаимодействия. Однако данные функции у разных браузеров реализованы по-разному, что вынуждает от вирусописателей постоянно модифицировать и обновлять вредоносное ПО для корректной работы во всех возможных браузерах и их версиях.
В ноябре 2015 года появилась новость, что троянец Dyreza получил функциональность, позволяющую атаковать Microsoft Edge. Однако активность этого ботнета вскоре упала до нуля – прекратился выпуск обновлений, а сервера управления и контроля были выключены.
Другой известный банкер, Kronos, освоил Edge в 2016 году. Мы проверили его возможности на виртуальной машине с Windows 10. В коде новой версии Kronos мы нашли функцию проверки имени процесса и контрольной суммы, а также хэши перехватываемых функций.
Функция определения браузера по контрольной сумме имени его процесса
Kronos проверяет имя процесса, переводя строку в нижний регистр, считает контрольную сумму, и возводит ее в квадрат. Получившийся хэш проверяется по таблице, если он там будет найден, троянец попытается перехватить в процессе необходимые ему функции.
Известные троянцу имена процессов браузеров:
Имя процесса | Контрольная сумма |
iexplore.exe | 0x64302d39 |
chrome.exe | 0x05d66cc4 |
firefox.exe | 0x39ace100 |
opera.exe | 0x9420a4a1 |
microsoftedge.exe | 0x9b6d5990 |
microsoftedgecp.exe | 0x949b93d9 |
Для выполнения вредоносных действий, несущих прибыль его хозяевам, Kronos перехватывает процессы формирования и отправки HTTP-запросов в библиотеке Wininet.
Список перехватываемых функций wininet.dll:
API функция | Хэш |
HttpOpenRequestA | Y7D4D7E3T2T2A4U3 |
HttpQueryInfoA | C8C0U1A2G4G5Y2B5 |
HttpSendRequestA | Y4U1P2F2G7T2A4U3 |
InternetCloseHandle | A7S3H3X3D5Y7T7F7 |
InternetConnectA | H0S6D5Q7E8P3P6U5 |
InternetCrackUrlA | E6F2A3S8Y4C7D5A5 |
InternetOpenA | B7P8P7T4E3U2H5A5 |
InternetQueryOptionA | C1Y0B7E2B0P2P3T7 |
InternetReadFile | D6X2S6E3Q3C5B5X2 |
InternetSetOptionA | X3Y6Q2T7Q5Q2A5X6 |
Kronos перехватывает функции методом сплайсинга, устанавливая инструкцию безусловного перехода JMP в начало кода. Вредоносный код, внедренный в браузер, загружается не как библиотека, а как шел-код, поэтому его запуску не мешает установленная на браузер Mitigation Policy.
Перехват функции InternetReadFile в MicrosoftEdgeCP.exe
Обработчик перехваченной функции
Успешный перехват этих функций позволяет троянцу выполнять внедрение данных в веб-страницы. Так же Kronos получает информацию о пользователе, его логин и пароль, баланс его банковского счета, перенаправляет пользователя на фишинговые сайты, добавляет на легитимную страницу банка дополнительные поля ввода данных (что позволяет ему выяснить ответ на секретный вопрос, номер банковской карты, дату рождения жертвы, или номер телефона).
Пример веб-инжекта на странице банка
Отметим, что Kronos умеет атаковать Edge лишь на 32-битной версии Windows 10. Однако это не является каким-то фундаментальным ограничением, есть уже банкеры, работающие и с 64-битным Edge.
В начале года появилась новая модификация известного банкера Gozi, рассчитанная, помимо прочего, и на проведение MiTB-атаки на Edge под 64-битной Windows 10. Троянец внедряет свой код в процесс RuntimeBroker.exe, от его имени запускает браузер и внедряется в процессы самого браузера.
Часть функции проверки имен процессов для внедрения
Внедренный код перехватывает функции формирования и отправки HTTP-запросов, как и в случае Kronos. Но для этого применяется уже не сплайсинг, а подмена указателей IAT, а также подмена адресов функций в таблице экспорта (Export Table).
Часть функции проверки имени процесса для установки соответствующих каждому браузеру перехватов
Перехват HttpSendRequestW банкером Gozi в браузере MS Edge
Отметим, что Защитник Windows успешно блокирует текущие версии Kronos и Gozi. Тем не менее, следует ожидать появления новых зловредов и рекламных приложений, способных использовать Edge в своих целях.
Защита на основе виртуализации
В корпоративной версии Windows 10 Microsoft реализовала новый подход к безопасности, основанный на технологии аппаратной виртуализации, Microsoft Hyper-V. Новая парадигма, названная Virtualization Based Security (VBS), основана на механизме списков разрешенных, когда на компьютере допускается запуск лишь приложений из списка доверенных, и на изоляции наиболее важных сервисов и данных от других компонентов операционной системы.
VBS зависит от платформы и функций центрального процессора, поэтому этой технологии для функционирования необходимы:
- Windows 10 Enterprise.
- Прошивка UEFI v2.3.1+ с поддержкой Secure Boot.
- Центральный процессор с поддержкой функций виртуализации Intel VT-x/AMD-V.
- 64-битная архитектура.
- Наличие в процессоре механизма Second Level Address Translation (SLAT).
- Intel VT-d/AMD-Vi IOMMU (опционально).
- Возможность блокировки некоторых функций прошивки UEFI и безопасное её обновление.
- TPM (опционально).
В качестве платформы виртуализации Microsoft использует гипервизор Hyper-V. Чем меньше гипервизор содержит кода, тем меньше существует векторов атаки на него, в этом аспекте компактность Hyper-V очень выгодна. В отличие от предыдущих версий Windows, гипервизор стартует не как драйвер режима ядра, а в UEFI, на ранней стадии загрузки компьютера.
Процедура инициализации Hyper-V
В VBS при активном гипервизоре каждому виртуальному процессору присваивается атрибут Virtual Trust Level (VTL). На данный момент их используется два: VTL 1 («защищенный мир») и VTL 0 («нормальный мир»). VTL 1 более привилегирован, нежели VTL 0.
Защищенный режим ядра (Secure Kernel Mode или SKM, Ring 0, VTL 1) включает в себя минимальное ядро (SK), модуль проверки целостности кода (Code Integrity или CI) и модуль шифрования. Изолированный пользовательский режим (Isolated User Mode или IUM, Ring 3, VTL 1) включает несколько изолированных сервисов, называемых Trustlets, причем изолированы они не только от внешнего мира, но и друг от друга. В «обычном мире» (VTL 0) работает традиционное ядро, драйверы режима ядра, процессы и сервисы, работающие по прежним правилам.
Схематичное описание двух миров
При активном гипервизоре физические страницы оперативной памяти и их атрибуты контролирует только защищенное изолированное ядро (SK). Оно может манипулировать атрибутами страниц, запрещая или разрешая чтение, запись, исполнение кода на определенной странице. Это позволяет предотвратить запуск недоверенного кода, вредоносную модификацию кода доверенных приложений, помешать утечке защищаемых данных.
В такой архитектуре единственным компонентом, контролирующим исполнение любого кода в системе, является защищенный изолированный модуль проверки подлинности кода (CI). Ядро из «нормального мира» не может выставлять атрибуты физической странице режима ядра.
Credential Guard
Одним из основных функциональных блоков VBS является Credential Guard, изолирующий секреты таким образом, чтобы доступ к ним имел исключительно доверенный код. Это позволяет противостоять атакам прямого доступа к памяти (DMA), и атакам типов pass-the-hash и pass-the-ticket.
System Information. Credential Guard и HVCI
Мы протестировали технологию, попытавшись получить секретные данные с помощью прямого доступа к памяти. Для этого мы использовали хакерские инструменты Mimikatz и Inception. Ничего не получилось. Credential Guard оказалась им не по зубам.
DMA атака с использованием инструмента Inception
Device Guard
Входящая в VBS технология Device Guard является наследником Microsoft AppLocker. Контролирует запуск и исполнение любого кода: исполняемые файлы и динамические библиотеки, драйверы режима ядра, скрипты (например, PowerShell). Для этого используется подготовленная системным администратором политика целостности кода, определяющая, какое программное обеспечение считается доверенным.
Основная сложность использования Device Guard состоит в корректном составлении политики, что может вызвать трудности даже у опытного системного администратора. В идеальном случае эта процедура выглядит так:
- Включить необходимые механизмы Windows 10 VBS на отдельном тестовом компьютере.
- Подготовить эталонный образ ОС Windows.
- Установить все необходимое ПО.
- Создать политику целостности кода по определенным правилам и оставить ее на какое-то время в режиме аудита. В течение этого времени можно будет добавить или изменить ПО.
- Просмотреть журнал событий на предмет событий от CI.
- Произвести доработки политики, например, такие как подпись неподписанного ПО.
- Объединить первоначальную политику с версией, которая будет создана за время работы в режиме аудита.
- Выключить в политике целостности кода режим аудита, переключив ее в режим запрещения.
- Распространить подготовленную политику по конечным пользователям.
Политика целостности кода определяет условия запуска кода как в пользовательском режиме (User Mode Code Integrity или UMCI), так в режиме ядра (Kernel Mode Code Integrity или KMCI). Безопасная загрузка собственно ядра ОС Windows обеспечивается технологией Secure Boot. Политику целостности необходимо поддерживать и обновлять в зависимости от требований, предъявляемых к ПО конкретной организации.
Помимо политики целостности, на запуск кода накладываются и другие ограничения. Так, страница физической памяти получает атрибут «исполнение» только в случае прохождения проверки подлинности по сертификату. Кроме того, страница режима ядра не может одновременно иметь атрибуты «запись» и «исполнение» (ограничение W^X), это не позволяет работать большинству эксплойтов и перехватам в режиме ядра. При попытке изменить содержимое страницы режима ядра с атрибутами «чтение» и «исполнение» возникнет исключение. Если его не обработать, Windows остановится и отобразит BSOD.
В результате, при активном гипервизоре и при всех активных опциях безопасности, таких как Secure Boot, TPM, IOMMU, SLAT, невозможно запустить неподписанные драйверы, приложения, динамические библиотеки, некоторые виды скриптов и модули UEFI. В зависимости от настроек политики можно не дать запуститься и подписанному, но недоверенному коду.
Чтобы защитить политику от несанкционированных изменений или подмены Microsoft предлагает подписывать ее сертификатом, который администратор должен сгенерировать самостоятельно. Чтобы удалить политику или изменить настройки, потребуется другая политика, подписанная тем же сертификатом. Если попытаться удалить политику или «подсунуть» системе неподписанную политику, операционная система не загрузится.
И все же абсолютно безупречным Device Guard назвать нельзя. За повышенную защиту приходится платить деградацией производительности, что неизбежно ввиду присутствия гипервизора. Слабым местом технологии видится чрезвычайно запутанный процесс создания, настройки и поддержки политики целостности кода. Необходимые опции разбросаны по разным местам операционной системы, какой-то общей панели управления не имеют, ввиду чего легко допустить ошибку и тем самым ослабить защиту.
Так как Secure Boot в этой технологии играет ключевую роль, уровень защиты крайне зависим от качества кода UEFI, который пишет третья сторона, Microsoft не контролируемая. Наконец, удручает отсутствие защиты от эксплойтов в пользовательском режиме.
Тестируем VBS
Если посредством какой-либо уязвимости на компьютер с VBS проникнет вредоносный код, ему потребуется повысить привилегии до режима ядра, чтобы атаковать гипервизор, «защищенный мир» или UEFI. Мы попытались проделать подобное при помощи подписанного и доверенного драйвера режима ядра.
Результаты тестирования на проникновение из режима ядра:
Test | Result | Test | Result |
W+X PE section .INIT | + (by design) | Allocate NP/P MEM, hack PTE manually | + (BSOD) |
W^X PE section .INIT | + (as is) | R+X section, remove WP in CR0 | + (BSOD) |
W+X PE section | + (no start) | Stack code execution | + (BSOD) |
Allocate MEM, execute | + (BSOD) | Allocate MEM, hack MDL manually | + (BSOD) |
R PE section, write, execute | + (BSOD) |
Ни один из испробованных нами способов атаки не сработал. Также не вышло атаковать посредством изменения управляющих (Control Registers, CR0-CR8, EFER и т.д.) и моделезависимых регистров (Model-Specific Registers или MSR) – дело неизменно заканчивалось исключением Privileged Instruction (0xC0000096).
Также мы провели ряд тестов в пользовательском режиме, попытавшись обойти политику целостности кода в режиме запрета. Задачей было запустить неподписанное приложение или загрузить неподписанную динамическую библиотеку в доверенный процесс. Напрямую это не получилось, но в предварительном релизе Windows 10 (10154) нам удалось обнаружить любопытную ошибку.
Суть ошибки заключается в том, что, хотя Device Guard и проверяет наличие подписи у приложения, драйвера или библиотеки, проверка того, является ли подпись валидной для подписанного ею приложения, не производится. Это позволяет вырезать действительную подпись из любого доверенного приложения и вставить её в любое недоверенное – система начнет считать его доверенным. Таким образом, подставив подпись от другого приложения, мы смогли запустить недоверенное приложение, а также загрузить недоверенную динамическую библиотеку.
Мы немедленно сообщили в Microsoft о найденной ошибке, и она была исправлена в течение нескольких дней. Windows 10 RTM (10240) ее уже не содержит.
Также мы обнаружили ошибку отказа в обслуживании, позволяющую из пользовательского пространства вызвать останов системы и BSOD гипервизора всего лишь одной ассемблерной инструкцией. Исправление попало в Windows 10 TH2 (10586).
BSOD гипервизора
В целом Microsoft проделали отличную работу, разработав новые механизмы защиты. Однако, как и в прошлых версиях, остались возможности для атаки через прошивку. Другой проблемой являются высокие требования к квалификации системного администратора. В случае неправильной настройки или утери приватного сертификата вся защита становится бесполезной. Кроме этого, нет никакой защиты от уязвимостей в пользовательском режиме. Также не стоит забывать, что VBS доступна лишь пользователям корпоративной версии Windows 10.
Обо всех найденных в процессе тестирования уязвимостях мы уведомили компанию Microsoft.
Встроенная антивирусная защита Windows
Рассмотрим также компонент Windows, обеспечивающий защиту системы от вредоносных программ в реальном времени. Он включен по умолчанию и для пользователей, пренебрегающих установкой сторонних антивирусов, является основным средством информационной безопасности в Windows.
Основная задача встроенной защиты – предотвратить установку и запуск вредоносного программного обеспечения. Она в реальном времени сканирует файлы и запущенные процессы, определяя среди них вредоносные в соответствии с регулярно обновляемой базой сигнатур. И в большинстве случаев такой защиты достаточно.
Однако, если вы активный интернет-пользователь и часто выполняете на компьютере критически важные операции – например, управляете своими банковскими счетами в интернет-банке, – вам нужна многоуровневая защита. Самый совершенный антивирус может пропустить новый, еще неизвестный зловред. И в этом случае могут спасти только дополнительные уровни защиты, которые помешают троянцу вести вредоносную деятельность в системе.
Мы провели небольшое исследование и нашли несколько примеров из реальной жизни, когда встроенной защиты может быть недостаточно.
Перехват ввода данных с клавиатуры
Ряд банкеров используют для кражи аккаунта пользователя в системе онлайн-банкинга метод перехвата ввода данных с клавиатуры. В частности, так поступают Qadars, Zbot и Cridex.. Во многих антивирусных решениях, в том числе и в Kaspersky Internet Security, имеется компонент, определяющий и блокирующий попытки перехвата программами последовательностей нажатий клавиш пользователем. В ряде случаев это может быть достаточно, чтобы не дать злоумышленникам обогатиться за счет жертвы, пусть даже удалось заразить ее компьютер.
Мы протестировали реакцию встроенной защиты на перехват нажатий клавиш с помощью тестового приложения, использующего WinAPI-функцию GetAsyncKeyState (метод, аналогичный использованию в последнем тесте от компании MRG). У нас получилось перехватить имя пользователя и пароль при входе в систему PayPal при запущенном Защитнике.
Логирование пароля при входе в личный кабинет PayPal
Несанкционированный доступ к веб-камере
В следующем тесте мы попытались получить несанкционированный доступ к веб-камере. Такая функциональность в последние годы все чаще начала появляться в троянцах и прочих хакерских инструментах. Одним из ярких примеров популярности данного функционала у злоумышленников является наличие такого модуля слежения в троянце AdWind.
Наблюдение за жертвой через ее собственную веб-камеру позволяет собрать о ней массу информации, которую можно использовать впоследствии для криминального заработка, хотя бы посредством банального шантажа видеозаписями интимного характера.
Некоторые антивирусные решения способны контролировать доступ приложений к камере. В реальной жизни практически нет ситуаций, когда легитимному приложению нужно работать с камерой без уведомления пользователя, поэтому уведомить его об этом – удобная и принятая практика. Пользователь может в каждом отдельном случае решить, действительно ли приложению нужно использовать камеру, или же это подозрительная активность, которую надо пресечь.
Наше тестовое приложение использовало публичную библиотеку OpenCV (так же, к примеру, действует троянец Rover). Простой скрипт на языке Python захватывал изображение с веб-камеры и показывал его в отдельном окне. В результате на машине с ОС Windows 10 с включенной защитой приложение свободно перехватывало видео, а пользователь не получал никаких уведомлений об этом.
Захват экрана скриптом
Контроль drive-by-загрузок
Еще одной из наиболее актуальных проблем для Windows-пользователей являются многочисленные эксплойты, позволяющие заражать систему через уязвимости в различных приложениях. Мы испытали встроенную защиту на одном из последних эксплойтов к уязвимости CVE-2016-1019 в Adobe Flash Player.
Файл эксплойта представляет собой SWF-объект, сжатый алгоритмом ZLIB.
Флэш-эксплойт
В таком виде файл определяется Защитником при копировании и помещается в карантин.
Успешное детектирование упакованного эксплойта
Однако если подвергнуть файл декомпрессии, получив исходный SWF, защита пропустит его.
Более того, сжатый файл, который успешно детектировался на диске, загружается с интернет-сайтов посредством drive-by-атаки и успешно запускается из контекста браузера. В случае если в системе установлена уязвимая версия Adobe Flash Player, возможно заражение, так как в Защитнике отсутствует компонент контроля drive-by-загрузок.
Успешная загрузка в браузере флэш-эксплойта, ранее успешно детектируемого на диске
В дополнение к вышенаписанному мы хотим добавить, что в Windows существует встроенная защита (SmartScreen), работающая на базе репутационного анализа, которая может детектировать атаки типа drive-by. Но в некоторых случаях (особенно в случае таргетированной атаки) недостаточно анализа такого типа, необходимо проводить эвристический анализ непосредственно контента. Мы использовали вышеуказанный пример, который не покрывается компонентом SmartScreen для демонстрации сценария, при котором у злоумышленников есть Flash-эксплойт с реализацией метода обхода защитных механизмов браузера Edge. При таком сценарии без контентного анализа пользователь может быть заражен. На данный момент мы не фиксировали использования Flash-эксплойтов, которые могут обходить защитные механизмы Edge.
Заключение
На сегодняшний день для обеспечения надежной защиты пользовательской системы нужен комплексный подход, который сочетает в себе как обычные детектирующие техники (сигнатурный анализ, анализ поведения и т.д.), так и дополнительные модули, которые нацелены на выявление распространенных техник атак злоумышленников.
Как показало наше небольшое исследование, в некоторых случаях встроенных в Windows 10 технологий информационной безопасности для полноценной защиты от вредоносных атак недостаточно. Как и в предыдущих версиях Windows, необходимо закрывать все возможные векторы атак с помощью специализированных защитных решений класса Internet Security.
Windows 10: что нового в системе безопасности
Daosist
Подскажите, эксперименты проводились под учётной записью «обычного» пользователя или пользователя с правами администратора?!
Упоминание в тесте статьи строка «в пользовательском режиме» … даже с пояснением (User Mode Code Integrity или UMCI)» многих может ввести в заблуждение.
botcser
Любопытно, это windows украл идею целостости у linux, или наоборот