keylogger

Bu yazı ile öğreneceklerimiz neler?

 

*Tıklanıldığında direk o konuya gidecek şekilde ayarlandı.


Keylogger Nedir?

Keylogger, çalıştırılan bilgisayarda bilgisayar sahibine kendini fark ettirmeden, bilgisayarda basılan tuşların kayıtlarını tutan ve bu kayıtları programının sahibine mail atan bir casus programdır. Genellik kullanıcı adı ve ya şifre çalmak için kullanılır. Sosyal mühendislik yöntemleri ile kurban bilgisayarda çalıştırılır. Güvenlik açısından yöneticinin bilgisi dahilinde de kullanılabilir.


Uygulamanın Özellikleri

Hani dedik ya profesyonel keylogger diye şimdi benim açımdan profesyonel olmasını sağlayan özelliklerine bakalım.

Öncelikle uygulamanın basit bir arayüzü var ve kullanıcıdan bir mail adresi, o mail adresinin şifresini, dk bilgisi ve bir tarih ister.

Uygulama arayüzü
Uygulama arayüzü

Keylogger Oluştur butonuna basıldığında seçilen dosya dizinine, alınan parametreler doğrultusunda o kullanıcıya özel bir exe dosyası oluşturur. Oluşan yeni exe, bizim kurbanda kullanacağımız exe’dir. Bir sosyal mühendislik yöntemi ile ve ya kendiniz (flash bellek vs) gibi yöntemlerle bu exe’yi kurban bilgisayarda çift tıklayarak çalıştırırız. Herhangi bir çalışma belirtisi almayız ama program çalışmaya başlamıştır. Artık o exe dosyasını silebiliriz. Bilgisayar bizimdir 🙂

Çalıştırdığımız bilgisayarda basılan tuşların kaydını, arayüzde girdiğimiz mail adresini kullanarak mail atar. Bu mail atma işlemini ise gene arayüzde girdiğimiz dk aralığında bir yapar. Bilgisayar kapansa dahi tekrar açıldığında aktif olarak kullanıcıya kendini fark ettirmeden klavye loglarını atmaya devam eder. Seçtiğimiz kendini silme tarihi ise program o tarihe geldiğinde kurban bilgisayardan kendi kendini silerek izlerini kaybeder.

Eğer oluşturduğumuz exe’nin adını keylogger koymaz isek anti-virüs programları bunu fark etmez. Sebebi ise önemli sistem dosyalarını kullanmayan ve sisteme zarar vermeyen bir program olmasıdır.


Hadi Programlayalım…

Programlama kısmının anlaşılması için iki ana bölümde ele alalım ve her bölümü de metotlar üzerinden parça parça yazalım. İlk bölüm de oluşan exe’nin programlanmasıdır ki esas iş burada. İkinci bölüm ise arayüzün programlanması ve ilk bölümde yazdığımız programın arayüze entegre edilme işlemidir.

Bölüm 1

İlk olarak Virsual Studio’nun C# bölümünde bir konsol uygulaması açıyoruz. Metotları ve değişkenleri bunun içine yazıyoruz. Main() Metodunu en son dolduracağız.

Değişkenler

Main() metodunun üstüne global değişkenlerimizi tanımlıyoruz.

Bu değerleri ilerde arayüzde atayacağımız için şimdilik el ile giriyoruz.

Tuş kontrol metodları

AsyncKeyState ile gelen basılan tuş bilgileri ascii sayıları halindedir. Bu sayıları yakalamak için Kontrol() metodunu çağıracağız.

Kontrol() metodu da yakaladığı sayıları MakeChar() metoduna göndererek basılan tuşların Türkçe karakter olup olmadığına bakar, eğer Türkçe karakter ise kayıt etmesini sağlar. Türkçe karakterleri otomatik olarak çevirmediği için karakterlerin tek tek ascii kodlarını girdik.

Bu metotlar bize klavyeden basılan tuşların neler olduğunu söylecek olan metotlardır.

Tuşların kaydını tutma

Şimdi yakaladığımız tuşların kaydını bir yerde tutmalıyız. Çünkü bu metotlar while döngüsü içinde sürekli olarak çalışacaklar ve her klavye tuşunu teker teker yakalayacakalar. Yakaladıklarımızı bize mail atma zamanı gelene kadar tutacağımız bit txt dosyamız olması lazım.

