Sıfırdan Kendi Backdoor Trojanımızı Geliştirelim #5

Dolyetyus

Co Admin
21 Nis 2020
1,207
670
Delft
Hepinize Selamlar Sayın Turk Hack Team Üyeleri,

Bu yazıda “Sıfırdan Kendi Backdoor Trojanımızı Geliştirelim” isimli serimizin muhtemelen son bölümünü okuyacaksınız. Normalde neredeyse iki bölümlük araştırma ve deneme yapmıştım ancak 2 tane kısa konu yerine bir tane uzun konu yazma kararı aldım. O yüzden bu konu biraz daha uzun sürecek.

Önceki dört bölümde Trojan’ımızı çok ileri düzeyde olmasa da ortalama bir düzeye getirdik. Bu bölümde genel olarak 2 özellik daha ekleyeceğim. Ardından bu seri bitmiş olacak. Giriş kısmında çok oyalanmak istemiyorum, bu yüzden genel başlıklara geçiyorum.

xRDuEc.png


Konu Başlıkları:

- Pynput Kütüphanesi Kullanımı
- Temel Keylogger Oluşturma
- Threading Kütüphanesi İle Keylogger Debugging
- Keylogger’ı Virüse Dahil Etme
- Hedef İle İletişim Kurma


xRDuEc.png


Pynput Kütüphanesi

İsminden de aslında ne olduğu belli olan bu kütüphaneyi kullanarak klavyede basılan her tuşu görebiliriz. Bazı belli parametreleri kullanarak keylogger’ımızı bu kütüphaneyi kullanarak oluşturacağız.
Not: Bu bölümde anlatımı Kali üzerindeki bir hata yüzünden Windows ve Python’un kendi IDE’si üzerinden yapacağım.

İlk olarak python’a eklemek için kütüphaneyi indirmeniz lazım. Sanırsam bazı sürümlerde zaten yüklü olarak geliyormuş ancak bende kurulu değildi, ben de sonradan kurdum. Kurmak için aşağıdaki komutu kullanabilirsiniz.

Kod:
 C:\Python27\Scripts\pip.exe install pynput
Ardından keylogger.py isminde yeni bir pyhton çalışma dosyası oluşturalım. Virüse ekleme yapana kadar bu dosya üzerinde çalışacağız. Ardından ise zaten import ile projemize ekleriz.

i76DK7.jpg


Ardından bu yeni projemize pynput kütüphanemizi dahil edelim. .keyboard kısmını da eklememiz lazım çünkü bir keylogger yapacağız.

wOuZgj.jpg


Şimdi ilk olarak bu kütüphanenin en basit şekliyle çalışmasını göstereceğim. Bunun için öncelikle bizim tuşladığımız karakterleri yazan bir uygulama yapalım.
Bunun için de ilk olarak bir yazdırma fonksiyonu ekleyelim.

agMn98.jpg


Ardından bu fonksiyonu çağırmak için yazdığımız her tuşu izleyecek olan kod dizinini girelim.

TjmLK5.jpg


Ardından yazdıklarımızı ayırması, yani daha okunaklı hale getirmesi için join fonksiyonunu kullanıyoruz.

TxDwBm.jpg


Şimdi ise öncelikle isterseniz bu keylogger.py programımızı kaydedelim. Ardından ise çalıştırıp deneyelim.

8AJYB3.jpg


Görebildiğiniz üzere bastığım harfleri tek tek yazdı ancak şu an çok anlaşılabilir değil. U’ kısmından sonraki harflere bakarsak merhaba, tht ve doliatius yazdığını görebilirsiniz. Aynı zamanda normal karakterlerin yanı sıra klavyedeki diğer tuşlara basıldığında da output verdi. Yani enter, control veya space gibi tuşları da yazdırdı.

Burada kısaca kütüphaneyi tanıttım, sırada keylogger’ı oluşturmaya başlamak var.

xRDuEc.png


Temel Keylogger Oluşturma

Temel şekilde keylogger oluşturma vakti geldi. Şimdi öncelikle bu bastığımız karakterleri ekrana yazdırmadan bir txt dosyasına kaydedelim. Bunun için öncelikle print(harf) kısmını silip dosya açıp dosyaya yazdırma kodlarını girelim.

p8yNUI.jpg


Bu kod ile keylogger.txt isimli dosyamızı oluşturduk. “a” yani append değeri ise dosya yoksa oluşturur, varsa üstüne yazar.

ruxChm.jpg


Burada da bastığımız tüm tuşları bu açtığımız dosyanın içine yazdırdık. Deneyip göstermek gerekirse böyle çalışıyor:

