ADB vs Spy Cam & Mic

Comment vérifier si une application sur le smartphone Android a un rapport photo ou vidéo, bien qu'il n'en ait jamais besoin? L'option suivante n'est pas parfaite du tout, mais ne nécessite pas de «root» ou de firmware personnalisé.

PS J'ai ajouté une description de la surveillance de l'accès des applications au microphone à l'article.

Ce que vous devez installer:
  • ADB ( Android Debug Bridge ) (par exemple, dans le cadre des outils de la plate-forme SDK Android - vous pouvez télécharger ici );
  • pilote pour le téléphone (si nécessaire, par exemple, Google USB Driver peut être téléchargé ici ).

Nous activons le mode de débogage via USB sur le téléphone et connectons le smartphone au port USB de l' ordinateur, et vous devez sélectionner le mode de connexion USB , autre que «Chargement uniquement».
Texte masqué
Dans le «Gestionnaire de périphériques», le smartphone s'affiche, par exemple, comme suit:
en mode "Photo" ou "Fichiers"

en mode clé USB

Et donc, dans la sortie de la commande lsusb :


Ouvrez la ligne de commande dans le répertoire dans lequel les "outils" sont installés.
Vérifiez que la connexion est réussie (le numéro de série du smartphone connecté est affiché):
adb devices 
(pour windows )

Pour Linux, la commande ressemblerait à ceci:
 ./adb devices 

Si l'ordinateur n'est pas autorisé à être utilisé avec ce smartphone (pour Android 4.2.2 et versions ultérieures), le message d'avertissement " non autorisé " apparaîtra à côté du numéro de série.
Pour l'autorisation, vous devez confirmer l'autorisation de débogage via USB sur le smartphone.
Texte masqué
Sous Linux , le message " aucune autorisation " peut apparaître - dans mon cas, j'ai réussi à résoudre le problème en basculant le smartphone en mode "Périphérique multimédia ( MTP )".

Lancez le shell sur l'appareil (nous obtenons l'invite "$"):
 adb shell 



Nous introduisons ensuite les symboles "magiques" suivants:
 while true; do ps `while ! (dumpsys media.camera | grep -E "PID") do done | grep -o "[^PID: ][0-9]*$"` | grep -o "[^S ]*$" ; date; sleep 1; done 



Version améliorée, suppression de la sortie "NAME" et des lignes vides:
 while true; do ps `while ! (dumpsys media.camera | grep -E "PID") do done | grep -o "[^PID: ][0-9]*$"` | grep -o "[^S ]*$" | grep -v "NAME" | grep .; date; sleep 1; done 


Et rien ne se passe :-) Jusqu'à ce que quelque chose décide de prendre une petite photo :-)

Le jeu de caractères «magique» indiqué commence à surveiller l'accès au service de caméra - media.camera à la vitesse la plus élevée possible (ce service est implémenté par la bibliothèque libcameraservice.so ). Si la caméra n'est pas active, dumpsys affiche quelque chose comme ceci:

Et si une caméra est nécessaire, cela apparaît:


grep vérifie la présence d'un " PID " et, si cette chaîne existe, ils coupent le numéro de processus de la chaîne et le transmettent à la commande ps , qui affiche les données sur ce processus, et un autre grep coupe son nom. Après avoir détecté l'activité de la caméra, faites une pause d'une seconde afin que les messages ne se répandent pas trop souvent. Pour interrompre la commande, utilisez la combinaison de touches CTRL-C et pour quitter le shell - CTRL-D .

L'exemple le plus simple est qu'après le lancement de l'application smartphone standard pour la prise de vue photo / vidéo, les messages avec le nom du processus et la date / heure commencent à affluer à des intervalles de 1 seconde:

"

Mais il existe des applications plus astucieuses, elles peuvent être trouvées par le mot clé "spy cam" (en utilisant une astuce, par exemple, avec un aperçu à un pixel ( http://www.ez.ai/2014/05/exploring-limits-of-covert-data .html )). Une telle création s'effondre au début du tournage et des reportages, mais des messages affluent régulièrement:



J'ai également vérifié la fonctionnalité de la méthode proposée sur une application qui prend une seule photo en cliquant sur un bouton flottant sans aucune fenêtre d'aperçu visible.
Le script a réussi à appeler la caméra et a émis deux messages à chaque prise de vue:


Mais rien ne vous empêche d'implémenter des fonctionnalités similaires dans une application avec un nom plus anodin ( https://www.zdnet.com/article/this-scary-android-malware-can-record-audio-video-and-steal-your- données / ), et les autorisations - eh bien, il y a toutes sortes de cas. Et l'application «légale» peut signaler quand elle lui plaît (j'ai rencontré la mention d'un tel cas). Et ce n'est pas en vain qu'Android P a pris des mesures pour empêcher les applications d'arrière-plan d'accéder à la caméra.

La méthode a été testée sur les smartphones Huawei SCL-L01 ( Android 5.1.1) et Huawei G700-U20 ( Android 4.2.1), sur d'autres modèles de smartphones, le format de sortie de dumpsys peut différer (il n'est pas normalisé pour le service media.camera ), ce qui nécessitera une correction de code .
Le format du message est codé en dur dans la bibliothèque /system/lib/libcameraservice.so - par exemple, pour le smartphone Huawei SCL-L01 :

Dans le commentaire - un indice sur la façon de changer le code pour travailler avec un smartphone sous Android 9.
Ce commentaire montre le journal d'accès à la caméra maintenu par le HTC U11 .
Mais, par exemple, sur "l'ancien" Huawei U8650 ( Android 2.3.4), dumpsys fonctionne bien:

Et les droits ne suffisent pas pour ... grep :-)


Surveillance de l'accès au microphone

Une méthode similaire peut être appliquée pour surveiller l'accès des applications au microphone. Dans ce cas, vous devez surveiller le service media.audio_flinger .
On entre la commande dans le «shell» (le code donné fonctionne sur le smartphone Huawei SCL-L01 ( Android 5.1.1)):
 while true; do ps `while ! (dumpsys media.audio_flinger | grep -A20 Input| grep -A1 Client | grep yes | grep -o "[^yes ].*" | grep -o [0-9]*) do done` | grep -o "[^S ]*$" | grep -v "NAME" | grep .; date; sleep 1; done 

Si une application enregistre le son via un microphone, alors dans la sortie de dumpsys media.audio_flinger, il y a un fragment similaire:

( Fil d' entrée - flux d'entrée, 22467 - PID du son d'enregistrement de processus).
Lorsque vous enregistrez du son via l'application standard «Enregistreur vocal» et que la surveillance est activée (via le code ci-dessus), les messages suivants apparaissent:

Mais quels messages sont versés lorsque la saisie vocale du traducteur Google est activée:

Sur d'autres smartphones, le format de sortie de dumpsys peut être différent, ce qui nécessitera une correction de code.
Par exemple, sur un smartphone Huawei G700-U20 ( Android 4.2.1):

Dans ce cas, le code de surveillance ressemblera à:
 while true; do ps `while ! (dumpsys media.audio_flinger | grep -A3 Input| grep -A1 Clien | grep -o "[^ ].*" | grep -o [0-9]*) do done` | grep -o "[^S ]*$" | grep -v "NAME" | grep .; date; sleep 1; done 

Voici comment l'Alice «ressuscitée» se manifeste dans ce cas:

Source: https://habr.com/ru/post/fr435098/


All Articles