Похожие презентации:
Стратегии обхода виртуальных машин (Anti -VM) в разработке вредоносного ПО
1. Лекция 6. Стратегии обхода виртуальных машин (Anti-VM) в разработке вредоносного ПО
Компьютерные вирусы и руткитыЖаксалыков Т.М.
2. Предисловие
Представьте себе стандартный процесс анализа угроз: когда антивирусная лабораторияили автоматизированная система защиты (так называемая «песочница») получает
подозрительный файл, она никогда не запускает его на реальном рабочем компьютере.
Для безопасности файл помещается в изолированную среду — виртуальную машину
(VM) или honeypot-систему
3. Предисловие
Создатели массового вредоносного ПО, такого как ботнеты, шпионские программы(spyware) или программы-вымогатели (scareware), прекрасно об этом знают. Они
понимают один простой факт: их главная цель — это обычный пользователь, который в
99% случаев запускает свою операционную систему на реальном «железе», а не внутри
виртуальной машины
4. Предисловие
Давайте рассмотрим классический пример: Допустим, злоумышленник написалхитрый троян для кражи данных. Как только этот троян попадает в систему, он не
начинает сразу атаковать. Сначала он «осматривается». Программа тихо заглядывает в
системную директорию C:\Windows\System32\drivers\ и ищет там специфические файлы,
например, VBoxMouse.sys или VBoxGuest.sys. Если троян находит эти драйверы, он
делает логичный вывод: «Я нахожусь внутри VirtualBox, меня пытаются
проанализировать!». Чтобы не выдать себя, вредоносная программа либо просто
завершает работу, либо начинает имитировать абсолютно безобидное поведение. В
результате песочница не фиксирует никакой угрозы, и вирус успешно обходит систему
защиты.
Именно эта изощренная игра в «кошки-мышки» и станет предметом нашей сегодняшней
лекции.
5. Цель лекции:
Наша цель — детально разобрать, как вредоносный код идентифицирует виртуальныесреды. Мы изучим, как он проверяет файловую систему, анализирует аппаратное
обеспечение, ищет артефакты в системном реестре и даже использует временные
задержки (тайминги) для обхода песочниц. Понимание этих стратегий критически важно:
для атакующих (Red Team) это способ создания более продвинутых симуляций угроз, а
для защитников (Blue Team) — ключ к созданию «невидимых» песочниц, которые
вредоносное ПО не сможет распознать».
6. План лекции:
Обнаружение на уровне файловой системы (Filesystem detection techniques). Мы начнем с того, как
вредоносный код сканирует систему в поисках специфических файлов и драйверов, которые однозначно
выдают присутствие таких сред, как VirtualBox
Подходы к обнаружению оборудования (Approaches to hardware detection). Виртуальное железо часто
оставляет следы. Мы рассмотрим, как простая проверка параметров жесткого диска (HDD) может помочь
вредоносному ПО понять, что оно находится в песочнице
Временные методы уклонения (Time-based sandbox evasion techniques). Автоматизированные системы
анализа всегда ограничены во времени. Я покажу вам, как злоумышленники используют этот факт,
искусственно задерживая выполнение кода (используя функции sleep или delay), чтобы перехитрить
песочницы
Идентификация виртуальных машин через реестр (Identifying VMs through the registry). Наконец, мы
заглянем в системный реестр Windows и найдем там ключи и артефакты, которые программное
обеспечение для виртуализации оставляет после себя
7. Обнаружение на уровне файловой системы (Filesystem detection techniques).
Главный принцип этого метода уклонения прост, но крайне эффективен: в виртуальныхсредах (таких как песочницы для анализа или системы-ловушки) всегда присутствуют
специфические файлы и директории, которых вы практически никогда не встретите на
обычной физической (хостовой) машине рядового пользователя
8. Обнаружение на уровне файловой системы (Filesystem detection techniques).
Как правило, эти файлы представляют собой драйверы гостевых систем или утилитыинтеграции, которые делают работу в виртуальной машине удобной (например,
позволяют мыши бесшовно перемещаться между окнами или обеспечивают работу
общих папок). Для вредоносного ПО наличие таких файлов — это явный сигнал тревоги
9. Практический пример: Обнаружение Oracle VirtualBox
Давайте рассмотрим, как это работает на примере популярной среды VirtualBox. Есливредоносная программа запускается, она может тихо просканировать системную
директорию Windows на наличие характерных артефактов
10. Практический пример: Обнаружение Oracle VirtualBox
Согласно материалам книги, стопроцентными индикаторами присутствия VirtualBoxявляются следующие файлы:
• Системные драйверы (расположены в C:\windows\system32\drivers\): VBoxMouse.sys,
VBoxGuest.sys, VBoxSF.sys, VBoxVideo.sys.
• Динамические библиотеки (DLL) и исполняемые файлы (расположены в
C:\windows\system32\): vboxdisp.dll, vboxhook.dll, vboxservice.exe, vboxtray.exe
11. Как это реализуется в коде?
Как злоумышленники проверяют наличие этих файлов? Они стараются сделать этомаксимально незаметно. Им не нужно пытаться открыть файл для чтения (что могло бы
вызвать подозрения у антивируса) — достаточно просто проверить его атрибуты
12. Как это реализуется в коде?
В книге приводится элегантный пример реализации на языке C/C++. Вредоноснаяпрограмма использует стандартную функцию Windows API — GetFileAttributes
13. Как это реализуется в коде?
Логика (алгоритм) работы выглядит так:Программа определяет пути к целевым файлам (например,
c:\windows\system32\drivers\VBoxMouse.sys).
Путь передается в функцию GetFileAttributes.
Если функция возвращает значение, отличное от ошибки (INVALID_FILE_ATTRIBUTES), и
при этом подтверждает, что найденный объект не является директорией
(FILE_ATTRIBUTE_DIRECTORY), программа делает однозначный вывод: файл существует,
а значит, система виртуализирована.
В ответ на это программа может вывести (или записать в лог) сообщение: "The system
appears to be a virtual machine", и остановить распаковку своего основного вредоносного
функционала
14. Как это реализуется в коде?
Хотя в простом примере (Proof of Concept) из книги проверяются всего два драйверагостевой системы, автор отмечает, что эту логику можно легко масштабировать, добавив
проверки на артефакты других популярных песочниц и сред виртуализации (например,
VMware)
15. Выводы:
Проверка файловой системы — это первая и самая базовая линия оборонывредоносного ПО. Защитникам (Blue Team) при настройке песочниц приходится идти на
хитрости, переименовывая или скрывая эти гостевые драйверы, чтобы заставить вирус
поверить, что он находится на реальном компьютере.
16. Подходы к обнаружению оборудования (Approaches to hardware detection)
В чем суть этого метода?Когда создается виртуальная машина (песочница), гипервизор (будь то VirtualBox,
VMware или QEMU) должен предоставить ей виртуальное «железо» — процессор,
оперативную память, сетевой адаптер и, конечно же, жесткий диск (HDD).
Проблема для защитников заключается в том, что по умолчанию гипервизоры не
заморачиваются с маскировкой. Они честно называют свои виртуальные компоненты
своими именами. Если вредоносная программа обратится к операционной системе с
вопросом «На каком оборудовании я работаю?», она получит весьма откровенный ответ.
17. Практический пример: Проверка жесткого диска (HDD)
В книге автор выделяет классический и очень эффективный пример — проверкупараметров жесткого диска.
Представьте: если вы зайдете в диспетчер устройств на реальном компьютере, вы
увидите реального производителя накопителя, например, Samsung SSD 970 EVO или
WDC WD10EZEX.
18. Практический пример: Проверка жесткого диска (HDD)
Но что увидит вирус, если запросит эту информацию внутри песочницы? Он увидитпредательские строки, такие как:
• VBOX HARDDISK
• VMware Virtual IDE Hard Drive
• QEMU HARDDISK
19. Как злоумышленники реализуют это в коде?
Вредоносное ПО использует системные функции (Windows API), чтобы запросить у операционнойсистемы дескриптор устройства хранения и прочитать его свойства.
Алгоритм работы вредоносного скрипта (например, файла hack.c из материалов книги) выглядит
следующим образом:
Вирус делает низкоуровневый запрос к системе с просьбой выдать информацию о физическом
накопителе.
Система возвращает структуру данных, в которой содержится имя модели HDD (Model Number).
Вирус берет эту строку и просто ищет в ней специфические ключевые слова — VBOX, VMWARE,
VIRTUAL и так далее.
Если подстрока найдена, программа выводит (или решает про себя): "The system appears to be a
virtual machine" (Похоже, система является виртуальной машиной) и прекращает свою вредоносную
деятельность, чтобы не дать аналитикам изучить свой код
20. Выводы
Проверка аппаратного обеспечения — это огромная головная боль для Blue Team. Вотличие от файлов или ключей реестра, которые аналитик может относительно легко
удалить или изменить, подмена (спуфинг) аппаратных идентификаторов жесткого диска
или материнской платы требует глубокой модификации исходного кода самого
гипервизора или использования специализированных (hardened) сборок песочниц.
Вирусописатели знают об этом и активно этим пользуются!
21. Временные методы обхода песочниц (Time-based sandbox evasion techniques).
В чем заключается концепция?Зачем вообще использовать время? Автоматизированные системы анализа (песочницы)
пропускают через себя тысячи подозрительных файлов в день. У них просто нет
возможности ждать часами, пока вирус решит "проснуться". На анализ одного файла
обычно выделяется жестко ограниченное время — скажем, 3–5 минут.
Вирусописатели прекрасно знают об этом таймере. Самая примитивная логика обхода —
заставить вредоносную программу просто заснуть на длительное время (например, на 10
минут) перед выполнением полезной нагрузки, чтобы превысить лимит времени анализа
22. Ответный ход песочниц: Sleep-skipping
Ответный ход песочниц: SleepskippingНо создатели систем защиты тоже не стоят на месте. Такие популярные песочницы, как
Cuckoo Sandbox, внедрили функцию "пропуска сна" (sleep-skipping).
Как это работает: если вирус вызывает стандартную функцию задержки, например
Sleep(1000000), песочница перехватывает этот вызов и заменяет длительную задержку
на очень короткую. Это принуждает вредоносную программу немедленно проснуться и
начать свои вредоносные действия до того, как истечет таймер анализа. Таким образом,
простой вызов Sleep больше не спасает вирусы
23. Как вирусы ловят песочницу на обмане?
Вот здесь начинается настоящая магия. Раз простое засыпание не работает, злоумышленники сталииспользовать тайминги для выявления самого факта перемотки времени.
Алгоритм (который автор демонстрирует в коде hack.c) выглядит примерно так:
1.
Замер до сна: Вирус запрашивает у системы текущее время (количество тиков) и запоминает его.
2.
Имитация сна: Вирус вызывает функцию Sleep (например, на 1000 миллисекунд).
3.
Замер после сна: Проснувшись, вирус снова запрашивает текущее время и вычисляет реальную разницу.
4.
Проверка (Ловушка): Если песочница "промотала" время, чтобы ускорить анализ, реальное время,
прошедшее между замерами, будет ничтожно малым (например, несколько миллисекунд вместо тысячи).
5.
Вирус видит, что запрошенное время сна не совпадает с реальным, выводит сообщение "Possibly a virtual
machine." (Возможно, это виртуальная машина) и мгновенно прекращает свою работу, так и не выдав
своих истинных намерений
24. Выводы
Временные методы — это блестящий пример использования механизмов песочницыпротив нее самой. Аналитикам и разработчикам EDR-систем приходится тратить
огромные ресурсы на создание таких "машин времени", которые могли бы обманывать
таймеры внутри вредоносного кода, не выдавая факта симуляции. И битва на этом
фронте идет постоянно!
25. Идентификации виртуальных машин через системный реестр (Identifying VMs through the registry)
В чем суть реестрового метода?Системный реестр Windows — это гигантская база данных, хранящая настройки
операционной системы и программ. Основной принцип этого метода уклонения
заключается в том, что специфические ключи и значения реестра, оставляемые
гипервизорами, никогда не встречаются на обычном «чистом» хосте, но почти всегда
присутствуют в виртуальных средах. Программное обеспечение для виртуализации
просто не может работать, не оставив таких «цифровых отпечатков».
26. Как это реализуется в коде?
Злоумышленники обычно используют два основных подхода к работе с реестром:1. Проверка существования пути: Вредоносная программа использует функцию
RegOpenKeyExA, чтобы просто попытаться открыть определенный раздел реестра.
Если функция возвращает успешный результат (ERROR_SUCCESS), вирус понимает,
что ключ существует, а значит, он находится в песочнице.
2. Проверка конкретного значения: Вирус заходит глубже. Он открывает раздел, а затем
использует функцию RegQueryValueExA для чтения значения конкретного ключа.
Полученную строку он сравнивает (с помощью функции strcmp) с ключевыми
словами, такими как VirtualBox
27. Практический пример: Ищем следы VirtualBox
Давайте посмотрим, куда именно заглядывает вредоносное ПО из примера автора:• Оно проверяет наличие специфического раздела HARDWARE\ACPI\FADT\VBOX_ в
ветке HKEY_LOCAL_MACHINE (HKLM).
• Оно переходит по пути HKLM\SYSTEM\CurrentControlSet\Control\SystemInformation и
читает значение ключа SystemProductName. На реальном ПК там будет указана
модель материнской платы или ноутбука (например, от Lenovo или Dell), но в нашей
песочнице там будет написано VirtualBox.
• В той же ветке проверяется ключ BiosVersion, который тоже выдаст строку VirtualBox
28. Практический пример: Ищем следы VirtualBox
Важный нюанс (False Positives): Автор книги отмечает одну интересную проблему этогометода. Если вредоносная программа заразит обычный компьютер разработчика или
энтузиаста, у которого просто установлена программа VirtualBox для личных нужд (даже
если вирус запущен на основной хостовой ОС, а не внутри виртуалки), проверка реестра
может выдать ложноположительный результат (false positive). Вирус испугается
артефактов в реестре и прекратит работу, решив, что это ловушка
29. Заключение лекции
Сегодня мы разобрали четыре фундаментальные стратегии уклонения от виртуальныхмашин (Anti-VM):
1. Поиск артефактов в файловой системе (драйверы и DLL).
2. Идентификация виртуального оборудования (имена жестких дисков).
3. Использование временнЫх задержек для выявления перемотки времени (sleepskipping).
4. Поиск следов виртуализации в системном реестре
30. Заключение лекции
Для создателей таких угроз, как ransomware (программы-вымогатели) и spyware(шпионское ПО), эти техники абсолютно критичны, так как они позволяют атаковать
реальных пользователей и избегать ловушек ИБ-аналитиков.
Программное обеспечение