9 votes

Que fait l'application de service de vérification du filtre d'intention de Google ?

Alors que je mettais à jour des applications sur Fdroid (je ne sais pas laquelle car il s'agit d'une mise à jour groupée, cela pourrait être n'importe laquelle parmi le journal des activités, l'éditeur, le calendrier simple), le pare-feu (AFWall+, moto x 2nd gen rooté) a détecté une tentative de communication avec ce qu'une recherche whois a identifié comme étant des serveurs Amazon. L'application qui a essayé de communiquer était le service de vérification du filtre d'intention de Google. Quelqu'un sait-il à quoi sert cette application ? Je ne demande pas ce que sont les Intent Filters....

3voto

Max von Hippel Points 121

Utilicé APKTool pour trouver les détails suivants :

  1. Il ne s'agit pas d'un cadre ou d'une bibliothèque partagée,
  2. Il n'est pas sauvegardé,
  3. Il semble utiliser des autorisations personnalisées ( INTENT_FILTER_VERIFICATION_AGENT , BIND_INTENT_FILTER_VERIFIER , INTENT_FILTER_NEEDS_VERIFICATION )
  4. Il possède un récepteur de diffusion, donc on peut supposer que ce besoin de vérification se produit au niveau du système d'exploitation,
  5. Il s'agit d'un Service .

J'ai essayé de lire le code inversé, mais je n'ai aucune expérience en matière de Smali et n'a donc pas fait beaucoup de progrès significatifs. Ensuite, j'ai utilisé AndroGuard pour faire un graphique des appels :

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

... puis je l'ai transformé en image :

import networkx as nx
import matplotlib.pyplot as plt
ifv = nx.read_gml('intent-filter.gml')
# filter out some system stuff, I think
ifv = ifv.subgraph([a for a in ifv.nodes() if not 'Landroid' in a])
# filter out some java utility type stuff, I think
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)

Je comprends :

enter image description here

D'après le nom du service, je soupçonne qu'il prend effectivement un numéro d'appel d'urgence. Intent et détermine si oui ou non cette Intent satisfait le (grammaire ? du ...) filtre d'intention de chaque composant exportable déclaré publiquement dans chaque Manifest.xml pour toutes les applications de l'appareil. Ce graphique d'appel semble en quelque sorte confirmer mon hypothèse. En particulier, URL est en plein centre avec une tonne d'arêtes sortantes, les nœuds dans l'anneau central ressemblent à une vérification ou à un filtrage quelconque (analyse syntaxique d'un message étendu nano, examen d'une réponse du réseau, extraction des données de la base de données de l'utilisateur). Intent ), et enfin, les éléments les plus externes qui n'ont que des bords entrants semblent être en train d'exécuter le processus d'authentification de l'utilisateur. Intent en le transmettant à une destination (par ex, HttpURLConnection -> , NetworkResponse , AndroidAppAsset ...), ou le rejeter comme invalide ( InvalidProtocolBufferNanoException , ResistanceFollowRedirects , OutOfSpaceException , ...).

Je ne suis qu'un limier amateur et ne peux prétendre savoir réellement ce que tout cela signifie, mais voici mes 10 centimes. Je pense que le Service forme le lien entre un appel de la fonction Intent et tous les IntentFilter dans les applications de l'appareil. Je pense qu'il décide ce qui va vers quelle application, si quelque chose a des données invalides comme dans un scénario de fuzzing nul, et si quelque chose doit aller vers le web. Je pense qu'il arrête aussi une sorte d'attaque infinie-redirect. Je soupçonne qu'il s'agit d'un effort de la part de l'équipe de développement d'Android pour se défendre contre les attaques de communication entre composants (ICC) et les vulnérabilités des liens entre applications et URI. J'espère que cela vous aidera !

0voto

eodabash Points 588

Je pense qu'il s'agit d'un programme d'observation, ou d'un programme d'interprétation de la langue. Il pourrait s'agir de la façon dont les services MMS "devinent" le prochain mot que vous allez utiliser pendant l'envoi d'un SMS, et proposent ses trois meilleures suppositions comme suggestions.

Pour pousser plus loin son utilisation, ce programme est probablement aussi celui qui transmet un texte ou un appel téléphonique sur cinq au FBI/CIA pour nous "surveiller" tous en tant que "terroristes" potentiels. x(

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X