January 21

Использование архитектуры компьютера в фишинговых цепочках. Часть 1

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

Статья получилась объемная, поэтому она будет разделена на две части:

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

Фишинговые цепочки обычно делятся на несколько этапов:

  1. Разведка
  2. Составление и выбор сценария
  3. Подготовка социалки
  4. Подготовка вредоноса
  5. Тестирование
  6. Осуществление сценария

Дальнейшие действия будут зависеть от успеха фишинга: если все успешно, то мы закрепляемся или быстро собираем данные и уходим, если провал, то анализируем возможные причины и пробуем другие варианты

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

Виды полезной нагрузки и малварей

Эксплойты для уязвимостей программного обеспечения

Сначала стоит посмотреть на общую концепцию создания эксплойтов под уязвимости разного ПО

Архитектурные аспекты

  • Процессорная архитектура
    • Эксплойт разрабатывается с учётом инструкции процессора (x86, x64, ARM). Например, 32-битный процесс не может напрямую работать с 64-битной адресацией.
    • Для процессоров с поддержкой SIMD (это single instruction, multiple data. то есть, одиночный поток команд и множественный поток данных. это позволяет обеспечивать параллелизм. SSE - это набор команд для процессоров, который был создан для обработки нескольких чисел одновременно, AVX - это более продвинутая версия SSE. Она позволяет процессору работать с большими объемами данных и выполнять более сложные операции) эксплойты могут использовать инструкции для ускорения выполнения вредоносного кода.
  • Память и адресация
    • Эксплойты используют доступ к физической и виртуальной памяти. Например, переполнение стека требует знания точного расположения буфера, которое может быть рандомизировано ASLR (механизм защиты, который меняет расположение важных частей программы (например, стека, кучи, библиотек) в памяти каждый раз при запуске программы). Например, без ASLR буфер всегда находится по адресу, например, 0x7ffd1a2b3c40. Поэтому мы спокойно можем узнать и эксплуатировать этот адрес. А вот с ASLR при каждом запуске программы адрес буфера будет меняться. Например:
      0x7ffe1c2d3e50 (первый запуск),
      0x7ffd1f3a2d60 (второй запуск),
      0x7ffc1e4b3f70 (третий запуск).
      Сейчас практически любые устройства имеют ASLR
    • Доступ к ядру через ring-0 (это кольца привилегий, ring-0 имеет максимальные права): многие эксплойты (например, kernel exploits) пытаются выйти за пределы пользовательского уровня (ring-3) и получить доступ к привилегированным ресурсам.
  • Операционные системы
    • ОС имеет собственные системные вызовы (syscalls), которые зависят от версии и архитектуры. Эксплойт должен учитывать эти особенности, иначе вызов приведёт к ошибке.

Способы защиты со стороны системы

Думаю, не стоит напоминать, что если мы знаем алгоритмы защиты, то нам проще будет придумать обходы.

  1. ASLR (Address Space Layout Randomization)
    • Об этом мы уже говорили выше
  2. DEP (Data Execution Prevention)
    • Защищает от выполнения кода в сегментах данных, например, в стеке. Как это происходит? DEP использует аппаратные возможности процессора, чтобы пометить некоторые области памяти как "недопустимые для выполнения кода".
      Это делается, например, с помощью флага "NX" (No eXecute) на процессорах x86/x64 или с помощью "Execute Never" на ARM.
  3. Control Flow Guard (CFG)
    • Следит за корректностью переходов между блоками кода, предотвращая использование ROP (Return-Oriented Programming). Когда программа компилируется с включенной поддержкой CFG, компилятор добавляет метаданные о "разрешенных" точках перехода в коде и создает специальную таблицу, где хранится информация о допустимых адресах переходов. И когда программа пытается выполнить косвенный переход (например, через указатель функции), CFG проверяет, находится ли адрес перехода в таблице допустимых адресов.
      Если переход недопустим, то программа прерывается
  4. Патчи уязвимостей
    • Здесь, я думаю, дополнительных объяснений не требуется

Как можно обойти вышеописанные методы защиты?

  1. Для обхода ASLR можно использовать утечки информации через вызовы, возвращающие адреса библиотек. Пример: чтение адресов через злоупотребление системными функциями.
  2. Для обхода CFG можно создавать ложные цепочки вызовов с использованием промежуточных библиотек.
  3. Для обхода DEP есть два варианта:
  • ROP (Return-Oriented Programming). За счет ROP можно использовать легитимные фрагменты кода для выполнения вредоносных действий.
  • JIT-спрей (Just-In-Time Spray) создаёт исполняемый код в памяти динамически.

