Віртуалізація - Апаратура віртуалізації для O-DAY антивірусного захисту.


Передмова від VM Guru: Із задоволенням представляємо статтю нашого автора Андрія Луценко, фахівця в галузі інформаційної безпеки, де розповідається про способи антивірусного захисту за допомогою апаратної віртуалізації.

Для більш глибокого розуміння статті рекомендуємо прочитати наступні статті Андрія:

Також вам знадобиться завантажити Прикріплені файли (RED_PILL.exe і Project1.exe), гіпердрайвер і гіперагент, за допомогою яких можна контролювати засобами апаратної віртуалізації все без винятку події, пов'язані з передачею управління процесору.

Intel хоче перемогти віруси

В кінці 2010 року фірма Intel повідомила про своє бажання придбати одного з провідних постачальників антивірусних рішень - McAfee. На перший погляд, - безглузде рішення, але тільки на перший. Вбудовування механізмів захисту від вірусів безпосередньо в апаратуру комп'ютера - це багатообіцяюча ідея і новий щабель у розвитку антивірусних технологій.

Перша спроба створення такого захисту була зроблена років десять тому: це горезвісний NX-біт, запобігає виконання програм в позначених цим бітом віртуальних сторінках пам'яті.

Результат виявився невдалим: захист, побудована на базі цієї технології, була вбудована в операційні системи (приклад - DEP в Microsoft Windows), але з легкістю пробивалася вірусами. Причина провалу проста - програмні компоненти цієї захисту працюють на тому ж самому рівні, що і самі віруси, не маючи перед ними пріоритету.

Висновок з цієї невдачі очевидний: апаратура контролю повинна ініціювати програмні модулі на рівні, недоступному для будь-яких призначених для користувача програм - навіть для тих, які працюють на рівні ядра операційної системи. Потрібен більш глибокий рівень, який сьогодні вже реалізований - це рівень гипервизора. Швидше за все, архітектори Intel почнуть вбудовувати свої блоки антивірусного захисту саме в систему апаратної віртуалізації.

Що може апаратура

