Łamanie zabezpieczeń lokalnego przechowywania danych aplikacji Androida (Shared Preferences, SQLite)
Android Hacking

Łamanie zabezpieczeń lokalnego przechowywania danych aplikacji Androida (Shared Preferences, SQLite)

🔓 Łamanie zabezpieczeń lokalnego przechowywania danych aplikacji Androida (Shared Preferences, SQLite)

W świecie hacking, jednym z podstawowych celów podczas analizy bezpieczeństwa aplikacji mobilnych jest sprawdzenie, jak aplikacja przechowuje dane lokalnie. W Androidzie najczęściej wykorzystywane są do tego mechanizmy takie jak Shared Preferences oraz SQLite. Jeśli są one nieprawidłowo zabezpieczone, mogą prowadzić do poważnych wycieków informacji.

📱 Jak aplikacje Androida przechowują dane lokalnie?

Android umożliwia aplikacjom zapisywanie danych w różnych formatach lokalnych:

  • Shared Preferences — pliki XML do przechowywania prostych par klucz-wartość,
  • SQLite — lokalna baza danych do bardziej złożonych danych,
  • Pliki wewnętrzne — zapis bezpośredni do pamięci prywatnej aplikacji,
  • External Storage — zapis na publicznie dostępnej pamięci urządzenia.

W kontekście hacking, właśnie Shared Preferences i SQLite są najbardziej interesujące, ponieważ często zawierają cenne dane użytkownika lub konfiguracje aplikacji.

Łamanie zabezpieczeń lokalnego przechowywania danych aplikacji Androida (Shared Preferences, SQLite)
Łamanie zabezpieczeń lokalnego przechowywania danych aplikacji Androida (Shared Preferences, SQLite)

🛠️ Shared Preferences – podatności i metody ataku

📄 Czym są Shared Preferences?

Shared Preferences to metoda zapisu prostych danych (np. ustawień użytkownika) w formie plików XML w pamięci wewnętrznej aplikacji.

Typowy zapis danych w Shared Preferences:

SharedPreferences prefs = getSharedPreferences("MyPrefs", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("api_token", "12345abcdef");
editor.apply();

Plik XML z tymi danymi będzie znajdował się w:

/data/data/nazwa.pakietu/shared_prefs/MyPrefs.xml

❌ Typowe błędy bezpieczeństwa

  • Zapisywanie danych wrażliwych w formie niezaszyfrowanej (np. tokenów, haseł),
  • Brak ograniczeń dostępu (słabe uprawnienia pliku).
Czytaj  Enumeracja i rekonesans w systemach Linux z użyciem narzędzi typu LinEnum i LinPEAS

🛡️ Jak hakować Shared Preferences?

Kroki, jakie podejmuje specjalista ds. hacking podczas analizy:

  1. Uzyskanie dostępu do plików aplikacji (root lub backup ADB).
  2. Odszukanie plików XML w katalogu shared_prefs.
  3. Odczyt danych bezpośrednio z plików tekstowych.

✅ Jeśli dane nie są szyfrowane — odczyt jest trywialny.


🗄️ SQLite – podatności i metody ataku

📚 Czym jest SQLite?

SQLite to pełnoprawna lokalna baza danych wykorzystywana w Androidzie do przechowywania większych ilości danych strukturalnych.

Przykład utworzenia bazy:

SQLiteDatabase db = this.openOrCreateDatabase("Users", MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, username TEXT, password TEXT)");

Plik bazy danych znajduje się najczęściej w:

/data/data/nazwa.pakietu/databases/Users.db

❌ Typowe błędy bezpieczeństwa

  • Przechowywanie haseł w formie czystego tekstu,
  • Brak szyfrowania danych wrażliwych,
  • Brak ochrony dostępu do bazy danych.

🛡️ Jak hakować SQLite?

Proces analizy bazy SQLite obejmuje:

  1. Uzyskanie dostępu do plików .db.
  2. Otworzenie pliku w narzędziu takim jak DB Browser for SQLite.
  3. Przeglądanie zawartości tabel (np. tabela użytkowników, tokenów, sesji).

📌 Jeśli dane są przechowywane jako plaintext, można je bardzo łatwo odczytać i wykorzystać.


🔥 Narzędzia pomocne w łamaniu lokalnego przechowywania danych

Narzędzie Zastosowanie
ADB (Android Debug Bridge) Pobieranie plików aplikacji i przeglądanie systemu plików urządzenia
Rooted Android Device Pełny dostęp do katalogów aplikacji
DB Browser for SQLite Analiza baz danych SQLite
Android Backup Extractor (ABE) Odtwarzanie plików aplikacji z kopii zapasowych
Frida Dynamiczna analiza aplikacji i przechwytywanie danych runtime

🧠 Praktyczne przykłady ataków

Przykład 1: Wyciek tokenu API z Shared Preferences

Wyczytanie pliku shared_prefs ujawnia klucz API zapisany w formie tekstowej:

<map>
    <string name="api_token">eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...</string>
</map>

Atakujący może użyć tokenu do podszywania się pod użytkownika.


Przykład 2: Odczyt danych logowania z SQLite

Tabela użytkowników w SQLite:

Czytaj  Które antywirusy na Androida bez reklam oferują polski interfejs i wsparcie techniczne?
id username password
1 admin admin123

Brak szyfrowania haseł umożliwia bezpośrednie przejęcie kont.


🚨 Jak chronić lokalne dane aplikacji Android?

Aby zabezpieczyć lokalne przechowywanie danych:

  • Szyfruj dane przechowywane w Shared Preferences i bazach SQLite,
  • Stosuj mechanizmy Android Keystore do bezpiecznego zarządzania kluczami,
  • Weryfikuj uprawnienia plików (MODE_PRIVATE),
  • Rozważ użycie zaszyfrowanych bibliotek, np. SQLCipher dla SQLite,
  • Unikaj przechowywania danych wrażliwych lokalnie, jeśli to możliwe.

📋 Podsumowanie

W ramach hacking, łamanie zabezpieczeń lokalnego przechowywania danych w Androidzie jest niezwykle skuteczną techniką wykrywania błędów bezpieczeństwa. Niezaszyfrowane dane w Shared Preferences lub SQLite mogą prowadzić do poważnych naruszeń prywatności użytkowników.

Właściwe zabezpieczenie danych lokalnych to kluczowy element tworzenia bezpiecznych aplikacji mobilnych, dlatego tak ważne jest, aby programiści świadomie podchodzili do kwestii ochrony informacji.

 

Polecane wpisy
Phishing i Spear-Phishing jako Metody Pozyskiwania Haseł
Phishing i Spear-Phishing jako Metody Pozyskiwania Haseł

Phishing i Spear-Phishing jako Metody Pozyskiwania Haseł Phishing i spear-phishing to jedne z najpopularniejszych metod ataków stosowanych przez cyberprzestępców w Czytaj dalej

Android – zaawansowana ochrona: VPN, malware i konfiguracja antywirusów
Android – zaawansowana ochrona: VPN, malware i konfiguracja antywirusów

Android – zaawansowana ochrona: VPN, malware i konfiguracja antywirusów Android to system o ogromnej popularności i otwartym ekosystemie, co sprawia, Czytaj dalej

Marek "Netbe" Lampart Inżynier informatyki Marek Lampart to doświadczony inżynier informatyki z ponad 25-letnim stażem w zawodzie. Specjalizuje się w systemach Windows i Linux, bezpieczeństwie IT, cyberbezpieczeństwie, administracji serwerami oraz diagnostyce i optymalizacji systemów. Na netbe.pl publikuje praktyczne poradniki, analizy i instrukcje krok po kroku, pomagając administratorom, specjalistom IT oraz zaawansowanym użytkownikom rozwiązywać realne problemy techniczne.