Введение
Спросите любого эксперта, занимающегося анализом вредоносного кода под Windows, с какими системными привилегиями работает и к каким стремится вредоносное ПО? Он ответит, не задумываясь, – права Администратора. Существуют ли исследования, способные это подтвердить? К сожалению, мне не удалось найти какой-либо внятной аналитики по данному вопросу, однако, никогда не поздно побыть в роли Капитана Очевидность и предоставить факты на суд общественности.
Я не ставил своей целью сделать обзор техник повышения привилегий в системе, таких статей полно в сети. Каждый год находятся новые механизмы, и каждая техника заслуживает отдельного обзора. В этот раз мне захотелось взглянуть на картину в целом, на всём многообразии линейки ОС Windows начиная с Windows Vista и без разбиения на конкретные операционные системы.
Небольшой экскурс в историю
Модель безопасности операционной системы Windows XP существенно отличается от модели безопасности операционной системы Windows Vista и выше. В Windows XP существуют две учётные записи пользователей: стандартная и учётная запись администратора. Подавляющее большинство пользователей работали с правами администратора, даже несмотря на то, что для решения повседневных задач эти права им не требовались. Они заражались вредоносным ПО, которое получало права текущего пользователя и, чаще всего, это были именно права администратора системы. Таким образом, у вредоносного ПО не было серьёзных проблем с получением повышенных привилегий в системе под управлением Windows XP.
Такой механизм существовал вплоть до появления семейства Windows Vista в котором Microsoft представила новую модель безопасности – механизм целостности Windows.
Integrity Level в Windows 10
Грубо говоря, в новом механизме также существуют две вышеперечисленные учётные записи пользователей, однако, теперь операционная система работает в режиме одобрения администратором. Да-да, это тот самый всеми «любимый» UAC (User Access Control). Как только требуются повышенные привилегии, возникает диалог UAC, спрашивающий у пользователя разрешения на совершение определённого действия.
Человеческий фактор – одна из основных проблем безопасности, поэтому возложение ответственности на пользователя, не обладающего минимально базовыми знаниями компьютерной безопасности, – это как минимум спорное решение. Сама компания Microsoft говорит по этому поводу следующее: «One important thing to know is that UAC is not a security boundary. UAC helps people be more secure, but it is not a cure all. UAC helps most by being the prompt before software is installed». Интересующимся позицией Microsoft я рекомендую ознакомиться со следующими материалами: User Account Control, User Account Control (UAC) – quick update, Update on UAC.
Механизм целостности Windows
Новый механизм целостности Windows является основным компонентом защиты архитектуры безопасности Windows. Он ограничивает права доступа для приложений, работающих под управлением той же учётной записи, но при это являющимися менее надёжными. Проще говоря, этот механизм присваивает уровень целостности процессам, а также другим защищаемым объектам в ОС Windows. Уровень целостности ограничивает или предоставляет права доступа одних объектов к другим.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// // Mandatory Label Authority. // #define SECURITY_MANDATORY_LABEL_AUTHORITY {0,0,0,0,0,16} #define SECURITY_MANDATORY_UNTRUSTED_RID (0x00000000L) #define SECURITY_MANDATORY_LOW_RID (0x00001000L) #define SECURITY_MANDATORY_MEDIUM_RID (0x00002000L) #define SECURITY_MANDATORY_MEDIUM_PLUS_RID (SECURITY_MANDATORY_MEDIUM_RID + 0x100) #define SECURITY_MANDATORY_HIGH_RID (0x00003000L) #define SECURITY_MANDATORY_SYSTEM_RID (0x00004000L) #define SECURITY_MANDATORY_PROTECTED_PROCESS_RID (0x00005000L) // // SECURITY_MANDATORY_MAXIMUM_USER_RID is the highest RID that // can be set by a usermode caller. // #define SECURITY_MANDATORY_MAXIMUM_USER_RID SECURITY_MANDATORY_SYSTEM_RID |
Не буду вдаваться в детали работы механизма целостности. Для упрощения трактовки собранной статистики нам понадобится всего лишь одна таблица — это таблица связи уровня целостности с идентификатором безопасности SID (см. таблицу 7), который идентифицирует учётную запись пользователя, группы, домена или компьютера в Windows.
SID в маркере доступа | Присвоенный уровень целостности |
LocalSystem | System |
LocalService | System |
NetworkService | System |
Administrators | High |
Backup Operators | High |
Network Configuration Operators | High |
Cryptographic Operators | High |
Authenticated Users | Medium |
Everyone (World) | Low |
Anonymous | Untrusted |
Большинство приложений, запущенных стандартным пользователем, получают средний уровень целостности. Администраторы – высокий (high), сервисы и ядро – системный (system). Низкий (low) уровень доступа будет, например, у приложения-контейнера – с таким уровнем целостности обычно работают современные браузеры, защищая операционную систему от возможного проникновения вредоносного кода со стороны вредоносных сайтов.
Одним словом, high и выше – это тот уровень привилегий к которому стремится вредоносное ПО.
Ложь, наглая ложь и статистика
Современные антивирусные продукты реализуют комплексный подход к безопасности. Поэтому в них используются десятки компонент, предотвращающих попадание вредоносного кода в систему на различных этапах. Это и веб-антивирусы, и эмуляторы скриптов, и облачные сигнатуры, и детекторы эксплойтов, и многое другое. Данные, попадающие в систему, проходят через многочисленные проверки различными компонентами антивирусного продукта. В результате гигантское количество вредоносного ПО не доходит до стадии исполнения и детектируется «на взлёте». Меня же интересовало то, которое всё-таки дошло до исполнения в системе. При этом современный антивирусный продукт продолжает следить за потенциально вредоносным объектом, ведь даже в случае его исполнения могут сработать поведенческие сигнатуры (BSS) компонента Kaspersky System Watcher.
Поэтому я попросил нашу команду Эвристического Детектирования помочь мне собрать статистику об уровне системных привилегий, с которыми исполняется активное вредоносное ПО, детектируемое с помощью поведенческих сигнатур.
С помощью Kaspersky Security Network за 15 дней работы мне удалось собрать данные о примерно полутора миллионах срабатываний. В эту статистику попала вся линейка ОС Windows, начиная с Vista и заканчивая Windows 10. Отфильтровав часть событий, оставив лишь уникальные, а также не содержащие наших тестовых сигнатур, я получил около 976 тысяч срабатываний. Давайте посмотрим на распределение уровней целостности среди активного вредоносного ПО за это время.
Распределение уровней целостности
Сложив Untrusted, Low и Medium, а также High и System можно получить процентное соотношение, которое я назвал «Нормально к Очень плохо». Хотя, как мне кажется, авторы вредоносного кода не сочли бы такое соотношение плохим.
Соотношение «Нормально к Очень плохо»
Выводы
В чём же причина такой ужасающей статистики? Честно говоря, сказать точно пока нельзя, необходимо более глубокое исследование. Конечно же, вирусописатели используют различные способы повышения привилегий: автоэлевация и обход механизма UAC, уязвимости в Windows и стороннем ПО, социальная инженерия и так далее. Существует ненулевая вероятность того, что у многих пользователей и вовсе отключён UAC, который их раздражает. Однако очевидно то, что у создателей вредоносного ПО не возникает проблем с получением повышенных привилегий в Windows, а соответственно защита от угроз должна создаваться с учётом этой проблемы.
Вредоносный код и механизм целостности Windows