Explotación en Android y SET
En relación con la presentación de SMS Spoofing, nos ha llegado alguna petición sobre el material relacionado con la demo explotación de Android.
Lo primero, comentar que todo lo utilizado para la demo de explotación de Android está basado en el trabajo de Javier Moreno y Eloi Sanfélix, presentado en la Rooted CON 2010, Seguridad y explotación nativa en Android. Los autores publicaron material sobre la presentación en sus respectivos blogs:
- http://www.limited-entropy.com/rootedcon-examples-summary
- http://vierito.es/wordpress/2010/04/15/rooted-con-2010-all-your-base-are-belong-to-us/
Para información sobre explotación nativa en Android os referenciamos pues, a dicho material :).
Sin embargo, ponemos a vuestra disposición el siguiente material, que utilizamos durante la presentación de SMS Spoofing:
– android_stack_tb.rb: El exploit original de Eloi Sanfelix y Javier Moreno, con la
«Ret» modificada para obtener el control con el desbordamiento en nuestro entorno Android 1.6 (API level 4).
Para poder llevar a cabo la modificación, (sorry si hay algo equivocado, cualquier comentario es bienvenido 🙂 ), hay que tener en cuenta que tras machacar la pila, el exploit de Eloi Sanfelix y Javier Moreno salta a un offset de setjmp (libc) para poder setear registros con valores escritos en la pila. En nuestro entorno hay que modificar dicha Ret para conseguir el efecto deseado:
(gdb) disass setjmp Dump of assembler code for function setjmp: 0x0000dde0 <setjmp+0>: stmdb sp!, {r0, lr} 0x0000dde4 <setjmp+4>: mov r0, #0 ; 0x0 0x0000dde8 <setjmp+8>: blx 0x12154 <sigblock> 0x0000ddec <setjmp+12>: mov r1, r0 0x0000ddf0 <setjmp+16>: ldmia sp!, {r0, lr} <-- Aquí es donde habría que saltar 0x0000ddf4 <setjmp+20>: str r1, [r0, #100] 0x0000ddf8 <setjmp+24>: ldr r1, [pc, #16] ; 0xde10 <setjmp+48> 0x0000ddfc <setjmp+28>: str r1, [r0], #4 0x0000de00 <setjmp+32>: add r0, r0, #52 ; 0x34 0x0000de04 <setjmp+36>: stmia r0, {r4, r5, r6, r7, r8, r9, r10, r11, r12, sp, lr} 0x0000de08 <setjmp+40>: mov r0, #0 ; 0x0 0x0000de0c <setjmp+44>: bx lr 0x0000de10 <setjmp+48>: rsbmis pc, r8, #4194304 ; 0x400000
Y la libc dentro de la app vulnerable la libc se mapea en:
# cat maps 00008000-00009000 r-xp 00000000 1f:01 414 /data/bin/myapp 00009000-0000a000 rwxp 00001000 1f:01 414 /data/bin/myapp 40000000-40008000 r-xs 00000000 00:07 187 /dev/ashmem/system_properties (deleted) afc00000-afc21000 r-xp 00000000 1f:00 478 /system/lib/libm.so afc21000-afc22000 rwxp 00021000 1f:00 478 /system/lib/libm.so afd00000-afd01000 r-xp 00000000 1f:00 495 /system/lib/libstdc++.so afd01000-afd02000 rwxp 00001000 1f:00 495 /system/lib/libstdc++.so afe00000-afe39000 r-xp 00000000 1f:00 524 /system/lib/libc.so <-- Aquí está mapeada la libc afe39000-afe3c000 rwxp 00039000 1f:00 524 /system/lib/libc.so afe3c000-afe47000 rwxp afe3c000 00:00 0 b0000000-b0010000 r-xp 00000000 1f:00 403 /system/bin/linker b0010000-b0011000 rwxp 00010000 1f:00 403 /system/bin/linker b0011000-b001a000 rwxp b0011000 00:00 0 bead1000-beae6000 rwxp befeb000 00:00 0 [stack]
Por lo tanto nuestro Ret ha de ser «0xafe0ddf0».
– android_stack_tb_http.rb: El módulo utilizado durante la presentación de SMS Spoofing. Es el exploit anterior, modificado para servirse a través de una app Web, que comprueba el user-agent y si es un android 1.6 intenta explotar la vulnerabilidad.
– android_sample.py: El launcher del metasploit anterior para SET. Para entender como estaba integrado dentro de SET os dejamos el siguiente diagrama:
El material está disponible en: https://github.com/testpurposes/ncn2010_sms_spoofing
Hay que tener en cuenta que el material anterior fué utilizado para construir una demo!!, en un entorno real de explotación de plataformas Android, por ejemplo, lo más coherente sería utilizar vulnerabilidades en aplicaciones «cliente» (como un reader de PDF).
Esperamos que el material le sea de utilidad a alguien. Igualmente, si alguien utiliza este u otro material de la presentación sobre SMS Spoofing y le apetece hacernos llegar feedback sería genial!
Saludos!
Muchas gracias por la referencia y felicidades por la charla, es una lástima que no pudiera asistir a la NcN.
Si podemos aclarar alguna duda estaremos encantados 🙂 Saludos!
5 diciembre, 2010 en 17:38
Hola,
Muchas gracias por las felicitaciones! Hubiera sido genial teneros por la NcN! Y las gracias a vosotros por poner disponible el material sobre explotación en Android, increíble trabajo!
Por cierto, nos apuntamos el ofrecimiento de aclarar dudas 🙂
Un saludo!
5 diciembre, 2010 en 17:54
Muchas gracias por su presentación y su trabajo!
Algún sitio donde tengan colgado los vídeos de demostración en el momento que hacen la explotación?
7 diciembre, 2010 en 22:39
Hola Edgar,
Ahora mismo, está disponible el video que se puede encontrar en:
http://noconname.org/congreso.html#videos
Aunque en el video la parte de explotación no se ve bien, la cámara no coge bien ninguno de los monitores que estaban proyectando la demo 😦 De todos modos, a ver si te puede servir de algo.
saludos,
juan
8 diciembre, 2010 en 1:59