С древнейших времен (хорошо, что все они были на нашей памяти) айтишники обожают сокращения — как в бытовом (все эти AFK, BTW, AFAIK), так и в профессиональном общении. Поэтому иногда при чтении профессиональной литературы по безопасности мозг даже прилично подготовленного хакера может встать в позу речного скорпиона. Чтобы этого не произошло, мы подготовили для тебя статью, в которой разобрали несколько самых распространенных аббревиатур и акронимов (наш литературный редактор говорит, что это разные вещи, придется загуглить разницу), означающих нечто, осложняющее жизнь честному хакеру или вирмейкеру.

 

UAC (User Account Control)

Что такое?

Начнем с самого легкого. Контроль пользовательских учеток, как все прекрасно помнят, был впервые введен в Висте и аналогичной серверной системе Windows Server 2008. Да, это было давно. UAC был добавлен для предотвращения атак, которые оказались возможны в Windows из-за неполноценности ее подсистемы передачи сообщений. Приложение, имеющее более низкие привилегии, могло отправить сообщение (с внедренным шелл-кодом) приложению, выполняющемуся с правами администратора, а оно уже запросто могло запустить приманку, так как имеет разрешения.

Такой порядок сохранился от старых операционных систем, основанных на MS-DOS. В них не было разделения между юзером и админом, и, хотя в Windows NT ситуация была исправлена, пользователи по старинке работали под учетной записью администратора. До поры до времени такое положение дел всех устраивало, но потом (после знаменитой публикации независимого эксперта по информационной безопасности Криса Паджета) стали появляться эксплойты, использующие уязвимость подрывной атаки. И когда проблема стала угрожающей, в новой на то время версии своей операционки Microsoft попыталась исправить ситуацию, внедрив UAC. Строго говоря, последний представляет собой только оболочку — пользовательский интерфейс, тогда как всю работу на самом деле выполняет механизм UIPI (User Interface Privilege Isolation). Посредством использования MIC (Mandatory Integrity Control, это ключевая фича безопасности, управляющая уровнями доступа процессов) UIPI запрещает процессу с низкими правами посылать сообщения процессу с высокими. В случае с UAC выбор между запретом или разрешением отдается на откуп пользователю. Но проблема в том, что многие юзеры, не вдаваясь в детали, разрешают выполнение приложения, которое стало причиной вопроса.

UAC поднимает тревогу не только при запуске недоверенного процесса, но также при выполнении многих других задач, в числе которых изменение настроек «родного» файрвола, добавление/удаление пользовательских учеток, установка драйверов, запуск дефрагментации диска и другие. По этой причине работа с системой стала медленнее, и появилось много негативных сообщений юзеров.

В результате UAC не стал панацеей от всех бед, но все же предотвратил часть атак и поставляется со всеми последующими версиями операционных систем от Microsoft.

Как отламывают?

Еще Марк Руссинович отметил, что UAC не стоит рассматривать как механизм безопасности, — если пользователь разрешит, то выполнится любой код, поэтому чаще всего UAC обходят спрятанные за красивой этикеткой зловреды. То есть юзер разрешает на выполнение какое-то безобидное на первый взгляд приложение, полученное из недостоверного источника, при этом вместе с приложением выполняется деструктивный код.

UAC — настройка выдачи уведомлений
UAC — настройка выдачи уведомлений
 

DEP (Data Execution Prevention)

Что такое?

За аббревиатурой DEP скрывается фича безопасности современных операционных систем. Она разрешает приложению выполнять код только в области памяти, помеченной как исполняемая, то есть код, закинутый малварью в область данных — кучу или стек (которая помечена, как неисполняемая), работать не будет. Хотя существуют два способа предотвратить выполнение кода — программный и аппаратный, современные операционные системы стали поддерживать DEP только после того, как такая возможность появилась в процессорах. Страница виртуальной памяти, данные в которой не предназначены для выполнения, помечается битом NX (в терминологии AMD) и битом XD (по Intel). DEP предотвращает не только атаки, но и ошибки операционной системы, просто завершая приложение.

Если камень не поддерживает бит NX, тогда в бой вступает программная реализация DEP. Она существенно уступает аппаратной, так как защищает лишь отдельные системные файлы операционной системы, но при этом работает на любых процессорах.

Кроме настольных операционок, DEP также включен в Android начиная с версии 4.1 Jelly Bean.

Как отламывают?

Способы атаки на DEP подробно описаны Крисом Касперски в его книге «Искусство дизассемблирования». Хакер может ломать DEP как локально, так и удаленно. И хотя существует множество механизмов контроля кучи и стека, они плохо справляются со своими задачами: хакер по-прежнему может из-за отсутствия контроля границ локальных буферов затереть адрес возврата из функции для помещения сюда указателя на шелл-код или, воспользовавшись переполнением кучи, перезаписать любую модифицируемую ячейку в адресном пространстве уязвимого процесса.

 

