Android işletim sistemi, kullanıcılara cihazlarının güvenliklerini sağlamak amacıyla çeşitli güvenlik mekanizmaları sağlamaktadır. Ekran kilidi de bunlardan bir tanesidir. Bu yazıda Android işletim sisteminde yer alan ekran kilidi türleri, şifrelerin nasıl saklandığı ve ekran kilidini atlatma yöntemleri ele alınacaktır.
Android, kullanıcılara 5 tip ekran kilidi seçeneği sunmaktadır:
- None(Yok): Herhangi bir şifre yoktur.
- Slide(Kaydırma): Cihazın kilidinin açılması için parmağın yana doğru kaydırılması gerekir.
- Pattern(Desen): 3×3’lük bir matriste yer alan 9 noktayı en fazla birer defa kullanarak bir desen çizilmesi gerekir.
- PIN: Ekran kilidinin açılabilmesi için 4 veya daha fazla rakamdan oluşan bir parola gerekir.
- Password(Şifre): Bu seçenekte 4 veya daha fazla rakam, harf veya özel karakterden oluşan bir parola kullanılır. Şifrenin PIN’den farkı, PIN’de sadece rakamlar kullanılabiliyor iken, şifrede harfler ve özel karakterler de kullanılabilir.
Ekran Kilidi İçin Pattern ve PIN Ayarlama
Cihazın Settings > Security > Screen lock ayarlarına giderek herhangi bir ekran kilidi ayarlanır.
İlk ekran kilidini oluşturalım. Örneğin pattern seçersek ekran kilidi için istediğimiz deseni girelim. Continue ile devam ederek aynı deseni tekrar girdikten sonra ekran kilidi oluşturulur.
Örneğin PIN oluşturacaksanız ekran kilidi seçeneklerinden PIN e tıkladıktan sonra en az 4 rakam girmelisiniz. Daha sonra yine continue ile devam ederek aynı PIN tekrarlayalım.
GESTURE.KEY ve PASSWORD.KEY DOSYALARININ YAPISI
Ekran kilitlerimizi oluşturduk, peki bu kilitler android cihazımız içerisinde nerede saklanır?
Oluşturulan ekran kilidinin keyleri :
•Pattern(desen) kullanılması durumunda /data/system/ dizini altında gesture.key isimli dosyada,
•PIN veya Password(şifre) kullanılması durumunda,
- Android 4.2 ve öncesi versiyonlarda /data/data/com.android.providers.settings/databases/ dizini altında yer alan settings.db veritabanı içerisinde secure tablosu altında lockscreen.password_salt ismi ile yer alır.
- Android 4.4 ve sonrası versiyonlarda ise bu veri /data/system/ dizininde yer alan locksettings.db isimli veritabanı içerisinde yer alır.
Gesture.key Dosyası
Ekran kilidi olarak desen kullanıldığı durumlarda ise, 3×3 lük matrisin noktaları yukarıdan aşağıya ve soldan sağa doğru artan şekilde sıralanır ve deseni oluşturan noktalara karşılık gelen değerin SHA-1 özeti hesaplanarak bu veri gesture.key dosyası içerisinde saklanır. Deseni oluşturan noktalara karşılık gelen veriler integer değil hexadecimal veri türünde kabul edilir. gesture.key dosyası yalnızca çizilen desene karşılık gelen hexadecimal değerlerin SHA-1 özetini içerir, dolayısıyla 20 byte uzunluğundadır.
Password.key Dosyası
Ekran kilidi için PIN veya Şifre kullanılması durumunda, kullanıcı tarafından belirlenen parolanın sonuna rasgele üretilen bir değer(salt) eklenerek elde edilen değerin SHA-1 ve MD5 özetleri hesaplanır ve hesaplanan bu değerler password.key dosyası içerisinde saklanır. Değer(Salt) için kullanılan veri 64 bit uzunluğunda integer türünde random olarak üretilir.
ADB KULLANARAK PATERN EKRAN KİLİDİNİ ATLAMA
Android cihazımızın ekran kilidini atlatmak için 2 yöntem vardır.
- gesture.key dosyasını kaldırmak
- gesture.key dosyasını alıp SHA1 ile kırmak
1.gesture.key dosyasını kaldırmak
Adb connect ile sanal cihazımıza bağlanarak komut satırına geçmek için adb shell komutunu kullanılır. Oluşturduğumuz pattern ekran kilidinin anahtarı olan gesture.key dosyasının bulunduğu dizin olan /data/system gidelim. rm gesture.key komutu ile dosyayı kaldırırsak eğer ekran kilidi kaldırılmış olur.
1.gesture.key dosyasını alıp SHA1 ile kırmak
Gerekli dosyalarımız ; gesture.key ve AndroidGestureSHA1.txt. Bunun için adb pull ile /data/system altında bulunan gesture.key dosyasını makinemize alalım.
Daha sonra buradan wget ile AndroidGestureSHA1.rar dosyasını indirelim. Bu dosyada pattern ekran kilidi için olası tüm key değerleri mevcut durumdadır.
unrar ile AndroidGestureSHA1.rar şıkıştırılmış dosyasının içini çıkartalım.
grep -i `xxd -p gesture.key` AndroidGestureSHA1.txt komutu ile gesture.key dosyasında bulunan kilidi AndroidGestureSHA1.txt dosyası içerisinde arayarak bulabiliriz. Grep komutu ile dosya içerisinde belirli bir kelime aranabilir. -i ile dosya ve desen her ikisinde de büyük/küçük harf ayrımı yapmadan hepsine bakarak arama yapacaktır. xxd -p hexadecimal çıktı vermesini sağlayacaktır.
-p parametresi kullanmıyor olsaydık çıktımız eşleşmeyeceği için sonuç alamayacaktık. Yalnızca xxd komutuyla oluşan çıktı;
Eğer güzel bir çıktı istiyorsanız cut komut ile keserek yalnızca şifreyi elde edebilirsiniz. (-d) ‘;’ ile pars et, (-f) listelediklerinde 1 tanesini getir.
Sonuçta key olarak desene karşılık gelen 1478963 sayıları bulunur.
ADB KULLANARAK PIN/PASSWORD EKRAN KİLİDİNİ ATLAMA
/data/system altında bulunan password.key ve locksettings.db dosyalarını /mnt/sdcard copyalayalım.
adb pull ile bu dosyaları makinemize alalım.
cat komutu ile password.key içini okuduğumuzda şifrelenmiş key görüntülenir.
sqlite3 locksettings.db komutu ile veritabanı üzerinde sorgu çalıştırabiliriz.
/data/data/com.android.providers.settings/databases altında bulunan veritabanlarına bakalım.
adb pull ile settings.db veritabanını makinemize alalım. sqlite3 ile settings.db veritabanı üzerinde sorgu çalıştırabiliriz.
sqlite > .tables veritabanındaki tabloları getirir.
sqlite> select * from secure; secure tablo içindeki veriler gelir.
select * from locksettings ile tablo içindeki veriler gelmektedir.
5,887 total views, 3 views today