iwystic

Veteran
10 Rozet Seviye 10 İlk Paylaşım Sharer I Sharer II Sharer III İlk Mesaj İlk Beğeni İlk Çözüm Yardımsever Mentor Usta Mentor Hızlı Yardım Profilini Tamamla Doğrulanmış Üye
Katılım
27 Ağu 2019
Konular
290
Mesajlar
4,890
Çözümler
491
Tepkime puanı
10,809
RC Point
0
caldim.png

Hepinize tekrardan merhabalar RC üyeleri,
Bugün, “Sıfırdan Backdoor Trojan Yapımı” serimizin üçüncü bölümünü anlatacağım. Bu bölüm, serinin önceki iki bölümüne göre daha kolay diyebilirim. Zaten bol bol kullanılan kütüphaneleri kullanıp bilindik işlemlere yer vereceğiz.


4dKDtQ.png

İçerik:

- Dizin Değiştirmek
- Cihazdan Dosya Almak ve Göndermek
- İnternetten Dosya İndirmek
- Trojan ile Programları Çalıştırmak ve Bug’ları Düzeltmek


4dKDtQ.png

Dizin Değiştirmek

Virüsümüzü nereye atıp çalıştırırsak, yetkilerimiz sadece o konum içinde geçerli olur. Ben virüsü masaüstümde başlattığım için masaüstü dışına çıkamam.
"cd" komutu ve whoami komutları ile göstereceğim.

1608731255394.png

4dKDtQ.png

["Games" isimli klasöre girmeye çalışacağım.]

4dKDtQ.png

1608731746263.png

4dKDtQ.png

Yukarıda da görebildiğimiz üzere "Games" klasörümüze giremedik. Şimdi ilk yapacağımız iş, reverse shell’imize bu özelliği eklemek.

Bu yeni özelliğimizi kabuk fonksiyonu içine ekleyeceğiz. Normalde iki tane seçeneğimiz vardı; 0 ile çıkış yapmak ve normal bir string komut yazarak karşı makinede çalıştırmak. Şimdi onların arasına else if kullanarak yeni bir komut eklememiz lazım.

4dKDtQ.png

1608731918176.png

4dKDtQ.png

Pekâlâ, şimdi "cd" komutunun kullanımına bi' göz atmamız gerek. cd komutumuzu çalıştırırken, cd x\y\z şeklinde komutumuzu giriyoruz.
Yani asıl gitmek istediğimiz yol, “cd“ kısmından sonra. Bu yüzden komutumuzun sadece başındaki cd kısmını kod olarak kabul etmemiz gerek, devamını değil. Yoksa sadece tek bir dizine gitme hakkımız olur. Bunun için de sadece cd kısmını yazınca elif kısmını çalıştıracak kodu giriyorum.

4dKDtQ.png

1608732092861.png

4dKDtQ.png

Aynı zamanda, programımızın çökmemesi için girilen kodun 2 karakterden uzun olması gerek.
Bunun için gereken şartı da "and" bloğu ile ekliyorum.

4dKDtQ.png

1608732170883.png

4dKDtQ.png

"cd" komudumuz ile istediğimiz dizine gitmemizi sağlayacak kod dizinini ekliyorum.
Bunun için OS kütüphanesi lazım; Bu kütüphaneyi önceki derste dahil etmiştik.

4dKDtQ.png

1608732286538.png

4dKDtQ.png

Kodumuzun 3. karakterinden sonraki kısmı, yani belirttiğimiz dizini koda verdik;
ancak istediğimiz dizin yoksa veya yanlış yazdıysak programımız çökmesin diye bu kodları try-except blokları içine alıyorum.

4dKDtQ.png

1608732360488.png

4dKDtQ.png

Böylelikle, olası bir durumda while döngümüz devam edecek.

Bu kodları server’ımıza da eklememiz gerekiyor. O yüzden gerekli kodları server’a ekleyelim.

4dKDtQ.png

1608732641705.png

4dKDtQ.png