KPP (Kernel Patch Protection)

Что такое?

Защита ядра от модификации появилась вместе с выходом 64-разрядной версии Windows в 2005 году (первый сервис-пак для Windows XP). Следовательно, в 32-битных версиях она отсутствует. Дальше — больше. В 64-битной семерке механизм защиты был улучшен для поддержки интерфейса ACPI современных процессоров, в том числе режимов выполнения и сна процессоров в многопроцессорной системе. Модификация ядра осуществляется путем внутренних системных вызовов и недокументированных возможностей для замены кода в критических структурах ядра Windows.

Модификация ядра направлена на следующие ядерные объекты: таблицу системных вызовов, глобальную таблицу дескрипторов, таблицу дескрипторов прерываний, образы ядра, HAL, NTFS, BOOTVID, TCPIP и другие, ядерные стеки, списки процессов, набор MSR, KdpStub и так далее.
Конкретно в Windows технология защиты ядра от модификации имеет название PatchGuard.

К примеру, без защиты ядра программист мог изменить указатель на функцию в таблице системных вызовов, которая, по сути, является массивом указателей на функции системных сервисов. Следовательно, когда происходит вызов ядра и оно обращается по указателю, который, по идее, должен указывать на ядерную функцию, ядро со всеми своими привилегиями обращается не пойми куда (и выполняет — подсунутый, возможно, зловредный код).

Модификация ядра используется не только зловредами, но и полезными приложениями. Например, антивирус может модифицировать ядро для нужд своей работы, чтобы ядерный вызов проходил через него. Однако теперь это запрещено, борцам с малварью приходится искать обходные пути. Тем не менее, даже когда это было разрешено, модификация ядра была крайней мерой и плохой идеей: одновременно нарушались три критических свойства операционной системы: надежность, производительность, безопасность. Надежность страдала по той простой причине, что внедрялся потусторонний код, который в принципе невозможно протестировать. Так как добавленный код вклинивался посреди ядерных вызовов, это не лучшим образом действовало на производительность. Модификация кода ядра однозначно приводила к неизвестным последствиям, в результате чего возрастала угроза атаки зловредами.

В современных версиях Windows, если попытаться пропатчить ядро, операционная система выведет синий экран и уйдет на перезагрузку, поскольку посчитает это критической неисправностью без возможности продолжить выполнение.

Как отламывают?

Между тем взломать KPP все равно можно, но в таком случае от хакера потребуется довольно высокая квалификация в области системного программирования и написания драйверов в частности. Чтобы сломать KPP, необходимо написать драйвер, который будет последовательно и выборочно использовать техники атаки, такие как, например, Firing a patchguard check (более подробно в докладе от Positive Technologies), и, таким образом, полностью заблокирует механизмы Kernel Patch Protection. В случае успеха хакер сможет беспрепятственно модифицировать структуры и код ядра.

 

ASLR (Address space layout randomization)

Что такое?

Рандомизация адресного пространства используется в современных операционных системах для размещения критичных структур данных (таких как куча, стек, образы исполняемых файлов, библиотеки) случайным, независимым образом. Применение этой технологии во многом усложняет написание зловредов и эксплуатацию уязвимостей. Главным образом это происходит благодаря тому, что хакер, разрабатывая малварь, не может привязывать свой код к определенным адресам, где может находиться атакуемая структура данных, так как при следующей загрузке «изучаемой» системы все объекты сменят свое расположение в адресном пространстве. Наибольшее развитие ASLR получила в последних версиях операционки от Microsoft — Windows 8.0/8.1. ASLR служит последним рубежом, который может остановить малварь, обошедшую DEP.
Чтобы ASLR использовалась в определенном приложении, его надо скомпилировать с соответствующими параметрами.

Как отламывают?

На 32-битных машинах с рандомизацией адресного пространства вполне можно бороться: так как для добавления случайности доступно только порядка 16 бит, требуемый адрес можно подобрать брутфорсом. Отсюда следует возможность применения атаки возврата в библиотеку, когда через переполнение буфера адрес функции в стеке подменяется адресом другой функции в программе. На платформе x64 ситуация для взломщика усложняется.

Продолжение статьи доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи одну статью

Заинтересовала статья, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для статей, опубликованных более двух месяцев назад.


Комментарии

Подпишитесь на ][, чтобы участвовать в обсуждении

Обсуждение этой статьи доступно только нашим подписчикам. Вы можете войти в свой аккаунт или зарегистрироваться и оплатить подписку, чтобы свободно участвовать в обсуждении.

Check Also

ИБ-специалист борется с нелегальной торговлей в даркнете, обнаруживая реальные IP-адреса сайтов

После закрытия таких крупных торговых площадок, как AlphaBay и Hansa, многие злоумышленник…