9 votos

¿Qué hace la aplicación de servicio de verificación de filtros de intención de Google?

Mientras actualizaba aplicaciones en Fdroid (no estoy seguro cuál porque fue una actualización masiva, podría ser cualquiera de Activity Diary, Editor, Simple Calendar), el firewall (AFWall+, moto x 2nd gen con root) capturó un intento de comunicación con lo que una búsqueda de whois identificó como servidores de Amazon. La aplicación que intentó comunicarse fue el Servicio de Verificación de Filtros de Intención de Google. ¿Alguien sabe para qué sirve esta aplicación? No estoy preguntando qué son los Filtros de Intención....

3voto

Max von Hippel Puntos 121

Usé APKTool para encontrar los siguientes detalles:

  1. No es un Marco de trabajo ni una Biblioteca compartida,
  2. No se respalda,
  3. Parece usar algunos permisos personalizados (INTENT_FILTER_VERIFICATION_AGENT, BIND_INTENT_FILTER_VERIFIER, INTENT_FILTER_NEEDS_VERIFICATION)
  4. Tiene un Receptor de emisión, por lo que presumiblemente esto de la VERIFICACIÓN NECESARIA está sucediendo a nivel del sistema operativo,
  5. Es un Servicio.

Intenté leer el código invertido, pero no tengo experiencia con Smali y por lo tanto no hice mucho progreso significativo. Luego, utilicé AndroGuard para hacer un gráfico de llamadas:

androcg.py --output intent-filter.gml --no-isolated Intent\ Filter\ Verification\ Service_com.android.statementservice.apk

... luego convertí esto en una imagen:

import networkx as nx
import matplotlib.pyplot as plt
ifv = nx.read_gml('intent-filter.gml')
# filtrar algo de cosas del sistema, creo
ifv = ifv.subgraph([a for a in ifv.nodes() if not 'Landroid' in a])
# filtrar algo de cosas de utilidad de Java, creo
ifv = ifv.subgraph([a for a in ifv.nodes() if not 'Ljava/lang' in a])
isolates = nx.isolates(ifv)
nonisolates = list(set(ifv.nodes()) - set(isolates))
ifv = ifv.subgraph(nonisolates)
relabeler = {key: key.split()[0].split('/')[-1] for key in ifv.nodes()}
ifvn = nx.relabel_nodes(ifv, relabeler)
ifvn.remove_edges_from(nx.selfloop_edges(ifvn))
nx.draw(ifvn, with_labels=True)
fig = plt.gcf()
fig.set_size_inches(18, 10)
fig.savefig('intent-filter.jpg',dpi=200)

Obtengo esto:

entrar descripción de la imagen aquí

Mi sospecha por el nombre del servicio es que efectivamente toma un Intent y determina si ese Intent satisface el (gramática? de ...) Filtro de Intenciones de cada componente exportable públicamente declarado en cada Manifest.xml de todas las aplicaciones en el dispositivo. Este gráfico de llamadas parece apoyar mi hipótesis. En particular, URL está en el centro con toneladas de aristas salientes, los nodos en el anillo intermedio parecen ser verificación o filtrado de algún tipo (interpretando un mensaje extendido nano, mirando una respuesta de red, extrayendo los datos del Intent, obteniendo un puerto web, verificando si un protocolo es válido o inválido ...), y finalmente los elementos más externos que solo tienen aristas entrantes parecen estar ejecutando el Intent al pasarlo a un destino (por ejemplo, HttpURLConnection ->, NetworkResponse, AndroidAppAsset, ...), o descartándolo como inválida (InvalidProtocolBufferNanoException, ResistanceFollowRedirects, OutOfSpaceException, ...).

Soy solo un investigador aficionado y no puedo afirmar realmente saber qué significa todo esto, pero esta es mi opinión. Creo que el Servicio forma la conexión entre un Intent invocado y todos los IntentFilters en las aplicaciones en el dispositivo. Creo que decide qué va a qué aplicación, si algo tiene datos inválidos como en un escenario de falsificación nula, y si algo debería ir a la web. Creo que también detiene algún tipo de ataque de redirección infinita. Sospecho que esto es un esfuerzo por parte del equipo de desarrollo de Android para defenderse contra ataques de comunicación entre componentes (ICC) y vulnerabilidades de enlace de aplicaciones / URI. ¡Espero que esto ayude!

0voto

Valerie Green Puntos 1

Creo que este es un programa "vigilante", o un programa de interpretación de lenguaje. Podría ser cómo los servicios de MMS "adivinan" la próxima palabra que vas a usar durante el envío de mensajes de texto, y ofrecen sus tres mejores opciones como sugerencias.

Para llevar su uso más allá, es probable que este programa también sea el que envía cada quinto mensaje de texto o llamada telefónica al FBI/CIA para "vigilar" a todos nosotros como posibles "terroristas". x(

0 votos

En este momento, mis hallazgos indican que las llamadas de red de esta aplicación se originan desde aplicaciones instaladas, no por la propia aplicación.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X