Bu kısımdaki işimiz bitti. Virüsümüzü executable yapalım ve dizin değiştirme işlemimizi deneyelim.

4dKDtQ.png

1608732711217.png

4dKDtQ.png

"mkdir" ile masaüstümüze bir yeni klasör oluşturduk. Ardından "cd" komutu ile klasörün içine girdik.

4dKDtQ.png

1608732831646.png

4dKDtQ.png

Klasörün içinde doliatius.txt isimli bir metin belgesi oluşturduk, içine de "Selamlar RC" metnini yazdık. Kontrol edelim.

4dKDtQ.png

1608733000553.png

4dKDtQ.png

Gördüğünüz gibi çalışıyor. Normalde “dir” komutu ile de kontrol edebilirdik; ama ne yazık ki hiçbir şekilde çalışmıyor. Uzun uzun araştırdım, denedim;
ama şu anlık bu komut eksiksiz ve düzgün çalışmıyor.

4dKDtQ.png

Cihazdan Dosya Almak Ve Göndermek

Kurbanımızın cihazından kendi cihazımıza veri aktarımı olmazsa olmazlardan birisidir.
Aynı şekilde kendi cihazımızdan karşıya da dosya gönderimi yapabilmek lazım. Bu kısımda bu işlemlere değineceğim.

İlk olarak dosya aktarım işlemleri sırasında encode/decode işlemleri kullanacağımızdan dolayı, base64 kütüphanemizi projemize dahil edelim.
Her iki Python dosyamızda da bu kütüphaneyi kullanacağız.

1608733795405.png

4dKDtQ.png

İndirme komutumuz için gerekli olan "else if" bloğunu ayarlayalım.

4dKDtQ.png

1608733871545.png

4dKDtQ.png

Burada yaptığımız şey; "cd" komutunda yaptığımızın aynısıdır. Dosya aktarım işlemleri için gereken kodlara başlayalım.

4dKDtQ.png

1608733972619.png

4dKDtQ.png

Buradaki “wb” kısmı (write bytes), yani "byte’ları yaz" anlamındadır. Aynı şekilde dosyayı gönderirken de “rd” (read bytes), yani "byteleri oku." anlamına gelen parametreyi kullanacağız.

Şimdi ise programımızın çökmemesi için base64 ile şifreleme kullanacağız.

4dKDtQ.png

1608734107728.png

4dKDtQ.png

Base64 kütüphanemizde "decode" işlemi böyle yapılıyor. "Peki, daha ortada encode edilmiş bir şey yoksa niye decode ediyoruz?"
Zaten trojan.py programımıza geçip ona da indir kısmını ekleyip, orada dosyayı encode’layacağız.
Aynı şekilde buraya da base64 kütüphanemizi ekleyelim.

4dKDtQ.png

1608734221554.png

4dKDtQ.png

Server üzerinde yaptığımız işlemleri buraya düzenleyerek yazıyoruz.

4dKDtQ.png

1608734275955.png

4dKDtQ.png

Dosya karşılama işlemi için gereken kodlar tamam; şimdi sıra test etmeye geldi.

Aynı şekilde, Windows makinemiz üzerinde executable yapıp deneyelim.

4dKDtQ.png

1608734505478.png

4dKDtQ.png

Masaüstümüzde rc.png isimli bir resim var. Bunu kendi virüsümüz üzerinden Kali Linux makinemize indireceğiz.

4dKDtQ.png

1608734636005.png

4dKDtQ.png

Görüldüğü üzere şu an bu resim bizim server’ımızın yer aldığı konumda. İşlem biraz yavaş gerçekleşti, tahminimce python dili ve internet şebekem ile alakalı.

Her neyse, dosya aldık. Şimdi karşıya dosya gönderme işlemini deneyelim. Bunun için aynı yaptığımız işlemin tersini de yapabiliriz; ancak ben onun yerine farklı bir kod dizisi kullanacağım. Amacım işlevsellikten ziyade zaten bu yazılımların nasıl çalıştığı.

