Новопубликувана концептуална разработка (proof of concept) за Windows показва как атакуващ може да постави зловреден код в легитимен процес, избягвайки няколко предупредителни знака, които инструментите за сигурност на крайни устройства обикновено наблюдават.
Методът, наречен Process Parameter Poisoning (отравяне на параметрите на процеса), използва информация, която обикновено се предоставя при стартиране на програма в Windows, вместо да записва зловреден код директно в друг процес.
Проучването не е свързано с активна фамилия зловреден софтуер или потвърдена кампания. Въпреки това, то е важно, тъй като внедряването на процеси се използва широко от зловредния софтуер за сливане с доверени програми и скриване на активност.
Техниката може да бъде адаптирана от атакуващи, които вече имат начин да изпълняват код на Windows машина.
Анализаторите зад проекта в GitHub отбелязват, че лоудърът е заобиколил механизмите за откриване при тестове срещу четири водещи продукта за откриване и реагиране на крайни устройства (EDR).
Констатациите посочват сляпо петно, когато защитите се фокусират главно върху познати поведения за запис на памет и създаване на процеси.
От Orange Cyberdefense заявяват в доклад, споделен с Cyber Security News (CSN), че подходът разполага шелкод в данните за стартиране на нов процес, след което променя основната му нишка, така че да започне да изпълнява този код.
Публичният проект, P-Shellcode Loader, е представен като изследване на сигурността, а не като оръжие.
Традиционното внедряване на процеси обикновено следва разпознаваем път. Програма отваря или стартира цел, резервира памет в нея, записва код там, маркира паметта като изпълнима и стартира или пренасочва нишка. Продуктите за сигурност често сигнализират за повиквания, свързани с тези стъпки, включително VirtualAllocEx, WriteProcessMemory и CreateRemoteThread.
Новият метод поема по друг път. Когато Windows създава процес чрез CreateProcessW, той копира данни от командния ред, променливи на средата и настройки за стартиране във вътрешни структури, наречени Process Environment Block (PEB). Лоудърът поставя своя зловреден код в една от тези копирани стойности, ход, който изследователите наричат отравяне на параметър на процеса. Той може да използва командния ред, блок на средата или полето за стартиране lpReserved, което Windows свързва с ShellInfo.
След стартиране на програмата, лоудърът чете PEB на целевия процес и намира съхранените данни с функции за четене на памет. Той избягва обичайните повиквания за разпределяне и запис на отдалечена памет, които много EDR детекции приоритизират. След това техниката променя разрешенията на съхранената памет, така че полезният товар да може да се изпълни. Вместо да създава отдалечена нишка, тя променя показалеца на инструкциите на основната нишка на новия процес с помощта на NtSetContextThread. Това насочва нормалното изпълнение на програмата към внедрения код и избягва няколко рутинни индикатора, свързани с класическото внедряване.
Тестовете също така установяват, че лоудърът не трябва да създава целта в спряно състояние или да спира нишката ѝ по-късно. Тези действия често са свързани с process hollowing и подобни трикове. По-малкият брой подозрителни операции може да намали следите, налични за защити, базирани на поведението, въпреки че не прави активността невидима.
Изследването показва защо защитниците не трябва да разчитат само на сигнали за разпределяне на памет, отдалечени записи или създаване на отдалечени нишки. Мониторингът трябва също така да изследва необичайни входове на CreateProcessW, особено неочаквано дълги командни редове, необичайни данни за средата и необичайни стойности, предоставени чрез структури STARTUPINFO. Свързването на създаването на процес с бързи промени в контекста на нишката може да разкрие по-широката последователност. Екипите по сигурността могат да търсят процес, чиито параметри при стартиране съдържат данни, които не съответстват на очакваната му роля, последван от NtQueryInformationProcess и четения на PEB.
Последваща промяна на защитата от памет за четене и запис към памет за четене и изпълнение, комбинирана с NtSetContextThread, заслужава внимателно разглеждане. Тези събития могат да бъдат легитимни сами по себе си, но техният момент и комбинация са значими.
Концептуалната разработка има ограничения. Параметрите на процеса са низове с нулево прекратяване, така че суров шелкод, съдържащ нулеви байтове, не може да бъде копиран непокътнат по простия метод. Изследователите се справят с това чрез генериране на код без нулеви байтове и използване на поетапна рутина, която възстановява произволни полезни товари по-късно, включително зареждане на DLL или съдържание, извлечено от HTTPS местоположение.
За защитниците практическият отговор е да валидират детекциите спрямо този модел, да разширят телеметрията около данните за стартиране на процеси и манипулирането на контекста на нишките, и да изследват аномални връзки родител-дете между процесите. Списъците с разрешени приложения, контролът на минималните привилегии и навременното инсталиране на корекции няма да елиминират тази техника, но могат да намалят шанса нападателят да получи изпълнението на код, необходимо за нейното използване.