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

Dolyetyus

Co Admin
21 Nis 2020
1,207
670
Delft
Selamlar TurkHackTeam Üyeleri, bu yazıda “Sıfırdan Kendi Backdoor Trojanımızı Geliştirelim” isimli serimizin dördüncü bölümünü okuyacaksınız. Şu ana kadar biraz bir şeyler yaptık, kalıcılığımızı arttırdık, server bağlantımızı güçlendirdik ve az çok özellik ekledik.

Yazılımla uğraşanlar ve Ar-Ge timindeki arkadaşlar bilir ki zaten çalışan bir programa 2-3 özellik fazladan eklerseniz artık o program çalışmamaya başlar ve sorunu düzelteceğim diye saatler, belki de günler harcarsınız.
Aynısını ben de bu seriyi hazırlarken yaşadım, o yüzden elimden geldiğince “ergonomik” bir şekilde seriyi bitireceğim. Bu bölümde ise daha çok kullanım kolaylığı ve gizleme meselesi ile ilgilenmeyi düşünüyorum. Ayrıca birkaç tane ufak daha özellik ekleyeceğim ve sonraki bölüm(ler)e sadece keylogger veya eğlence amaçlı birkaç özellik eklemeyi düşünüyorum. Giriş kısmını çok uzatmadan alt başlıklara geçelim.

xRDuEc.png


Başlıklar:
- Hedef Cihaz Üzerinde ScreenShot Almak
- Ayrıcalıklarımızı Kontrol Etmek
- Help/Yardım Bölümü Eklemek
- Virüsü Gizlemeye Çalışmak (PyInstaller)


xRDuEc.png


Hedef Cihaz Üzerinde ScreenShot Almak

Screenshot, yani ekran resmi, karşı cihazın anı anına ne yaptığını bize bildirebilir. En basitinden kötü niyetli kişiler tam da siz internet üzerinden alışveriş sırasında kart bilgilerinizi girdiğiniz zaman bir ekran resmi alsa tüm bilgileriniz karşıya geçer. Bu basit, örnek bir senaryoydu. Aynı şekilde mesela whatsapp web veya telegram web kullanırsanız –masaüstü uygulaması da dahil- siz burada mesajlaşırken ekran resmi alınarak bu yazışmalar okunabilir.

Bu kısımda sizlere nasıl reverse shell’imiz üzerinden ekran resmi alınır, bunu göstereceğim. Bunun için ilk olarak trojan.py dosyamıza mss kütüphanesini, bunun içinde ctypes kütüphanesini eklememiz gerek.

sEzTjp.jpg


Öncelikle tabi bu kütüphaneyi pip’e eklemek lazım, neyse. Ardından isterseniz ekranresmi isminde bir fonksiyon oluşturalım ve içine ekran resmi almak için gerekli olan kodları koyalım.

c70i11.jpg


Şimdi bu fonksiyonu kabuk() içinde kullanmak gerek. Bunun için ilk olarak bir elif bloğu oluşturuyorum.

fRcKBH.jpg


Ardından bloğun içine ekranresmi fonksiyomuzu ekleyelim. Ancak burada biraz daha işlem yapacağız. İlk önce bir ekran resmi alınacak, ardından bu alınan ekran resmi oluşturulunca bize tek tek byte’ları gönderecek. Ardından ise işlem tamamlanınca kurbanımızın masaüstünde veya trojan.exe’mizi nerede çalıştırdıysa orada bir ekran resmi olmasın diye sileceğiz. Yoksa şüphe çeker.

vJeG2M.jpg


Ardından kaydedilen ekran resmini kurban fark etmesin diye silelim. Aşağıdaki kod dizisi ile bu işlemi hallediyoruz. Monitor-1.png default yani varsayılan olan dosya ismidir. Mss ile aldığınız ekran resimleri bu isimle kaydedilir.

TiIh5y.jpg


Ardından ise programımızda oluşabilecek hata olursa diye de bu olayı try-except bloğu içine alıyoruz.

5eJ1ei.jpg


Şimdi trojan.py üzerinde işimiz bitti. Sırada bu alınan ekran resmini karşılayacak kodlar var. Bunun için server’ımızı açıyoruz ve bir elif bloğu oluşturuyoruz.

YfUQsH.jpg


Bu arada, fark ettim de kod[:10] kısmı gereksiz. O yüzden buraya eklemedim, öncekini de sildim.
Neyse, şimdi bu dosyayı alacak kodları girelim.

svUfHw.jpg


Buradan sonra resim isimli değişkenimizi decode etmek için gereken kodu yazıyoruz.

3ViFPt.jpg


Buraya kadar iyi geldik aslında ancak anlamadığım şekilde resim bazen sorun çıkartıyordu. Sonradan fark ettim ki trojan.py üzerinde verigonder’de HATA mesajı vardı, bu yüzden sıkıntı çıkarıyordu. Ufak bir araştırma sonucu bu aşağıda verdiğim kod bloklarını eklemeye karar verdim.

ANML3s.jpg


Burada, önceki dosya yükleme işleminde yaptığımız gibi, bir değişkene 0 değeri verdim ve her o dosyada değişkenin kullanımıyla bir değer arttırdım. Yani s+=s sayesinde 1,2,3,4… diye ekran resimlerimiz kaydedilecek.

Ardından ise her defasında yaptığımız şekilde bir try-except ekliyoruz ki olası bir durumda bozulmasın.

p0xYFm.jpg


İki programımızda da işlemimiz bitti. Şimdi sırada çalıştırma aşaması var. Bir not da düşeyim, bazı kütüphaneler python 2 için desteğini bitirdi. Bunun için biraz araştırma ile py2 kütüphanelerini manuel olarak kurmanız lazım.

N6ES3e.jpg


Evet, görünebildiği üzere şu an tek bir çektiğimiz ekran resmi geldi. Yalnız belirtmemde fayda var, python yavaş compile olan bir dil olduğu için ekranresmi komutunun tamamlanması biraz uzun sürebiliyor.
İkinci resmi de alalım bari, bu sefer web tarayıcıda THT’yi açacağım.

TqhotE.jpg


Pekâlâ, anlayacağınız gibi bu bölümdeki işimiz bitti. Şimdi sırada ayrıcalıklarımızı kontrol etmek var. Bir sonraki bölüme daha da uzatmadan geçelim.

xRDuEc.png


Ayrıcalıklarımızı Kontrol Etmek

Ayrıcalıklar nedir, veya Privileges nedir sorunu yanıtlamak isterim ilk önce. Basitçe açıklamak gerekirse bir sistem üzerinde sahip olduğunuz yetki denebilir. Bazı yetkiler şunlardır; Root, Administrator, User ve Guest.

Guest’in sistem üzerinde değişiklik yapma hakkı yoktur. Adı üstünde sistemde sadece ziyaretçi olarak gezinir.
User ise temel kullanıcı haklarına sahiptir. Kendi oturumunda değişiklikler yapabilir. En yaygın kullanılan ayrıcalıklardandır. Aynı zamanda cihaz üzerinde büyük değişiklikler yapamadığı için kullanım açısından en güvenlilerden birisidir.
Administrator ise isminden de belli olabileceği gibi yönetici iznidir. Genel değişiklileri yapabilir, sistem üzerinde kayıt defterini düzenleyebilir. Kullanıcı ve Misafir hesapları üzerinde oynama yapabilir. Root’ta yazanlar bunda da geçerlidir.
Root ise direkten kök anlamına gelir. Genelde Linux sistemlerinde admin’e verilen addır. Sistem üzerinde köklü değişiklikler yapılabilir. Eğer yanlışlıkla bilmediğiniz yerlerde oynama yaparsanız cihazınız çoğu ihtimalle artık kullanılmaz hale gelir.

Pekâlâ, yani anlayacağınız bizim için Admin veya Root kullanıcısı izinlerine sahip olmak gerek daha iyi bir etkileşim için. Windows üzerinde çalıştığı için de admin iznimizin olması daha iyi olur.

User ile Admin’in çalıştırabileceği komutlar farklı olduğu için bizim hangi izne sahip olduğumuzu bilmemiz gerekir. Bu bölümde ise hangi izne sahip olduğumuzu öğreneceğiz. Bunun için de zaten önceden projeye eklediğimiz os kütüphanesini kullanacağız.

Öncelikle trojan.py dosyamıza girerek ayrıcalıklarımızı kontrol edecek bir fonksiyon ekliyoruz.

RPswQb.jpg


Ardından ise ayrıcalığımızı kontrol etmek için gerekli olan kodu ekliyoruz.

20u2cG.jpg


Bu kod hangi yetkiye sahip kullanıcı olduğumuzu gösteriyor, denendi onaylandı :D. Ardından bir try-except-else bloğu oluşturuyoruz ki ona göre ne olduğumuzu öğrenelim. Aynı zamanda bir değişken atayıp bu değişken üzerinden bilgiyi server’a gönderelim.

Do3JGP.jpg


Şimdi ise bir elif bloğu içinde bu bilgiyi verigonder kullanarak server’a gönderelim. Bu işlemi gerçekleştirmek için gerekli kodu da kontrol olarak ayarlayalım.

yI2YDe.jpg


Bu kısmı da diğerleri gibi hata vermemesi adına try-except’e alalım.

Slz8ag.jpg


Buradan sonra isterseniz server üzerinde kontrol isimli bir else if bloğu da kullanabilirsiniz ancak çok da gerek yok. Bu yüzden isterseniz direkt deneme kısmına geçelim.

