Fileless Malware и уязвимости Meltdown/Spectre
Что такое fileless malware?
Как архитектурные особенности процессоров приводят к утечкам памяти
MELTDOWN
Spectre v1
Инъекция кода в процессы
Reflective DLL Injection — самозагружающаяся библиотека
Связка техник с Meltdown и Spectre
KPTI — как закрыли Meltdown на уровне ОС
Sysmon
EDR
Реальные кейсы 2019-2025
Реальные кейсы 2019-2025
Кейс 5 — BlackLotus UEFI Bootkit
Как защититься?
01
1.41M
Category: programmingprogramming

Fileless Malware и уязвимости Meltdown/Spectre

1. Fileless Malware и уязвимости Meltdown/Spectre

Ипантьев Иван Р3210

2. Что такое fileless malware?

Обычное вредоносное ПО
Fileless malware
• Оставляет исполняемые файлы (.exe, .dll),
временные папки и записи в реестре.
• Практически не оставляет файлов на диске.
Работает в оперативной памяти (RAM).
• Пользователь часто сам запускает
инсталлятор и подтверждает запрос на
повышение прав .
• Использует уязвимости в уже установленном и
доверенном ПО или легитимные инструменты
системы.
• Загружается как новый процесс из файла на
жестком диске.
• Внедряет код в процессы доверенных программ
или использует скрипты.
• Использует собственный код и сторонние
библиотеки.
• Эксплуатирует «родные» инструменты системы:
PowerShell, UEFI, командную строку.
• Легко обнаруживается классическими
антивирусами по сигнатурам
• Часто исчезает после перезагрузки , если не
прописало скрипт в автозагрузку реестра.

3. Как архитектурные особенности процессоров приводят к утечкам памяти

Современный процессор не выполняет инструкции строго последовательно. Для
максимальной производительности он использует механизм спекулятивного исполнения

4.

Атакующий может измерить время доступа к памяти и понять — была ли строка в кэше или нет.
Это и есть timing side-channel.
Техника Flush+Reload
1. FLUSH — атакующий вымывает probe array из кэша
2. TRIGGER — провоцирует спекулятивное исполнение жертвы
3. RELOAD — измеряет время доступа к каждому элементу probe array быстрый доступ:
(~4 cycles) → строка была загружена спекулятивно
медленный (~200 cycles) → не была
Через разницу во времени атакующий восстанавливает бит за битом содержимое чужой памяти.

5. MELTDOWN

До KPTI ядро Linux/Windows маппировало свою память в адресное пространство каждого
процесса (для скорости syscall). Доступ был запрещён битом защиты, но
User Process
┌─────────────────────────────────────────┐
│ user space code │ kernel memory │

← физически в одном
(можно читать) │ (нельзя читать)│
адресном пространстве

└─────────────────────────────────────────┘
CPU спекулятивно читает kernel-память ДО того как проверить права
доступа!

6. Spectre v1

Атакующий:
Обучает branch predictor —
многократно вызывает функцию с
валидным `x`
2. Подаёт вредоносный`x` (out-ofbounds, указывает на секрет
жертвы)
3. CPU предсказывает `true`,
спекулятивно читает `array1[x]` —
чужую память
4. Измеряет кэш — восстанавливает
секрет

7. Инъекция кода в процессы

Зачем?
Собственный процесс злоумышленника виден в списке задач, его поведение аномально, а запущенный
файл потенциально идентифицируется антивирусом.
Process Hollowing — подмена содержимого легитимного процесса
Process Hollowing — техника, при которой атакующий создаёт легитимный
процесс в приостановленном состоянии, полностью удаляет его
исполняемый код из памяти и заменяет его собственным вредоносным
кодом, после чего возобновляет выполнение процесса.

8. Reflective DLL Injection — самозагружающаяся библиотека

Reflective DLL Injection решает другую задачу: загрузку динамической
библиотеки в память процесса-жертвы в обход стандартного механизма
загрузки операционной системы.

9. Связка техник с Meltdown и Spectre

Spectre/Meltdown
Читают чужую
память
Reflective DLL / Process
Hollowing
Прячут код внутри
легитимных процессов
Fileless атака:
нет файлов на диске нет сигнатур для антивируса
код живёт только в RAM — работает от имени
доверенного процесса
читает секреты через кэш процессора

10. KPTI — как закрыли Meltdown на уровне ОС

