ADB vs Spy Cam & Mic

Bagaimana cara memeriksa apakah ada aplikasi pada smartphone Android yang memiliki laporan foto atau video, meskipun ia tidak pernah membutuhkannya? Opsi berikut sama sekali tidak sempurna, tetapi tidak memerlukan "root" atau custom firmware.

PS Saya menambahkan deskripsi pemantauan akses aplikasi ke mikrofon ke artikel.

Apa yang perlu Anda instal:
  • ADB ( Android Debug Bridge ) (misalnya, sebagai bagian dari Alat Platform SDK Android - Anda dapat mengunduh di sini );
  • driver untuk telepon (jika perlu, misalnya, Driver USB Google dapat diunduh di sini ).

Kami mengaktifkan mode debugging USB pada ponsel dan menghubungkan smartphone ke port USB komputer , dan Anda harus memilih mode koneksi USB , selain "Mengisi daya saja".
Teks tersembunyi
Di "Device Manager" ditampilkan smartphone, misalnya, sebagai berikut:
dalam mode "Foto" atau "File"

dalam mode drive USB

Jadi, dalam output dari perintah lsusb :


Buka baris perintah di direktori tempat "alat" diinstal.
Pastikan koneksi berhasil (nomor seri smartphone yang terhubung ditampilkan):
adb devices 
(untuk windows )

Untuk Linux, perintahnya akan terlihat seperti ini:
 ./adb devices 

Jika komputer tidak diotorisasi untuk digunakan dengan smartphone ini (untuk Android 4.2.2 dan yang lebih baru), maka pesan peringatan " tidak sah " akan muncul di sebelah nomor seri.
Untuk otorisasi, Anda perlu mengonfirmasi izin debug via USB pada ponsel cerdas.
Teks tersembunyi
Di Linux , pesan " tidak ada izin " mungkin muncul - dalam kasus saya, saya berhasil menyelesaikan masalah dengan mengalihkan ponsel cerdas ke mode "Media Device ( MTP )".

Luncurkan shell pada perangkat (kami mendapatkan prompt "$"):
 adb shell 



Lalu kami memperkenalkan simbol "ajaib" berikut:
 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 



Versi yang disempurnakan, menghapus output "NAME" dan baris kosong:
 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 


Dan tidak ada yang terjadi :-) Sampai sesuatu memutuskan untuk mengambil bidikan kecil :-)

Set karakter "ajaib" yang ditunjukkan mulai memantau akses ke layanan kamera - media.camera secepat mungkin (layanan ini diterapkan oleh perpustakaan libcameraservice.so ). Jika kamera tidak aktif, dumpsys menampilkan sesuatu seperti ini:

Dan jika kamera diperlukan, maka ini muncul:


grep memeriksa keberadaan " PID " dan, jika rantai ini ada, mereka memotong nomor proses dari string dan memasukkannya ke perintah ps , yang menampilkan data tentang proses ini, dan grep lain memotong namanya. Setelah mendeteksi aktivitas kamera, berhenti sebentar agar pesan tidak terlalu sering tumpah. Untuk menghentikan perintah, gunakan kombinasi tombol CTRL-C , dan untuk keluar dari shell - CTRL-D .

Contoh paling sederhana adalah bahwa setelah meluncurkan aplikasi smartphone biasa untuk pemotretan foto / video, pesan dengan nama proses dan tanggal / waktu mulai berdatangan dalam interval 1 detik:

"

Tetapi ada aplikasi yang lebih licik, mereka dapat ditemukan dengan kata kunci "spy cam" (menggunakan trik, misalnya, dengan pratinjau piksel tunggal ( http://www.ez.ai/2014/05/exploring-limits-of-covert-data) .html )). Kreasi seperti itu runtuh pada awal pemotretan dan laporan, tetapi pesan mengalir secara teratur:



Saya juga memeriksa fungsionalitas metode yang diusulkan pada aplikasi yang mengambil satu bidikan saat mengklik tombol mengambang tanpa jendela pratinjau yang terlihat.
Script berhasil menangkap panggilan ke kamera dan mengeluarkan dua pesan dengan setiap pemotretan:


Tetapi tidak ada yang menghentikan Anda untuk mengimplementasikan fungsionalitas serupa dalam aplikasi dengan nama yang lebih tidak berbahaya ( https://www.zdnet.com/article/this-scary-android-malware-can-record-audio-video-and-steal-your- data / ), dan izin - well, ada semua jenis kasus. Dan aplikasi "legal" dapat melaporkan jika diinginkan (saya telah memenuhi penyebutan satu kasus seperti itu). Dan tidak sia-sia bahwa Android P mengambil tindakan untuk mencegah aplikasi latar belakang mengakses kamera.

Metode ini telah diuji pada smartphone Huawei SCL-L01 ( Android 5.1.1) dan Huawei G700-U20 ( Android 4.2.1), pada model smartphone lainnya, format output dumpsys mungkin berbeda (tidak distandarisasi untuk layanan media.camera ), yang akan memerlukan koreksi kode .
Format pesan di hardcoded di perpustakaan /system/lib/libcameraservice.so - misalnya, untuk smartphone Huawei SCL-L01 :

Dalam komentar - petunjuk bagaimana mengubah kode untuk bekerja dengan smartphone di Android 9.
Komentar ini menunjukkan log akses kamera yang dikelola oleh HTC U11 .
Tapi, misalnya, pada dumpsys "kuno" Huawei U8650 ( Android 2.3.4) berfungsi dengan baik:

Dan haknya tidak cukup untuk ... grep :-)


Pemantauan akses mikrofon

Metode serupa dapat diterapkan untuk memantau akses aplikasi ke mikrofon. Dalam hal ini, Anda perlu memonitor media layanan.audio_flinger .
Kami memasukkan perintah di "shell" (kode yang diberikan berfungsi pada 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 

Jika beberapa aplikasi merekam suara melalui mikrofon, maka dalam output dari dumpsys media.audio_flinger ada fragmen yang serupa:

( Input thread - input stream, 22467 - PID dari suara proses perekaman).
Saat merekam suara melalui aplikasi standar "Perekam suara" dan pemantauan diaktifkan (melalui kode di atas), pesan berikut muncul:

Tetapi pesan apa yang dituangkan ketika input suara penerjemah Google diaktifkan:

Pada smartphone lain, format output dumpsys mungkin berbeda, yang akan memerlukan koreksi kode.
Misalnya, pada telepon pintar Huawei G700-U20 ( Android 4.2.1):

Dalam hal ini, kode pemantauan akan terlihat seperti:
 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 

Inilah bagaimana "yang dihidupkan kembali" Alice memanifestasikan dirinya dalam kasus ini:

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


All Articles