Lo pregunté anteriormente y luego lo eliminé, ya que creo que hice la pregunta sin orientarla hacia msfvenom y las plantillas EXE personalizadas.
Hay un Windows PE de 64 bits escrito en ensamblador que se envía con Metasploit que estoy tratando de compilar en un EXE y usar como una plantilla personalizada para msfvenom. ¿Cómo compilo / vinculo / incluyo Windows DLL en Kali? Tengo instalado Mingw.
He intentado esto:
nasm -fwin64 -o 64exetemplate.o 64exetemplate.nasm
Luego intenté enlazar con Mingw como:
86_64-w64-mingw32-ld -o 64exetemplate.exe 64exetemplate.o
¿Cómo obtengo el archivo asm para compilar / enlazar? Creo que falta una ruta a kernel32.dll y no estoy seguro de la sintaxis .
Ambos dan errores. De la pregunta anterior, entiendo que necesito decirle a Mingw / gcc dónde están las ventanas DLL o kernel32.dll?
root@box:/ nasm -f win64 64exetemplate.asm -o tiny.o
64exetemplate.asm:7: error: parser: instruction expected
64exetemplate.asm:8: error: symbol 'extrn' redefined
64exetemplate.asm:8: error: parser: instruction expected
64exetemplate.asm:12: error: parser: instruction expected
64exetemplate.asm:26: error: symbol 'main' redefined
64exetemplate.asm:26: error: parser: instruction expected
64exetemplate.asm:28: error: parser: instruction expected
64exetemplate.asm:29: error: parser: instruction expected
64exetemplate.asm:30: error: comma expected after operand 1
64exetemplate.asm:31: error: symbol 'payload' redefined
64exetemplate.asm:31: error: parser: instruction expected
root@box:/ x86_64-w64-mingw32-ld -o 64exetemplate.exe 64exetemplate.o
64exetemplate.o:(.text+0x1d): undefined reference to 'VirtualAlloc'
64exetemplate.o:(.text+0x3d): undefined reference to 'ExitProcess'
Archivo de ensamblaje original que se utilizó para crear la ejecución portátil de Windows de 64 bits.
; Author: Stephen Fewer (stephen_fewer[at]harmonysecurity[dot]com)
; Architecture: x64
;
; Assemble and link with the following command:
; "C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\x86_amd64\ml64" template_x64_windows.asm /link /su$
extrn ExitProcess : proc
extrn VirtualAlloc : proc
.code
main proc
sub rsp, 40 ;
mov r9, 40h ;
mov r8, 3000h ;
mov rdx, 4096 ;
xor rcx, rcx ;
call VirtualAlloc ; lpPayload = VirtualAlloc( NULL, 4096, MEM_COMMIT | MEM_RESERVE, PAGE$
mov rcx, 4096 ;
mov rsi, payload ;
mov rdi, rax ;
rep movsb ; memcpy( lpPayload, payload, 4096 );
call rax ; lpPayload();
xor rcx, rcx ;
call ExitProcess ; ExitProcess( 0 );
main endp
payload proc
A byte 'PAYLOAD:'
B db 4096-8 dup ( 0 )
payload endp
end
Una vez más, sé que pregunté esto antes (ahora eliminado) pero esta es una pregunta excelente para las personas que desean editar el PE ASM para crear plantillas EXE personalizadas con msfvenom. Espero haber formulado esta pregunta mejor.