FileStream ile bilgisayarlardaki gizli özel dosya olan ApplicationData klasörünede GrayLog adında bir txt dosyasının kontrolünü yaptık ve eğer yoksa oluşturduk.
StreamWriter ile de bu text dosyasının içine klavyeden gelen tus değişkenini yazdık.

 Kaydı tuttulan tuşları okuma ve silme

Bu metot da ise teker teker yazdığımız basılan tuşların kaydının buşunduğu GrayLog.txt dosyasındaki değerleri okuma işlemini yapacağız. Bu işlem artık mail gönderme zamanı geldiğinde yapılacak ve mail de gönderilecek olan yazılar olacak.

Mail gönderildikten sonra yani Oku() metodunun işi bittikten sonra yeni loglar gelmesi için kayıt tuttuğumuz text dosyasının içini temizlememiz gerekiyor. Bunun için Sil() metodu yazacağız ve kayıtların sürekli olarak kayıt edildiği bu text dosyasının boyutunun sürekli artmasını engelleyip daha temiz loglar almamızı sağlayacağız.

Mail gönderme

Tuşları aldık, yazdık, okuduk, sildik şimdi de yazılan tuşları okuyup mail gönderelim.

Unutmayalım ki program sizin girdiğiniz mail adresini ve şifresini kullanarak o mail adresinin kendi kendine mail atmasını sağlayacak. Yani şifreyi o yüzden giriyoruz. Mail adresinin gmail olması zorunludur. Çünkü smtp ayarları gmail’e göre yapılmıştır. Ayrıca programın bu mail adresini kullanması için https://www.google.com/settings/security/lesssecureapps adresine gidip mail’in bu program tarafından kullanılabilir olmasını onaylamamız gerekiyor.

Dakika ayarları

Kaç dakikada bir log geleceğini gonDakika değişkenine yazdık. Bunu programın anlaması için şuanki dakikayı bilmesi gerekiyor ve bunun üzerine gonDakika değişkeninde yazdığımız kadar ekleyip, şuanki dakika eklenmiş dakikaya geldiğinde mail gönderme işleminin aktif olması gerekiyor.

Bu metotta Kontrol() metoduna göndermek için anlık dakika bilgisin aldık.

Kendini kopyalaması

Exe’miz çalıştığında ilk yapacağı iş kendini Start Up dosyasına kopyalamak olacak. Bunun sebebi Start Up dosyası bilgisayar açıldığında ilk çalışan programların olduğu dosyadır. Yani programımız burada durursa bilgisayar kapanıp açılsa dahi çalışmasına devam edecektir.

Programın kendini silmesi

Son olarak programımız girilen kendini silme tarihine gelindiğinde kendini ve ApplicationData dosyasında oluşturduğumuz GrayKey.txt dosyasını silmesi ve tüm izlerini ortadan kaldıması gerekiyor. Bunun için programın CMD dosya dizinine kendini sil komutu göndererek yapmasını sağlayacağız.

son olarak işlemi sonlandıran boş metotumuzuda ekledikten sonra Main() metoduna geçebiliriz.

Main() metot

Programın hayalet çalışabilmesi için Referanslara System.Windows.Form ekleyip, Solution Properties’den Windows Application seçiyoruz. Yani Console uygulamamız bir Windows uygulaması olarak çalışacak ama ortada bir Form olmadığı için yok olarak çalışacak.

Evet ilk bölüm bitti. Programın şu anki hali bizim casus olarak çalıştıracağımız halidir. Şimdi buna bir arayüz ekleyip ilk başta tanımladığımız değişkenleri bu arayüzden programa dahil edeceğiz ve bu kodlara sahip exe’nin yazacağımız arayüzden oluşmasını sağlayacağız.

Bölüm 2

Solution‘umuza bir Windows Form Uygulaması ekleyelim. Yukarıda paylaştığım arayüz fotoğrafına benzer bir Form oluşturalım. SaveFileDialog eklemeyi unutmayalım.

Keylogger Oluştur butonu kodları

Keylogger Oluştur butonuna tıklayar kod kısmına geçelim. İlk olarak programın patlamasını önlemek için girilen değerlerin boş olup olmadığını ve ya istenilen aralıkta olup olmadığını kontrol edeceğiz. Örneğin log alma süresini -5 (eksi beş) yapamamlı ve ya kendini silme tarihini geçmiş bir tarih yapamamalı.