2. Dropper

Основная цель дроппера заключается в доустановке и установке других вредоносных компонентов на целевую систему.

Архитектурные аспекты

  • Адаптация к системе:
    • Дроппер определяет архитектуру системы (32 или 64 бита) через вызов IsWow64Process или проверяет регистры CPUID для процессора. А далее загружает полезную нагрузку через powershell или bash
  • Загрузка полезной нагрузки:
    • Дроппер может использовать системные библиотеки (WinInet.dll, ws2_32.dll) для сетевых взаимодействий
    • Может сохранять вредоносный код в памяти, избегая записи на диск, а это затрудняет обнаружение
  • Маскировка:
    • Для дополнительной маскировки дроппер регистрируется как сервис или процесс с доверенным именем (например, svchost.exe, explorer.exe).

Способы защиты со стороны системы

  1. Поведенческий анализ
    • Современные антивирусы анализируют аномальную сетевую активность и загрузку всех файлов.
  2. Ограничение прав доступа
    • Ограничение выполнения неподписанных бинарных файлов с помощью, например, AppLocker.
  3. Мониторинг процессов
    • Системы EDR (Endpoint Detection and Response) фиксируют процессы, запускающие сетевые запросы или создающие новые файлы.

Обход защит

  1. Полиморфизм и шифрование
    • Дроппер может менять свою сигнатуру при каждом запуске, чтобы избежать обнаружения.
  2. Бесфайловая работа
    • Загрузка и выполнение кода осуществляется только в памяти, обходя анализ файловой системы.
  3. Использование доверенных процессов (тот же powershell или WMI)

3. Keylogger

Кейлоггеры записывают все действия пользователя в системе (движение мышкой, нажатие на клавиатуру и тд)

Архитектурные аспекты

  • Интерфейсы API
    • В Windows может использоваться функция SetWindowsHookEx для перехвата ввода с клавиатуры или функции GetAsyncKeyState для записи нажатий.
    • В Linux кейлоггер может взаимодействовать с устройствами через/dev/input.
  • Уровни доступа
    • Для пользовательского уровня (Ring-3) можно работать через API системы.
    • Для уровень ядра (Ring-0)необходимо внедряться в драйверы.
  • Маскировка
    • Как и дроппер, кейлоггер может быть внедрён в системные процессы, чтобы избежать обнаружения (например, explorer.exe).

Способы защиты со стороны системы

  1. Поведенческий анализ
    • Анализируют взаимодействие процессов с API клавиатуры.
  2. Ограничение прав приложений
    • Минимизация числа приложений с доступом к вводным устройствам.
  3. Аппаратные клавиатурные шифровальщики
    • Шифруют данные на уровне клавиатуры, делая их бесполезными для кейлоггера.

Обход защит

  1. Работа на уровне ядра
    • Внедрение драйверов с поддельными цифровыми подписями.
  2. Полиморфизм
    • Постоянное изменение кода для обхода анализа.
  3. Скрытие ввода
    • Использование легитимных API, например, внедрение в текстовые редакторы.

4. RAT

По сути, это троян удаленного доступа

Архитектурные аспекты

  • Сетевые соединения
    • Для маскировки трафика RAT может использовать протоколы HTTP/HTTPS, а для скрытия местоположения может работать через прокси или tor.
  • Автономная работа
    • RAT содержит функции для управления файлами, записи видео и снятия скриншотов.
    • Часто имеет поддержку нескольких ОС и нескольких браузерных движков.

Способы защиты со стороны системы

  1. Поведенческий анализ сетевых соединений
  2. Изоляция привилегий
    • Ограничьте права приложений, чтобы предотвратить выполнение вредоносных действий.
  3. Обновление приложений
    • RAT часто использует известные уязвимости, которые можно устранить патчами.

Обход защит

  1. Маскировка трафика (шифрование данных и использование легитимных портов)
  2. Обход анализа:
    • RAT может отключать антивирусы или песочницы при обнаружении, однако, это очень нетривиальная задача.

5. Ransomware

Это программа-вымогатель — блокирует доступ к данным или устройству данных (например, шифрует файлы) и требует выкуп для восстановления доступа.

