Метод за инжектиране на процеси във Windows, разкрит от изследователя по сигурността Two Seven One Three, заобикаля два API интерфейса, тясно свързани с отдалечено инжектиране на код: VirtualAllocEx и WriteProcessMemory.

Наречена console named-pipe injection (инжектиране чрез именован канал на конзолата), технологията доставя байтовете на злонамерения код чрез пренасочен стандартен вход на дъщерен конзолен процес и преизползва памет, която Windows вече е попълнил. Това може да наруши детекциите, изградени около познатата последователност за заделяне, запис и изпълнение (allocate-write-execute).

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

MITRE ATT&CK проследява това поведение като T1055, докато конвенционалните реализации обикновено отварят или създават мишена, заделят отдалечена памет, копират код с WriteProcessMemory и стартират или прихващат нишка. EDR системите често съпоставят сигналите от паметта и нишките на тази верига.

Инжектирането на процеси във Windows заобикаля EDR

Този вариант експлоатира междупроцесната комуникация във Windows вместо директен запис между процесите. Атакуващият (инжекторът) създава интерактивен конзолен дъщерен процес, като nslookup.exe или netsh.exe, пренасочва неговия стандартен вход към канал (pipe) и изпраща злонамерения код с WriteFile.

Microsoft документира, че родителският процес може да назначи края за четене на даден канал като манипулатор (handle) за стандартен вход на дъщерния процес и да запази противоположния край за запис.

Байтовете след това съществуват в адресното пространство на конзолната програма, докато тя обработва входа. Концептуалното доказателство (proof of concept) поставя отличителен маркер като префикс на злонамерения код, търси тази сигнатура в достъпната памет и изчислява входната точка на шелкода (shellcode) след маркера.

Изображението с код показва наследими манипулатори, конфигурирани в STARTUPINFO, последвани от CreateProcess с пренасочени потоци.

След откриване на буфера, инжекторът извиква VirtualProtectEx, за да направи съществуващите заделени страници изпълними. След това то спира нишка (suspend), променя нейния указател на инструкции (instruction pointer) и възобновява изпълнението.

Microsoft посочва, че VirtualProtectEx променя защитите в друг процес и изисква PROCESS_VM_OPERATION; препоръчва се нишката да бъде спряна, преди да се променя нейният контекст.

Демонстрацията от изследователя по сигурността Two Seven One Three показва 368 байта, намерени в регион на nslookup.exe; неговата защита е променена от read-write (четене-запис) на executable-read-write (изпълнение-четене-запис), а основната нишка е пренасочена към този адрес.

Злонамереният код трябва да избягва байтове за нов ред (carriage return, line feed) и заместващия байт за Ctrl+Z, тъй като синтактичният анализ на конзолата може да ги третира като терминатори на команди или край на файла. Откриването на паметта, отдалечените промени в защитата и манипулацията на контекста на нишките все пак остават откриваеми.

За разлика от свързани изследвания за отравяне на параметрите на процеси (process-parameter poisoning), този подход не изисква стартиране на дъщерния процес в спряно състояние или поставяне на необичайно форматирани данни в полетата на командния ред или променливите на средата.

Изследователите от SensePost Макс Хиршбергер и Огулкан Угур заявиха, че тяхната отделна техника е заобиколила четири водещи EDR продукта, но това не потвърждава тази по-нова реализация.

Защитниците трябва да преминат отвъд предупрежденията, базирани на един API интерфейс, и да корелират цялостното поведение. Сигналите с висока стойност включват необичаен родителски процес, стартиращ интерактивен конзолен бинарен файл с пренасочени манипулатори, записи на стандартен вход, наподобяващи бинарни данни, сканиране на паметта, отдалечен преход на VirtualProtectEx към права за изпълнение и SetThreadContext, последван от възобновяване.

Събитията с ID 17 и 18 от Sysmon осигуряват телеметрия за именовани канали, въпреки че анонимните канали за стандартен вход могат да изискват по-богата видимост на ниво крайни точки и манипулатори.

Екипите по сигурност трябва да създадат базова линия (baseline) за конзолната автоматизация и да търсят редки комбинации, вместо да сигнализират за всяка операция с conhost.exe, nslookup.exe или канал.

Изследването показва важен урок за разработването на инструменти за откриване на вредно инжектиране на процеси. Надеждното откриване изисква анализ на начина, по който се създават процесите, как се споделят манипулаторите, как се защитава паметта и как се променя потокът на управление. То не трябва да се разчита само на един метод.