«Упорство — это не просто технический приём атаки, это философия противника, который перестаёт быть гостем и становится постоянным жильцом. Он не просто крадёт ключи, он меняет замки, оставляет своих людей в охране, а иногда и подменяет фундамент здания, чтобы вернуться в любой момент — даже если все двери будут заперты.»
Упорство: суть и цель
В контексте кибербезопасности упорство (persistence) — это способность злоумышленника сохранять контроль над скомпрометированной системой после перезагрузки, завершения сеанса пользователя или попыток администратора очистить систему. Это не одно действие, а комплекс методов, направленных на обеспечение повторного доступа. Цель — превратить случайный успех в долгосрочное присутствие, закрепиться в инфраструктуре как можно глубже и незаметнее.
Механизмы упорства работают на разных уровнях: от прав приложений и реестра Windows до служб, планировщика задач, ассоциаций файлов и даже микропрограммного обеспечения. Часто эти методы используются в связке, создавая многоуровневую и отказоустойчивую систему контроля.
Ключевые векторы атак и механизмы упорства
Способы достижения упорства можно классифицировать по уровню воздействия и требуемым привилегиям.
Уровень операционной системы и автозагрузки
Самый распространённый слой для закрепления — использование механизмов автозапуска операционной системы.
- Ключи автозагрузки реестра: Злоумышленник добавляет запись о своём исполняемом файле в один из ключей реестра, отвечающих за запуск при входе в систему (например,
HKCUSoftwareMicrosoftWindowsCurrentVersionRun). Это позволяет вредоносной программе запускаться автоматически при каждом входе пользователя. - Папки автозапуска: Размещение ярлыка (
.lnk) или исполняемого файла в специальных каталогах, таких как%APPDATA%MicrosoftWindowsStart MenuProgramsStartup. - Службы Windows: Создание новой или модификация существующей службы для запуска вредоносной полезной нагрузки с правами SYSTEM. Это один из самых живучих методов.
- Запланированные задачи: Использование планировщика задач Windows (
schtasks) или утилитыatдля периодического или отложенного выполнения кода.
Уровень приложений и пользовательского окружения
Противник стремится встроиться в легитимные процессы и приложения, чтобы не выделяться.
- Расширения браузеров: Установка вредоносных расширений для перехвата сессий, кражи cookie и сохранения доступа к веб-приложениям.
- Модификация двоичных файлов: Подмена или изменение легитимных исполняемых файлов (например, SSH-клиентов, системных утилит).
- Ассоциации файлов: Изменение записей в реестре, отвечающих за открытие файлов с определённым расширением, чтобы запускать вредоносный код при открытии, например,
.txtили.docфайла. - Профили и скрипты: Внедрение в скрипты входа (logon scripts) или профили PowerShell (
profile.ps1), которые выполняются при старте сеанса пользователя.
Уровень аутентификации и учётных записей
Здесь упорство достигается через контроль над самим процессом проверки подлинности.
- Создание учётных записей: Добавление локальных или доменных учётных записей (например, с помощью
net user), включая скрытые или маскирующиеся под системные. - Модификация SSH-ключей: Добавление своего открытого ключа в файл
~/.ssh/authorized_keysна Linux-сервере для беспарольного доступа. - Регистрация устройств для MFA: Привязка контролируемого устройства (например, телефона) к учётной записи жертвы в системах многофакторной аутентификации для обхода этого фактора.
- Внедрение в LSA (Local Security Authority): Использование пакетов аутентификации (Authentication Packages), поставщиков поддержки безопасности (SSP) или фильтров паролей для перехвата и подмены учётных данных в памяти.
Низкоуровневое упорство (Bootkit, Firmware)
Самые сложные для обнаружения и удаления методы работают ниже уровня ОС.
- Модификация UEFI/BIOS: Внедрение вредоносного кода в микропрограммное обеспечение материнской платы. Такой код активируется до загрузки операционной системы и может пережить даже полную переустановку ОС.
- Буткиты: Внедрение в загрузочный сектор (MBR) или в ранние этапы загрузки ОС.
- Злоупотребление сетевыми загрузками (PXE): Подмена образа ОС, загружаемого сетевым устройством с TFTP-сервера.
Методы обнаружения и защиты
Борьба с упорством требует многослойного подхода: от базовой гигиены до продвинутого мониторинга.
Профилактические меры
- Принцип наименьших привилегий: Жёсткое ограничение прав учётных записён, особенно локальных администраторов и учётных записей служб. Запрет на использование привилегированных учётных записей для повседневных задач.
- Многофакторная аутентификация (MFA): Обязательное использование MFA для всех привилегированных и пользовательских учётных записей, особенно для доступа к критическим системам и облачным сервисам. Это сильно усложняет использование украденных учётных данных.
- Контроль установки ПО: Запрет на установку неподписанных драйверов, использование списков блокировки уязвимых драйверов (Vulnerable Driver Blocklist). Включение функций типа Protected Process Light (PPL) для процесса LSA (
lsass.exe). - Блокировка ненужных механизмов: Отключение SSH на серверах, где он не требуется, запрет на выполнение скриптов из непроверенных мест, отключение устаревших протоколов и служб (например, утилиты
atв пользуschtasksс аудитом).
Активный мониторинг и обнаружение
- Аудит автозагрузки: Регулярная проверка ключей реестра автозапуска, папок Startup, служб и запланированных задач с помощью инструментов вроде Sysinternals Autoruns. Сравнение с известным базовым состоянием системы.
- Мониторинг создания учётных записей: Настройка оповещений на создание любых новых локальных или доменных учётных записей, особенно в нерабочее время или с подозрительными именами.
- Контроль целостности файлов: Проверка цифровых подписей системных и прикладных двоичных файлов. Мониторинг изменений в критически важных файлах, таких как
authorized_keysили библиотеки вSystem32. - Анализ сетевой активности: Выявление аномальных исходящих подключений, особенно использующих нестандартные порты или протоколы (например, BITS для скрытой передачи данных).
- Ведение журналов и SIEM: Централизованный сбор и анализ логов с хостов, контроллеров домена, сетевого оборудования. Поиск корреляционных правил, связывающих подозрительный вход в систему с последующим изменением реестра или созданием службы.
Ответ на инцидент: удаление упорства
Когда факт закрепления обнаружен, простого удаления вредоносного файла недостаточно. Необходимо:
- Полная изоляция системы от сети для предотвращения дальнейшего воздействия и связи с командным центром.
- Тщательный анализ всех механизмов автозагрузки с помощью заведомо чистых инструментов, запущенных с внешнего носителя. Поиск должен охватывать все перечисленные уровни: реестр, службы, задачи, расширения, LSA.
- Проверка и сброс учётных записей: Аудит всех учётных записей, особенно недавно созданных или с изменёнными правами. Сброс паролей для привилегированных учётных записей и ключей SSH.
- Восстановление из чистого бэкапа — самый надёжный способ, при условии что бэкап гарантированно не содержит следов компрометации. В случае подозрений на модификацию микропрограммного обеспечения может потребоваться физическая замена или перепрошивка оборудования.
Упорство — это та стадия атаки, где инцидент перерастает в хроническую проблему. Понимание его механизмов — это не просто изучение списка уязвимостей, а изучение архитектурных слабостей операционных систем и приложений. Защита строится не на закрытии одной конкретной лазейки, а на системном подходе, где жёсткий контроль, постоянный мониторинг и готовность к полному восстановлению становятся критически важными практиками.