>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
Shell

Jak wyodrębnić ukryte dane i telemetrię z Androida za pomocą czystego ADB

Android Forensics Logo

Kiedy dostaję w swoje ręce urządzenie testowe z niestabilnym błędem lub podejrzanym zachowaniem, standardowe okno Logcat w Android Studio często nie wystarcza. Chcę szybko wykonać snapshot systemu: jakie konta są powiązane, ile razy telefon był restartowany, co działa w usługach w tle i jak zużywana była bateria.

Większość ludzi w takich przypadkach od razu szuka praw roota lub pobiera ciężkie narzędzia GUI. W rzeczywistości standardowy Android Debug Bridge (ADB) może wyprowadzać ogromne ilości danych bez oprogramowania zewnętrznego. Projekt AndroidForensics autorstwa developera Douglasa Fresha Habiana gromadzi wszystkie te polecenia w jednym przewodniku referencyjnym oraz dwóch gotowych skryptach Bash.

Co znajduje się w repozytorium

Zasadniczo repozytorium to ściągawka i zestaw skryptów automatyzacji do forensyki i głębokiej diagnostyki urządzeń Android. Projekt koncentruje się na pracy z urządzeniami bez praw roota, choć niektóre niskopoziomowe polecenia ujawnią więcej w kompilacjach inżynieryjnych.

Repozytorium zawiera dwa główne pliki wykonywalne:

  1. extract.sh — główny skrypt do triażu i zbierania danych użytkownika. Wyodrębnia właściwości systemu, konfigurację sieci, listy zainstalowanych pakietów, aktywne usługi i próbuje odczytać dostawców treści.
  2. dumpsys.sh — kolektor telemetrii systemowej. Skrypt wysyła zapytania do ponad dwóch tuzinów wewnętrznych podsystemów Androida za pomocą narzędzia dumpsys i organizuje logi w oddzielnych plikach tekstowych.

Każde uruchomienie tworzy oddzielny folder z timestampem, gdzie wyniki z każdego indywidualnego polecenia są starannie przechowywane. Eliminuje to zaśmiecanie terminala i pomaga natychmiast uchwycić stan systemu w określonym momencie.

Przydatne polecenia do dodania do swojego arsenału

README zawiera zarówno podstawowe wywołania getprop, jak i nieoczywiste one-linery z parsowaniem wyjścia za pomocą grep, sed i awk.

Zbieranie danych o kontach i adresach e-mail

Poprzez menedżer kont możesz szybko sprawdzić, z którymi usługami telefon jest powiązany, oraz zebrać wszystkie zarejestrowane adresy e-mail:

adb shell dumpsys account | grep -i com.*$ -o | cut -d' ' -f1 | cut -d} -f1 | grep -v com$

Do wyszukiwania adresów e-mail autor sugeruje regex bezpośrednio na zrzucie systemu:

adb shell dumpsys | grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b"

To polecenie jest przydatne, gdy musisz szybko sprawdzić, czy poprzedni tester zapomniał się wylogować z kont służbowych na współdzielonym stanowisku testowym.

Licznik restartów i oś czasu systemu

Czasami błąd reprodukuje się tylko po zimnym restarcie, ale użytkownik twierdzi, że telefon nigdy nie był wyłączony. Możesz to zweryfikować poprzez ustawienia globalne:

adb shell settings list global | grep "boot_count=" | cut -d= -f2 | head -n 1 | xargs echo "Booted:" | sed 's/$/ times/g'

A jeśli potrzebujesz zrozumieć ogólny obraz zużycia zasobów i aktywności aplikacji w czasie, polecenia statystyk przychodzą z pomocą:

adb shell dumpsys usagestats
adb shell dumpsys batterystats
adb shell settings list system

Dostęp do dostawców treści

Aby wyodrębnić kontakty, historię połączeń i wiadomości, skrypt wykonuje bezpośrednie zapytania do URI systemowych:

