1

Descifrando el funcionamiento de Siri

El otro día comentamos que Siri podría ser utilizado casi en cualquier plataforma ya que se había descubierto el funcionamiento de su protocolo.

Hoy en GeekNizer he leído el proceso de ingeniería inversa utilizado para descifrarlo. Os lo traduzco a continuación:

 

Siri en Android

Siri en Android

 

Lo primero que se observó fue que Siri enviaba peticiones al puerto 443 de un servidor seguro en https://guzzoni.apple.com. Entonces falsearon un servidor dns para que reenviase las peticiones a un servidor controlado por estos hackers usando un certificado SSL autofirmado. Previamente en el iPhone 4 que usaron se habían añadido ellos como autoridad certificadora así es que su iPhone pensaba que estaba enviando los datos al servidor legítimo.

El protocolo de Siri es opaco. El contenido es binario, pero no va encriptado sino comprimido. Un ejemplo de cabeceras de Siri es:

ACE /ace HTTP/1.0
Host: guzzoni.apple.com
User-Agent: Assistant(iPhone/iPhone4,1; iPhone OS/5.0/9A334) Ace/1.0
Content-Length: 2000000000
X-Ace-Host: 4620a9aa-88f4-4ac1-a49d-e2012910921

  • Usa un método “ACE” en lugar de un GET.
  • La url que se pide es /ace
  • El campo Content-Length es cercano a los 2GB. Esto no es permitido por el protocolo http standard.
  • X-Ace-host es una especie de GUID. Parece que se corresponde con una identificación hardware del dispositivo que se comunica con el servidor ( una especie de UDID)

Siri payload ( los datos que intercambian)

Si examinas un paquete con un editor hexadecimal ves que la carga empieza con 0xAACCEE. Es lo único entendible ya que lo demas viene comprimido con zlib.

Esta cabecera es de 3 bytes, el contenido empieza a partir del 4º byte.  Los datos son una especie de de plist binario.

No voy a explicar más de la estructura del paquete.

Descifrando el contenido de las plists.: 

En Mac OSX con la utilidad “plutil”  o en ruby con la gem llamada CFPropertyList puedes ver el contenido en plano.

Cómo habla el iPhone 4S con los servidores de Apple:

El audio viaja comprimido con el codec VoIP  Speex audio.

La firma:  El iPhone 4s siempre envía la firma. Así es que para usar el protocolo necesitas extraer el identificador con una aplicación. Hay que tener cuidado ya que Apple podría meter estos identificadores usados en Listas Negras.

El contenido: El protocolo envía montones de información y los servidores responden con muchísima información también.

Cómo extrar el identificador de tu iPhone 4s

Puedes descargar Applidium’s tool chain y escribir tus aplicaciones para cualquier dispositivo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)

Los comentarios están cerrados.