Pekâlâ, şimdi servera kodlarımızı girelim.

4dKDtQ.png

1608735667365.png

4dKDtQ.png

"elif" bloğunu oluşturduğumuza göre, altını doldurma vakti.

4dKDtQ.png

1608736579048.png

4dKDtQ.png

Kısaca açıklamak gerekirse, önceki işlemin neredeyse aynısı. Sadece json kütüphanesini kullanmak yerine biraz daha döngüye başvurup dosyayı açtık, okuduk ve gönderdik. Bu arada encode işlemine gerek yok.

Gerekli kodları şimdi trojan.py programımız için uygulayalım.

4dKDtQ.png

1608736666054.png

4dKDtQ.png

Burada da server üzerinden gönderilen datayı önce bir dosya açtık, ardından da bu dosyaya yazdırdık. Bu kısımda sadece birkaç tane ufak format hatası bazen olabiliyor. Onun haricinde, tek seferlik durumda eksiksiz çalışıyor.

Fark etmiş olabilirsiniz; 7171 portu yerine 7575 portunu kullanıyorum. Epey deneme - yanılma ve bug onarımı hakkında çalıştığım için birkaç port hatası yaşadım.

Evet, bu kısımdaki işimiz şimdilik bitti. Tabi virüsümüzü geliştirmek adına son bölümde buraya tekrardan değineceğiz. Şimdi bir sonraki bölüme geçelim.

4dKDtQ.png

İnternetten Dosya İndirmek

Bu bölümde benim için daha güzel ve kullanışlı olan bir kısma değineceğiz; İnternetten dosya indirmek. Bu işlemimiz için python’da zaten bulunmayıp sonradan indirilmesi gereken requests kütüphanesini kullanacağız. İnternetten URL kullanarak resim, video veya müzik indirmek zaten python kullanıcılarının ilk öğrendiği şeylerden birisi olabilir, daha doğrusu requests kütüphanesinin kullanımını çoğu kişi biliyordur.

Bu özelliği eklemek için öncelikle requests kütüphanesini indirmek gerekli.

1608737004445.png

4dKDtQ.png

Kurulumu ben daha önceden yapmıştım; ancak sizlere göstermek için yeniden yaptım.

Requests kütüphanemizi trojan.py’ye ekleyeceğiz.

4dKDtQ.png

1608737074854.png

4dKDtQ.png

İndirme işlemi için dosyamıza bir fonksiyon ekleyelim.

4dKDtQ.png

1608737216978.png

4dKDtQ.png

Fonksiyon içinde gerçekleşen işlemde verilen URL’deki dosyayı indirip bilgisayara kaydedilsin.

4dKDtQ.png

1608737261343.png

4dKDtQ.png

"İndirilen dosyamızın ismi" kısmına geçtik. Burada istediğiniz şekilde adlandırma yapabilirsiniz; ancak dosyanın URL sonundaki isim ile kaydedilmesini istiyorum.

4dKDtQ.png

1608737379896.png

4dKDtQ.png

Burada URL adresimizin içerdiği her “/” karakterine göre böldük. En son kısmını da dosya ismi olarak aldık.
Az önceki kısımlarda da yaptığımız gibi yazdırma kısmını ekleyelim.

4dKDtQ.png

1608737460529.png

4dKDtQ.png

Alınan kodlar bölümüne de indirme komutumuzu "webindir" ismi ile ekleyelim ki bir önceki indir ile karışmasın.
Aynı şekilde eğer dosya indirildiyse bize tekrardan bir bildirim göndersin ki indirildiğini anlayalım.

4dKDtQ.png

1608737542698.png

4dKDtQ.png

Trojan.py kısmında işimiz tamam, şimdi sırada server’ımız üzerinde "else if" bloğu kullanarak URL’den indirme işlemini gerçekleştirmek var.
Önceki eklemelerde de olduğu gibi buraya da aynı şekilde bir blok ekliyoruz.

4dKDtQ.png

