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....
Réponses
Trop de publicités?Utilicé APKTool pour trouver les détails suivants :
- Il ne s'agit pas d'un cadre ou d'une bibliothèque partagée,
- Il n'est pas sauvegardé,
- Il semble utiliser des autorisations personnalisées (
INTENT_FILTER_VERIFICATION_AGENT
,BIND_INTENT_FILTER_VERIFIER
,INTENT_FILTER_NEEDS_VERIFICATION
) - 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,
- 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 :
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 !
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(