Con el lanzamiento del complemento firesheep para firefox , se ha vuelto trivial que la navegación de sitios web en redes Wi-Fi abiertas sea secuestrada por oyentes de terceros.
Android ofrece la conveniente opción de sincronización automática. Sin embargo, temo que mis datos se sincronicen automáticamente mientras estoy conectado a una red Wi-Fi abierta en la cafetería local o en el centro comercial.
¿Todos los datos que Android sincroniza automáticamente se cifran mediante SSL o un mecanismo de cifrado similar? ¿Hay datos sincronizados automáticamente sin cifrar y transmitidos sin cifrar para que todos los escuchen?
Actualización : ¡COMPLETAMENTE INSEGURO! ¡¡¡¡Vea abajo!!!!
Nota: respondiendo mi propia pregunta como nadie sabía.
Hice una captura de paquetes después de seleccionar Menú -> Cuentas y sincronización -> Sincronización automática (también accesible a través del widget "Control de energía"). ¿Qué descubrí?
Para mi horror (las solicitudes http del teléfono se muestran a continuación):
GET /proxy/calendar/feeds/myaccount%40gmail.com HTTP/1.1
Accept-Encoding: gzip
Authorization: GoogleLogin auth=_hidden_
Host: android.clients.google.com
Connection: Keep-Alive
User-Agent: Android-GData-Calendar/1.4 (vision FRF91); gzip
y
GET /proxy/contacts/groups/myaccount@gmail.com/base2_property-android?showdeleted=true&orderby=lastmodified&updated-min=2010-12-01T08%3A49%3A00.561Z&sortorder=ascending&max-results=10000&requirealldeleted=true HTTP/1.1
Accept-Encoding: gzip
Authorization: GoogleLogin auth=_hidden_
GData-Version: 3.0
Host: android.clients.google.com
Connection: Keep-Alive
User-Agent: Android-GData-Contacts/1.3 (vision FRF91); gzip
¡Mis contactos y mi calendario se transmiten sin cifrar ! Actualmente no sincronizo gmail, así que tampoco podría decir si eso no está encriptado.
También la aplicación de bolsa (que debe ser un servicio porque no tengo el widget desplegado ni la aplicación activa):
POST /dgw?imei=TEST&apptype=finance&src=HTC01 HTTP/1.1
User-Agent: curl/7.19.0 (i586-pc-mingw32msvc) libcurl/7.19.0 zlib/1.2.3
Content-Type: text/xml
Content-Length: 338
Host: api.htc.go.yahoo.com
Connection: Keep-Alive
Expect: 100-Continue
<?xml version="1.0" encoding="UTF-8"?>
<request devtype="HTC_Model" deployver="HTCFinanceWidget 0.1" app="HTCFinanceWidget" appver="0.1.0" api="finance" apiver="1.0.1" acknotification="0000">
<query id="0" timestamp="0" type="getquotes">
<list><symbol>VOD.L</symbol><symbol>BARC.L</symbol></list></query>
</request>
Solicitud de cotizaciones de acciones completamente sin cifrar: solo piense, podría sentarse en Starbucks en el centro financiero de su ciudad y olfatear qué cotizaciones eran importantes para todos los usuarios de teléfonos inteligentes que lo rodean.
Otros elementos que no fueron encriptados:
htc.accuweather.com
time-nw.nist.gov:13
para (ni siquiera usa NTP)Casi los únicos datos que están encriptados en mi teléfono son las cuentas de correo que configuré con la aplicación K-9 (porque todas mis cuentas de correo usan SSL y, afortunadamente, las cuentas de gmail son, por defecto, SSL; y el correo de yahoo! admite imap usando SSL también). Pero parece que ninguno de los datos sincronizados automáticamente del teléfono original está encriptado.
Esto es en un HTC Desire Z con Froyo 2.2 instalado. Lección: ¡no use el teléfono en una red inalámbrica abierta sin túneles cifrados VPN !
Tenga en cuenta que la captura de paquetes se realizó utilizando tshark en la interfaz ppp0 en un nodo virtual que ejecuta Debian conectado a un teléfono Android a través de OpenSwan (IPSEC) xl2tpd (L2TP).
auth=
cadena contenía lo que parecía ser similar a una cookie, sin embargo, la eliminé antes de publicarla aquí por seguridad.Resultados capturados en un LG Optimus V (VM670), Android 2.2.1, stock, rooteado, comprado en marzo de 2011.
A partir de hoy, las únicas solicitudes sin cifrar que pude encontrar en un pcap tomado durante una resincronización completa fueron:
GET /data/feed/api/user/<username>?imgmax=1024&max-results=1000&thumbsize=144u,1024u
&visibility=visible&kind=album HTTP/1.1
GData-Version: 2
Accept-Encoding: gzip
Authorization: GoogleLogin auth=<snipped>
If-None-Match: <snipped; don't know if it's sensitive info>
Host: picasaweb.google.com
Connection: Keep-Alive
User-Agent: Cooliris-GData/1.0; gzip
Picasa fue el único servicio que pude encontrar sincronizado sin cifrar. Facebook solicitó un par de imágenes de perfil (pero no pasó ninguna información de la cuenta); Anuncios solicitados por Skype; y TooYoou tomó una nueva imagen de banner. Ninguno de ellos se relaciona con la sincronización, en realidad.
Así que parece que la seguridad de sincronización de Google se ha reforzado bastante. Desactive la sincronización de Álbumes web de Picasa y todos sus datos de Google deberían sincronizarse de forma encriptada.
Esto me molestó un poco:
GET /market/download/Download?userId=<snipped>&deviceId=<snipped>
&downloadId=-4466427529916183822&assetId=2535581388071814327 HTTP/1.1
Cookie: MarketDA=<snipped>
Host: android.clients.google.com
Connection: Keep-Alive
User-Agent: AndroidDownloadManager
El retorno de esto es un 302 Movido temporalmente que apunta a una URL de descarga muy compleja:
HTTP/1.1 302 Moved Temporarily
Cache-control: no-cache
Location: http://o-o.preferred.iad09g05.v5.lscache6.c.android.clients.google.com
/market/GetBinary/com.wemobs.android.diskspace/1?expire=1322383029&ipbits=0
&ip=0.0.0.0&sparams=expire,ipbits,ip,q:,oc:<snipped>
&signature=<snipped>.<snipped>&key=am2
Pragma: no-cache
Content-Type: text/html; charset=UTF-8
Date: Fri, 25 Nov 2011 08:37:09 GMT
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE
Transfer-Encoding: chunked
El administrador de descargas de Android da la vuelta y solicita esa ubicación de descarga, pasando la MarketDA
cookie nuevamente.
No sé si hay algún peligro de seguridad por la forma en que Market descarga los APK. Lo peor que puedo imaginar es que las descargas de APK sin cifrar abren la posibilidad de intercepción y reemplazo con un paquete malicioso, pero estoy seguro de que Android tiene controles de firma para evitar eso.
NES
Eduardo