1608737655007.png

4dKDtQ.png

Pekala, programımızı çalıştırmadan önce indirmek için bir dosya bulalım. RC’de dolanırken bu resme denk geldim:

https://realitycheats.com/threads/counter-strike-global-offensive-rc-legit-hack-v1-0-4.328/#lg=attachment5518&slide=0

Bu resmi indirmeye çalışacağız.

4dKDtQ.png

1608737947071.png

Görebildiğiniz gibi, internetten bu resmi indirmeyi başardık. İnternetten dosya indirme işlemi ile alakalı bölümümüz de şu an sona erdi.

4dKDtQ.png

Trojan İle Programları Çalıştırmak Ve Bug’ları Düzeltmek

İlk olarak düzeltmek istediğim ve bug’a sebebiyet verecek kısımları düzeltelim.

Olası durumlarda sorun yaşamamak için gerekli yerlere try-except blokları koyalım.
İndir ve yükle seçeneklerine server üzerinde basitçe try-else bloklarını koyuyorum.

1608738217611.png

4dKDtQ.png

Böylelikle server üzerinde bilgisayarda olmayan bir dosyayı indirmeye çalıştığımızda program donup kalmayacak. Aynı şekilde, işlem bizim bilgisayarda olmayan bir dosyayı karşı tarafa atmaya çalıştığımızda da yaşanmayacak.

Reverse shell’imiz üzerinde birkaç oynama yapalım.

4dKDtQ.png

1608738299332.png

4dKDtQ.png

Şu anlık her bloğumuzda try-except var; fakat burada ayarlamak istediğim bir şey daha var, yükle seçeneğini şu anlık sadece bir kere kullanabiliyoruz.
Bunu istediğimiz kadar dosyaya çıkarmak için basit ama etkili yeni bir kod dizisi daha ekliyorum.

4dKDtQ.png

1608738408584.png

4dKDtQ.png

Böylelikle, sıfırdan başlayarak her indirilen dosyada dosyanın adı 1,2,3,4… diye gidecek.

Aynı zamanda, buradaki son değineceğimiz bug ise, server üzerinden start x yazarak x.exe programını başlatabiliyoruz.

4dKDtQ.png

1608738515195.png

4dKDtQ.png

Ancak, notepad veya hangi x uygulamasını açarsak açalım, o program kapatılana kadar server üzerinden virüse erişimimiz olmuyor.
Şimdi notepad’i kapatıyorum ve yazdığımız kodlar yeniden çalışıyor.

4dKDtQ.png

1608738609437.png

4dKDtQ.png

Bu bölümde son olarak bu hatayı düzelteceğiz ve ardından serimizin 3. bölümü bitireceğiz.

İlk olarak trojan’ımıza girelim. Orada yeni bir "elif" bloğu kullanarak bu işlemde oluşacak hatayı düzeltelim.

4dKDtQ.png

1608738713991.png

4dKDtQ.png

Programı açtırıyoruz, işlem başarıldı olduysa bize bildirim gönderecek.
Ne olur ne olmaz, yazım yanlışı gibi durumlarda program çökmesin diye bir try-except bloğu da ekleyelim.

4dKDtQ.png

1608738794296.png

4dKDtQ.png

Bu kısımdaki işimiz bitti.

Şimdi çalıştırıp kontrol edelim;

4dKDtQ.png

1608739100806.png

4dKDtQ.png

Evet değerli RC ailesi, bu bölümün de sonuna gelmiş bulunmaktayız. Sorularınız için benimle iletişime geçebilirsiniz.
Ayrıca, yavaş yavaş serinin sonuna geliyoruz, çoğu ihtimalle vaktim olursa seriyi 5 bölümde bitiririm. Bir sonraki bölümde biraz daha crypter konularına girerim diye düşünüyorum.
Ayrıca, belki birkaç güzel özellik daha eklerim.

Hepinize iyi günler dilerim, bir sonraki bölüme kadar beklemede kalın.
 
Üst