Радикально — просто убирали карту ядра из видимости процесса.
KPTI радикально меняет архитектуру управления памятью: каждый процесс теперь использует две
независимые таблицы страниц. Meltdown теперь не может прочитать ядро спекулятивно, потому
что адресов ядра в пользовательской таблице просто нет.
В Linux механизм реализован через конфигурационный флаг CONFIG_PAGE_TABLE_ISOLATION и
активен по умолчанию на всех уязвимых процессорах начиная с ядра 4.15. В Windows
аналогичный механизм получил название KVA Shadow (Kernel Virtual Address Shadow) и был
выпущен в январе 2018 года.
Ценой патча стало снижение производительности: переключение таблиц страниц при каждом
системном вызове добавляет накладные расходы, достигающие на устаревших процессорах 5–30%
для нагрузок с высокой частотой syscall

11. Sysmon

Антивирус ищет файлы, а fileless атака файлов не оставляет. Значит нужно следить не за тем что
лежит на диске, а за тем что процессы делают в реальном времени.
Sysmon — бесплатный инструмент от Microsoft. Он устанавливается в систему и записывает
каждое значимое событие — кто что запустил, кто к кому обратился, кто что записал в память.
Каждое событие имеет номер.
Event ID 8 — CreateRemoteThread
один процесс создал поток внутри другого процесса.
В нормальной жизни это почти никогда не нужно. Если explorer.exe вдруг
создаёт поток внутри svchost.exe — это почти наверняка инъекция.
Event ID 10 — ProcessAccess
Процесс открыл другой процесс для чтения или записи памяти.
Самый важный случай — когда кто-то лезет в lsass.exe. Это процесс который
хранит хэши паролей всех залогиненных пользователей.
Event ID 25 — ProcessTampering
Это прямой детектор Process Hollowing. Sysmon видит что образ процесса в
памяти не совпадает с файлом на диске.

12. EDR

EDR — это Sysmon на
стероидах
Sysmon пишет логи — но сам ничего
не делает. Человек должен их
читать и реагировать.
EDR— это коммерческое решение
которое:
Собирает те же события что
Sysmon
Анализирует их автоматически с
помощью правил и ML
Реагирует в реальном времени —
блокирует процесс, изолирует
машину
Хранит историю для
расследования

13. Реальные кейсы 2019-2025

Кейс 1 — APT41
1. Фишинговое письмо с .doc
2. Макрос запустил PowerShell
PowerShell скачал Cobalt
Strike beacon в RAM
3. Beacon использовал Reflective
DLL Injection Вредонос жил в
памяти легитимных процессов
месяцами
4. Кража исходных кодов,
документации, данных
пользователей
Кейс 2 — FIN7
1.
Звонок в ресторан: "Мы хотим сделать
большой заказ, отправим детали на почту"
2. Письмо с Word документом — "меню для
заказа"
3. Жертва сама открывает документ и
включает макросы
4. HALFBAKED malware загружается в RAM
через PowerShell
5. Process Hollowing в легитимный процесс
6. Вредонос читает память POS-терминала
т.е. данные карт

14. Реальные кейсы 2019-2025

Кейс 3 — Operation Dream Job /
Lazarus
1.
Сообщение в LinkedIn: "Мы из крупной
компании, хотим вам предложить
позицию"
2. Отправляют "тестовое задание" — ZIP
архив с кодом
3. Разработчик открывает "проект" в IDE
4. Вредоносный код в проекте
запускается автоматически
5. DLL Sideloading — подмена
легитимной DLL вредоносной
6. Инъекция в легитимный процесс
7. Кража криптовалюты, исходных кодов,
секретов компании
Кейс 4 — Spectre v2
Это особенный кейс —исследователи из VU
Amsterdam нашли новый вектор Spectre прямо в
ядре Linux.
eBPF — механизм в Linux который позволяет запускать
небольшие программы прямо внутри ядра.
Используется для мониторинга, сетевых фильтров,
безопасности.
В чём проблема
eBPF программы компилируются JIT-компилятором —
прямо в рантайме превращаются в машинный код
внутри ядра. Исследователи обнаружили что этот
код содержит Spectre-гаджеты — паттерны
которые можно использовать для утечки памяти
ядра.

15. Кейс 5 — BlackLotus UEFI Bootkit

BlackLotus — первый публично задокументированный UEFI bootkit который обходил
Secure Boot в Windows 11. Это изменило всё представление о fileless атаках.
Что такое UEFI
UEFI — это программа которая запускается до операционной системы. Когда ты
нажимаешь кнопку питания — сначала работает UEFI, потом загружается Windows
или Linux.

16. Как защититься?

1. Обновляй систему и железо.
2. Не открывай документы с макросами от незнакомых
людей
3. Никогда не запускай чужой код на рабочей машине.
4. Используй разные браузеры для разных задач.

17. 01

Спасибо!
English     Русский Rules