Сама апаратура, де б її ні розміщували, звичайно, не панацея від всіх бід. Вона може контролювати тільки відносно прості взаємозв'язку між об'єктами програмування (значеннями регістрів, статусів блоків пам'яті). Тому важлива зв'язка контрольної апаратури, яка реєструє події, і логічних оброблювачів цих подій. У реальній роботі комп'ютера таких подій дуже багато - мільйони в секунду, і з них потрібно вибирати тільки ті, які потрапляють під критерії вірусної атаки.
Класичний гипервизор може контролювати тільки атаки вірусів, пов'язані з порушеннями загальноприйнятих угод з побудови програмних модулів. Це обмежує область ефективного використання такого апаратного контролю: для побудови абсолютної антивірусного захисту можливостей апаратури віртуалізації явно не вистачає. Потрібно додавати спеціалізовані блоки, заточені на реєстрацію більш широкого класу подій. Сформулювати вимоги до такої апаратури можуть тільки фахівці в області антивірусного захисту. Мабуть, це і послужило причиною інтересу Intel до McAfee.

Вже зараз, на існуючій апаратурі, можна контролювати угоди про розділення областей ядра і прикладних програм на кілька безперервних адресних просторів. Тобто виконувати апаратний контроль прив'язки рівня привілеїв виконуваного коду до конкретних областях лінійних адрес. Це дозволить виявляти атаки вірусів, спрямовані на підвищення свого рівня привілеїв.

Нинішня апаратура дозволяє контролювати і принцип цілісності точок повернення, записаних в стек. Це потенційно може запобігати атакам вірусів, пов'язані з переповнення буферів.

Останнім часом багато говориться про вірусні атаки з периферійного обладнання, в складі якого є власні мікропроцесори (наприклад, це мережеві і відео карти). Спроби доступу подібного обладнання до чужих областям пам'яті обчислювальної системи також можуть бути проконтрольовані засобами апаратури віртуалізації.

Крім цього, досить просто контролювати запуск програмних модулів, завантажених в пам'ять зі знімних носіїв (типу USB Flash). Метод такого контролю очевидний і легко реалізуємо: засобами апаратури віртуалізації відслідковуються сторінки оперативної пам'яті, куди було завантажено даних зі знімного носія, і ці блоки пам'яті позначаються як недоступні для виконання. Спроба виконати код з такої ділянки пам'яті призведе до виникнення події ставлячи під загрозу безпеку, яке можна легко зареєструвати. При наявності такого контролю віруси типу широко відомого Stuxnet будуть виявлені ще до початку їх запуску.

Це тільки поверхневий перелік можливостей апаратури в складі блоків віртуалізації, вже наявних в розпорядженні програміста. На жаль, поки цими можливостями ніхто не скористався.

Гіпердрайвер «Червона пігулка» з антивірусним захистом

Щоб показати можливості гипервизора як антивірусного засобу, викладаю демонстраційну версію Гіпердрайвера і ГіперАгента з можливостями виявлення атак вірусів. Гіпердрайвер контролює засобами апаратури віртуалізації все без винятку події, пов'язані з передачею управління - команди і події переривань, виклики процедур, джамп. У цих точках відбуваються виходи зі стану завдання в стан хоста, де програмні обробники цих подій аналізують стан процесора. Якщо аналіз показує небезпечну ситуацію, інформація про неї заноситься в дамп подій, який можна переглянути за допомогою «ГіперАгента».

Гіпердрайвер завантажується з вимкненим антивірусним контролем, а включення і виключення контролю відбувається в «ГіперАгенте», на вкладці «Дамп».

У дампі зберігається інформація про процесор, рівні привілеїв, лінійному адресу кожної події і про останні точках переходу. Для кожної події фіксується фізичну адресу пам'яті, де розміщувався викликав його код.

Ця версія «Червоної пігулки» контролює три типи подій в точках передачі управління:

  • Виконання коду в області віртуальних адрес 0000_0000h - 7FFF_FFFFh з нульовим рівнем привілеїв, Це детектирует вірусну атаку націлену на підвищення рівня привілеїв.
  • Передачу управління на код, що складається з послідовності однакових байт (в даному випадку - при довжині ланцюжка з 7 і більше байт). Це детектирует вірусну атаку переповненням стека і динамічно розподіляє пам'яті.
  • Виконання будь-якого коду за умови знаходження покажчика стека в тому ж 4-кілобайтні блоці, що і цей код. Це детектирует вірусну атаку за класичним сценарієм ROP.

Перелік перевірок можна було б розширити, але це вже робота фахівців в області антивірусного захисту, до яких я не належу. Тому набір контрольованих ситуацій перекриває тільки загальновідомі формальні методи (підвищення рівня привілеїв, переповнення буферів), використовуваними вірусами для впровадження в цільову систему.

Програма написана в демонстраційних цілях і не претендує на роль робочого інструмента. Її завдання - показати наявні можливості і оцінити втрати швидкодії в системі при включенні досить витратною за часом обробки подій в хості Гіпердрайвера.

На вкладці перегляду дампа є ползунковий регулятор глибини перегляду подій. В крайньому лівому положенні глибина перегляду - максимально можлива, з деталізацією до одного 4-кілобайтний блоку програмного коду. В крайньому правому положенні деталізація обмежується 16 блоками.

Від глибини перегляду залежить і продуктивність системи, яку можна оцінити і візуально, і по діаграмах завантаження ядер процесора.

Дамп реєструє лінійні адреси точок переходу (From_IP і Tо_IP). Програмний код зареєстрованого в дампі події можна переглянути подвійним клацанням миші в колонці Adr_Mem (адреса фізичної пам'яті).

Подія зареєстровано за фактом послідовності з 7 однакових байт (команда NOP) в точці передачі управління.

Для запуску Гіпердрайвера відсилаю вас до інструкції в першій статті циклу: там все описано, і всі обмеження на використання «Червоної пігулки» також залишаються (годяться тільки процесори AMD і тільки 32-бітна ОС, для роботи програми ГіперАгент потрібно Windows).

Як це працює - подробиці для професіоналів

Всі ці можливості в «Червоній пігулці» через використання апаратури Nested Paging (NPG) і контролю переходів Recording Control Transfers (LBR). Ці блоки є і в процесорах AMD і в процесорах Intel - хоча їх назви розрізняються, вони забезпечують однакові можливості.

Блок контролю переходів (LBR) дозволяє використовувати для аналізу інформацію про точку переходу (FROM_IP, TO_IP). Блок тіньової трансляції (NPG) дозволяє контролювати всі звернення до фізичних сторінок оперативної пам'яті через біти контролю U \ S, R \ W, NXE.

В тіньової таблиці переадресації РАЕ-64, доступ до якої є тільки у гипервизора, для всіх блоків пам'яті виставляється біт NXE, тому при спробі почати виконання команд з цієї сторінки відбувається вихід в оброблювачі подій гипервизора. У точці виходу проводиться аналіз дотримання формальних угод, і якщо вони не порушені, то ця сторінка позначається як дозволена до виконання коду, після чого відбувається повернення в задачу.

Кількість сторінок пам'яті, робота яких дозволена (при переходах між ними виходів в хост не відбувається), можна регулювати. Звичайно, таке регулювання одночасно позначається на глибині контролю і швидкості виконання.

Можна одночасно з дозволом виконання коду з сторінки пам'яті заборонити запис в неї, тоді будуть детектуватиметься все самомодифицирующиеся програми, але цей спосіб контролю в демонстраційній версії не використовується.

Оскільки апаратура дозволяє контролювати фізичні сторінки пам'яті, контролюючи DMA периферійних контролерів, можна будувати динамічні списки блоків пам'яті завантажених з зовнішніх носіїв, мережі і т.д. Контроль в точках початку використання нової сторінки оперативної пам'яті дозволить однозначно визначити джерело отримання виконуваного блоку і виконати реєстрацію даної події.

перспективи використання

Повертаючись до того, з чого я почав, констатую, що навіть стандартна апаратура системи віртуалізації дозволяє здійснювати ефективний контроль за атаками як відомих, так і 0-day вірусів. Якщо ж розширити склад обладнання контролю подій спеціалізованими вузлами, то надійність і швидкість роботи такої системи контролю зростуть багаторазово.

Таким чином, для систем віртуалізації, мабуть, в недалекому майбутньому відкриється ще одна ніша застосування - антивірусний захист. Вона може бути реалізована у вигляді спеціалізованих Гіпердрайверов або у вигляді плагінів до промислових систем віртуалізації.

На жаль, таким формалізованим контролем можна перекрити лише невелике безліч методів атак (втім, найактуальніші з них, все-таки можна). Для атак, алгоритми яких не можуть бути формалізовані, пропонований принцип контролю не годиться. Такі атаки доведеться контролювати, застосовуючи програмні модулі інтелектуального аналізу, але обов'язково в поєднанні з підтримкою на апаратному рівні.

У будь-якому випадку, вектор розвитку антивірусних технологій визначився. Фірма Intel свій вибір зробила, купивши McAfee. Подивимося, кого купить собі AMD.

PS

Коли стаття і програми, що називається, «вилежувалися», чекаючи кінця новорічного сезону, прийшла новина про те, що в інтерв'ю з IDG / Computerworld технічний директор Intel Джастін Раттнер сказав:

"Я думаю, що у нас є реальні революційні ідеї, щоб змінити хід боротьби з шкідливими програмами. Ми побачимо великий стрибок в можливості майбутніх пристроїв захистити себе від атак, будь то комп'ютери, телефони, планшети або розумні телевізори".

Далі він продовжив пояснювати, що нова технологія буде заснована на апаратному забезпеченні і не буде покладатися на сигнатури. В результаті цього "зовсім іншого" підходу, технологія дасть можливість розпізнавати і зупиняти найновіші віруси.
Таким чином, основне твердження автора, про те, що Intel збирається боротися з вірусами апаратними засобами вже підтвердилася. Почекаємо подробиць, але готовий сперечатися, що реалізація даної технології від Intel буде повторювати методи вже працюють в «Червоній пігулці».

PPS

Доведеться розчарувати скептиків, які не прийняли всерйоз твердження, що технологія віртуалізації може застосовуватися в прихованих модулях BIOS зі шкідливою начинкою. Приклад такої програми, виконаної на основі Гіпердрайвера «Червона пігулка», вже готовий і буде темою наступної статті цього циклу.