Архитектурные аспекты

  • Криптография
    • Используются аппаратные инструкции AES-NI для ускорения шифрования.
    • Генерация ключей через PRNG (Pseudo-Random Number Generator), встроенные в процессор.
    • Некоторые рансомвары (например, DoppelPaymer, Maze) шифруют файлы дважды, используя разные ключи, чтобы усложнить процесс расшифровки, а также используют комбинации из симметричного и ассиметричного шифрования (например, RSA-2048 + AES-256)
  • Файловая система
    • Определяет целевые файлы на основе их расширений и типа
    • Рансомвар старается обходить системные файлы, чтобы сохранить работоспособность ОС.

Способы защиты со стороны системы

  1. Поведенческий анализ файловой активности
    • Антивирусы отслеживают массовые изменения файлов.
  2. Регулярное резервное копирование
    • Хранение копий файлов на изолированных носителях.
  3. Контроль доступа
    • Ограничение прав на изменение важных файлов.

Обход защит

  1. Удаление резервных копий
    • Уничтожение shadow-копий через команды vssadmin.
  2. Уход от детектирования
    • Медленное шифрование для обхода поведенческого анализа. Это делается для того, чтобы шифрование было более "незаметным", распределяя операции во времени и маскируя их под нормальную активность. Однако современные защитные решения начинают учитывать такие тактики, анализируя поведение в долгосрочной перспективе и используя машинное обучение для анализа.
  3. Шифрование резервных копий (имеются в виду целевые атаки на сервера резервного копирования)

6. Stealers

Тип вредоносного ПО, которое собирает конфиденциальную информацию: данные учетных записей, сохраненные пароли в браузерах и тд

Архитектурные аспекты

  • Браузеры
    • Стилеры взаимодействуют с API браузеров для извлечения сохранённых паролей и cookie-файлов.
    • Для браузеров на основе Chromium используются встроенные SQLite-базы.
    • Шифрование паролей в современных браузерах привязано к профилю пользователя и ключам ОС. Например, в Windows это API Data Protection (DPAPI).
  • Менеджеры паролей
    • Стилеры анализируют файловую структуру и извлекают зашифрованные хранилища паролей (например, KeePass, LastPass).
    • Часто используются утилиты дешифровки, разработанные для обхода встроенной защиты.
  • Мессенджеры
    • Общая суть, независимо от мессенджера: стилеры ищут локальные базы данных сессий и извлекают токены авторизации.
  • Файловая система
    • Стилер сканирует целевую файловую систему, ориентируясь на специфичные расширения файлов, такие как .txt, .docx, .pdf, или папки, где обычно хранятся конфиденциальные данные.
    • Используются функции API (например, FindFirstFile и FindNextFile в Windows) для рекурсивного обхода файловой структуры.
  • Процессы и память
    • Стилеру может потребоваться доступ к оперативной памяти для извлечения данных из активных процессов. Например, расшифровка паролей или токенов, которые хранятся временно в памяти. Для этого используются системные вызовы, такие как OpenProcess и ReadProcessMemory.
  • Архитектурные аспекты
    • Стилер проверяет архитектуру системы (32-битная или 64-битная) через IsWow64Process, чтобы избежать ошибок при взаимодействии с адресным пространством.

Сетевое взаимодействие

  • Отправка данных
    • Стилер использует сетевые библиотеки (например, WinHTTP, WinInet или libcurl в Linux) для отправки полученных данных на сервер атакующего. Часто данные шифруются перед отправкой для предотвращения анализа трафика (например, через алгоритмы AES или XOR).
  • Маскировка трафика (как у RAT)

Обход защит

  • Проверка окружения

Для этого стилеры проверяют, не выполняются ли они в виртуальной машине или песочнице. Это может быть сделано через:

      • Проверку MAC-адресов сетевых адаптеров (VMware, VirtualBox).
      • Поиск программ анализа, таких как Process Monitor или Wireshark.
      • Анализ особенностей окружения (например, наличие одного ядра процессора или отсутствие пользовательских файлов).
  • Шифрование и упаковка

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

  • Динамическая загрузка библиотек

Стилеры может динамически загружать системные библиотеки, такие как nss3.dll для доступа к SQLite-базам браузеров.

  • Работа в памяти