sZhQ3h.jpg


EEgiEj.jpg


Tüm tuşları bir dosyaya yazdırdık evet ancak aradaki diğer karakterler yüzünden okunaklı halde değil. Neredeyse kimse anlayamaz ne yazıldığını. Bu yüzden şimdi biz de bu dosyanın okunabilirliğini arttıralım.

Öncelikle projemize karakterler isminde bir değişken atayalım. İçini de şimdilik boş bırakalım.

LNkz6D.jpg


Ardından karakterler değişkenimizi, tus_yazdir fonksiyonunun içine global olarak alıyoruz. Aynı şekilde basılan tuşları char metodu ile düzenliyoruz.

ZH84JZ.jpg


Tabi şimdilik sizlere göstermek amacı ile dosyaya yazdırmak yerine print() ile anlık komut satırına yazdıralım.

ajOCm6.jpg


Şimdi ise çalıştırıp turkhackteam yazdıralım.

yGtbL7.jpg


Fakat normal harfler haricinde herhangi bir özel tuşa basarsak ne olur? Mesela turk hack team yazdıralım.

MBX1sS.jpg


Gördüğünüz gibi boşluk tuşuna basar basmaz program çöktü çünkü özel karakterleri desteklemiyor char metodumuz. Bunun için ise AttributeError üzerinden try-except bloğu oluşturacağız.

QQiqG3.jpg


Bu bloğumuz tamam, düzgün çalışıyor ancak bu şekilde yaparsak her özel tuş basıldığında boşluk tuşu olarak algılayacak. O yüzden bu kısmı bir if-else bloğuna alarak daha da düzenliyoruz.

28e7WH.jpg


Şu an kodumuzun düzgün olarak çalışması lazım. Space tuşuna basıldığı zaman boşluk koyulacak ve diğer özel tuşlarda ise bir boşluk ve ardından hangi tuş olduğu yazacak.
Çalıştırıp deneyelim.

wkjsVD.jpg


Evet, şu anlık basit keylogger bölümümüz bitti. Ancak daha kullanışlı bir hale getirmek ve hataları düzeltmek lazım. Bir sonraki bölümde biraz daha geliştireceğiz. O yüzden sonraki başlığa geçiyorum.

xRDuEc.png


Threading Kütüphanesi İle Keylogger Debugging

Yukarıdaki resimlerde de gördüğünüz gibi yeni bir tuşa basınca program anında onu kaydedip yazdırıyor. Bu şekilde gayet büyük yer kaplayan ve anlaşılamaz dosyalar oluşur. Şimdi biz de burada bunun önüne geçmek için girilen karakterleri belli aralıklarla yazdıracağız. Bunun için de öncelikle threading kütüphanemizi eklememiz lazım.

jO5cM5.jpg


Ardından ise yazdırma işlemimizin zamanını ayarlamak için yeni bir fonksiyon oluşturuyoruz.

BVI9ws.jpg


Print fonksiyonumuzu buranın içine alıyoruz, doğal olarak diğer print’leri de siliyoruz. Karakterler değişkenimizi buranın da içinde global olarak ayarlıyoruz.

XevuPo.jpg


Şimdi ise threading’in timer modülünü kullanarak girilen değerleri belli aralıklarla yazacağız. Bunun için isterseniz time.sleep() de kullanabilirsiniz. Ancak o zaman program size sorun yaşatır, yazıları okumaz.

X02aQg.jpg


Burada ben değeri 10 saniye olarak ayarladım ancak siz bunu kendi isteğinize göre ayarlayabilirsiniz. Ardından ise 10 saniyede bir olacak şekilde fonksiyonu çağırdık.

QsU8eK.jpg


Bu kod ile de sayaç isimli işlemi başlattık. Aynı zamanda zaman fonksiyonunu da çağırdık. Dilerseniz şimdi gelin, çalıştırıp görelim.

APdxfH.jpg


Gördüğünüz üzere daha düzgün ve okunaklı şekilde çalışıyor. Ancak hala birkaç eksiği var. En basitinden space hariç diğer özel karakterleri yazıyor –ki bu da okunuşunu zorlaştırıyor- ve Türkçe karakter girince Unicode error veriyor. Örnek:

51RvD6.jpg


Şimdi bu hataları düzelteceğiz.

İlk olarak girilen diğer her özel karakter için else if blokları oluşturalım.

sAFEH2.jpg


