Python İle Screenshot Alabilen Keylogger Yapımı

Python İle Screenshot Alabilen Keylogger Yapımı

Herkese merhaba. Bu yazımda, tarihçesi eskilere dayanan keylogger yazılımlarından bahsedip, Python ile güçlü bir keylogger uygulaması yapımını anlatıp, Chrome ile entegre bir şekilde nasıl çalıştırıldığını anlatacağım. Öncelikle keylogger ın ne olduğundan başlayalım.

Keylogger Nedir?

Keylogger, sisteminize yüklenmesiyle birlikte aktif hale gelen tuş takip programıdır. Keylogger iki türlüdür; eğer sistem yöneticisi tarafından yüklenmişse tamamen güvenlik amaçlıdır, sistem yöneticisi tarafından yüklenmeyen keylogger casus ve saldırı amacı taşımaktadır. Yazılım veya donanım olarak yüklenebilmektedirler.

Yazılımla Çalışan Keyloggerlar: Sisteminize yüklenmesiyle aktif hale gelen tuş takip programlarıdır.

Donanımla Çalışan Keyloggerlar: Bilgisayarınıza bir donanım eklenmesiyle aktif hale gelen tuş takip cihazıdır. Klavyenizde basılan her tuşu, bir kalıcı bellek kartına ihtiyaç duymadan kaydeder.

Temel olarak elde edilen bilgilerin belirli bir alanda depolanması veya internet yoluyla istenilen hedefe ulaştırılması amaçlanmaktadır.

Keylogger Nasıl Sisteme Bulaşır?

Güvenlik amaçlı kurulan keylogger yazılımları veya donanımları haricinde, birçok yöntemle keylogger sistemimize bulaşabilmektedir. Bu yöntemlerin en başında tüm kötü yazılımların bulaşmasında olduğu gibi, ne olduğunu bilmediğimiz programları indirdiğimiz zaman, keylogger, trojan gibi virüslere bir kapı açmış oluruz. Bunun haricinde:

  • Torrent üzerinden indirilen cracklenmiş uygulamalar,
  • Zararlı web siteleri,
  • E-posta ekleri,
  • Usb aygıtları,

gibi yöntemlerle de sisteme bulaşıp, daha sonra kendilerini sistemin bir parçasıymış gibi göstermeye çalışabilirler. İlginç bir bulaşma yöntemi de ava giderken avlanma yöntemidir. Başkasına keylogger ile hacklemek yani zarar vermek isterken, indirdiğimiz toollarda keylogger bulunabilir. Bu dosyaları indirirken mutlaka virüs kontrolü yapmamız gerekmektedir.

Keylogger ların bazı özellikleri şu şekildedir:

  • Klavyeden girilen tuşları kaydedebilme,
  • Mouse hareketlerinin takibi,
  • Görev takibi ve yönetimi,
  • Elde edilen bilgileri mail, ftp ya da port yoluyla iletme,
  • Screenshot alabilme

gibi birçok yeni yöntemler ile keylogger oluşturulmaktadır. Bizde Python ile yapacağımız uygulama da hem klavyeden girilen tuşları kaydedip hem de ekran görüntüsü alacağız.

Nasıl Tespit Edilir?

Keylogger ları tespit etmek oldukça zordur. Ancak tespit edebilmek için bazı ipuçları bulunmaktadır. Örneğin screenshot alabilmek için eğer keylogger içerisinde belirli bir time aralığı verilmiş ise, program çalışmaya başladıktan sonra mouse hareketleri yavaşlamaktadır. Bunu bilen bilinçli kullanıcı sistemine keylogger bulaşabilme ihtimalini düşünebilir.

Bunun dışında web arayüzünde dolaşırken, grafiklerde donmalar, daha yavaş performans alınabilmektedir. Bu gibi durumlarda sistemde kapsamlı bir anti-virüs taraması yapabilirsiniz.

İnternet kafe ve toplu bilgisayar kullanılan ortamlarda, genellikle keylogger olabilme ihtimali yüksektir. Bu ortamlarda da kimlik bilgileri, sosyal medya hesap bilgileri, kredi kartı gibi bilgiler girilmemelidir. Keylogger ile birçok bilgi elde edilebilir. Bunlardan bazıları;

  • Kredi kartı bilgileri,
  • Sosyal medya hesabı bilgileri,
  • Kimlik bilgileri,
  • Kişisel bilgiler,
  • Fotoğraf, video hatta ses gibi gelişmiş keyloggerlar ile birçok bilgi elde edilebilir.

