elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
25 Mayo 2012, 10:43  


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)

+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Bugs y Exploits (Moderador: berz3k)
| | |-+  En que fallan los opcodes?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: En que fallan los opcodes?  (Leído 2,310 veces)
Rozor

Desconectado Desconectado

Mensajes: 269


As I Walk Through The Valley Of The Shadow Of Dead


Ver Perfil WWW
En que fallan los opcodes?
« en: 16 Septiembre 2007, 15:22 »

Estoy usando devcpp. Y al  ejecutar la shellcode, no hace nada


Código:
#include <stdlib.h>



unsigned char payload[] =

"\xB8\x64\x0D"       // MOV     AX,0D64
"\x8E\xD0"           // MOV     SS,AX
"\x31\xDB"           // XOR     BX,BX
"\xBB\x5E"           // MOV     BX,5E     
"\x83\xC3\x06"       // ADD     BX,+06
"\x89\xDC"           // MOV     SP,BX
"\xB8\x61\x0D"       // MOV     AX,0D61
"\x8E\xD8"           // MOV     DS,AX
"\x31\xDB"           // XOR     BX,BX
"\x89\xDA"           // MOV     DX,BX
"\xB4\x09"           // MOV     AH,09
"\xCD\x21"           // INT     21
"\xB4\x4C"           // MOV     AH,4C
"\xCD\x21"           // INT     21
"\x90"               // NOP
"\x90"               // NOP
"\x90"               // NOP
"\xC9"               // DB      C9
"\xC3";              // RET




int main()
{
  void (*fucker)(void);
  *(long *)&fucker = (long)payload;
  fucker();
  system("PAUSE");
  return 0;
}



Código:
C:\Dev-Cpp\Codes>PayLoad001.exe

C:\Dev-Cpp\Codes>


Código:
D:\disa>pay.exe
 Takakaka!!!!

D:\disa>
En línea

out in the streets they call it murder....
Hendrix
In The Kernel Land
Colaborador
***
Desconectado Desconectado

Mensajes: 2.271



Ver Perfil WWW
Re: En que fallan los opcodes?
« Respuesta #1 en: 16 Septiembre 2007, 15:59 »

Prueba a debuguearlo... ;) ;)
En línea

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
yeikos


Desconectado Desconectado

Mensajes: 1.424



Ver Perfil
Re: En que fallan los opcodes?
« Respuesta #2 en: 16 Septiembre 2007, 18:08 »

¿Qué es lo que crees que hace ese código en ASM?  :-\
En línea
NewLog


Desconectado Desconectado

Mensajes: 327



Ver Perfil WWW
Re: En que fallan los opcodes?
« Respuesta #3 en: 16 Septiembre 2007, 19:03 »

Ese código sólo hace asignaciones, mueve valores a registros y alguna suma, no? Nada complicado ni útil... diria yo...

Me equivoco?
En línea
yeikos


Desconectado Desconectado

Mensajes: 1.424



Ver Perfil
Re: En que fallan los opcodes?
« Respuesta #4 en: 16 Septiembre 2007, 19:33 »

No, no te equivocas, por eso le pregunto que qué cree que hace el código.
En línea
Rozor

Desconectado Desconectado

Mensajes: 269


As I Walk Through The Valley Of The Shadow Of Dead


Ver Perfil WWW
Re: En que fallan los opcodes?
« Respuesta #5 en: 16 Septiembre 2007, 22:25 »

Dice en consola "hola". ( Funcion 9 interrupcion 21 y luego sale funcion 4C en la interrupcion 21.
En línea

out in the streets they call it murder....
byebye


Desconectado Desconectado

Mensajes: 5.093



Ver Perfil
Re: En que fallan los opcodes?
« Respuesta #6 en: 16 Septiembre 2007, 23:26 »

en windows no hay acceso a interrupciones, las aplicaciones son 32 bits y ese codigo no lo es. en windows se usa la API del sistema.
En línea
Rozor

Desconectado Desconectado

Mensajes: 269


As I Walk Through The Valley Of The Shadow Of Dead


Ver Perfil WWW
Re: En que fallan los opcodes?
« Respuesta #7 en: 17 Septiembre 2007, 01:13 »

en windows no hay acceso a interrupciones, las aplicaciones son 32 bits y ese codigo no lo es. en windows se usa la API del sistema.



 :¬¬ :¬¬ :-X :-X


Aver apartir de la interrupcion 21 hasta FF son "basic" interrupciones DOS ( 16 bit ) todavia existen :)

Este codigo echo en NASM te lo puede decir.



Código:

segment datos

texto db ' Hello Fuck!!!!', 13, 10, '$'
texto2 db 'Fuck YOU!!!!', 13, 10, '$'


segment pila stack
resb 256


inicio:

   segment codigo
   
   
