Process hollowing что это
Маскировка запуска процесса с Process Doppelganging
На конференции BlackHat Europe 2017 был представлен доклад о новой технике запуска процессов под названием Process Doppelganging. Создатели вирусов быстро взяли технику Process Doppelganging на вооружение, и уже есть несколько вариантов малвари, которая ее эксплуатирует. Я расскажу про принцип работы техники скрытия запуска процессов Process Doppelganging и на какие системные механизмы он опирается. Кроме этого мы создадим маленький загрузчик, который покажет вам запуск одного процесса под видом другого.
Маскировка запуска процесса
Техника маскировки процессов Process Doppelganging чем-то похожа на своего предшественника — Process Hollowing, но отличается механизмами запуска приложения и взаимодействия с загрузчиком операционной системы. Кроме того, в новой технике применяются механизм транзакций NTFS и соответствующие WinAPI, например CreateTransaction, CommitTransaction, CreateFileTransacted и RollbackTransaction, которые, разумеется, не используются в Process Hollowing.
Это одновременно мощная и слабая сторона новой техники сокрытия процессов. С одной стороны, создатели антивирусов и других защищающих программ не были подготовлены к тому, что для запуска вредоносного кода станут применены WinAPI, отвечающие за транзакции NTFS. С другой стороны, после доклада на BlackHat эти WinAPI мгновенно угодят под подозрение, если будут попадаться в исполняемом коде. И неудивительно: это редкие системные вызовы, которые фактически не используются в обычном софте. Естественно, существует несколько методов позволяющих скрыть вызовы WinAPI, но это уже совсем другая история, а сейчас мы имеем хороший концепт, который можно совершенствовать.
Process Doppelganging и Process Hollowing
Широко распространенная в узких кругах техника запуска исполняемого кода Process Hollowing заключается в подмене кода приостановленного легитимного процесса вредоносным кодом и последующем его выполнении. Вот общий план действий при Process Hollowing.
По сути, мы вручную изменяем работу загрузчика ОС и совершаем за него часть работы, заодно подменяя код в памяти.
В свою очередь, для реализации техники Process Doppelganging нам необходимо проделать следующие шаги.
Вообще, методика транзакций NTFS(TxF) появилась в Windows Vista на уровне драйвера NTFS и осталась во всех последующих операционках этого семейства. Эта метод призван помочь совершать всевозможные операции в файловой системе NTFS. Кроме того он периодически используется при работе с базами данных.
Операции TxF считаются атомарными — пока происходит работа с транзакцией (и связанными с ней файлами) до ее закрытия или отката, она не видна никому. И если будет откат, то операция ничего не изменит на жестком диске. Транзакцию можно создать с помощью функции CreateTransaction с нулевыми параметрами, а последний параметр — название транзакции. Вот пример как выглядит прототип.
Изучаем Adversarial Tactics, Techniques & Common Knowledge (ATT@CK). Enterprise Tactics. Часть 5
В разделе «Обход защиты» описываются техники, с помощью которых злоумышленник может скрыть вредоносную активность и предотвратить своё обнаружение средствами защиты. Различные вариации техник из других разделов цепочки атаки, которые помогают преодолеть специфические средства защиты и превентивные меры, предпринятые защищающейся стороной, включены в техники обхода защиты. В свою очередь, техники обхода защиты применяются во всех фазах атаки.
Автор не несет ответственности за возможные последствия применения изложенной в статье информации, а также просит прощения за возможные неточности, допущенные в некоторых формулировках и терминах. Публикуемая информация является свободным пересказом содержания MITRE ATT&CK.
Манипулирование маркерами доступа (Access Token Manipulation)
Система: Windows
Права: Пользователь, администратор
Описание: Злоумышленники могут использовать маркеры доступа (Access Token), чтобы совершать свои действия в различных пользовательских или системных контекстах безопасности, таким образом, избегая обнаружения вредоносной активности. Противник может использовать функции Windows API для копирования маркеров доступа из существующих процессов (Token stealing), для этого он должен находиться в контексте привилегированного пользователя (например, администратора). Кража маркеров доступа обычно используется для повышения привилегий с уровня администратора до уровня System. Противник также может использовать маркер доступа учетной записи для аутентификации в удаленной системе, если у этой учетной записи есть нужные разрешения в удаленной системе. Существует три основных способа злоупотребления маркерами доступа.
Кража и олицетворение токенов.
Олицетворение токенов — это способность ОС запускать потоки в контексте безопасности, отличном от контекста процесса, которому принадлежит этот поток. Другими словами, олицетворение токенов позволяет совершать какие-либо действия от имени другого пользователя. Противник может создать дубликат маркера доступа с помощью функции DuplicateTokenEX и использовать ImpersonateLoggedOnUser, чтобы вызвать поток в контексте залогиненного пользователя или использовать SetThreadToken, чтобы назначить маркер доступа в поток.
Создание процесса с помощью маркера доступа.
Злоумышленник может создавать маркер доступа с помощью функции DuplicateTokenEX и далее использовать его с CreateProcessWithTokenW для создания нового процесса, работающего в контексте олицетворяемого пользователя.
Получение и олицетворение маркеров доступа.
Противник, имея логин и пароль пользователя, может создать сеанс входа в систему с помощью API-функции LogonUser, которая вернёт копию сессионного маркера доступа нового сеанса, и далее, с помощью функции SetThreadToken, назначить полученный маркер потоку.
Metasploit Meterpreter и CobaltStrike имеют инструментарий для манипуляций с маркерами доступа с целью повышения привилегий.
Рекомендации по защите: Чтобы в полной мере использовать вышеописанную тактику злоумышленник должен обладать правами администратора системы, поэтому не забывайте ограничивать привилегии обычных пользователей. Любой пользователь может обмануть маркеры доступа если у него есть легитимные учетные данные. Ограничьте возможность создания пользователями и группами маркеров доступа:
GPO: Computer Configuration > [Policies] > Windows Settings > Security Settings > Local Policies > User Rights Assignment: Create a token object.
Так же определите, кто может заменять маркеры процессов локальных или сетевых служб:
GPO: Computer Configuration > [Policies] > Windows Settings > Security Settings > Local Policies > User Rights Assignment: Replace a process level token.
Создание заданий BITS (BITS Jobs)
Система: Windows
Права: Пользователь, Администратор, System
Описание: Windows Background Intelligent Transfer Service (BITS) — это механизм асинхронной передачи файлов через Component Object Model (COM) с использованием низкой пропускной способности. BITS обычно используется программами обновления, мессенджерами и другими приложениями, предпочитающими работать в фоновом режиме без прерывания работы других сетевых приложений. Задачи по передаче файлов представляются как BITS-задания, которые содержат очередь из одной или нескольких операций с файлами. Интерфейс для создания и управления BITS-заданиями доступен в PowerShell и BITSAdmin tool. Злоумышленники могут использовать BITS для загрузки, запуска и последующей очистки после выполнения вредоносного кода. BITS-задания автономно хранятся в базе данных BITS, при этом в системе не создаются новые файлы или записи в реестре, зачастую BITS разрешен брандмауэром. С помощью BITS-заданий можно закрепиться в системе, создавая длительные задания (по умолчанию 90 дней) или вызывая произвольную программу после завершения BITS-задания или ошибки (в том числе после перезагрузки ОС).
Рекомендации по защите: BITS — стандартный функционал ОС, использование которого трудно отличить от вредоносной активности, поэтому вектор защиты нужно направлять на предотвращение запуска инструментов злоумышленника в начале цепочки атаки. Полное отключение BITS может привести к прекращению обновления законного ПО, однако можно рассмотреть возможность ограничения доступа к интерфейсу BITS для конкретных пользователей и групп доступа, так же можно ограничить время жизни BITS-заданий, которое задается с помощью изменения следующих ключей:
Набивка бинарников данными (Binary Padding)
Система: Windows, Linux, macOS
Описание: Некоторые средства безопасности выполняют сканирование файлов путём поиска статических сигнатур. Противники могут добавлять данные во вредоносные файлы, чтобы увеличить их объем до значения превышающего максимально допустимый размер сканируемого файла или изменять хэш файла, чтобы обойти черные списки блокировки запуска файлов по хэшам.
Рекомендации по защите: Обеспечьте идентификацию потенциально-опасного ПО путем применения таких средств как AppLocker, whitelisting-инструментов и политик ограничения ПО.
Обход контроля учетных записей (Bypass User Account Control)
Система: Windows
Права: Пользователь, администратор
Описание: Известно множество способов обхода UAC, самые распространенные из которых реализованы в проекте UACMe. Регулярно обнаруживаются новые способы обхода UAC, подобные злоупотреблению системным приложением eventvwr.exe, которое может выполнить бинарный файл или скрипт с повышенными правами. Вредоносные программы также могут быть внедрены в доверенные процессы, которым UAC разрешает повышение привилегий не запрашивая пользователя.
Для обхода UAC с помощью eventvwr.exe в реестре Windows модифицируется ключ:
[HKEY_CURRENT_USER]\Software\Classes\mscfile\shell \open\command.
Для обхода UAC с помощью sdclt.exe в реестре Windows модифицируются ключи:
[HKEY_CURRENT_USER]\Software\Microsoft\Windows\CurrentVersion\App Paths\control.exe;
[HKEY_CURRENT_USER]\Software\Classes\exefile\shell\runas\command\isolatedCommand.
Рекомендации по защите: Удаляйте пользователей из локальной группы администраторов в защищаемых системах. По возможности включите в параметрах UAC наивысший уровень защиты.
CMSTP (AppLocker ByPass — CMSTP)
Система: Windows
Права: Пользователь
Описание: Microsoft Connection Manager Profile Installer (cmstp.exe) — это встроенная в Windows утилита «Установщик профилей диспетчера подключений». Cmstp.exe может принимать в качестве параметра inf-файл, поэтому злоумышленник может подготовить специальный вредоносный INF для загрузки и выполнения DLL или скриптлетов (*.sct) с удаленных серверов в обход AppLocker и других блокировок, поскольку cmstp.exe подписан цифровым сертификатом Microsoft.
Рекомендации по защите: Блокирование запуска потенциально-опасных приложений. Мониторинг или полное блокирование запусков C:\Windows\System32\cmstp.exe.
Очистка истории команд (Clear Command History)
/.bash_history. Файл с историей команд может также содержать и пароли, введенные пользователем открытым текстом. Злоумышленники могут как искать пароли в файлах истории команд, так и применять меры по предотвращению записи в историю команд своей вредоносной активности, например:
Рекомендации по защите: Предотвращение возможности удаления или записи пользователями файлов bash_history может помешать противнику злоупотреблять этими файлами, кроме того, ограничение прав пользователей на редактирование переменных HISTFILE и HISTFILESIZE обеспечит сохранение журнала выполнения команд.
Подписание кода (Code Signing)
Система: Windows, macOS
Описание: Цифровая подпись кода обеспечивает аутентификацию разработчика и гарантию того, что файл не был изменён. Тем не менее, как известно, противники могут использовать подписи для маскировки вредоносного ПО под легитимные двоичные файлы. Сертификаты для цифровой подписи могут быть созданы, подделаны или украдены злоумышленником. Подписание кода для проверки ПО при первом запуске используется в ОС Windows, macOS, OS X и не используется в Linux из-за децентрализованной структуры платформы. Сертификаты подписи кода могут использоваться для обхода политик безопасности, которые требуют, чтобы в системе выполнялся только подписанный код.
Рекомендации по защите: Применение «белых списков» ПО и выбор надежных издателей ПО до проверки цифровой подписи могут предотвратить выполнение вредоносного или ненадежного кода в защищаемой системе.
Прошивка компонентов (Component Firmware)
Система: Windows
Права: System
Описание: Некоторые злоумышленники могут применять сложные средства для компрометации компонентов компьютера и установки на них вредоносной прошивки, которая будет запускать вредоносный код вне операционной системы или даже главной системной прошивки (Bios). Техника заключается в прошивке компонентов компьютера, которые не имеют встроенной системы проверки целостности, например, жестких дисков. Устройство с вредоносной прошивкой может обеспечивать постоянный доступ к атакуемой системе несмотря на сбои и перезапись жесткого диска. Техника рассчитана на преодоление программной защиты и контроля целостности.
Перехват ссылок и связей COM (Component Object Model Hijacking)
Система: Windows
Права: Пользователь
Описание: Microsoft Component Object Model (COM) — это технология создания ПО на основе взаимодействующих компонентов объекта, каждый из которых может использоваться во многих программах одновременно. Злоумышленники могут использовать COM для вставки вредоносного кода, который может быть выполнен вместо легитимного через захват COM-ссылок и связей. Для перехвата COM-объекта необходимо заменить в реестре Windows ссылку на легитимный системный компонент. При дальнейшем вызове этого компонента будет выполняться вредоносный код.
Рекомендации по защите: Превентивные меры предотвращения данной атаки не рекомендуются, поскольку COM-объекты являются частью ОС и установленного в системе ПО. Блокировка изменений COM-объектов может влиять на стабильность работы ОС и ПО. Вектор защиты рекомендуется направить на блокирование вредоносного и потенциально-опасного ПО.
Элементы панели управления (Windows Control Panel Items)
Система: Windows
Права: Пользователь, администратор, System
Описание: Тактика заключается в использовании злоумышленниками элементов панели управления Windows для выполнения в качестве полезной нагрузки произвольных команд (например, вирус Reaver). Вредоносные объекты могут быть замаскированы под стандартные элементы управления и доставлены в систему с помощью фишинговых вложений. Служебные программы для просмотра и настройки параметров Windows представляют собой зарегистрированные exe-файлы и CPL-файлы элементов панели управления Windows. CPL-файлы фактически являются переименованными DLL-библиотеками, которые можно запускать следующими способами:
Сведения о других CPL, например, отображаемое имя и путь к cpl-файлу хранятся в подразделах «Cpls» и «Extended Properties» раздела:
Некоторые CPL, запускаемые через командную оболочку, зарегистрированы в разделе:
Рекомендация по защите: Ограничение запуска и хранения файлов элементов панели управления только в защищенных папках (например, C:\Windows\System32), включение контроля учетных записей (UAC) и AppLocker для предотвращения несанкционированных изменений в системе. Само собой, применение антивирусного ПО.
DCShadow
Система: Windows
Права: Администратор
Описание: DCShadow предполагает создание в атакуемой сети поддельного контроллера домена с помощью которого, используя для взаимодействия с атакуемым КД функционал API, злоумышленник может изменить данные AD, включая изменения любого объекта домена, учетные данные и ключи оставаясь незамеченным для SIEM-систем. Инструментарий для реализации атаки входит в состав mimikatz. DCShadow может использоваться для выполнения атаки SID-History injection и для создания бэкдоров с целью дальнейшего закрепления в системе.
Рекомендации по защите: Учитывая, что техника DCShadow основана на злоупотреблении конструктивными особенностями AD, вектор защиты необходимо направлять на недопущение запуска инструментов реализации атаки. Обнаружить атаку можно путём анализа сетевого трафика репликации КД, которая выполняется каждые 15 минут, но может быть вызвана злоумышленником вне расписания.
Перехват поиска DLL (DLL Search Order Hijacking)
Система: Windows
Права: Пользователь, Администратор, System
Описание: Техника заключается в эксплуатации уязвимостей алгоритма поиска приложениями файлов DLL, необходимых им для работы (MSA2269637). Зачастую директорией поиска DLL является рабочий каталог программы, поэтому злоумышленники могут подменять исходную DLL на вредоносную с тем же именем файла.
Рекомендации по защите: Запрет удаленной загрузки DLL (включено по умолчанию в Windows Server 2012+ и доступно с обновлениями для XP+ и Server 2003+). Включение безопасного режима поиска DLL, который ограничит каталоги поиска директориями типа %SYSTEMROOT% до выполнения поиска DLL в текущей директории приложения.
Включение режима безопасного поиска DLL:
Computer Configuration > [Policies] > Administrative Templates > MSS (Legacy): MSS: (SafeDllSearchMode) Enable Safe DLL search mode.
Соответствующий ключ реестра:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\SafeDLLSearchMode.
Рассмотрите целесообразность аудита защищаемой системы для устранения недостатков DLL с помощью таких инструментов как модуль PowerUP в PowerSploit. Не забывайте про блокировку вредоносного и потенциально-опасного ПО, а так же выполнение рекомендаций Microsoft.
Боковая загрузка DLL (DLL Side-Loading)
Система: Windows
Описание: Атака основывается на уязвимостях технологии параллельного выполнения Side-by-Side (WinSxS или SxS), суть которой заключается в обеспечении возможности выполнения приложений использующих несовместимые версии одних и тех же компонентов кода. Хранилище сборок компонентов расположено в папке c:\windows\winsxs. Каждая сборка должна иметь связанный с ней манифест — xml-файл, содержащий сведения о файлах, классах, интерфейсах, библиотеках и других элементах сборки. Подобно техникам захвата поиска DLL, противники могут спровоцировать пользовательское приложение на «боковую» загрузку вредоносной DLL, путь к которой был указан в файле манифеста сборки.
%TEMP%\RarSFX%\%ALLUSERS PROFILE%\SXS;
%TEMP%\RarSFX%\%ALLUSERS PROFILE%\WinSxS.
Рекомендации по защите: Регулярное обновление ПО, установка приложений в директории защищенные от записи. Использование программы sxstrace.exe для проведения проверок файлов манифестов на предмет наличия в них уязвимостей боковой загрузки.
Деобфускация/дешифровка файлов или информации (Deobfuscate/Decode Files or Information)
Система: Windows
Права: Пользователь
Описание: Злоумышленники могут использовать обфускацию файлов и информации для скрытия вредоносного кода и артефактов, оставшихся от вторжения. Для использования таких файлов противники применяют обратные техники деобфускации/декодирования файлов или информации. Такие методы могут предполагать использование вредоносного ПО, различных сценариев или системных утилит, например, известен способ применения утилиты certutil для декодирования исполняемого файла инструмента удаленного доступа, скрываемого внутри файла сертификата. Другой пример — это применение команды copу /b для сбора двоичных фрагментов во вредоносную полезную нагрузку (Payload).
Payload-файлы могут быть сжаты, заархивированы или зашифрованы во избежание обнаружения. Иногда, для выполнения деобфускации или дешифрования может потребоваться действие пользователя (User execution). Пользователю может потребоваться ввести пароль для открытия сжатого или зашифрованного файла или сценария с вредоносным содержимым.
Рекомендации по защите: Идентификация и блокирование ненужных системных утилит или потенциально-опасного ПО, которое может использоваться для деобфускации или дешифрования файлов с помощью таких инструментов как AppLocker и политик ограниченного использования софта.
Отключение средств защиты (Disabling Security Tools)
Система: Windows, Linux, macOS
Описание: Злоумышленники могут отключать различные средства безопасности, уничтожать процессы журналирования событий, ключи реестра, чтобы средства безопасности не запускались во время вредоносной активности, или применять иные способы вмешательства в работу сканеров безопасности или отчеты о событиях.
Рекомендации по защите: Обеспечьте корректную настройку прав доступа к процессам, реестру и файлам, чтобы предотвратить несанкционированное отключение или вмешательство в работу средств безопасности.
Эксплуатация уязвимостей средств защиты (Exploitation for Defense Evasion)
Система: Windows, Linux, macOS
Права: Пользователь
Описание: Как и в любом софте программные средства безопасности могут иметь уязвимости, которые могут использоваться злоумышленником для их отключения или обхода.
Рекомендации по защите: Регулярное обновление ПО, разработка и внедрение процесса управления уязвимостями ПО. Применение средств виртуализации и микросегментации приложений может снизить риски возможной эксплуатации уязвимостей.
EWM-инъекции (Extra Window Memory Injection)
Система: Windows
Права: Администратор, System
Описание: Техника заключается в злоупотреблении дополнительной памятью окна Windows, так называемой Extra Window Memory (EWM). Размер EWM — 40 байт, подходит для хранения 32-битного указателя и часто используется для указания ссылки на процедуры. Вредоносные программы в ходе цепочки атаки, могут размещать в EWM указатель на вредоносный код, который в последствие будет запущен процессом инфицированного приложения.
Рекомендации по защите: Учитывая, что техники EWM-инъекций основаны на злоупотреблении функциями разработки ОС усилия по защите необходимо направить на предотвращение запуска вредоносных программ и инструментов злоумышленников. Хорошей практикой является выявление и блокирование потенциально-опасного ПО с помощью AppLocker, организации белого списка приложений или применения политик ограничения программного обеспечения Software Restriction Policies.
Удаление файлов (File Deletion)
Система: Windows, Linux, macOS
Права: Пользователь
Описание: Различные инструменты, вредоносное ПО и другие файлы, используемые противником могут оставлять следы хакерской деятельности в системе. Злоумышленники могут удалять эти файлы-артефакты в ходе вторжения, чтобы снизить вероятность обнаружения атаки или удалить их в конце своей операции. Противник может использовать как специальные инструменты гарантированного уничтожения информации (например, Windows Sysinternals Sdelete), так и средства, встроенные в ОС, например DEL и Сipher.
Рекомендации по защите: По возможности, заблокируйте запуск ненужных системных утилит, сторонних инструментов и потенциально-опасного ПО, которое может быть использовано для уничтожения файлов.
Чтение файлов с помощью логических смещений файловой системы (File System Logical Offsets)
Система: Windows
Права: Администратор
Описание: Windows может разрешать программам осуществлять прямой доступ к логическим томам. Программы с прямым доступом могут читать и записывать файлы непосредственно на жестком диске, анализирую структуры данных файловой системы. Этот метод обходит средства контроля доступа к файлам и мониторинга файловой системы. Утилиты типа NinjaCopy служат для выполнения вышеописанных действий в PowerShell.
Рекомендации по защите: Блокирование потенциально-опасного ПО.
Обход Gatekeeper (Gatekeeper Bypass)
Система: macOS
Права: Пользователь, администратор
Описание: В macOS и OS X применяется технология Gatekeper, которая обеспечивает запуск только доверенного ПО. При загрузке приложения из интернета в файле com.apple.quarantine устанавливается специальный атрибут, который указывает, что Gatekeeper должен запросить у пользователя разрешение на выполнение загруженного файла. Флаг устанавливается перед сохранением файла на диск, затем когда пользователь пытается открыть файл Gatekeeper проверяет наличие соответствующего флага и если таковой есть, то система предложит пользователю подтвердить запуск и покажет URL, с которого был загружен файл. Приложения, загруженные в систему с USB-накопителя, оптического, детского или сетевого диска не вызовут установку флага в файле com.apple.quarantine. Некоторые утилиты и файлы, попавшие в атакуемую систему в ходе теневой загрузки (техника Drive-by-compromise), также не вызывают установку флага для Gatekeeper, таким образом обходя проверку доверенности. Наличие флага карантина можно проверить командой: xattr /path/to/MyApp.app.
Рекомендации по защите: В дополнение к Gatekeeper следует использовать запрет на запуск приложений загруженных не из AppleStore.
Переменная HISTCONTROL
/.bash_history при выходе пользователя из системы. Например, опция ignorespace указывает, что не нужно сохранять строки начинающиеся с пробела, а опция ignoredups отключит сохранение повторяющихся подряд команд. В некоторых системах Linux по умолчанию указана опция ignoreboth, которая подразумевает включение двух вышеуказанных параметров. Это означает, что команда » ls» не будет сохранена в истории в отличие от «ls ».
HISTCONTROL не используется по умолчанию в macOS, но может быть настроена пользователем. Злоумышленники могут использовать особенности параметров HISTCONTROL, чтобы не оставлять следов своей деятельности просто вставляя пробелы перед командами.
Рекомендации по защите: Запретите пользователям изменять переменную HISTCONTROL, кроме того убедитесь, что HISTCONTROL имеет значение ignoredup и не содержит опций ignoreboth и ignorespace.
Скрытые файлы и папки (Hidden Files and Directories)
Злоумышленники могут использовать возможность скрытия файлов и папок, чтобы не привлекать внимания пользователей.
Рекомендации по защите: Предотвращение возможности использования данной техники затруднено в силу того что скрытие файлов — это штатная функция ОС.