Gördüğünüz üzere burada bir sürü elif bloğu kullandık ve ona rağmen daha tüm özel tuşları ayarlayamadım. Sadece ayarladığım önemli şeyler enter’a basınca satır atlamak ve backspace’e basınca yazılan son karakterin silinmesi oldu. Bunu daha da geliştirebiliriz. Mesela Caps Lock tuşuna basılınca harfleri büyük yazabilir. Ancak şimdilik bu kadar yeter.
Şimdi programımızı çalıştıralım bir de.

zkzAuL.jpg


Göründüğü üzere normal şekilde çalışıyor. Ancak hala Türkçe bir karakter kullanırsak program çökecektir. Bunun için normalde encode-decode işlemi kullanabilirdik ancak python2 sürümünde keylogger oluştururken bu durumu düzeltmeye çalışırken çok fazla kez sistemim çöktü/ağırlaştı. O yüzden ben de Türkçe karakterler için yeni bir except bloğu oluşturup başka bir karakter atadım.

CjjYvI.jpg


Eğer Türkçe bir karakter girilirse * karakterini yazacak. Bunun çok da büyük bir problem yaratmayacağından eminim.
İsterseniz deneyip görelim.

Xpnt4Z.jpg


Örnekte de görüldüğü üzere çok bir sıkıntı yok genel olarak.

Şimdi ise buraya kadar geliştirdik keylogger’ı, sırada bunları bir dosyaya yazma vakti.
Burada çok farklı bir işlem yapmamıza gerek yok, sadece tuşladığımız karakterleri direkten ekrana değil de keylogger.txt’ye yazdıracağız. Bu yüzden print() fonksiyonunu silip keylogger.txt isimli yeni bir dosya açacak, o dosya varsa da üzerine girilen değerleri yazdıracak.

brOluv.jpg


Şimdi ise aynı şekilde dosyaya yazıp yazmadığından emin olmak için kodumuzu çalıştıralım.

tqSzqa.jpg


uYm3V2.jpg


Evet, görünebildiği gibi yazdıklarımız 10 saniye arayla kaydoluyor. Daha okunaklı durumda ama hala çok üst düzey, gelişmiş bir keylogger değil ancak virüsümüzü kullanırken işe yarar düzeyde.
Bu arada keylogger kapalı olmasına rağmen arkada hala çalışıyor ve bu konuyu yazarken yazdıklarımı bile şu an deftere kaydediyor :D.
Sonraki bölüme geçelim.

xRDuEc.png


Keylogger’ı Virüse Dahil Etme

Evet, bu bölümde ise az önce oluşturduğumuz bu keylogger’ı trojan.py’mize dahil edeceğiz. Bunun için kısaca import keylogger yapabiliriz. Ama önce keylogger’ı çalıştıran kodları fonksiyon içine alacağız.

kj8Gfn.jpg


Buradan sonra ayarlamamız gerek bir diğer nokta ise keylogger.txt dosyasının nereye kaydolacağıdır. Normalde şu anki hali ile bu yeni dosya virüsün çalıştırıldığı yere açılır ve kaydedilir. Biz bu kaydolma yerini değiştireceğiz. Appdata yoluna kaydedeceğiz ancak öncelikle programımıza os kütüphanesini eklemeliyiz. Ardından ise kaydet isimli yeni değişkenimize kaydedilecek yolu seçiyoruz. Ardından ise bu değişkeni kullanarak o yolu belirtiyoruz.

9xRRyS.jpg


Tabi siz bu ismi keylogger.txt yapmak zorunda değilsiniz, hatta önerim yapmayın. Windowslog.txt gibi bir isim yaparsanız daha az şüphe çeker.
Bu keylogger’da şimdilik yapacağımız bir şey kalmadı.

Şırada trojan.py’ye gitmek var. Buraya gelip sırasıyla threading’i ve keylogger’ı import ediyoruz.

i7O8jP.jpg


Burada belki IP adresini değiştirdiğimi fark etmiş olabilirsiniz, bunun sebebi Kali sanal makinem üzerinde biraz kurcalama yaparken python’u bozmuş olmam. Onunla çok uğraşmak istemediğimden dolayı Windows üzerinde çalıştırıyorum.

Şimdi önceki konularda da yaptığımız üzere key_baslat isimli bir elif bloğu açıp gerekli olan kodları bu bloğun altına giriyorum.

qmU53G.jpg


Burada keylogger programımızın keyloggerbaslat isimli fonksiyonunu başlatmak için olan kodları girdik.

Ardından ise 0 tuşuna basınca keylogger.txt’nin silinmesi için gereken kodları girelim. Hedef makinede iz bırakmak istemeyiz değil mi? O yüzden biz bağlantıyı tamamen kesince bu keylogger dosyası da silinsin.
Elif bloğunda 0’ın olduğu yerin altına yazacağız birkaç kod.