Bu kontrollerden geçtikten sonra eğer sıkıntı yoksa saveFileDialog açılacak ve DialogResult.OK ise CSharpCodeProviderICodeCompiler, CompilerParameters ve CompilerParameters sınıfları kullanılarak ilk bölümde yazdığımız kodları yeni bir exe haline getireceğiz.

İlk bölümden kodların alınması

Butonun altına yazdığımız Kodlar() metodunu oluşturacağız. Bu kodlar metodu bizim ilk bölümde yazdığımız kodlar olacak. Yalnız bu kodları string olarak taşıyacağımız için ” değerlerinde sıkıntı çıkacaktır. Ctrl + f yaparak bu metodun içindeki ” işaretlerini * haline getirelim. En son return yapmadan önce Replace yaparak tekrar eski haline dönderip metodu gönderelim.

Evet programımız bitti. Şimdi Bu Windows Form Uygulamasını Set Start Up Project yaparak çalıştırabiliriz.

Not: Uygulamanın tanımadığı Class‘ların namespace‘ini ctrl+. yaparak eleyebiliriz.


Bilgisayarımda Keylogger Olduğunu Nasıl Anlarım?

Öncelikle keylogger’lar sürekli while döngüsünde çalışan programlar olduğundundan bilgisayarınızda zamansız kasmalar yapacaktır. Fan hareketlerinde hızlanmalar, tuşlara bastığınızda harflerin basar basmaz değilde biraz arkadan gelme durumuda olur. Yok benim bilgisayarım çok iyi diyorsanız bu kasmaları yaşamazsınız ama fan hızlanmaları ara ara yine olacaktır.

Diyelim ki şüphelendik programı nasıl yakalarız derseniz, keyloggerlar arkaplanda çalışır ve bunu görmenin yolu Görev Yöneticisinden geçer. Görev Yöneticisinde çalışan programlara bakın ve siz klavye tuşlarına hızlıca bastığınızda CPU kullanımı gözle görünü şekilde artan biz exe varsa keylogger olma ihtimali yüksektir.

Emin olmak için dosya dizinine:

yazıp bu klasöre gidelim. İşte burası yukarıda da dediğimiz gibi bilgisayarın başlangıçta başlatacağı programların bulunduğu dizindir. Eğer burada o CPU’nuzu kasan exe orada ise o keyloggerdir. Programı durdurup ve bu dosya dizininden silerek kurtulabilirsiniz. Ama yok ben bu kime ait bulmak isitiyorum, kim beni düdüklemiş bilmek isiyorum derseniz buyrun:


Bilgisayarımda Keylogger Buldum Bu Kime Ait?

Şimdi yukarıda ki dosya dizininde ve ya başkası tarafından size atılmış keylogger exe’sini bulduğunuzda önce exe’nin çalışmasını Görev Yöneticisinden durdurun. Sonra HEX programını indirin. Bu program tersine mühendislik programıdır ve uygulamaları tekrar koda döndürme işlemini yapar kısmende başarılıdır. İlla HEX olmasına gerek yok bu gibi başka programlarda kullanılabilir. Ben başarılı birşekilde HEX ile bu işlemi daha önce yaptığım için öneriyorum. exe’yi bu programa atıp içini açtığınızda gmail.com aratıp loglarınızın hangi mail adresine gittiğini ögrenebilir, gene o mail adresinin şifresini de görebileceğiniz için mail adresine girip hangi loglarınızın gittiğini tespit edebilirsiniz. Kullanıcılar ayarlarından da o maile daha önce hangi bilgisayardan ve nereden girildiğini görüp işlem başlatabilirsiniz.


Nasıl çalıştığını bilmediğiniz yazılımdan kendinizi koruyamazsınız…


Kaynak Kodu için:

https://github.com/fatihyldrim/keylogger

6 YORUMLAR

    • Program user32.dll kullandığı için nadirde olsa bazı antivirus programları veya win10 güncel defenderi virüs olarak algılayıp indirdikten sonra bazı dosyaları silmiş olabilir.

CEVAP VER

Yorum yazın
Lütfen adınızı buraya giriniz