Hepinize tekrardan merhabalar TurkHackTeam üyeleri,
Bugün, Sıfırdan Kendi Backdoor Trojanımızı Geliştirelim 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.
Şu ana kadar virüs yapımımız iyi gitti denebilir. Hatta bu bölümü yazmaya, ikinci bölümden tam 2 gün sonra başladım ve bu süre boyunca her bilgisayarı kapayıp açtığımda görev yöneticisinde trojan.exe programını görmek beni biraz heyecanlandırdı . Aşağıda da görebilirsiniz zaten.
Regedite eklenen key sayesinde yeterli kalıcılık sağladığımızı düşünüyorum. Neyse, bu bölümde biraz daha işe yarar, casusluk kısmı da diyebileceğimiz kısımla ilgileneceğiz. Hadi bir başlıklara göz atalım.
Konu Başlıkları:
- Dizin Değiştirmek
- Cihazdan Dosya Almak Ve Göndermek
- İnternetten Dosya İndirmek
- Trojan İle Programları Çalıştırmak Ve Bugları Düzeltmek
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östereyim hatta.
Games isimli bu klasöre girmeye çalışacağım.
Yukarıda da görebildiğiniz üzere Games klasörümüze giremedik. Şimdi ilk yapacağımız iş reverse shellimize 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.
Pekâlâ, şimdi cd komutunun kullanımına bir 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. 3 karakteri alacak kod yani.
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.
Ardından ise cd komudumuz ile istediğimiz dizine gitmemizi sağlayacak kod dizinini ekliyorum. Bunun için os kütüphanesi lazım, ki zaten önceki derste dahil etmiştik bu kütüphaneyi.
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.
Böylelikle olası bir durumda while döngümüz devam edecek.
Şimdi bu kodları serverımıza da eklememiz gerekiyor. O yüzden gerekli kodları servera ekleyelim.
Bu kısımdaki işimiz bitti. Virüsümüzü executable yapalım ve dizin değiştirme işlemimizi deneyelim.
Mkdir ile masaüstümüze bir yeni klasör oluşturduk. Ardından cd komutu ile klasörün içine girdik.
Şimdi ise klasörün içinde doliatius.txt isimli bir metin belgesi oluşturduk. İçine de selamlar THT metnini yazdık. Kontrol edelim.
Gördüğümüz gibi çalışıyor. Normalde dir komutu ile de kontrol edebilirdik ama ne yazık ki çalışmıyor hiçbir şekilde, uzun uzun araştırdım, denedim ama eksiksiz ve düzgün çalışmıyor şu anlık bu komut.
Bir sonraki bölüme geldi sıra.
Cihazdan Dosya Almak Ve Göndermek
Gayet önemli bir konu şahsimce. Kurbanımızın cihazından kendi cihazımıza veri aktarımı olmazsa olmazlardan birisi. Aynı şekilde kendi cihazımızdan karşıya da dosya gönderimi yapabilmek lazım. Bu kısımda bu işlemlere değineceğiz.
İ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 kullanacağız bu kütüphaneyi.
Ardından indirme komutumuz için gerekli olan else if bloğunu ayarlayalım.
Burada yaptığımız şey, cd komutunda yaptığımızın aynısı. Şimdi ise dosya aktarım işlemleri için gereken kodlara başlayalım, daha doğrusu şimdilik karşı cihazdan dosya almak için gerekli olan kodlar.
Buradaki wb kısmı write bytes, yani byteları yaz anlamındadır. Aynı şekilde dosyayı gönderirken de rd read bytes, yani bytlerı oku anlamına gelen parametreyi kullanacağız.
Şimdi ise programımızın çökmemesi için base64 ile şifreleme kullanacağız.
Base64 kütüphanemizde decode işlemi böyle yapılıyor. Peki, daha ortada encode edilmiş bir şey yoksa niye decode ediyoruz? Güzel soru, şimdi zaten trojan.py programımıza geçip ona da indir kısmını ekleyip, orada dosyayı encodelayacağız.
Aynı şekilde buraya da base64 kütüphanemizi ekleyelim.
Ardından server üzerinde yaptığımız işlemleri, buraya düzenleyerek yazıyoruz.
Dosya karşılama işlemi için gereken kodlar tamam, şimdi sıra test etmeye geldi.
Aynı şekilde executable yapıp deneyelim Windows makinemiz üzerinde.
Şimdi masaüstümüzde tht.png isimli bir resim var, bunu kendi virüsümüz üzerinden Kali Linux makinemize indireceğiz.
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 nasıl çalıştığı bu yazılımların.
Pekâlâ, şimdi ilk olarak servera kodlarımızı girelim.
Elif bloğunu oluşturduğumuza göre altını doldurma vakti.
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. Bu kısımdaki kodlar için en az 4-5 saat kafa yormuşumdur. Milyon deneme yanılma ile çalıştırmayı başardım .
Gerekli kodları şimdi trojan.py programımız için uygulayalım.
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ı olabiliyor bazen. Onun haricinde tek seferlik durumda eksiksiz çalışıyor.
Ayrıca belki fark etmiş olabilirsiniz ki 7171 portu yerine 7575 portunu kullanıyorum şu an. Epey deneme-yanılma ve bug onarımı hakkında çalıştığım için birkaç port hatası yaşadım.
Neyse, şimdi alttaki resimde de görebildiğiniz gibi forumda bu konuyu yazarken kullandığım profil resmini server üzerinden Windows bilgisayara göndereceğim.
Pekâlâ, şu anlık dosya uzantımız olmadığı için önizlemesi yok. Ancak dosyayı açmak için program seçince gayet gözüküyor resmimiz.
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.
İ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 pythonda zaten bulunmayıp sonradan indirilmesi gereken requests kütüphanesini kullanacağız. İnternetten url kullanarak resim, video veya müzik indirmek zaten pyhton 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.
Kurulumu zaten ben daha önceden yapmıştım ancak sizlere göstermek için yeniden yaptım.
Requests kütüphanemizi trojan.pyye ekleyeceğiz.
Ardından indirme işlemi için bir fonksiyon ekleyelim dosyamıza.
Şimdi ise fonksiyon içinde gerçekleşen işlemde verilen URLdeki dosyayı indirip bilgisayara kaydedilsin.
Şimdi indirilen dosyamızın ismi ne olsun kısmına geçtik. Burada istediğiniz şekilde adlandırma yapabilirsiniz ancak dosyanın, url sonundaki isim ile kaydedilmesini istiyorum.
Örnek olarak: https://tht.com/doliatiusprofilresmi.png urlsine sahip bir dosyanın sadece son kısmını alalım. Yani doliatiusprofilresmi.png olarak cihaza kaydedilsin.
Burada url adresimizinin içerdiği her / karakterine göre böldük. En son kısmını da dosyaismi olarak aldık.
Şimdi ise az önceki kısımlarda da yaptığımız gibi yazdırma kısmını ekleyelim.
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.
Trojan.py kısmında işimiz tamam, şimdi sırada serverımız üzerinde else if bloğu kullanarak urlden indirme işlemini gerçekleştirmek var.
Aynı önceki eklemelerde olduğu gibi buraya da aynı şekilde bir blok ekliyoruz.
Pekala, programımızı çalıştırmadan önce indirmek için bir dosya bulalım. Thtde dolanırken bu resme denk geldim.
https://www.turkhackteam.org/customavatars/avatar817848_1.gif. Şimdi bu resmi indirmeye çalışacağız.
Güzel, evet 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. Geçelim bakalım son bölüme.
Trojan İle Programları Çalıştırmak Ve Bugları Düzeltmek
Burada ilk olarak söylemek istediğim şey; ilk bölümün başında da bahsettiğim gibi, bu seriyi hazırlarken elinize direkten bir trojan backdoor vermek gibi bir amacım yoktu. Sadece normal python işlemlerini kullanarak nasıl Trojan olarak adlandırılan virüs yazılımından oluşturursunuz kısmı ile ilgilendim. Amacım trojan backdoorların çalışma mantıklarını göstermek olduğum için konularıma eklediğim fotoğrafları hazırladıktan sonra virüsü çalıştırınca birkaç ufak hata olduğu için geri kodlardaki hataları düzelttim. En basitinden, bir önceki bölümde reverse shellimizin içindeki webindir fonksiyonunun parantez içine url değişkenini almayı unuttuğum birkaç işlem sonrası geldi ve onu ekledim. Lakin belirttiğim gibi zaten uzun süren bu seriyi hazırlarken iyice o fotoğraf karmaşasına girmeyeyim diye sonradan düzeltmedim. An itibari ile international tim başta olmak üzere genelde yoğunum ve o yüzden en az karışıklık ile bu seriyi yapma kararı almıştım.
Ancak zaten yukarıda örnekteki gibi düzelttiğim bazı hataları bir sonraki fotoğraflarda çalışır şekilde görebilirsiniz. Sadece bazı durumlarda saatlerce küçük, 2-3 satır kod için saatler harcıyorum, o durumlarda biraz aklınız karışmış olabilir. Bu yüzden soru sormaktan çekinmeyin. Elimden geldiğince yardımcı olurum.
Neyse, şimdi asıl son bölüme geçelim. İlk olarak düzeltmek istediğim ve buga sebebiyet verecek kısımları düzeltelim.
İsterseniz 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.
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.
Ardından reverse shellimiz üzerinde birkaç oynama yapalım.
Ş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.
Böylelikle 0dan başlayarak her indirilen dosyada dosyanın adı 1,2,3,4 diye gidecek.
Ve buradaki son değineceğimiz bug ise, server üzerinden start x yazarak x.exe programını başlatabiliyoruz.
Ancak notepad veya hangi x uygulamasını açtıysak açalım, o program kapatılana kadar server üzerinden virüse erişimimiz olmuyor.
Şimdi notepadi kapatıyorum ve yazdığımız kodlar yeniden çalışıyor.
Uzun lafın kısası, bu bölümde son olarak bu hatayı düzelteceğiz ve ardından serimizin 3. Bölümünü bitireceğiz.
Şimdi ilk olarak trojanımıza girelim. Orada yeni bir elif bloğu kullanarak bu işlemde oluşacak hatayı düzeltelim.
Programı açtırıyoruz, ardından ise işlem başarıldı olduysa bize bildirim gönderecek. Tabi ne olur ne olmaz, yazım yanlışı gibi durumlarda program çökmesin diye bir try-except bloğu da ekleyelim.
Bu kısımdaki işimiz bitti. Dürüst olmak gerekirse bu komut için server üzerinde bir blok oluşturmak gerekli değil. Soracaklar olabilir; E o zaman neden webindir için server üzerinde blok oluşturdun? Güzel soru, canım istedi çünkü . Neden olmasın?
Neyse, şimdi sırada çalıştırıp kontrol etmek var.
Görüldüğü üzere neredeyse masaüstüm gözükmez oldu. Böylelikle en basit olarak birisini şakalayabilirsiniz.
Evet değerli THT ailesi, bu bölümün de sonuna gelmiş bulunmaktayım. Sorularınız için benimle iletişime geçebilirsiniz. Ayrıca yavaş yavaş serinin sonuna geliyoruz, çoğu ihtimalle vaktim olursa 5 bölümde bitiririm gibi seriyi. Bir sonraki bölümde biraz daha crypter konularına girerim diye düşünüyorum. Ayrıca belki birkaç güzel özellik daha eklerim python 2 için gerekli algoritma ve kodları halledersem.
Hepinize iyi günler dilerim, bir sonraki bölüme kadar beklemede kalın.
Bugün, Sıfırdan Kendi Backdoor Trojanımızı Geliştirelim 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.
Şu ana kadar virüs yapımımız iyi gitti denebilir. Hatta bu bölümü yazmaya, ikinci bölümden tam 2 gün sonra başladım ve bu süre boyunca her bilgisayarı kapayıp açtığımda görev yöneticisinde trojan.exe programını görmek beni biraz heyecanlandırdı . Aşağıda da görebilirsiniz zaten.
Regedite eklenen key sayesinde yeterli kalıcılık sağladığımızı düşünüyorum. Neyse, bu bölümde biraz daha işe yarar, casusluk kısmı da diyebileceğimiz kısımla ilgileneceğiz. Hadi bir başlıklara göz atalım.
Konu Başlıkları:
- Dizin Değiştirmek
- Cihazdan Dosya Almak Ve Göndermek
- İnternetten Dosya İndirmek
- Trojan İle Programları Çalıştırmak Ve Bugları Düzeltmek
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östereyim hatta.
Games isimli bu klasöre girmeye çalışacağım.
Yukarıda da görebildiğiniz üzere Games klasörümüze giremedik. Şimdi ilk yapacağımız iş reverse shellimize 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.
Pekâlâ, şimdi cd komutunun kullanımına bir 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. 3 karakteri alacak kod yani.
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.
Ardından ise cd komudumuz ile istediğimiz dizine gitmemizi sağlayacak kod dizinini ekliyorum. Bunun için os kütüphanesi lazım, ki zaten önceki derste dahil etmiştik bu kütüphaneyi.
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.
Böylelikle olası bir durumda while döngümüz devam edecek.
Şimdi bu kodları serverımıza da eklememiz gerekiyor. O yüzden gerekli kodları servera ekleyelim.
Bu kısımdaki işimiz bitti. Virüsümüzü executable yapalım ve dizin değiştirme işlemimizi deneyelim.
Mkdir ile masaüstümüze bir yeni klasör oluşturduk. Ardından cd komutu ile klasörün içine girdik.
Şimdi ise klasörün içinde doliatius.txt isimli bir metin belgesi oluşturduk. İçine de selamlar THT metnini yazdık. Kontrol edelim.
Gördüğümüz gibi çalışıyor. Normalde dir komutu ile de kontrol edebilirdik ama ne yazık ki çalışmıyor hiçbir şekilde, uzun uzun araştırdım, denedim ama eksiksiz ve düzgün çalışmıyor şu anlık bu komut.
Bir sonraki bölüme geldi sıra.
Cihazdan Dosya Almak Ve Göndermek
Gayet önemli bir konu şahsimce. Kurbanımızın cihazından kendi cihazımıza veri aktarımı olmazsa olmazlardan birisi. Aynı şekilde kendi cihazımızdan karşıya da dosya gönderimi yapabilmek lazım. Bu kısımda bu işlemlere değineceğiz.
İ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 kullanacağız bu kütüphaneyi.
Ardından indirme komutumuz için gerekli olan else if bloğunu ayarlayalım.
Burada yaptığımız şey, cd komutunda yaptığımızın aynısı. Şimdi ise dosya aktarım işlemleri için gereken kodlara başlayalım, daha doğrusu şimdilik karşı cihazdan dosya almak için gerekli olan kodlar.
Buradaki wb kısmı write bytes, yani byteları yaz anlamındadır. Aynı şekilde dosyayı gönderirken de rd read bytes, yani bytlerı oku anlamına gelen parametreyi kullanacağız.
Şimdi ise programımızın çökmemesi için base64 ile şifreleme kullanacağız.
Base64 kütüphanemizde decode işlemi böyle yapılıyor. Peki, daha ortada encode edilmiş bir şey yoksa niye decode ediyoruz? Güzel soru, şimdi zaten trojan.py programımıza geçip ona da indir kısmını ekleyip, orada dosyayı encodelayacağız.
Aynı şekilde buraya da base64 kütüphanemizi ekleyelim.
Ardından server üzerinde yaptığımız işlemleri, buraya düzenleyerek yazıyoruz.
Dosya karşılama işlemi için gereken kodlar tamam, şimdi sıra test etmeye geldi.
Aynı şekilde executable yapıp deneyelim Windows makinemiz üzerinde.
Şimdi masaüstümüzde tht.png isimli bir resim var, bunu kendi virüsümüz üzerinden Kali Linux makinemize indireceğiz.
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 nasıl çalıştığı bu yazılımların.
Pekâlâ, şimdi ilk olarak servera kodlarımızı girelim.
Elif bloğunu oluşturduğumuza göre altını doldurma vakti.
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. Bu kısımdaki kodlar için en az 4-5 saat kafa yormuşumdur. Milyon deneme yanılma ile çalıştırmayı başardım .
Gerekli kodları şimdi trojan.py programımız için uygulayalım.
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ı olabiliyor bazen. Onun haricinde tek seferlik durumda eksiksiz çalışıyor.
Ayrıca belki fark etmiş olabilirsiniz ki 7171 portu yerine 7575 portunu kullanıyorum şu an. Epey deneme-yanılma ve bug onarımı hakkında çalıştığım için birkaç port hatası yaşadım.
Neyse, şimdi alttaki resimde de görebildiğiniz gibi forumda bu konuyu yazarken kullandığım profil resmini server üzerinden Windows bilgisayara göndereceğim.
Pekâlâ, şu anlık dosya uzantımız olmadığı için önizlemesi yok. Ancak dosyayı açmak için program seçince gayet gözüküyor resmimiz.
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.
İ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 pythonda zaten bulunmayıp sonradan indirilmesi gereken requests kütüphanesini kullanacağız. İnternetten url kullanarak resim, video veya müzik indirmek zaten pyhton 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.
Kurulumu zaten ben daha önceden yapmıştım ancak sizlere göstermek için yeniden yaptım.
Requests kütüphanemizi trojan.pyye ekleyeceğiz.
Ardından indirme işlemi için bir fonksiyon ekleyelim dosyamıza.
Şimdi ise fonksiyon içinde gerçekleşen işlemde verilen URLdeki dosyayı indirip bilgisayara kaydedilsin.
Şimdi indirilen dosyamızın ismi ne olsun kısmına geçtik. Burada istediğiniz şekilde adlandırma yapabilirsiniz ancak dosyanın, url sonundaki isim ile kaydedilmesini istiyorum.
Örnek olarak: https://tht.com/doliatiusprofilresmi.png urlsine sahip bir dosyanın sadece son kısmını alalım. Yani doliatiusprofilresmi.png olarak cihaza kaydedilsin.
Burada url adresimizinin içerdiği her / karakterine göre böldük. En son kısmını da dosyaismi olarak aldık.
Şimdi ise az önceki kısımlarda da yaptığımız gibi yazdırma kısmını ekleyelim.
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.
Trojan.py kısmında işimiz tamam, şimdi sırada serverımız üzerinde else if bloğu kullanarak urlden indirme işlemini gerçekleştirmek var.
Aynı önceki eklemelerde olduğu gibi buraya da aynı şekilde bir blok ekliyoruz.
Pekala, programımızı çalıştırmadan önce indirmek için bir dosya bulalım. Thtde dolanırken bu resme denk geldim.
https://www.turkhackteam.org/customavatars/avatar817848_1.gif. Şimdi bu resmi indirmeye çalışacağız.
Güzel, evet 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. Geçelim bakalım son bölüme.
Trojan İle Programları Çalıştırmak Ve Bugları Düzeltmek
Burada ilk olarak söylemek istediğim şey; ilk bölümün başında da bahsettiğim gibi, bu seriyi hazırlarken elinize direkten bir trojan backdoor vermek gibi bir amacım yoktu. Sadece normal python işlemlerini kullanarak nasıl Trojan olarak adlandırılan virüs yazılımından oluşturursunuz kısmı ile ilgilendim. Amacım trojan backdoorların çalışma mantıklarını göstermek olduğum için konularıma eklediğim fotoğrafları hazırladıktan sonra virüsü çalıştırınca birkaç ufak hata olduğu için geri kodlardaki hataları düzelttim. En basitinden, bir önceki bölümde reverse shellimizin içindeki webindir fonksiyonunun parantez içine url değişkenini almayı unuttuğum birkaç işlem sonrası geldi ve onu ekledim. Lakin belirttiğim gibi zaten uzun süren bu seriyi hazırlarken iyice o fotoğraf karmaşasına girmeyeyim diye sonradan düzeltmedim. An itibari ile international tim başta olmak üzere genelde yoğunum ve o yüzden en az karışıklık ile bu seriyi yapma kararı almıştım.
Ancak zaten yukarıda örnekteki gibi düzelttiğim bazı hataları bir sonraki fotoğraflarda çalışır şekilde görebilirsiniz. Sadece bazı durumlarda saatlerce küçük, 2-3 satır kod için saatler harcıyorum, o durumlarda biraz aklınız karışmış olabilir. Bu yüzden soru sormaktan çekinmeyin. Elimden geldiğince yardımcı olurum.
Neyse, şimdi asıl son bölüme geçelim. İlk olarak düzeltmek istediğim ve buga sebebiyet verecek kısımları düzeltelim.
İsterseniz 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.
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.
Ardından reverse shellimiz üzerinde birkaç oynama yapalım.
Ş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.
Böylelikle 0dan başlayarak her indirilen dosyada dosyanın adı 1,2,3,4 diye gidecek.
Ve buradaki son değineceğimiz bug ise, server üzerinden start x yazarak x.exe programını başlatabiliyoruz.
Ancak notepad veya hangi x uygulamasını açtıysak açalım, o program kapatılana kadar server üzerinden virüse erişimimiz olmuyor.
Şimdi notepadi kapatıyorum ve yazdığımız kodlar yeniden çalışıyor.
Uzun lafın kısası, bu bölümde son olarak bu hatayı düzelteceğiz ve ardından serimizin 3. Bölümünü bitireceğiz.
Şimdi ilk olarak trojanımıza girelim. Orada yeni bir elif bloğu kullanarak bu işlemde oluşacak hatayı düzeltelim.
Programı açtırıyoruz, ardından ise işlem başarıldı olduysa bize bildirim gönderecek. Tabi ne olur ne olmaz, yazım yanlışı gibi durumlarda program çökmesin diye bir try-except bloğu da ekleyelim.
Bu kısımdaki işimiz bitti. Dürüst olmak gerekirse bu komut için server üzerinde bir blok oluşturmak gerekli değil. Soracaklar olabilir; E o zaman neden webindir için server üzerinde blok oluşturdun? Güzel soru, canım istedi çünkü . Neden olmasın?
Neyse, şimdi sırada çalıştırıp kontrol etmek var.
Görüldüğü üzere neredeyse masaüstüm gözükmez oldu. Böylelikle en basit olarak birisini şakalayabilirsiniz.
Evet değerli THT ailesi, bu bölümün de sonuna gelmiş bulunmaktayım. Sorularınız için benimle iletişime geçebilirsiniz. Ayrıca yavaş yavaş serinin sonuna geliyoruz, çoğu ihtimalle vaktim olursa 5 bölümde bitiririm gibi seriyi. Bir sonraki bölümde biraz daha crypter konularına girerim diye düşünüyorum. Ayrıca belki birkaç güzel özellik daha eklerim python 2 için gerekli algoritma ve kodları halledersem.
Hepinize iyi günler dilerim, bir sonraki bölüme kadar beklemede kalın.