Process injection without RWX

cppjunior

Midle Weight
Регистрация
26 Мар 2024
Сообщения
7
Реакции
0
Депозит
0$
Есть ли метод инжекта в удаленный процесс без создания rwx памяти (без RW -> RX)?
 
cppjunior сказал(а):
Есть ли метод инжекта в удаленный процесс без создания rwx памяти (без RW -> RX)?

Я уже не один раз писал тут, что всегда можно создать разделяемую между процессами секцию и в свой процесс отобразить ее как RW, а в чужой процесс отобразить ее как RX.
 
DildoFagins сказал(а):
Я уже не один раз писал тут, что всегда можно создать разделяемую между процессами секцию

Я не знаю почему так мало примеров использования секций, но они по сути недооценённый топ) Я вроде только раз видел как их используют для мапа dll в память в профессиональном софте, но не более. Так они ещё и почти не палятся.
 
DildoFagins сказал(а):
Я уже не один раз писал тут, что всегда можно создать разделяемую между процессами секцию и в свой процесс отобразить ее как RW, а в чужой процесс отобразить ее как RX.

Действительно... Даже больше скажу - в чужом процессе можно отобразить секцию просто как X (PAGE_EXECUTE), а потом, после memcpy поменять протекцию в своем процессе на PAGE_NOACCESS Только что протестировал на шеллкоде - так работает) С такой протекцией (PAGE_EXECUTE), получается, отображение секции в удаленном процессе вообще нельзя будет прочитать(аверу)?
Последнее редактирование: 24.12.2023
 
Kernel32dll сказал(а):
С такой протекцией (PAGE_EXECUTE), получается, отображение секции в удаленном процессе вообще нельзя будет прочитать(аверу)?

Такой говоришь аверу: "бро, не читай, плизь, мою память", а он берет и не читает, вот это был бы идеальный мир для малвари...
 
C++:
Скопировать в буфер обмена
// Process 1 (RW access)
#include <windows.h>
#include <iostream>

int main()
{
HANDLE hSection = CreateFileMappingW(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(int), L"SharedSectionName");
if (hSection == NULL)
{
// Обработка ошибки
return 1;
}

int* pData = (int*)MapViewOfFile(hSection, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(int));
if (pData == NULL)
{
// Обработка ошибки
CloseHandle(hSection);
return 1;
}

// Использование разделяемой секции с RW доступом
*pData = 42;

std::cout << "Variable used successfully. Value: " << *pData << std::endl;

UnmapViewOfFile(pData);
system("pause");

CloseHandle(hSection);

return 0;
}

C++:
Скопировать в буфер обмена
// Process 2 (RX access)
#include <windows.h>
#include <iostream>

int main()
{
HANDLE hSection = OpenFileMappingW(FILE_MAP_READ, FALSE, L"SharedSectionName");
if (hSection == NULL)
{
// Обработка ошибки
return 1;
}

int* pData = (int*)MapViewOfFile(hSection, FILE_MAP_READ, 0, 0, sizeof(int));
if (pData == NULL)
{
// Обработка ошибки
CloseHandle(hSection);
return 1;
}

// Использование разделяемой секции с RX доступом
int value = *pData;

std::cout << "Variable used successfully. Value: " << value << std::endl;

UnmapViewOfFile(pData);
system("pause");
CloseHandle(hSection);

return 0;
}


работает метода )
 
Пожалуйста, обратите внимание, что пользователь заблокирован
I Don't this can work How can you execute the code if its does not have execute permission i does not make sense
 
DripLoader/DripLoader/DripLoader.cpp at master · xuanxuan0/DripLoader
Evasive shellcode loader for bypassing event-based injection detection (PoC) - xuanxuan0/DripLoader
github.com

немного не в тему но то что ты хотел +- с PAGE_NOACCES
 
Вы используете Windows или Linux? Вам стоит учитывать ROP-цепи. Вы будете использовать существующий законный код только путем написания в виртуальную память процесса, без необходимости использования VirtualAllocEx/VirtualProtectEx/CreateRemoteThread.
 
gauss сказал(а):
Вы используете Windows или Linux? Вам стоит учитывать ROP-цепи. Вы будете использовать существующий законный код только путем написания в виртуальную память процесса, без необходимости использования VirtualAllocEx/VirtualProtectEx/CreateRemoteThread.

а подробнее можно
 
Назад
Сверху