Стилер может не записываться на диск, а выполнять все действия в оперативной памяти, обходя антивирусы.

  • Маскировка активности

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

Способы защиты со стороны системы

  1. Поведенческий анализ
  2. Шифрование конфиденциальных данных
  3. Мониторинг файловой системы
  4. Защита памяти (например, Control Flow Guard)
  5. Фильтрация сетевого трафика:

7. Rootkits

Архитектурные аспекты

  • Уровни работы руткитов
    • Ring-3 (пользовательский уровень)
      • Руткиты работают как приложения, скрывают свои процессы и подменяют системные вызовы (например, через API-интерфейсы Windows или Linux).
    • Ring-0 (уровень ядра)
      • Руткиты внедряются в ядро ОС, модифицируя таблицу системных вызовов (SSDT) или функции драйверов. Это даёт полный контроль над системой.
    • Аппаратный уровень
      • Руткиты, работающие на уровне прошивки, скрываются от операционной системы. Например, загружаются до операционной системы или модифицируют таблицы прерываний (IDT), таблицы вызовов (SSDT) или UEFI драйверы для перехвата запросов от ОС к аппаратному обеспечению.

Способы защиты со стороны системы

  1. Secure Boot (предотвращает запуск неподписанных модулей ядра или изменённого кода прошивки)
  2. Песочницы
  3. Мониторинг целостности ядра
    • Использование HIPS (Host Intrusion Prevention Systems) для отслеживания модификаций ядра.

Обход защит

  1. Обход Secure Boot
    • Использование уязвимостей в прошивке UEFI для отключения защиты.
  2. Обход мониторинга целостности
    • Руткиты внедряются до загрузки системы, обходя защитные механизмы.
  3. Аппаратная маскировка
    • Руткиты скрывают своё присутствие на уровне аппаратного обеспечения за счет изменённой прошивки.

8. Backdoors (Бэкдоры)

Архитектурные аспекты

  • Методы работы
    • Сетевые бэкдоры
      • Открывают скрытые порты на устройстве и предоставляют атакующему доступ через протоколы TCP или UDP.
    • Kernel - бэкдоры
      • Внедряются в системные модули, например, в сетевые драйверы, и обрабатывают входящие соединения без уведомления ОС.
    • Программные бэкдоры
      • Интегрируются в приложения, добавляя скрытые учётные записи или команды.
  • Маскировка:
    • Бэкдоры часто маскируются под легитимные процессы (например, svchost.exe) и используют шифрование для обмена данными. Ничего нового.

Способы защиты со стороны системы

  1. Поведенческий анализ сетевого трафика
  2. Патчинг
  3. Ограничение прав доступа

Тоже ничего нового.

Обход защит

  1. Маскировка трафика
  2. Встроенные инструменты ОС (powershell или WMI)
  3. Шифрование данных

9. Трояны

Архитектурные аспекты

  • Методы работы
    • Загрузка полезной нагрузки
      • Трояны скачивают и запускают вредоносные файлы, используя, например, curl, wget или PowerShell.
    • Маскировка
      • Трояны могут внедряться в легитимные файлы (например, PDF или Word-документы).
    • Управление
      • Трояны могут быть привязаны к командным серверам для получения инструкций.
  • Исследование системы и адаптация

Способы защиты со стороны системы

  1. Сигнатурный, поведенческий и эвристический анализ
  2. Изоляция приложений

Обход защит

  1. Полиморфизм
  2. Бесфайловая работа
  3. Обход антивирусов

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

Как может эксплуатироваться архитектура

Эксплуатация уязвимостей процессора на примере Spectre, Meltdown

Общая суть

Несмотря на то, что уязвимости Spectre и Meltdown были освещены где только можно, они все равно являются показательными примерами, так как основаны на архитектурных особенностях современных процессоров, которые используют спекулятивное исполнение (speculative execution) для повышения производительности.

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

1. Уязвимость Spectre

Spectre использует спекулятивное исполнение для обмана процессора, заставляя его выполнить инструкции, которые приводят к утечке конфиденциальных данных через побочные каналы, например, через кэш-память. Он использует Branch Target Injection (BTI) или Bounds Check Bypass (BCB).