Keylogger ın ne olduğunu iyice kavradığımızı düşünüyorum. Artık uygulamaya geçebiliriz.

Keylogger Uygulaması

Yapacağımız keylogger ı Python ortamında kodlayacağız. Bunun için birçok kaynak gözlemledim. Fakat birçoğunu denediğimde verimli bir sonuç elde edemedim. Python, anlaşılması, yazılması oldukça basit bir dildir. Siber güvenlik uygulamaları için de oldukça kullanışlıdır. Gözlemlerime göre, Python ile siber güvenlik uygulamalarında ciddi bir boşluk bulunmakta. Siber güvenlik için yazılım dili bilmek zorunlu değildir fakat bir yazılım dili bildiğiniz zaman işiniz oldukça kolaylaşmaktadır. Ayrıca bu uygulamayı sıfırdan değil, bulduğum kaynaklardan kodları harmanlayarak tamamladım. Birkaç bilgilendirmenin ardından uygulamaya geçebiliriz.

Uygulama

Uygulama da, bilgisayar klavyesinden tuşladığımız her birşeyi bir txt dosyasına kaydedip, aktif olduğu durumlarda screenshot almaya çalışacağız. Ayrıca, keylogger ı Chrome uygulaması açıldığı andan itibaren tetiklendirmeye çalışacağız. Öncelikle kullanacağımız pyAutoGui, pynput kütüphanelerini Python’a import edelim.

Ben Python 3.8 Windows sürümünü kullanmaktayım. PyCharm kullanarak da bu uygulamayı yazabilirsiniz. “pip install pynput, pyAutoGui” kütüphanelerini komut ile import edebilirsiniz. Ayrıca istediğiniz her kütüphaneyi https://pypi.org/project adresinden bulabilirsiniz. Paketlerin kurulumu tamamlandıktan sonra, keylogger oluşturmaya başlayabiliriz.

Yeni bir Python sayfası açarak, kütüphaneleri import ettik. Klavyedeki tuşları kaydedebilmek için pynput kütüphanesini kullanabiliriz. “pyHook” gibi kütüphanelerde bulunmaktadır. Fakat o kütüphane biraz eski ve windowsla uyumsuz olduğu için daha kullanışlı olan pynput u tercih ettim. Screenshot için kullanacağımız kütüphaneyi de, “import pyautogui” ile import edip, keylogger ın çatısını yukarıdaki kodlarla oluşturduk. Burada “with” ile kod bloklarını çağırma işlemi gerçekleştiririz. Tuşa basılma anı “def on_press(key)” ile yakalamaktayız. “def on_release” fonksiyonunda ise “ESC” tuşuna bastığımız zaman, uygulamayı sonlandırıp “Dosyaya kaydedildi” çıktısını almak istediğimiz gözlemlenmiştir. F5 tuşuna basarak uygulamayı bu şekilde deneyelim.

Görüldüğü gibi,basit bir şekilde keylogger aslında oluştu. “ESC” tuşuna bastığımız zaman ise “Dosyaya kaydedildi” uyarısı verip ne yazıldığını gösterip uygulama sonlandırılmaktadır. Uygulamayı biraz daha geliştirelim.

Klavyeden dinlediğimiz tuşları, “C:\Users\yanmi\Desktop\” içerisine oluşturduğum “logs\keylogs\log.txt” içerisine yazmak için dosya değişkenine eşleyebiliriz. Metin dosyasına ekleyebilmek için bir sayaç oluşturup, her bir tuşa basıldığında ise sayaç bir arttırılır. (count+=1) Metin belgesine yazdırmak için de “def write_file (keys)” fonksiyonu oluşturuldu. “with” ile kodları çağırırken, “dosya” değişkeni ile dinlediği tuşları nereye yazacağı, “a” metine yazdıktan sonra kaldığı yerden devam etmesini belirmemiz gerekir. Bir listeden çekip her döngüden döndüğünde metine yazacağı için “for” döngüsü kullanabiliriz. Tekrar F5 ile programımızı çalıştıralım.

Görüldüğü gibi “logs.txt” dosyasına başarılı bir şekilde dinlediği tuşları yazdı. Fakat burada birçok sıkıntı bulunmaktadır. Bu metini düzenlemek için tekrar programımızı düzenleyelim.

Öncelikle “for” döngüsünün olduğu yere baktığımız zaman, her tuşu “a”,”b” şeklinde yazdığı için bu tırnak işaretlerini kaldırabiliriz. Bu işlemi replace ile “(” ‘ “, ” “) gerçekleştirebiliriz. Boşluk tuşuna bastığımız zaman, txt dosyasına “key.space” olarak yazmaktadır. Bunu engellemek içinde space > 0 durumunda ” ” komutu ile boşluk bırakmasını belirtebiliriz.