rHexvC.jpg


Burada bir dosyayı silmek için gereken kodu yazdık yalnız eğer zaten böyle bir dosya yoksa diye programın çökmesini önlemek amacıyla bir try-except içine aldık. Şimdi silinsin diye belirttiğimiz değişkenin içine dosya yolunu yazmamız lazım. Bunun için projemizin en sonuna bu dosya yolunu ekliyorum.

NuHywC.jpg


Bir de eklememiz gereken bir diğer özellik ise bu keylogger.txt dosyasında yazanları server’a yani bize yönlendirmek. Bunun içinde yeni bir elif bloğu açıyoruz.

mDpG9F.jpg


Ardından ise virüsün bu komutu aldığında bize geri dosyayı göndermesi için gerekli olan dosyayı okuma ve verigonder fonksiyonu üzerinden bize göndermesini sağlayacak kodları giriyorum.

BSoFZs.jpg


Trojan.py üzerinde yazacağımız kodlar halledildi. Şimdi sırada server üzerine yazacağımız kodlar var.

Server.py’nin bir kopyasını Windows makineme almıştım, onun üstüne kodlayacağım.
Yeni bir elif bloğu oluşturup keylog başlat fonksiyonunu giriyorum. Eğer bu koda continue eklemezsek else kısmına gider ve orada hiçbir dosya karşılanmadığı için program çöker.

KaHZ2B.jpg


Ardından ise ister verial fonksiyonunu kullanarak keylog oku fonksiyonunu çağırın, isterseniz de zaten else bloğunda verial olduğu için bir şey yazmayın.
Ben yazmamayı seçtim.

3OLw8g.jpg


Buradan sonra server.py üzerinde yapmamız gereken tek şey yardım menüsünü güncellemek. Kolay bir işlem.

z9ny0Z.jpg


Şu anda server üzerinde de, trojan.py üzerinde de bir sıkıntı yok gibi görünüyor. İsterseniz çalıştırıp deneyelim.

NOT: Colorama kütüphanesi python’ın kendi IDE’si üzerinden çalıştırıldığında bu şekilde, Unicode olarak görünüyor. O yüzden windows’ta bu şekil bir çalıştırma ile programı okumak zor olabilir.

RVFotc.jpg


Görüldüğü üzere keylog’ı başlattık ve ardından okuduk. Kabul ediyorum, çok okunaklı değil. Bu yüzden siz yazdırma aralığını 1 dakika veyahut da 30 saniye olarak ayarlarsanız daha güzel olur. Ayrıca klavye üzerindeki tüm özel karakterleri elif içine alabilirsiniz. Bu arada Windows üzerinden kodu çalıştırdığımda dir gibi komutlar çalışıyor. Linux üzerinde de çalışmıyor. Nedenini daha anlayamadım.

fvZmxO.jpg


Yukarıdaki fotoğrafta da görebildiğiniz üzere appdata’da keylogger.txt isimli bir dosya oluşmuş.

Genel olarak keylogger’ı virüse dahil etme işlemi bu kadardı. Ancak burada söylemek istediğim bir şey, ben tüm server kodlarını linux’ta, tüm trojan.py kodlarını da windows’ta çalıştırılacak şekilde ayarladım. Bu yüzden bazı durumlarda, şimdiki gibi, server kullanımı çok zor olabilir.

Bir sonraki başlığımıza geçelim, serinin son alt başlığına.

xRDuEc.png


Hedef İle İletişim Kurma

Dürüst olmak gerekirse bu bölümde direkt olarak yeni bir kod eklemeyeceğim. Daha çok nasıl kurbanınızla iletişim kurarsınız, bunu göstereceğim. Ama pratik bir yol ile, zaten şu ana kadar yaptığımız her şeyi kullanarak iletişime geçeceğiz.

Burada, ilk bölümde yaptığımız basit mesajlaşma uygulamasına tekrardan bir göz atalım. Bu kısımda çünkü o şekilde bir uygulamayı kullanarak hedef ile sohbet edeceğiz.
Not: Bu alt başlığı 2 gün sonra yazdım ve o arada kali linux’ımı düzelttim. O yüzden kali üzerinden devam edeceğiz.

İlk önce isterseniz ilk bölümdeki uygulamamızı tekrardan gözden geçirelim. İlk olarak kendimizin kullanacağı versiyona bakalım.

jZEska.jpg


Bir de bunun client side, yani kurbana göndereceğimiz versiyonuna bakalım.

TzqSH3.jpg


Evet, bu resimler ilk bölümdekilerden. Bu yüzden ben de şu an bu programları şimdi için düzenledim. Aşağıda görebilirsiniz.

