Custom EXE Template Metasploit 64-bit ASM PE Sintassi

4

L'ho chiesto in precedenza e poi eliminato poiché penso di aver posto la domanda senza orientarla verso msfvenom e modelli EXE personalizzati.

Esiste un PE di Windows a 64 bit scritto in assembly fornito con Metasploit che sto cercando di compilare su un EXE e utilizzare come modello personalizzato per msfvenom. Come faccio a compilare / link / includere Windows DLL in Kali? Ho installato Mingw.

Ho provato questo:

nasm -fwin64 -o 64exetemplate.o 64exetemplate.nasm

Poi ho provato a collegarmi con Mingw come:

86_64-w64-mingw32-ld -o 64exetemplate.exe 64exetemplate.o

Come faccio a ottenere il comando asm per compilare / collegare? Penso che manchi un kernel32.dll mancante e non sono sicuro della sintassi .

Entrambi danno errori. Dalla domanda precedente, ho capito che devo dire a Mingw / gcc dove sono la DLL di windows 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'

File assembly originale utilizzato per creare l'esecuzione portatile Windows a 64 bit.

; 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

Ancora una volta, so che l'ho chiesto prima (ora cancellato) ma questa è una domanda grande per le persone che desiderano modificare PE ASM per creare modelli EXE personalizzati con msfvenom. Spero di aver risolto questa domanda meglio.

    
posta user9225381 17.01.2018 - 05:05
fonte

1 risposta

0

Sfortunatamente, non esiste uno standard unico per i file di linguaggio assembly.  (Mentre le istruzioni sono ovviamente parte dell'ISA, la specifica sintassi dei file e in particolare le caratteristiche come extrn sono specifiche per ogni assemblatore.) Per compilarlo su Linux, è necessario regolare la sintassi della sorgente dell'assembly in usare la sintassi del nas o del gas. Il file esistente è progettato per MASM (Microsoft Assembler).

    
risposta data 17.01.2018 - 05:21
fonte

Leggi altre domande sui tag