Основная цель — обход изоляции памяти между процессами.

  • Механизм работы
    1. Спекулятивное выполнение недопустимой ветки
      • Атакующий заставляет процессор спекулятивно выполнять инструкции, основанные на заведомо ложном предположении (например, через манипуляции с ветвлением if). Что вообще это значит? Атакующий использует ветвление с условием, которое он контролирует. Процессор "ошибочно" выполняет недопустимую ветку из-за предсказателя ветвлений. В недопустимой ветке процессор может косвенно загрузить защищенные данные в кэш, даже если позже выполнение будет отменено.
    2. Кэширование данных
      • Хотя результаты выполнения инструкций будут отменены после обнаружения ошибки, изменения в кэше сохраняются.
    3. Извлечение данных через кэш
      • Атакующий измеряет время доступа к кэш-памяти (с использованием timing attacks), чтобы определить, какие данные были спекулятивно загружены.

2. Уязвимость Meltdown

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

Meltdown эксплуатирует Out-of-Order Execution — механизм процессора, который позволяет выполнять инструкции в произвольном порядке для оптимизации.

Упущение здесь следующее: проверки доступа к памяти выполняются после обращения к памяти.

  • Механизм работы
    1. Доступ к памяти ядра
      • Атакующий выполняет инструкции, которые обращаются к защищённой памяти ядра.
    2. Спекулятивное выполнение
      • Процессор выполняет доступ к памяти до проверки прав доступа.
    3. Утечка через кэш
      • Данные из защищённой области памяти остаются в кэше, откуда их можно извлечь с помощью анализа времени доступа.

Способы защиты

  1. Изоляция памяти ядра (KPTI)
    • Для защиты от Meltdown операционные системы внедрили механизм Kernel Page-Table Isolation, который изолирует таблицы страниц ядра от пользовательских процессов.
  2. Retpolines
    • Механизм защиты от Spectre, который предотвращает использование спекулятивного перехода в ветвление.
  3. Программные и аппаратные патчи

Обход защит

Выбор немного скудный

  1. Атаки на неподдерживаемые системы
    • Атакующие нацеливаются на устаревшие системы, которые не получили обновлений.
  2. Модификации атаки
    • Новые вариации Spectre и Meltdown (например, Spectre V4, ZombieLoad) адаптируются к защитным механизмам.

Использование особенностей памяти и кэширования для оптимизации атак

Современные процессоры используют многоуровневую кэш-память (L1, L2, L3) для ускорения доступа к данным. Кэширование, хотя и увеличивает производительность, создаёт побочные каналы, которые атакующий может использовать для извлечения конфиденциальной информации.

1. Использование побочных каналов на основе кэша

Кэш-память хранит часто используемые данные, чтобы ускорить доступ к ним. Атакующий использует время доступа к кэшу для определения содержимого памяти. Ниже будут приведены не все атаки, лишь примеры с коротким описанием. Если вы хотите узнать об этом подробнее, то вам стоит прочитать данную статью на Хакере.

  • Механизм атак
    1. Flush+Reload
      • Атакующий очищает строку кэша с помощью команды CLFLUSH.
      • Когда таргет обращается к очищенному адресу, данные загружаются обратно в кэш.
      • Атакующий измеряет время доступа к адресу: быстрый доступ указывает на то, что данные были загружены таргетом.
    2. Prime+Probe
      • Атакующий заполняет кэш своими данными.
      • Таргет выполняет свои операции, вытесняя часть данных атакующего из кэша.
      • Атакующий измеряет время доступа к своим данным, чтобы понять, какие линии кэша были использованы таргетом.
    3. Evict+Reload
      • Похож на Flush+Reload, но вместо команды CLFLUSH просто используется вытеснение данных через доступ к другим адресам.

2. Использование виртуальной памяти

Атакующий использует механизмы перевода виртуальных адресов в физические для анализа памяти.

Хорошим примером может служить атака через TLB (Translation Lookaside Buffer, это кэш для хранения соответствия виртуальных и физических адресов)

Принцип тот же: время доступа к памяти позволяет определить, какие страницы памяти используются таргетом.

3. Системные вызовы и побочные каналы

Принцип повторяется: используется анализ времени.

  • Атаки через системные вызовы
    • Атакующий анализирует время выполнения системных вызовов (например, read, write) для извлечения информации о состоянии системы. Например, время отклика может указать, находится ли нужная информация в кэше или памяти.
  • Профилирование инструкций
    • Некоторые процессоры оптимизируют определённые инструкции (например, REP MOVS), которые можно использовать для анализа операций чтения/записи.