..start:


        mov ax, pila
        mov ss, ax
        xor bx, bx
        mov bx, 94
        add bx, 6
        mov sp, bx
        mov ax, datos
        mov ds, ax
        xor bx, bx
        mov dx, bx
        mov ah, 9
        int 0x21

               
        mov dx, texto2
        int 0x21
       
        mov ah, 0x4C
        int 0x21
       
        nop
        nop
        nop

        leave
        ret




Tambien se pueden llamar api's ;)


Código:

C:\NASM>nasm paaa.asm -f obj

C:\NASM>alink paaa.obj -oEXE
ALINK v1.6 (C) Copyright 1998-9 Anthony A.J. Williams.
All Rights Reserved

Loading file paaa.obj
matched Externs
matched ComDefs

C:\NASM>paaa.exe
  Hello Fuck!!!!
  FUCK YOU!!!!

C:\NASM>



En línea

out in the streets they call it murder....
Ferсhu


Desconectado Desconectado

Mensajes: 1.213

Menos palabras y Mas codigos.


Ver Perfil WWW
Re: En que fallan los opcodes?
« Respuesta #8 en: 17 Septiembre 2007, 01:46 »

Pero cuando ejecutas eso en un programa echo con dev-cpp cuando llega a "int 21" finaliza el programa.

Sino agarra el olly y fijate.
En línea

byebye


Desconectado Desconectado

Mensajes: 5.093



Ver Perfil
Re: En que fallan los opcodes?
« Respuesta #9 en: 17 Septiembre 2007, 13:27 »

Citar
Aver apartir de la interrupcion 21 hasta FF son "basic" interrupciones DOS ( 16 bit ) todavia existen smiley

Este codigo echo en NASM te lo puede decir.

win2k,nt,2000 no tienen msdos como por ejemplo tenia w98. eso que tu compilas se ejecuta en el VDM (virtual dos machine) por lo tanto tiene sus cositas y sus restricciones. en win32 no tienes acceso a interrupciones.
En línea
Achernar


Desconectado Desconectado

Mensajes: 317



Ver Perfil
Re: En que fallan los opcodes?
« Respuesta #10 en: 18 Septiembre 2007, 02:43 »

aun suponiendo el caso que puedas ejecutar tu codigo es asm16 no te va a servir para  ninguna shellcode porque cualquier aplicacion en windows usa asm32 ya no se usan las interrupciones sino las llamadas a las apis... para todo esto que estas viendo ya no hay interrupciones de video (int 10h) y ademas abras notado que las definiciones que se  pueden alcanzar en winsdows son altamente superiores a las de MSDOS evidentemente hay algo mas por ahi que se hace sin interrupciones y ese algo mas son las apis... quizas haya cosas muy elementales como trabajos sobre discos o algo en redes a muy bajo nivel pueda usarse el asm16, pero yo necesite mudarme cuando me choque conque no podia hacer un keylogger en asm16 para windows, y ademas te repito si vas a usar una scode para, por ejemplo, un BoF en el IExplorer no te va a servir que si el codigo esta hecho en asm16.

fijate que vos antes de llamar a una interrupcion cargabas valores en los registros
segun que interrupcion y despues hacias la llamada y ahora pones los valores en la pila y llamas a una funcion api.

vi varias veces que intercambiaste conocimientos con ivanchuk (no se si lo escribi bien) y me asombro bastante que todavia hagan cosas con asm16.

aunque tambien creo que en fondo deben estar corriendo interrupciones, y que las apis son un modo de bastante mas alto nivel... por eso el masm32 me parecio muy facil despues del viejo asm
En línea
Ilorev


Desconectado Desconectado

Mensajes: 473


???


Ver Perfil
Re: En que fallan los opcodes?
« Respuesta #11 en: 18 Septiembre 2007, 03:13 »

Código
  char decir[7];
   decir[0]='c';
decir[1]='m';
decir[2]='d';
decir[3]='.';
decir[4]='e';
decir[5]='x';
decir[6]='e';
decir[7]='\0';
 
__asm__ volatile(
"leal -0x18(%ebp), %eax\n"
"pushl %eax\n"
"movl $0x77BF93C7, %ebp\n"
"call *%ebp \n" );

vas a tener que modificar el lea creo.. y tambien lo puedes hacer asi:
Código
  char decir[7];
   decir[0]='c';
decir[1]='m';
decir[2]='d';
decir[3]='.';
decir[4]='e';
decir[5]='x';
decir[6]='e';
decir[7]='\0';
 
__asm__ volatile(
"leal -0x18(%ebp), %eax\n"
"pushl %eax\n"
"call _printf \n" );
En línea

EOF
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Cuales son los componentes que más fallan?
Noticias
wolfbcn 0 465 Último mensaje 28 Octubre 2011, 21:58
por wolfbcn
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines