Ł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  Hacking – Exploitacja luk w popularnych aplikacjach webowych (OWASP Top 10)

🛡️ 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  Używanie gestów nawigacyjnych w Androidzie: Jak skonfigurować i dostosować gesty do swojej wygody
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
Konfiguracja aparatu w Androidzie – jak uzyskać najlepsze zdjęcia i filmy?
Konfiguracja aparatu w Androidzie – jak uzyskać najlepsze zdjęcia i filmy?

Konfiguracja aparatu w Androidzie – jak uzyskać najlepsze zdjęcia i filmy? Wstęp Nowoczesne smartfony z Androidem oferują coraz lepsze aparaty, Czytaj dalej

Luki w implementacjach algorytmów kryptograficznych: Przykłady znanych błędów w oprogramowaniu, które osłabiły bezpieczeństwo szyfrowania (np. Heartbleed)
Luki w implementacjach algorytmów kryptograficznych: Przykłady znanych błędów w oprogramowaniu, które osłabiły bezpieczeństwo szyfrowania (np. Heartbleed)

🛑 Luki w implementacjach algorytmów kryptograficznych: Przykłady znanych błędów w oprogramowaniu, które osłabiły bezpieczeństwo szyfrowania (np. Heartbleed) Kryptografia teoretyczna opiera Czytaj dalej