Y0YSFR.jpg


Gördüğünüz gibi benim masaüstümde ve o bölümün alt klasörlerinde user yani kullanıcı yetkim varmış. Normalde de zaten Admin olduğum oturumumu kullanmıyorum.

Sadede geleceksek, şu an benim gösterdiğim/girdiğim bölümlerde kullanıcı iznim olduğu için sadece kullanıcı hesaplarının kullanabildiği komutları yürütebilirim. Ayrıcalık yükseltme işlemini de yapabiliriz ancak o kısım üst düzey hacker’ları ilgilendiren kısım. Yani vaktinde yabancı bir blogdan bu işlem hakkında birkaç makale çevirmiştim ve hatırladığım tek şey karışık bir işlem olduğu.

Bir sonraki başlığa geçelim isterseniz.

xRDuEc.png


Help/Yardım Bölümü Eklemek

Bu kısım aslında kendi virüsünüzü kullanıyorsanız pek gerekli olmayabilir. Ancak halka açık bir virüsünüz varsa nasıl kullanıldığını tarif etmek için eklenmesi gerekilebilir. Zaten ta ilk bölümde çıkmak için 0’a basmamız gerektiğini söyleyen bir küçük yardım menüsü eklemiştik (ctrl+c de terminal üzerinde işe yarar gerçi).

Şimdi ise hızlıca eklediğimiz tüm özellikler için bir yardım menüsü ekleyelim.

Bu kısım konusunda kararsızdım aslında ama ben colorama kütüphanesini çok sevdiğim için yardım seçeneğini server üzerine ekleyeceğim.

Fvdqmy.jpg


Bu kısımda üç seçeneğimiz var: Ya ‘’’ kullanarak çok satırlı bir print kullanacağız, ya satırları ayarlamak için \n kullanacağız, ya da her özellik için ayrı print kullanacağız. Ben son seçeneği seçiyorum :).

Aynı zamanda yardım için bir fonksiyon ekleyip print’leri oraya yerleştireceğim.

j39vKz.jpg


Şimdi ise ben bu kodları colorama ile daha güzel bir görünüme sokmak istiyorum.

ngSouT.jpg


Böyle bir şey yaptım ben, kendi zevkime göre renk ayarı falan yaptım. Zevksizsem de yüzüme çok vurmayın :D.

Şimdi kod değişkeninin input kısmından önce yârdim fonksiyonunun nasıl çalışacağını gösteren bir kısım ekleyelim.

vlPfnA.jpg


Şimdi ise elif bloğunun alt kısmı ile bu fonksiyonu çağıralım.

qvevJh.jpg


Server üzerinde işlem tamam, ancak Reverse Shell kısmında y veya yardim diye bir komut alan komut satırı çökmesin diye oraya da bir el atıyoruz.

Slz8ag.jpg


Şimdi yardım menüsü hakkında işimiz bittiğine göre çalıştırıp deneme vakti.

GmpCPH.jpg


Hmmm, dürüst olmak gerekirse böyle bir şey beklememiştim. Bunu hemen daha güzel bir hale getirip yeniden çalıştırıyorum. Ayrıca sonradan fark ettim ekran resmi alma özelliğini yazmayı unutmuşum.

Z7ezKJ.jpg


Pekâlâ, ben de farkındayım bir şaheser yapmadığımın ancak gayet güzel yine de.

Böylesinde çok da önemli olmayan bir sorunu da hallettiğimize göre bir sonraki başlığa geçebiliriz.

xRDuEc.png


Virüsü Gizlemeye Çalışmak (PyInstaller)

Yaptığınız virüsleri yutturabilmenin en kolay yolu iyi bir sosyal mühendislik ve sağlam bir crypter’dan geçer. Bu ve bundan sonraki başlıkta ise değineceğim konu virüsü bir resme gizlemeye çalışmak ve ikonunu değiştirmek. Böylelikle olası sosyal mühendislik durumlarında karşı tarafa daha rahat virüsü yutturabilirsiniz.

İlk olarak göstereceğim yöntem PyInstaller’ın kendi ikon oluşturma özelliği ile alakalı. Ardından trojanımızın içine koyduğumuz kod ile daha kolay şekilde yutturulabilecek bir hale gelecek virüsümüz. Bir not da düşeyim, bu kısmı ister Linux üzerinden, ister Windows üzerinden yapabilirsiniz. Ben Windows kullanacağım.

Öncelikle Google üzerinde bir resim bulalım ve ardından bu resmi .ico uzantılı hale getirelim.

Seçtiğim resim bu: (Evet, tam da benim tarzımda, siyah ve kasvetli)

CENFmr.jpg


Ardından bu resmi internet üzerinden icon’a dönüştürdüm.

WUJQ0W.jpg