Kendimiz için:

wHMu9U.jpg


Hedef İçin:

SMtGlQ.jpg


Tamam, dürüst olmak gerekirse şu an hacker ile konuşuyorsun ifadesini kendimde kullanınca biraz komik oldu. Ancak yazacak başka bir şey gelmedi aklıma. Yoksa ben normal 2 senelik bir lamer veya script kiddie’yim. Hangisini isterseniz yani :D.

Şimdi gelelim şimdi ne yapacağımıza, hedef bilgisayarda muhtemelen pyhton yüklü değildir. Biz de bu yüzden ilk olarak mesajal.py isimli dosyamızı pyinstaller ile exe yapacağız.

Kod:
 pyinstaller –onefile /root/Desktop/trojan/mesajal.py

Burada sadece onefile parametresini kullandık çünkü programımız başlayınca Shell açılsın ve mesajları oradan yazalım. İsterseniz buna colorama da ekleyebilirsiniz ancak ben eklemedim. Bu arada bizim trojan klasörümüzde de ikinci bir mesajat.py dosyası var.

KVWDAp.jpg


Bu arada size önerim pyinstaller ile wine kullanarak veya Windows üzerinden .exe haline getirmeniz. Yoksa kali üzerinde problem olabiliyor. Bu arada, buradan sonra yapabileceğimiz işlemleri tek bir dosya içinde de yapabiliriz ancak işleri iyice karıştırmak istemiyorum.
Son olarak da; mesajal ve mesajat içindeki socket’i 7777 portu yerine 7778 portuna ayalardım. Eğer address already in use hatası alırsanız buna dikkat edin.

Şimdi Linux üzerinde server.py’ı çalıştıralım. Ardından ise Windows üzerinde trojan’ı çalıştırıyorum ben.

PD2gZb.jpg


Göründüğü üzere bağlantı geldi. Ardından y’ye basıp yardım menüsüne geldik. Buradan sonra yapmamız gereken basitçe server ile aynı klasörde bulunan mesajal.exe dosyasını yükle fonksiyonu ile hedefin cihazına yüklemek. Ayrıca yüklemek istediğiniz yeri isterseniz cd komutu ile ayarlayabilirsiniz. Ben direkten aktif trojan.exe’nin çalıştırıldığı yere atacağım. Ayrıca fark ettiyseniz yardım kısmı şu anda güzel ve eksiksiz durumda.

l3tEnZ.jpg


Buradan sonra yapmamız gereken tek şey önce mesajat.py’yi çalıştırmak, ardından ise server üzerinden yüklenen_dosya.exe ile yüklenen dosyayı çalıştırıyoruz.

Xz2M4s.jpg


Gördüğünüz gibi şu anda mesaj penceremiz açıldı. Bu arada yüklenen_dosya olmasının nedeni bizim yükle fonksiyonunda öyle ayarlamış olmamız.
İsterseniz şimdi de birkaç mesaj yazalım.

6a901B.jpg


Görebildiğiniz üzere gayet bu şekilde hedefimiz ile mesajlaşabiliyoruz. Zannediyorum ki kendi yaptığımız bu virüs için bu kadar özellik yeter. Artık bir trojan’ın nasıl yapıldığı hakkında fikriniz var.

xRDuEc.png


Serimizin sonuna geldik artık. Benim için çok eğitici, bir o kadar da uğraştırıcı bir seriydi. Toplam seriye kaç günümü verdiğimi bile artık hatırlamıyorum. Sizlere önerim, araştırmanız. İlgilendiğiniz konular hakkında araştırın ki detaylıca ne olduğunu öğrenin. Sonra benim yaptığım gibi bilgilerinizi paylaşabilirsiniz. Bu şekilde başkalarını da bilgilendirebilirsiniz.

Artık ortalama bir Windows trojan’ının nasıl yapıldığını biliyorsunuz. Her ne kadar bu seride python kullansam da Python ile virüs yapmayı, özellikle python2 ile virüs yapmayı tavsiye etmiyorum. Çok yavaş çalışan ve sık sık bazı konularda zorlandığım bir konu oldu. Tavsiyem C# veya C++’dır. Bu diller hem zaten direkten masaüstü Windows uygulamaları için kullanılmakta hem de hızlı çalışmaktadır.

Benden bugünlük bu kadar. Aklınıza takılan sorular varsa mesaj atabilirsiniz. Hepinize iyi günler dilerim. :)
 

nachteule

Yeni üye
23 Nis 2020
34
1
okurken zevk aldım içeriğin yanında anlatım dili de güzel sanki :D eline sağlık dostum
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.