While:

Metin görünümünü düzenledikten sonra, “while” içerisine tuşları dinlemeye başladıktan sonra “pyautogui.screenshot” komutu ile belirtilen adrese ekran görüntülerini “key” adı ile kaydetmesi belirtilir. Artık keylogger uygulamamız çalıştıktan sonra, anlık olarak screenshot alacaktır. Tekrar uygulamamızı çalıştıralım.

Enter kullanarak bu defa rastgele klavyeden değerler yazdım. “ESC” tuşuna basıp uygulamayı sonlandırdım. Metin belgesinin görünümünü tekrar inceleyelim.

Görüldüğü gibi kaldığı yerden devam ettiği zaman, girilen değerlerin tırnak işareti olmadan yazıldığını ve enterlanan alanlarda bir alt satıra geçtiği gözlemlenmektedir. Uygulamayı tekrar çalıştırıp bu defa Chrome ile web sitelerinde gezinelim.

Google’dan “sibertehdit.com” , “haberler.com” u aratmıştım. Bir sonraki görselde bu web sitelerini gezdiğim andaki ekran görüntülerini göstereceğim. Ayrıca metin belgesinde “not defteri”nin açılıp içerisine “IBAN” notu yazıldığı görülmektedir. Bir de ekran görüntülerini inceleyelim.

Ekran görüntülerinin “logs > screenshots” dosyasına başarılı bir şekilde yazıldığı ve o anda dinlenen tuş ismi ile kaydedildiği görülmektedir. IBAN Numarası yazan görseli inceleyelim 🙂

Ekran görüntüsü incelendiği zaman, not defteri içerisine IBAN NO: notu yazıldığı görülmektedir. Ayrıca haberler.com, sibertehdit.com da web ara yüzünde açıldığı gözlemlenmektedir. Python ile yazdığımız keylogger başarılı bir şekilde çalışmaktadır. Şimdi ise her Google Chrome açıldığı anda keylogger uygulamasını tetikleyelim.

Chrome İle Entegre Çalışma

Herhangi bir isimde bir txt dosyası açıp içerisine yukarıdaki komutları ekleyelim. İlk satıra, yazdığımız uygulamanın pathini, ikinci satıra ise Google Chrome uygulamasının dosya konumunu kopyalayıp yukarıdaki şekilde yazalım. Bu txt dosyasını “.bat” dosyası olarak kaydedelim.

Chrome kısayoluna sağ tıklayıp hedef bölümüne, oluşturduğumuz bat dosyasının path i girilir. Yapılan değişikleri kaydedip, yeni bir Google Chrome uygulaması başlatalım.

Görüldüğü gibi uygulama başladığı zaman aynı anda bat dosyası da çalışmaktadır. Klavyeden dinlenen her tuş anlık olarak bat dosyasına oradan da “logs.txt” dosyasına yazılmaktadır. “.bat” dosyasının chrome çalıştığı anda görünmesini de kapatabiliriz. Tarayıcı da yazdığım “deneme yazısı” anlık olarak bat dosyası cli ara yüzünde görülmektedir. Bu şekilde keylogger uygulamasını tamamlamış olduk.

Bu uygulama daha da geliştirilebilir. Örneğin Python kodları içerisine logs.txt dosyası oluştuktan sonra mail ile saldırgana gönderilebilir. Ses veya video kaydı da eklenerek uygulama geliştirilebilir. Ayrıca uygulamanın kodlarına https://github.com/sergenyanmis/keylogger github adresinden ulaşabilirsiniz.

Bu yazımda, Python programlama dili kullanarak bir keylogger uygulaması geliştirdik. Bir sonraki yazımda görüşmek üzere, sağlıklı günler.

Kaynaklar

https://pypi.org/project

https://youtu.be/7E8v7lpZSLw

https://youtu.be/ZohvV5ZJXSk

Sergen Yanmış

Merhaba. Kocaeli Üniversitesi Bilgisayar Öğretmenliği bölümünden mezunum. İşkur'un Nitelikli Bilişim Programında 600 Saatlik Siber Güvenlik Eğitimi'ni tamamladım. Kendimi bu alanda geliştirmeye devam ediyorum. Bloglar, makaleler yazıp CTF ve Siber Güvenlik alanındaki eğitimlere katılmaya çalışıyorum. Öğrendiklerimi, araştırmalarımı burada paylaşıyorum.

Related Posts

Facebook Comments