# Список контактов и номеров телефонов
adb shell content query --uri content://contacts/phones/ --projection display_name:number

# Журнал звонков
adb shell content query --uri content://call_log/calls

# База входящих и исходящих SMS
adb shell content query --uri content://sms/

Oto ważne ograniczenie techniczne. Począwszy od Androida 11, Google znacząco zaostrzył model bezpieczeństwa. W nowszych wersjach systemu operacyjnego bezpośrednie wysyłanie zapytań do content://sms/ lub kontaktów przez ADB bez specjalnych uprawnień lub roota skutkuje błędem dostępu. Jednak na starszych urządzeniach testowych (Android 9–10) lub niestandardowych kompilacjach deweloperskich te polecenia nadal działają niezawodnie.

Jak działa automatyzacja

Jeśli ręczne uruchamianie poleceń staje się nużące, skrypty automatyzują rutynę. Aby rozpocząć, wystarczy sklonować repozytorium i nadać uprawnienia wykonywania:

git clone https://github.com/DouglasFreshHabian/AndroidForensics.git
cd AndroidForensics
chmod +x extract.sh dumpsys.sh

Gdy ./extract.sh jest uruchomiony, skrypt najpierw sprawdza zainstalowany adb, pinguje podłączone urządzenia i rozpoczyna zbieranie danych.

Podczas działania extract.sh wykonuje kilka równoległych zadań:

  • Tworzy katalog o nazwie ADB_Report_20251025_163200.
  • Wysyła zapytania o właściwości urządzenia (ro.product.model, ro.build.version.release, ro.serialno).
  • Wykonuje snapshot ostatnich linii logu systemowego za pomocą adb logcat -d.
  • W tle rozpoczyna generowanie pełnego raportu adb bugreport bez blokowania terminala.
  • Po zakończeniu wyprowadza pokolorowaną tabelę podsumowującą z rozmiarami wszystkich zapisanych plików.

Drugi skrypt, dumpsys.sh, koncentruje się wyłącznie na diagnozowaniu usług systemowych. Sekwencyjnie wysyła zapytania do meminfo, wifi, power, location, sensorservice, netstats i 15 kolejnych usług, zapisując każde wyjście do wifi.txt, meminfo.txt i tak dalej. Jeśli usługa jest niedostępna, skrypt oznacza ją jako crashed i kontynuuje działanie.

Gdzie to się przydaje w praktyce

Projekt ma kilka oczywistych obszarów zastosowania:

  • QA i testowanie aplikacji mobilnych. Skrypt dumpsys.sh pomaga zebrać kompletny kontekst stanu urządzenia w ciągu kilku sekund przed zgłoszeniem złożonego raportu o błędzie dotyczącym wycieków pamięci lub zużycia energii.
  • Audyt urządzenia przed przekazaniem. Jeśli pula urządzeń testowych krąży w zespole, warto szybko uruchomić skrypt czyszczenia i weryfikacji, aby upewnić się, że na smartfonie nie pozostały czyjeś inne konta ani ciężkie procesy w tle.
  • Początkowy triaż incydentu. Specjaliści ds. bezpieczeństwa otrzymują szybki sposób na przechwycenie zrzutu stanu smartfona bez instalowania wątpliwych APK i bez wprowadzania niepotrzebnych zmian w systemie plików.

AndroidForensics nie próbuje wymyślać koła ani zastępować pełnoprawnych pakietów forensycznych jak Autopsy. Siła repozytorium tkwi gdzie indziej — bierze standardowe narzędzia wiersza poleceń Androida, pakuje je w czytelny format i oszczędza czas na ręcznym pisaniu pipeline'ów bash.

Jeśli regularnie podłączasz smartfony Android do komputera do debugowania, testowania lub analizy bezpieczeństwa, dodaj te skrypty do swojego lokalnego toolkitu. Uruchamiają się w kilka sekund i często znajdują rzeczy, które umykają podczas szybkiego rzutu oka na GUI.

Powiązane projekty