elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ... 97
61  Seguridad Informática / Bugs y Exploits / Dudas con Integer Overflow en: 2 Septiembre 2015, 23:45 pm
Hola chicos!

Estoy lidiando con un programa que tiene un fallo de integer overflow y no soy precisamente un 'experto' en estos temas del reversing.. u.u

Me estoy basando en este texto para aprender sobre el asunto: http://phrack.org/issues/60/10.html

Por lo que entiendo en este code (que esta muy bien explicado):

Código
  1.    /* width1.c - exploiting a trivial widthness bug */
  2.    #include <stdio.h>
  3.    #include <string.h>
  4.  
  5.    int main(int argc, char *argv[]){
  6.            unsigned short s;
  7.            int i;
  8.            char buf[80];
  9.  
  10.            if(argc < 3){
  11.                    return -1;
  12.            }
  13.  
  14.            i = atoi(argv[1]);
  15.            s = i;
  16.  
  17.            if(s >= 80){            /* [w1] */
  18.                    printf("Oh no you don't!\n");
  19.                    return -1;
  20.            }
  21.  
  22.            printf("s = %d\n", s);
  23.  
  24.            memcpy(buf, argv[2], i);
  25.            buf[i] = '\0';
  26.            printf("%s\n", buf);
  27.  
  28.            return 0;
  29.    }

El problema esta cuando se le pasa como argumento a ese programa un numero mayor que 65535, ya que luego se va a tratar como un "unsigned short",, aca el disassembly:

Código
  1. CPU Disasm
  2. Address   Hex dump                  Command                                  Comments
  3. 009012B8  |.  FF73 04               PUSH DWORD PTR DS:[EBX+4]                ; /Arg1 = ASCII "65536"
  4. 009012BB  |.  FF15 B8309000         CALL DWORD PTR DS:[<&MSVCR120.atoi>]     ; \MSVCR120.atoi
  5. 009012C1  |.  8BF8                  MOV EDI,EAX
  6. 009012C3  |.  83C4 04               ADD ESP,4
  7. 009012C6  |.  66:83FF 50            CMP DI,50
  8. 009012CA  |.  72 17                 JB SHORT 009012E3
  9. 009012CC  |.  68 8C319000           PUSH OFFSET 0090318C     ; "Oh no youdon't!"
  10. 009012D1  |.  FF15 B4309000         CALL DWORD PTR DS:[<&MSVCR120.printf>]
  11. 009012D7  |.  83C4 04               ADD ESP,4
  12. 009012DA  |.  83C8 FF               OR EAX,FFFFFFFF
  13. 009012DD  |.  5F                    POP EDI
  14. 009012DE  |.  5B                    POP EBX
  15. 009012DF  |.  8BE5                  MOV ESP,EBP
  16. 009012E1  |.  5D                    POP EBP
  17. 009012E2  |.  C3                    RETN
  18. 009012E3  |>  0FB7C7                MOVZX EAX,DI
  19. 009012E6  |.  50                    PUSH EAX
  20. 009012E7  |.  68 A0319000           PUSH OFFSET 009031A0    ; ASCII "s = %d"
  21. 009012EC  |.  FF15 B4309000         CALL DWORD PTR DS:[<&MSVCR120.printf>]

Bueno, a mi entender el mayor problema es la linea 7. Comparar el valor 10000 con 50 (hexadecimal), el programa se saltea el " if (s >= 80) " y luego falla en memcpy, mas precisamente aca:

Código
  1. CPU Disasm
  2. Address   Hex dump                   Command                                            Comments
  3. 58D2F608  />  F3:A5                  REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]

Se copia de esi a edi un valor muy grande y su respectiva violacion de segmento.

En el texto aclara esto:

Citar
Integer overflows are not like most common bug classes.  They do not allow
direct overwriting of memory or direct execution flow control, but are much
more subtle.  The root of the problem lies in the fact that there is no way
for a process to check the result of a computation after it has happened,
so there may be a discrepancy between the stored result and the correct
result.  Because of this, most integer overflows are not actually
exploitable.  Even so, in certain cases it is possible to force a crucial
variable to contain an erroneous value, and this can lead to problems later
in the code.

Y tambien aclara esto:

Citar
The length argument is taken from the command line and held in the integer
i.  When this value is transferred into the short integer s, it is
truncated if the value is too great to fit into s (i.e. if the value is
greater than 65535).  Because of this, it is possible to bypass the bounds
check at [w1] and overflow the buffer.  After this, standard stack smashing
techniques can be used to exploit the process.

Cuando yo pruebo el programa que estoy tratando de arreglar, a veces logro ejecutar los tipicos '41414141' y otras veces no, o sea.. el programa falla en direcciones diferentes todas las veces, tiene remedio eso? Puedo forzar la direccion donde quiero que falle??

1 - Yo me quedo con la duda de como es posible que sin saber el resultado final del buffer igual sea posible ejecutar codigo arbitrario.. dice que con metodos estandar se puede, pero yo no encuentro forma..

2 - Asi que no siempre es explotable esta situacion?

Gracias por leer todo eso!! Saludos!!!
62  Seguridad Informática / Criptografía / Re: Inside the NSA: America's Cyber Secrets [Full Documentary] en: 31 Agosto 2015, 23:52 pm
Hola!

