Android Ekran Kilitlerini Atlatma

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.

lockk

İ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.
1lock

Ö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.

Screenshot_8

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.

datasystem

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.

  1. gesture.key dosyasını kaldırmak
  2. 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.

Screenshot_1

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.

Screenshot_2

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.

Screenshot_3

unrar ile AndroidGestureSHA1.rar şıkıştırılmış dosyasının içini çıkartalım.

Screenshot_5

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.

Screenshot_6

-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ı;

xxd

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.

Screenshot_7

Sonuçta key olarak desene karşılık gelen 1478963 sayıları bulunur.

tus

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.
Screenshot_9

adb pull ile bu dosyaları makinemize alalım. 

Screenshot_10

cat komutu ile password.key içini okuduğumuzda şifrelenmiş key görüntülenir.

Screenshot_11

sqlite3 locksettings.db komutu ile veritabanı üzerinde sorgu çalıştırabiliriz.

Screenshot_12

/data/data/com.android.providers.settings/databases altında bulunan veritabanlarına bakalım.

Screenshot_14

adb pull ile settings.db veritabanını makinemize alalım. sqlite3 ile settings.db veritabanı üzerinde sorgu çalıştırabiliriz.

Screenshot_15

sqlite > .tables veritabanındaki tabloları getirir.

sqlite> select * from secure; secure tablo içindeki veriler gelir.

Screenshot_16

 select * from locksettings ile tablo içindeki veriler gelmektedir.

db

 

1,029 total views, 1 views today

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir