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)

Okumaya devam et “Sanal Klavyeler Ne Kadar Güvenli?”

MLDonkey: multi-platform, multi-network peer-to-peer client

MLDonkey başlıktan da anlaşılabileceği gibi birçok p2p ağını destekleyen,Linux, MacOS ve Wİndows’ta çalışabilen bir p2p istemcisi. MLDonkey‘nin desteklediği ağlar arasında eDonkey, Overnet, Kademlia, Bittorrent, Gnutella (Bearshare, Limewire, etc.), Gnutella2 (Shareaza), or Fasttrack (Kazaa, Imesh, Grobster) sayılabilir.


MLDonkey’nin web yönetim arabirimi 4080. porttan çalışıyor

MLDonkey’in en belirgin özelliği komut satırında çalışması. Komut konsoluna girerek istediğiniz paylaşım ağlarına bağlanabilir tüm ağlarda paralel aramalar ve indirmeler gerçekleştirebilirsiniz. Kendinize ait bir internet sunucunuz varsa, MLDonkey’i sunucuya kurarak yüksek hızlı dosya indirmenin tadına varmanızı tavsiye ederim.

MLDonkey, komut satırı zor gelenler için 4080. portdan çalışan bir web yönetim arayüzüne de sahip. Dilerseniz arama ve indirme işlemlerini bu sayfa üzerinden de yapabiliyorsunuz.  P2P birçok hosting sağlayıcı tarafından illegal olarak kabul edildiği için yazılımı kullanmadan önce hosting firmanızın kullanım sözleşmesini bir kez daha okumanızı tavsiye ediyorum. Aksi takdirde hosting firmalarının ağ güvenlik yazılımları, MLDonkey’nin ağ aktivitesini tespit etmekte fazla gecikmeyecektir. Belki bu, uyarı bile yapılmadan hosting hizmetinin sonlandırılması ile sonuçlanabilir.

MLDonkey için birçok yönetim arayüzünü ayrı olarak temin etmek mümkün. Aşağıda bazı arayüzlere ait web adresleri yer alıyor.

WinBinder: The native Windows binding for PHP

WinBinder açık kaynak kodlu bir PHP eklentisidir. PHP programcılarının kolayca 32 bitlik yerel Windows uygulamaları oluşturmalarını sağlar. PHP’nin esnek yapısı sayesinde çok az kod satırı ile fonksiyonel programlar hazırlanabiliyor.

WinBinder’in yapısı hakkında:
WinBinder esas avantajını resmi olarak PHP  4.3 ile tanıtılmış olan CLI SAPI (Command Line Interface / Server Application Programming Interface)’den almaktadır. 3. parti DLL (Windows Kütüphanesi)’ler PHP’yi Wİndows geliştirme ortamı olarak kullanmak için yetenekli hale getiriyorlar. Bu kütüphaneler pencereleri, kontrolleri, mesajları, zamanlayıcıları, windows kayıt defterini, GDI (Windows’ Graphic Device Interface) ve daha fazlasını yönetmek için kodlar içeriyor.Bir grup düşük seviyeli (low-level) fonksiyon, programcının istediği Windows fonksiyonuna erişmesine, yapılar tanımlamasına ve belleğe doğrudan erişmesine izin veriyor.

Kontroller doğrudan WinBinder fonksiyonuları çağrılarak veya 3. parti form tasarım yazılımların oluşturduğu RC dosyaları (Resource) ile oluşturulabilir. Bu kaynak dosyalar fazladan bir derleme aşamasına gerek bırakmadan doğrudan (RC) çalışma anında parselleniyor.

Aşağıdaki diyagram WinBinder’ın Windows uygulamalarını oluştururken kullandığı mekanizmayı anlatıyor.

Daha fazla bilgi için tıklayın.

Çeşitli WinBinder uygulamaları:

WinBinder Release Maker,
WinBinder TrueType Data Reader,
WinBinder Clock ,
WinBinder To Do ,
LightsOut,

WinBinder ile yapılabilecekler için güzel bir örnek:
Sample WinBinder

Firefox ile Textarea Wrap Sorunu

Wrap özelliği sayesinde textarea içindeki sözcüklerin alt satırlara kaydırılması (yani dikey kaydırma çubuğunun görünmez yapılması) veya bu özelliği kapatarak (wrap=’off’) sözcüklerin kutu içinde kaydırılmadan, yatay kaydırma çubuğununun görüntülenmesini sağlayabilirsiniz.

Bu işi javascript ile yapmak gerektiginde txtarea.wrap = ‘off’ veya daha saygılı bir kod olan document.getElementById(‘txtarea’).wrap = ‘off’ kullanılıyor.

Sorun uygulamanızın tüm tarayıcılarda çalışma iddiasına sahip olduğunda başlıyor. Malesef yukarıdaki saygılı kod bile Firefox tarayıcılarda işlemiyor. Javascript içerisinden bu özelliği ne kadar ayarlamaya çalışırsanız çalışın sonuç alamıyorsunuz. Çünkü Firefox real-time‘da wrap özelliğini (attribute) dinlemiyor. Aslında bu sorun, Firefox’daki bir hatadan kaynaklanıyormuş ve tabiki de raporlanmış. Rapor adresi:

https://bugzilla.mozilla.org/show_bug.cgi?id=302710

Raporlandığı sayfada IE ve FF tarayıcılarda çalışan kod da yayınlanmış. Javascript ile sözcük kaydırmak (word wrap) için aşağıdaki fonksiyonu kullanabilirsiniz.

<html>
  <head>
    <title> Wrap bug in Firefox</title>
  </head>
<body>
  <textarea id="txtarea" style="width:200px;height:100px">
  Looooooooong line
  </textarea>
  <script>
  function setWrap(obj, val) {
    obj.setAttribute(‘wrap’, val);
    var parNod = obj.parentNode, nxtSib = obj.nextSibling;
    parNod.removeChild(obj);
    parNod.insertBefore(obj, nxtSib);
  } 
  setWrap(txtarea, ‘off’);
  </script>
</body>
</html>


Yazan: Tankado

PHP, MySQL, Javascript, CSS Cheat Sheets

Cheat Sheet dediği şey belli bir konuyla alakalı çok sık kullanılan ve genelde ezberlenmesine gerek olmayan hatta hatırlatma amacıyla da kullanılabilen çizelgelerdir. Tam olarak Türkçe karşılığının olmaması (ya da benim bulamamam) üzücü. Aşağıda PHP, Javascript, MySQL, CSS, ActionScript, Apache mod_rewrite ve Renk çizelgeleri yer alıyor.

Cheat Sheet dediği şey belli bir konuyla alakalı çok sık kullanılan ve genelde ezberlenmesine gerek olmayan hatta hatırlatma amacıyla da kullanılabilen çizelgelerdir. Tam olarak Türkçe karşılığının olmaması (ya da benim bulamamam) üzücü. Aşağıda PHP, Javascript, MySQL, CSS, ActionScript, Apache mod_rewrite ve Renk çizelgeleri yer alıyor.

Okumaya devam et “PHP, MySQL, Javascript, CSS Cheat Sheets”

Dosya yöneticileri

PHP ile sunucu tarafındaki dosya ve dizinleri düzenlemeye yarayan script’ler.

http://www.litoweb.net/pfn2/
http://pfn.sourceforge.net/?lg=ing
http://www.phpxplorer.org/phpXplorer/webIndex.php
http://ecosmear.com/relay/demo/relay.html
http://ecosmear.com/relay/
http://www.eblah.com/e-dir/
http://cjgexplorerpro.com.ar//cjgexplorerpro/
http://www.szewo.com/php/commander/eng/
http://www.blueshoes.org/examples/fileManager/index.php
http://fsguide.sourceforge.net/
http://sweetphp.com/nuke/modules.php?name=Script_Preview&script=7
http://www.josh.ch/joshch/php-tools/phpmywebmin,overview.html
http://www.bitfolge.de/snif-en.html
http://www.siteeditplus.com/index.php?page=demo
http://www.bmitt.com/index.php?PageID=44&dir=webauthoring/php

Open Source as Alternative

Açık kaynak kod seven birisi olarak yeni keşfettiğim www.osalt.com sitesini bilmeyenlere tanıtmak istiyorum. Başlıkta da yazdığı gibi Open Source as Alternative kelimelerinin kısaltması olan osalt sitesinde gündelik hayatta kullandığımız ve ücretli kullanım lisanslarına sahip yazılımlara alternatif olabiliecek yazılımlar listeleniyor. Örneğin Windows, visio, photoshop gibi yazılımların yerine ücretsiz olarak kullanabileceğimiz yazılımlar kategorize bir şekilde osalt sitesinde görmek mümkün ve bu liste sıklıkla genişlemeye devam ediyor.

Extract URLs in text data with Javascript

Daha önce sitede duyurduğum bağlantı (link) arşivi projesi için hazırladığım kullanışlı javascript programcığı. readClipboardData(), parseURL() ve pasteFromClipboard() fonksiyonlarından oluşan programcık panodaki metin verisi içerisinde yer alan URL’leri tespit edip ayıklıyor ve tamamını string olarak geri döndürüyor. Ana fonksiyon olan pasteFromClipboard() ilkönce panodaki  metin verisini readClipboardData() fonksiyonu yardımıyla okuyor (IE ve FF farketmiyor) ardından parseURL() içindeki regex (Regular Expression) cümlesi yardımıyla özyinelemeli (Recursive) olarak teker teker elde ettikten sonra string olarak ana fonksiyona aktarıyor.  pasteFromClipboard() fonksiyonu ise son olarak URL’ler arasına newline (\n) yerleştirerek string formunda tekrar geri döndürüyor. Kodları buradan test edip indirebilirsiniz.

Read Clipboard & Set Clipboard

Javascript ile panoya metin kopyalamak ve panodaki metni almak için kullanılabilecek fonksiyonlar. Internet Explorer (IE) ve Firefox (FF) web tarayıcılarını da destekliyor.

Javascript ile panoya metin kopyalamak ve panodaki metni almak için kullanılabilecek fonksiyonlar. Internet Explorer (IE) ve Firefox (FF) web tarayıcılarını da destekliyor.
Okumaya devam et “Read Clipboard & Set Clipboard”

phpMySQLAutoBackup – Otomatik yedekleme

phpMySQLAutoBackup MySQL veritabanlarının yedeklenmesini otomatik hale getiriyor. PHP script’i veritabanını okuyor (verileri ve yapıları), gzip biçiminde sıkıştırıyor ve belirttiğiniz e-posta adresine gönderiyor. Veritabanı kullanan ve verilerin güncelliğinin önemli olduğu web siteleri için mutlaka bir acil durum planı yapılmalıdır.

Okumaya devam et “phpMySQLAutoBackup – Otomatik yedekleme”

Javascript ile port tarama

“Myspace.com gibi sosyal bir siteyi ziyaret ederken veya yahoo webmail ile e-postalarınızı kontrol ettiğinizi hayal edin. Siz web sayfalarını okurken web sayfasındanki javascript kodu indirilmiş doğal olarak tarayıcınız tarafından otomatik olarak çalıştırılmış. Script tüm yerel ağınızı tarıyor, linksys modeminizin model numarasını öğreniyor modeminize komutlar göndererek kablosuz ağınızı aktive ederek şifrelemeyi devre dışı bırakıyor. Şimdi bunun 24 saatte 1 milyon kişiye olduğunu düşünün.” diyor tanıtım yazısında.

Deneysel bir güvenlik çalışmasının girişi böyle başlıyor. Javascript kullanarak basit bir port tarayıcısı yapmışlar. Tarayıcıları bir ip aralığındaki web hizmeti veren bilgisayarları tarayıp, sunucu yazılımını teşhis edebiliyor (Şimdilik sadece IIS ve Apache) ve herhangi bir yazılım açığını kullanmadığı için de kötüye kullanımını engellemenin pratik bir yolu yok. Daha fazla bilgi için bu pdf dosyasına veya sitelerine göz gezdirebilirsiniz. Tarayıcıyı denemek için buradan buyrun.

Kaynak: http://www.spidynamics.com

Çizginin İki Yanı – Fatih NAR

"Çizginin İki Yanı", 2003 yılında ODTÜ Kitap Topluluğu’nun düzenlediği hikaye yarışmasında dereceye giren bir hikayenin adı. Hikayenin konusu, uzun yıllar üzerinde çalıştığı projenin ardından hayatını kaybeden babasının çalıştığı bölümü kazanan ve kaydını yaptıran bir öğrencinin kısa sürede bölümde yaşadığı ilginç ve heyecanlı olayları anlatıyor. Kahramanımız hikayenin sonunda babasının üzerinde çalıştığı gizli projenin ne olduğunu öğreniyor. Okunası bir dille yazılmış bu bilim kurgu hikaye ODTÜ’de fizik bölümünde geçiyor. Bir kaç yıl önce okuduğum bu hikayeyi sizlerin de okumaktan zevk alacağınızı sanıyorum. Eğer okursanız yorumlarınızı buraya yazabilirsiniz, kim bilir belki yazar da okur ve cevap yazar. PDF biçimli dosyayı buradan yükleyebilirsiniz. (~244KB)

Java Masters 2006, Finalde bir Türk

BenQ ve Sun firmalarınca her yıl düzenlenen java uygulama geliştirme yarışmasında bu yıl bir Türk finale kalmayı başarmış. Milli takımımızın yarı finale kalması kadar sevindiğimiz (acaba) bu duruma imzasını atan arkadaşımızın adı Ali Cumhur Çevik, Gazi Üniversitesi Endüstri Mühendisliği son sınıf öğrencisi. Çevik’in proje sayfasınına buradan gidilebilir, ayrıca TRT haberi de buradan okunabilir. Finale kalmasını sağlayan programın özellikleri şöyle:

  • Sms ile davet etme ve programın otomatik olarak başlayıp bağlanabilmesi
  • Çok az veri gereksinimi (Bir mesaj yaklaşık 0,2 KB)
  • Resim çekip yollama ve kaydedebilme imkânı
  • Ses çekip yollayabilme
  • Amiral Battı oyunu (2 oyunculu)
  • Dama oyunu (2 oyunculu)
  • Hareketli gülen yüzler
  • Yeni gülen yüz kaydedebilme imkânı
  • T9 destekli mesaj yazabilme
  • Ergonomik tasarım
  • Tuş kilidi
  • İki dil desteği (Türkçe ve İngilizce)

Organizasyonun ana sayfasına gitmek için buraya, finale kalan diğer java uygulamalarının sayfasına gitmek için de buraya tıklayabilirsiniz.

Problem: PhpMyAdmin ile veri yükleme

Büyük sql dosyalarını veritabanı sunucusuna yüklemek bazen sıkıntılı olabiliyor. Benzer sorunu başkalarının da yaşama ihtimalini düşünerek  sorunun çözümü hakkında bilgi vermek istiyorum. Kullandığım hosting firması (site dosyalarını bilgisayarında barındıran firma) MySQL veritabanı sunucusuna doğrudan erişim vermemiş. Yani işlem yapmak için doğrudan veritabanı sunucusuna bağlanamıyorum.Servislere dışarıdan doğrudan erişiminin kapatılması (servisi izin verdiği standart arayüze) sunucu güvenliği açısından çok tercih edilen bir yöntem. Dışarıya nekadar az servis açık olursa güvenlik de o denli yüksek tutulmuş olur.

Büyük sql dosyalarını veritabanı sunucusuna yüklemek bazen sıkıntılı olabiliyor. Benzer sorunu başkalarının da yaşama ihtimalini düşünerek  sorunun çözümü hakkında bilgi vermek istiyorum. Kullandığım hosting firması (site dosyalarını bilgisayarında barındıran firma) MySQL veritabanı sunucusuna doğrudan erişim vermemiş. Yani işlem yapmak için doğrudan veritabanı sunucusuna bağlanamıyorum.Servislere dışarıdan doğrudan erişiminin kapatılması (servisi izin verdiği standart arayüze) sunucu güvenliği açısından çok tercih edilen bir yöntem. Dışarıya nekadar az servis açık olursa güvenlik de o denli yüksek tutulmuş olur.

Okumaya devam et “Problem: PhpMyAdmin ile veri yükleme”

LAMP, WAMP, MAMP geliştirme paketleri

Dinamik web siteleri geliştirenlerin işine yarayacağını düşündüğüm bazı yazılımlardan haber vermek istiyorum. Aslında yazılım paketleri desek daha doğru olur. Konu PHP tabanlı web uygulamaları geliştirmeyle ilgili. PHP tabanlı web uygulamaları geliştirirken, web tarayıcı programını saymazsak (FireFox,Netscape,IE) olmazsa olmaz üç programa ihtiyacımız vardır. Bir web sunucu, PHP yorumlayıcısı ve bilgilerin sorgulanması için de bir adet veri tabanı sunucusu (Mysql,Postgresql,Firebird,Oracle vb.)

Dinamik web siteleri geliştirenlerin işine yarayacağını düşündüğüm bazı yazılımlardan haber vermek istiyorum. Aslında yazılım paketleri desek daha doğru olur. Konu PHP tabanlı web uygulamaları geliştirmeyle ilgili. PHP tabanlı web uygulamaları geliştirirken, web tarayıcı programını saymazsak (FireFox,Netscape,IE) olmazsa olmaz üç programa ihtiyacımız vardır. Bir web sunucu, PHP yorumlayıcısı ve bilgilerin sorgulanması için de bir adet veri tabanı sunucusu (Mysql,Postgresql,Firebird,Oracle vb.)
Okumaya devam et “LAMP, WAMP, MAMP geliştirme paketleri”

Java, C, Pascal, C# .Net

Entellektüel bir veryansın mı desem yoksa bilişim alanı üzerine gerçekleştirilen bestelerin öncüsü mü. Bir mühendislik öğrencisinin bestelediği şarkı fena olmamış. Alabilene mesajlar var bu şarkıda. Şarkıyı buradan dinleyebilir, sözlerine de buradan

Entellektüel bir veryansın mı desem yoksa bilişim alanı üzerine gerçekleştirilen bestelerin öncüsü mü. Bir mühendislik öğrencisinin bestelediği şarkı fena olmamış. Alabilene mesajlar var bu şarkıda. Şarkıyı buradan dinleyebilir, sözlerine de buradan

Okumaya devam et “Java, C, Pascal, C# .Net”