T1055.012: Внедрение в пустой процесс

Злоумышленники могут внедрить вредоносный код в приостановленные и пустые процессы с целью обхода защиты, действующей на уровне процессов. Внедрение в пустой процесс — это способ выполнения произвольного кода в адресном пространстве отдельного активного процесса.

Внедрение в пустой процесс обычно осуществляется посредством создания процесса в приостановленном состоянии с последующим скрытием занимаемой им памяти, куда затем помещается вредоносный код. Целевой процесс может быть создан посредством вызовов функций нативного API Windows, таких как CreateProcess, с указанием флага приостановки основного потока процесса. Затем отображение процесса в памяти может быть скрыто с помощью таких вызовов API, как ZwUnmapViewOfSection или NtUnmapViewOfSection; далее в него записывается внедряемый код, поток управления перенаправляется на этот код, после чего запускается выполнение процесса (вызовы VirtualAllocEx + WriteProcessMemory, SetThreadContext и ResumeThread соответственно).

Этот метод очень похож на использование локальной памяти потока, но он создает новый процесс, а не использует уже существующий. Подобное поведение, скорее всего, не приведет к повышению привилегий, поскольку процесс, в который осуществлялось внедрение, был порожден внедряющим процессом (и, как следствие, наследует его контекст безопасности). Тем не менее выполнение посредством внедрения в пустой процесс также дает возможность избежать обнаружения защитными решениями, поскольку маскируется под легитимный процесс.

Какие продукты Positive Technologies покрывают технику

Экспертиза MaxPatrol SIEM

mitre_attck_defense_evasion: PT-CR-2222: Proccess_Tampering: Процесс создал поток в адресном пространстве процесса. Злоумышленники внедряют код в процессы, чтобы обойти основанную на процессах защиту или повысить привилегии mitre_attck_defense_evasion: PT-CR-781: TikiTorch_Process_Injection: Обнаружено внедрение в процесс с помощью утилиты TikiTorch

Способы обнаружения

IDDS0009Источник и компонент данныхПроцесс: Создание процессаОписание

Отслеживайте запуск новых процессов, которые могут внедрить вредоносный код в приостановленные и пустые процессы с целью обхода защиты, действующей на уровне процессов. Злоумышленники могут запускать легитимные процессы, а затем использовать их память для выполнения вредоносного кода. Данная аналитика отслеживает стандартные процессы Windows, которые использовались злоумышленниками с применением этой техники; в таких случаях их часто порождают нетипичные родительские процессы. Список не является исчерпывающим, и злоумышленники могут не допустить таких нестыковок. Эти сигнатуры работают только в том случае, если Sysmon сообщает о родительском процессе; это не всегда возможно, поскольку родительский процесс может завершиться еще до того, как Sysmon обработает событие.

Аналитика 1. Запуск процессов нестандартными родительскими процессами

(source="*WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode="1") OR (source="*WinEventLog:Security" EventCode="4688") AND ParentImage!="?" AND ParentImage!="C:\Program Files\SplunkUniversalForwarder\bin\splunk-regmon.exe" AND ParentImage!="C:\Program Files\SplunkUniversalForwarder\bin\splunk-powershell.exe" AND ((Image="C:\Windows\System32\smss.exe" AND (ParentImage!="C:\Windows\System32\smss.exe" AND ParentImage!="System")) OR (Image="C:\Windows\System32\csrss.exe" AND (ParentImage!="C:\Windows\System32\smss.exe" AND ParentImage!="C:\Windows\System32\svchost.exe")) OR (Image="C:\Windows\System32\wininit.exe" AND ParentImage!="C:\Windows\System32\smss.exe") OR (Image="C:\Windows\System32\winlogon.exe" AND ParentImage!="C:\Windows\System32\smss.exe") OR (Image="C:\Windows\System32\lsass.exe" and ParentImage!="C:\Windows\System32\wininit.exe") OR (Image="C:\Windows\System32\LogonUI.exe" AND (ParentImage!="C:\Windows\System32\winlogon.exe" AND ParentImage!="C:\Windows\System32\wininit.exe")) OR (Image="C:\Windows\System32\services.exe" AND ParentImage!="C:\Windows\System32\wininit.exe") OR (Image="C:\Windows\System32\spoolsv.exe" AND ParentImage!="C:\Windows\System32\services.exe") OR (Image="C:\Windows\System32\taskhost.exe" AND (ParentImage!="C:\Windows\System32\services.exe" AND ParentImage!="C:\Windows\System32\svchost.exe")) OR (Image="C:\Windows\System32\taskhostw.exe" AND (ParentImage!="C:\Windows\System32\services.exe" AND ParentImage!="C:\Windows\System32\svchost.exe")) OR (Image="C:\Windows\System32\userinit.exe" AND (ParentImage!="C:\Windows\System32\dwm.exe" AND ParentImage!="C:\Windows\System32\winlogon.exe")))

IDDS0009Источник и компонент данныхПроцесс: Изменения в процессеОписание

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

IDDS0009Источник и компонент данныхПроцесс: Вызовы API ОСОписание

Отслеживание вызовов Windows API, связанных с разными типами внедрения кода, сопряжено с генерацией больших объемов данных. Для эффективной защиты нужно осуществлять сбор данных только при определенных условиях, чтобы выявлять известные вредоносные последовательности вызовов. В противном случае будет трудно выделить вредоносные вызовы API среди множества легитимных. Для этой техники могут использоваться такие вызовы API Windows, как CreateRemoteThread, SuspendThread/SetThreadContext/ResumeThreadа также вызовы функций, позволяющих изменять содержимое памяти другого процесса, например VirtualAllocEx/WriteProcessMemory.

IDDS0009Источник и компонент данныхПроцесс: Обращение к процессуОписание

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

Меры противодействия

IDM1040НазваниеПредотвращение некорректного поведенияОписание

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