Способы защиты

  1. Изоляция процессов
    • Разделение кэша для разных процессов, чтобы предотвратить вытеснение данных.
    • Использование технологии Intel CAT (Cache Allocation Technology) для управления доступом к кэшу.
  2. Рандомизация кэша (изменение логики работы)
  3. Ограничение высокоточных таймеров
    • Некоторые атаки зависят от точного измерения времени, поэтому операционные системы могут ограничивать доступ к высокоточным таймерам.

Обход защит

  1. Атаки через аппаратные таймеры
    • Атакующий использует таймеры в аппаратных компонентах, например, в сетевых картах, для измерения времени доступа.
  2. Многопоточность
    • Одновременное выполнение вредоносного кода и легитимного кода в соседних потоках позволяет обойти изоляцию.
  3. Кросс-кэш атаки
    • Атаки, использующие общий L3-кэш между ядрами процессора, обходят изоляцию на уровне L1 и L2.

Работа с системным ПО и аппаратными интерфейсами для контроля и скрытности

При фишинге есть основные задачи: получить максимальный контроль над системой и оставаться незамеченным. Для этого можно взаимодействовать с системным ПО и аппаратными интерфейсами

1. Работа с системными вызовами

  • Захват системных вызовов
    • Используется подмена таблицы системных вызовов (System Service Descriptor Table, SSDT) в Windows.
    • Например, атакующий заменяет вызов NtQueryDirectoryFile так, чтобы скрывать определённые файлы или процессы.
    • В Linux системные вызовы можно захватывать через модификацию таблицы syscall_table.
  • Хуки в пользовательском пространстве (User-Mode Hooks)
    • Атакующий модифицирует API функции, такие как ReadFile, WriteFile или FindFirstFile, для изменения поведения приложений, которые могут скрывать файлы, сетевые соединения и тд.

2. Взаимодействие с драйверами и ядром ОС

  • Уровень ядра (Ring-0)
    • Атакующий внедряет драйверы, которые имеют привилегированный доступ к системе. Это позволяет перехватывать сетевые пакеты, манипулировать памятью и изменять поведение ядра. Пример: установка фильтров на сетевые адаптеры через NDIS (Network Driver Interface Specification).
    • В Windows драйверы используют функции, такие как ZwQuerySystemInformation, чтобы получить информацию о процессах и памяти.
    • В Linux драйверы взаимодействуют с ядром через интерфейсы /proc или /dev.
  • Аппаратно-зависимые драйверы (HAL)
    • Атакующий может внедряться в Hardware Abstraction Layer (HAL), чтобы получить доступ к аппаратным ресурсам, таким как процессоры, память и устройства ввода-вывода.

3. Работа с аппаратными интерфейсами

  • Использование BIOS/UEFI
    • Атакующий внедряет вредоносный код в прошивку BIOS или UEFI, чтобы сохранить контроль над системой даже после переустановки ОС.
    • Например, вредоносное ПО Lojax заражает прошивку UEFI и перезапускается при каждом включении компьютера.
  • Контроль через DMA (Direct Memory Access)
    • Интерфейсы, такие как Thunderbolt или PCI Express, позволяют обходить защиту памяти, используя прямой доступ к оперативной памяти.
    • DMA-атаки могут перехватывать данные из памяти без участия операционной системы.
  • Аппаратные руткиты могут использовать микроконтроллеры для внедрения вредоносного кода в периферийные устройства (например, сетевые карты, клавиатуры)

4. Методы скрытности

  • Сохранение вредоносного кода в кэшированных данных процессора или драйверов
  • Обход антивирусов с помощью драйвером с поддельными цифровыми подписями
  • Шифрование данных

Способы защиты

  1. Цифровая подпись драйверов
    • Windows требует, чтобы все драйверы имели цифровую подпись. Это затрудняет установку нелегитимных модулей. При этом, никто не запрещает использовать легитимные драйвера с уязвимостями, которые можно проэксплуатировать.
  2. Мониторинг ядра
    • Использование инструментов, таких как Windows Defender Credential Guard или Hyper-V, для контроля модификаций ядра.
  3. UEFI Secure Boot
    • Защищает систему от изменений прошивки и запуска неподписанного кода. Обход может осуществляться через подмену ключей безопасности.

Спасибо за внимание, до встречи во второй части :)