Android Custom Keyboard: Uygulamalardaki Gizli Tehlike ve Keylogger Riski 🛡️

Kerim Bora
Appcent
Published in
4 min readFeb 8, 2024

--

Akıllı telefonlarımız hayatımızın vazgeçilmez bir parçası haline geldikçe, günlük işlemlerimizi kolaylaştıran uygulamaların sayısı da artıyor. Özellikle Android işletim sisteminde, kullanıcılar varsayılan klavyeler yerine daha fonksiyonel 3th party keyboard uygulamalarını tercih edebiliyorlar. Bu klavyeler, kullanım kolaylığı ve kişiselleştirme seçenekleriyle cazip hale gelse de, güvenlik açısından bazı riskler taşıyorlar.

3th party keyboard uygulamaları kullanıcıların tuş dokunmalarını kaydedebiliyor. Bu durum, özellikle hassas bilgilerin girildiği anlarda, kötü niyetli kişilere veya yazılımlara kapı aralayabilir. Keylogger olarak adlandırılan bu tehdit, kullanıcı adları, şifreler, kredi kartı bilgileri ve diğer kişisel verilerin ele geçirilmesine olanak tanıyabilir.

Bu yazıda, 3th party keyboard uygulamalarının potansiyel keylogger tehditlerini, kullanıcıların karşılaşabileceği riskleri ve bu risklere karşı alınabilecek önlemleri detaylı bir şekilde ele alacağız.

Yazımızı, Android platformu üzerinde güvenlik endişelerini ve koruma stratejilerini detaylı bir şekilde ele alacak şekilde üç aşamalı bir yapıda ilerleteceğiz.

  • İlk olarak, ödeme bilgilerinin girildiği basit bir mobil uygulama geliştirerek başlayacağız. Bu uygulama, güvenlik açıklarını anlamamız için bir temel teşkil edecek.
  • Ardından, kötü amaçlı bir 3th party keyboard uygulaması (keylogger) yükleyip, bu uygulamanın ödeme bilgilerini nasıl ele geçirebileceğini test edeceğiz.
  • Son aşamada ise, geliştirdiğimiz uygulamayı, keylogger gibi kötü amaçlı klavyelerin oluşturduğu tehditlere karşı nasıl koruyabileceğimizi inceleyeceğiz.

Örnek Uygulamanın Geliştirilmesi

Geliştireceğimiz örnek uygulama, Jetpack Compose kullanılarak oluşturulacak basit bir ödeme ekranından oluşacak. Bu ekran, kullanıcının kredi kartı bilgilerini girmesini sağlayacak temel alanlara sahip olacak.

Preview of PaymentScreen

Tüm kodlara erişmek için aşağıdaki bağlantıyı ziyaret edebilirsiniz.

3th Party Keyboard ile Keylogging Deneyi

Bu bölümde, özellikle ödeme bilgileri gibi hassas verilerin güvenliğini tehdit edebilecek kötü amaçlı 3th party keyboard uygulamalarının potansiyelini keşfedeceğiz. Bir keylogger’ın nasıl çalıştığını ve bu tür bir uygulamanın kullanıcı bilgilerini nasıl ele geçirebileceğini pratik bir test ile gözlemleyeceğiz. Bu deney için LokiBoard — Android Keylogger uygulamasını kullanacağız.

İlk olarak LokiBoard(Keylogger Keyboard) uygulamasını hedef cihazımıza kuralım.

LokiBoard kaydedilen dokunmaları yukarıdaki konuma kaydeder. (Android>data>com.abifog.lokiboard>files>lokiboard_files.txt)

Hedef cihazımızın Input Method’ nu LokiBoard Keyboard ile değiştirelim.

Son aşamada ise, geliştirdiğimiz uygulamayı yüklediğimiz 3th party keyboard ile deneyelim ve dokunmaları nasıl kaydettiğine tanık olalım.

Android>data>com.abifog.lokiboard>files>lokiboard_files.txt dosyasını inceleyelim:

Görüldüğü gibi, son derece hassas olan kredi kartı bilgilerimiz kötü amaçlı 3th party keyboard uygulaması ile sızdırılmış oldu!

Uygulamanızı Koruma Altına Alın: Üçüncü Taraf Klavye Tehditlerine Karşı Savunma Mekanizmaları

Son aşamada, Android uygulamamızı keylogger gibi kötü amaçlı 3th party keyboard uygulamalarının tehditlerine karşı nasıl koruyabileceğimizi ele alacağız. Bu bölümde, uygulamamızda sadece güvenilir klavye girişlerine izin vererek kullanıcı verilerinin güvenliğini sağlama yöntemlerini inceleyeceğiz.

  • In-App Custom Keyboard Geliştirmek
  • 3th Party Keyboard kullanıyorsa kullanıcıyı uyarmak

Biz bu yazıda ikinci madde ile ilgileneceğiz.

Bu kod parçası, bir Android uygulamasında kullanıcının şu anda etkin olan Input Method(klavye) özelleştirilmiş (üçüncü taraf bir klavye) olup olmadığını kontrol eden bir fonksiyondur. İşlev, Context nesnesini parametre olarak alır ve bir Boolean değeri döndürür. İşlevin döndürdüğü değer true ise, kullanıcının özelleştirilmiş bir giriş yöntemi kullandığı, false ise sistem tarafından sağlanan varsayılan bir Input Method kullandığı anlamına gelir.

  • getSystemService fonksiyonu kullanılarakContext.INPUT_METHOD_SERVICE ile InputMethodManager nesnesine erişilir. Bu yönetici, input methodlar ile (klavyelerle) ilgili işlemleri yönetmek için kullanılır.
  • InputMethodManager'ın enabledInputMethodList özelliği, cihazda etkinleştirilmiş tüm input methodların bir listesini içerir.
  • Elde edilen liste üzerinde döngü kullanılarak her bir input method incelenir. Her bir giriş yöntemi için Settings.Secure.getString(context.contentResolver, Settings.Secure.DEFAULT_INPUT_METHOD) çağrısı ile alınan varsayılan input method’ un ID'si ile karşılaştırılır.
  • Eğer bir input method, varsayılan input method olarak ayarlanmışsa (imi.id ile karşılaştırma sonucu), bu input method uygulama bilgileri incelenir (imi.serviceInfo.applicationInfo). Eğer bu input method bir sistem uygulaması değilse (yani ApplicationInfo.FLAG_SYSTEM bayrağı taşımıyorsa) bu, bir özelleştirilmiş input method olduğu anlamına gelir ve fonksiyon true değeri döndürür.

Önemli Not!

Güvenilir olmayan bir klavyenin tespit edilmesi, her zaman kötü niyetli bir eylem anlamına gelmez. Kullanıcılar, özelliklerini veya kullanım kolaylığını tercih ettikleri için güvenilir olmayan klavyeleri tercih edebilirler. Bu durum, gereksiz uyarılarla sonuçlanabilir.

Örnek projeyi aşağıdaki GitHub bağlantısından inceleyebilirsiniz.

Bana Ulaşın

Aşağıdaki bağlantılardan bana ulaşabilirsiniz.

Kerim Bora
Mobile Application Developer at
Appcent

Web https://kerimbr.com
Mail dev.kerimbora@gmail.com
LinkedIn https://www.linkedin.com/in/devkerimbr
Github https://github.com/kerimbr
Medium https://dev-kerimbora.medium.com

--

--