Sırada bu ikon dosyasını, trojan.exe dosyamıza ikon olarak ekliyoruz. Bunun için de pyinstaller parametresini kullanıyoruz.

x27Akc.jpg


Şimdi virüsümüz dist klasörünün içinde oluştu. Dikkat edin, Windows güvenlik kalkanınız veya antivirüsünüz açık ise oluşur oluşmaz virüs silinecektir.

VZHCNz.jpg


Görüldüğü üzere şu an resmimiz ikon olarak ayarlanmış durumda. Tek fark, normal resim 16:9 oranında iken bu ikon 1:1 oranında. Bunu detaylıca kurcalarsanız daha iyi bir hale getirebilirsiniz.
Şimdi çalıştıralım:

tCc0zK.jpg


Hiçbir şey olmadı!? Evet, görünürde hiçbir şey olmadı. Ancak görev yöneticisinde trojan.exe’nin çalıştığını görebiliriz.

tPcqSe.jpg


Peki, bu resim(!) açıldıktan sonra neden görüntülenmedi? Bu işi halletmek için de trojan.py’ye girip resmi tek seferlik açma işlemini gerçekleştirecek kodu yazıyoruz.

İlk sefer olup olmadığını anlamak için 2. derste kullandığımız kalıcılığı arttırmak için kayıt defterine ekleme işleminin gerçekleştiği satırı kullanacağız. Hatırlarsanız if not bloğu ile ilk sefer olup olmadığını, veyahut da regedit’ten programın silinip silinmediğini anlayabiliyorduk.

Windows üzerinde python’un kendi IDE’sini açıyorum. Sys kütüphanesini kullanacağız.

yq0wbc.jpg


Bu eklediğimiz kod, resim.png dosyasını ilk çalıştırmada açar. Ancak resim.png dosyasını da pyinstaller ile exe’nin içine eklememiz gerek ki hata vermesin. Sonuçta olmayan bir dosyayı açmaya çalışmak programın çökmesine sebep olur. Ancak bu işlemi pyinstaller ile programı oluştururken eklenecek, şimdi değil.

Ardından gerekli bir diğer kodu ekliyorum.

hBY4bz.jpg


Şimdi ise her zamanki yaptığımız gibi ne olur ne olmaz diye try-except ekliyoruz. Ancak buradaki except bloğu çok da önemli değil. Gereklilik olduğundan dolayı içine rastgele bir kod ekleyelim.

4UOowg.jpg


Ardından işimiz tamamlandığı için pyinstaller ile virüsü oluşturma kısmına geçelim. Burada, bu resim.png’yi exe’mizin içine eklemek için bir parametre daha kullanıyoruz.

wZbbLH.jpg


Önemli bir nokta: Program if not’da regedit kaydını kontrol ettiği için öncelikle regedit kaydını ve roaming kaydını silmeniz lazım. Yoksa resim açılmaz. Aynı zamanda resim diye atadığımız değişkenin başında “/” koymamız gerek ki yolu oluştursun. Onu sonradan ekledim, unutmuşum :D.
Şimdi deneyelim.

TqytGG.jpg


Şu an ilk çalıştırmamız olarak sayıldığı için resim açıldı. Ancak bir dahaki çalıştırmalarımızda açılmayacaktır. Bu gizleme yöntemi direkt olarak pyinstaller ile sağlanan bir gizlemedir. Daha iyi bir gizleme için bir tool kullanabilirsiniz.

xRDuEc.png


Normalde hazır tool kullanarak virüs gizlemeyi gösterecektim ancak daha önceden inceleyip anlatacağım tüm toollar trojan gömülmüş olarak çıktı. Ava giderken avlanmak istemediğimden dolayı bu kısmı üzülerek bitiriyorum.

Kali Linux Üzerinde de virüsü bir resme gömebiliriz, bunun için de birkaç tool var ancak onları eklemek istemedim. En basitinden, zaten daha önceden yazılmış bir konu var bunun hakkında.

Detay için baysiberbela nın konusuna bakabilirsiniz: https://www.turkhackteam.org/siber-guvenlik/1946955-resim-ile-trojani-birlestirme.html

xRDuEc.png


Şimdi sonuca gelirsek, bir sonraki bölümde bitirmeyi düşünüyorum. Ancak tahminimce bir sonraki bölümümüz uzun olacak çünkü sonradan birkaç ekleme yapma fikri var aklımda. Onun haricinde şu ana kadar zaten işe yarar özellikler eklediğimizi düşünüyorum. Geriye eklemek istediğim sadece keylogger ve kurban ile iletişim seçeneği kaldı. Onları da bir aksilik olmazsa bir sonraki bölüme ekleyeceğim. Birkaç gün sonra yayınlamış olurum.

O zamana kadar kendinize iyi bakın.​
 
Ü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.