Hack Sécurité Tutoriels

Android : comprendre et jouer avec les permissions !

Comme vous pouvez le constater, tous les jours des programmes vous demandent des autorisations. Que ce soit sur votre ordinateur, votre smartphone ou même vos appareils Bluetooth, tous sans exception demandent votre permission. À force de les voir partout, on ne les lit même plus, on clique sur Accepter et on va parfois jusqu’à grogner à cause de la redondance !

Merci à Esteban Mauvais de la Monkey Co. pour cet article !

Au fil du temps, on a pu constater que pas mal de failles ont permis d’outrepasser les demandes de permissions, et ce, sur la plupart des systèmes d’exploitation actuels. Ce ne serait même pas étonnant d’en découvrir d’autres, les programmes sont devenus tellement complexes qu’il est difficile de faire un logiciel parfait. Rappelons que Android est issu d’un noyau Linux. Il reprend en particulier son modèle de sécurité basé sur un système de permissions. Une application a un accès exclusif à ses propres fichiers et aucune autre application n’est capable de venir fouiller dans ses affaires. Sauf si vous lui donnez la permission.

Lorsque vous installez une application, celle-ci vous demande d’avoir accès à vos contacts, vos appels, votre appareil photo, etc. C’est parfois justifié, mais parfois non. Si vous refusez la permission, l’appli risque de ne pas s’installer… à moins de lui forcer la main sur un mobile rooté. Afin de comprendre un peu mieux pourquoi les permissions sont essentielles et pas juste une pop-up relou, on va prendre l’actualité comme exemple : Aujourd’hui, nous ne pouvons pas forcer un utilisateur à stocker des cookies sur son navigateur Web et donc on ne peut pas faire de statistique valable sans son accord. Avant, un simple message de prévention suffisait à indiquer la récolte de statistiques. Les permissions sont une protection de votre vie privée, du contrôle de votre machine et surtout un moyen simple de demander votre consentement !

Sur un portable Android récent, il est possible de voir facilement les autorisations accordées à chaque application. Si vous avez accepté trop vite, il n’est pas trop tard pour aller jeter un œil…

Messenger demande plus d’un tiers de toutes les permissions

Maintenant qu’on vient de voir toute l’importance des permissions sur vos machines, parlons d’une rumeur. En 2014, l’application Facebook Messenger est victime d’une rumeur, celle de vous espionner ! Pourquoi donc ? Car au moment de l’installation, l’application vous demande une grande panoplie d’autorisation sur votre localisation, votre identité, votre micro, votre caméra et j’en passe ! Cette rumeur est légitime, mais fausse. En effet, il suffit de vérifier ce qui tourne en tâche de fond, ce qui est envoyé aux serveurs de Facebook ou même d’aller décortiquer le code source de l’application !

Ceci étant dit, cette rumeur est allée tellement loin que le 22 mai 2018 Mark Zuckerberg a démenti que Messenger espionnait les utilisateurs en tâche de fond ! Entre nous, aucun membre de ce parlement n’était apte à poser les bonnes questions au fondateur de Facebook. Le débat était terriblement ridicule, ils auraient plus faire l’effort de demander de l’aide à la CNIL ou à un autre organisme. Quelques bons arguments sont sortis de cette audition, mais en règle général, beaucoup de flan. Passons aux fourneaux et donnons vie à cette rumeur en fabriquant une appli maline… Attention, nous éviterons bien sûr de détailler les étapes sinon l’article risque d’être un long…et nous pourrions avoir des problèmes.


Tutoriel : Comment prendre le contrôle des permissions

#1 - Accès au micro

Tout d’abord, pour demander la permission d’accéder au micro du téléphone, il suffit de mettre cette ligne :
<uses-permission android:name="android.permission.RECORD_AUDIO" />

Il suffit ensuite de créer une classe avec les bonnes librairies :
package com.android.audiorecordtest;


import android.Manifest;

import android.content.Context;

import android.content.pm.PackageManager;

import android.media.MediaRecorder;

import android.os.Bundle;

import android.support.v4.app.ActivityCompat;

import android.support.v7.app.AppCompatActivity;



import java.io.IOException;



public class MonVirus extends AppCompatActivity {
}

#2 - Enregistrer ce que le micro capte
On pourrait tout simplement créer ensuite une fonction qui contient l’enregistrement puis la sauvegarde dans un fichier :
mRecorder = new MediaRecorder();

mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);

mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

mRecorder.setOutputFile(mFileName);

mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

Et pour faire tout ceci en tâche de fond, rien de plus simple :
<service android:name=".MonVirus" android:exported="false"/>

#3 - Un cas d’école : Spy Camera OS
Derrière tout ça, on peut faire une boucle pour enregistrer des fichiers d’une certaine longueur, les envoyer sur un serveur puis les détruire ! Pour aller encore plus loin, on pourrait ensuite lire tout ceci en direct via une page Web et un peu d’Ajax ! Le micro c’est bien, mais la caméra c’est mieux, pour cela je vous invite à directement récupérer le code source de Spy Camera OS, en effet cette application d’espionnage est totalement open source. Vous écoutez et vous voyez, pourquoi pas, mais c’est un peu nul, ce n’est pas rentable et la principale intention des hackers c’est avant tout de de faire un billet sur votre ignorance ! Comment faire un maximum d’argent assez facilement alors ?
#4 - TrojAndroid
Ceci est mon ultime réponse, Trojandroid est comme son nom l’indique un trojan destiné à Android et celui-ci est totalement open source et disponible sur Github. Le programme de serveur pour les contrôles est aussi disponible sur le même projet ! OK donc c’est un trojan mais il fait quoi ce truc ? Eh bien pleins de choses, il peut envoyer des SMS à votre place, faire des appels, récupérer la liste des programmes installés, récupérer vos contacts, récupérer votre localisation, vous envoyer des publicités et du phishing via notification (d’où la récupération de la liste de vos applis, il peut par exemple se faire passer pour Facebook) et cette application est très facile à camoufler en Tetris par exemple… Encore plus simple, avec trojandroid_mixapk, vous pouvez transformer n’importe qu’elle appli Android normale en véritable trojan ! Maintenant j’espère que vous ferez attention aux permissions des applications…