Citar
¿Sabías que si te lanzas contra un muro hay un 2^-100 de probabilidad de que ninguno de los átomos (nuestros y del muro) no colisionen? Supongo que esto dependerá de la densidad del muro y la nuestra, y por tanto de la cantidad de átomos que pueden colisionar, pero no deja de ser una cifra aproximada que recuerda que existe dicha posibilidad.

Tambien tenia entendido que existe una posibilidad en muchisimas de ser teletransportado "magicamente", pero no me acuerdo que propiedad de la fisica cuantica era para poder explicarlo..

Citar
Madre, cómo se me va la pinza en algunas ocasiones, debo de tener déficit de atención XD.

A mi me parecio un buen aporte xD

Saludos!!
63  Foros Generales / Noticias / Re: Advierten sobre los peligros del uso de inteligencia artificial como arma en: 26 Agosto 2015, 00:54 am
Nosotros no lo vamos a ver.. pero vamos por el camino correcto a skynet..  :rolleyes:
64  Programación / Ingeniería Inversa / Re: No consigo android_server de IDA en: 24 Agosto 2015, 06:02 am
Citar
No he debuggeado mucho con IDA en android.

Entiendo,, yo tampoco.. toca leer todo el manual..

Igual espero algun iluminado en ida que sepa algo mas xD

Saludos! Gracias!
65  Programación / Ingeniería Inversa / Re: No consigo android_server de IDA en: 23 Agosto 2015, 05:31 am
Hola! Gracias por responder MCK.

Te cuento los avances:

El problema de la imagen esta solucionado, una version mas reciente de ida soluciono el problema, ademas me pase de gdbserver a android_server, (que es lo que dice el titulo ademas) podria decir que el problema esta solucionado..

Ahora, si no es mucha molestia 2 preguntas mas y termino el tema..

Cuando ida se attachea al proceso hace una pausa (como es debido), pero no desensambla bien, me aparecen los opcodes uno a uno, uno debajo del otro (no como ASM digamos).
Pero cuando pongo yo el breakpoint y el programa se detiene, ahi si se muestra bien..

1 - ¿Eso es normal?

Texto del enlace
Citar
Particularities of Dalvik debugger
All traditional debug actions like Step into, Step over, Run until return and others can be used. If the
application sources are accessible then IDA will automatically switch to the source-level debugging.

2 - ¿Ahi dice que si tengo los sources se los puedo pasar a ida? ¿Sabes como?

Gracias! Perdon por lo pesado..

Saludos!
66  Programación / Ingeniería Inversa / No consigo android_server de IDA en: 21 Agosto 2015, 21:20 pm
Hola chicos/as

Estoy tratando de attachear ida a android,, por lo que he leido se puede hacer con gdbserver, el cual ya viene en las maquinas virtuales de android (AVD).

Y usando ndk-gdb, gdb, o ida mismo.

EDITADO:

Logre conectar ida a android seleccionando la opcion "Debugger/Attach/Remote GDB Debugger", pero la interfaz de IDA me muestra todo mal ¬¬, los registros y el assemby estan todos colapsados, no se si es bug de ida o que &%%&/!




Por que puede ser que sa vea asi de mal en ida??

Saludos! Gracias
67  Seguridad Informática / Criptografía / Re: Inside the NSA: America's Cyber Secrets [Full Documentary] en: 17 Agosto 2015, 17:15 pm
Citar
Es pura matemática. La fuerza bruta va probando todas las distintas combinaciones de bits que abarcan la longitud de la contraseña (a no ser que quieras realizar fuerza bruta con diccionarios). Cuando la contraseña es corta, la fuerza bruta puede ser viable (incluso aconsejable), pero si la contraseña es larga, haciendo cuentas, una contraseña la puedes obtener en un intervalo de [1minuto, 100 siglos] xD, si tienes suerte a lo mejor la capturas rápido pero no es lo normal.
Lo mejor es leer un poco de criptografía y saber a que te enfrentas, así puedes reducir el tiempo de acción astronómicamente.

Coincido con todo eso, y con las "super" computadoras de la NSA para hacer el trabajo  :xD

Saludos!
68  Seguridad Informática / Criptografía / Inside the NSA: America's Cyber Secrets [Full Documentary] en: 17 Agosto 2015, 09:17 am
Hola! Navegando un poco por youtube me encontré con este documental.. un poco viejo (lo se por los monitores xD) pero interesante..



Fuerza bruta? Si eso se aplicaba hace tantos años, por que no se va a romper igual una clave hoy dia? ¬¬

No se dejen llevar por la captura de youtube, el video es un poco mas actual que eso  :rolleyes:

Saludos!
69  Seguridad Informática / Criptografía / Re: Romper RSA con un truco "raro" en: 17 Agosto 2015, 09:12 am
Jaja que casualidad,, mirate el video que estoy por publicar,, increible coincidencia xD

Saludos!

PD: Ahora miro el link. Gracias por compartir MCKSys! (No soy el unico que no duerme a esta hora) xD

Edit:

Citar
But how does a quantum computer find the period of the function, as in step 2? And why is this important?

Si damos por sentado que existen las computadoras cuanticas, todo es posible  ::)

Y uniendo el video que publique con esta noticia.. no seria tan raro pensar que las tecnologias ya estan inventadas/implementadas, solo que van a salir al publico cuando exista otra tecnologia mejor..
70  Programación / ASM / Re: (Consulta) Acceder a la memoria de vídeo en: 17 Agosto 2015, 07:42 am
Hi!

Algo asi?

Citar

Saludos!
Páginas: 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ... 97
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines