(FUD) Malware Development – 4

Şimdiye kadar şifrelenmiş bir iletişimi olan ve reverse shell bağlantısı sağlayabilen bir yazılım yazdık. Bugün yazılımımızın dosya aktarımı yapmasını, ekran görüntüsü almasını ve Windows içerisinde bulmak isteyeceğimiz özel klasörlerin sistem içerisindeki yollarını bulmasını sağlayacağız (Örneğin bir kullanıcının masaüstü klasörünün ya da temp klasörünün yolu).

Öncelikle kafamızda tam olarak adım adım ne yapmamız gerektiğini oluşturalım.

Download (İndirme) işlemi

İstemci tarafı: Gelen komut içerisinden indirilmek istenen dosyanın yolunu alır. Daha sonra bu dosyayı açıp okumaya yetkisi var mı yok mu kontrol eder ve buna göre bir cevap yollar. Eğer açabiliyorsa önce dosyanın büyüklüğü bulur ve sunucu tarafına gönderir. Dosya büyüklüğü gönderildikten sonra bir döngü içerisinde dosyayı parça parça okur ve sunucu tarafına gönderir. Tüm işlem bittiği zaman işlemin bittiğine dair bir cevap yollar.

(FUD) Malware Development - 4 Riftsec

Sunucu tarafı: Bir komut yollar ve bu komut içerisinden indirilecek dosyanın sunucuda nereye kaydedileceğini bulur. Daha sonra istemciden bir cevap alır. Eğer cevap olumlu ise indirilecek olan dosyanın büyüklüğü istemciden alır ve şu ana kadar ne kadar indirme yaptığını kaydedecek bir değişken tanımlar. Bir döngü içerisinde istemciden parça parça dosyayı alır ve toplam ne kadar aldığını kaydeder.

(FUD) Malware Development - 4 Riftsec

Upload (Yükleme) işlemi

Mantık olarak upload işlemi için indirme işleminde yapmış olduğumuz işlemlerin yerini değiştirmemiz gerek. Yani istemci tarafı kısmında kurguladığımız kısmı yükleme işlemi için sunucu tarafı kısmında, sunucu tarafı kısmında kurguladığımız kısmı yükleme işlemi işlemi için istemci tarafı kısmında yapmalıyız.

İstemci tarafı:

(FUD) Malware Development - 4 Riftsec

Sunucu tarafı:

(FUD) Malware Development - 4 Riftsec

Önemli bir not!

Komut gönderirken indirmek veyahut yüklemek istediğimiz yol içerisinde boşluk (space) karakteri bulunabilir. Bu yüzden komut içerisinde özel bir format kullanacağız.

Komut formatı: 

  • “download -f [istemci tarafındaki yol] -t [sunucu tarafındaki yol]”
  • “upload -f [sunucu tarafındaki yol] -t [istemci tarafındaki yol]”

Screenshot (Ekran görüntüsü) almak

Ekran görüntüsü alabilmek için bir modüle ihtiyacımız var. Öncelikle modülü yükleyelim ve daha sonra projemize import edelim.

  • “pip install pyautogui”
  • “import pyautogui” -> İstemci tarafında yapmamız gerekiyor.

Ekran görüntüsü aldığımızda istemci tarafında bir dosya oluşturmamız gerekiyor. Ben dosyayı temp içerisine kaydedip daha önce yazmış olduğumuz download özelliği sayesinde sunucu tarafına göndereceğim. Daha sonra oluşan dosyayı istemci tarafında sileceğim. Böylece istemci tarafına hiçbir şey belli etmeden, daha sonrasında göremeyeceği şekilde dosyayı dışarı çıkarmış olacağım.

Temp’in sistemdeki yolunu bulmanızı sağlayan modülü import edelim.

“import tempfile” -> İstemci tarafında yapmamız gerekiyor.

İstemci tarafı:

(FUD) Malware Development - 4 Riftsec

Sunucu tarafı:

(FUD) Malware Development - 4 Riftsec

Special Folders (Özel klasörler)

Windows’taki bazı özel klasörlerin sistemdeki yollarını bulmak bazen can sıkıcı olabiliyor. Bu yüzden bunu bizim yerimize yapacak olan bir modülü kullanacağız. Öncelikle bu modülü kuralım ve istemci tarafına import edelim.

  • “pip install pywin32”
  • “import winshell” -> İstemci tarafında yapmamız gerekiyor.

İstemci tarafı:

(FUD) Malware Development - 4 Riftsec

Sunucu tarafında sadece komutu yollayıp, dönecek olan dosya yolunu ekrana basmamız yeterli.

Evet, artık özelliklerimizi ekledik. Şimdi komutlar kısmına gerekli kontrolleri yaparak bu özellikleri çağıracak bloklarımızı yazalım.

İstemci tarafı:

(FUD) Malware Development - 4 Riftsec

Sunucu tarafı:

(FUD) Malware Development - 4 Riftsec

Zararlı yazılımları çalıştırabilir birer dosya haline getirerek kullanırız. Bunu sağlamak için “pyinstaller” isminde bir modülü kullanacağız. Öncellikle pyinstaller’ı aşağıdaki komut ile bilgisayarınıza kurun.

  • pip install pyinstaller

Programı tek bir dosya halindeki elde etmek istediğimiz için –onefile parametresini kullanarak kodumuzu çalıştırabilir bir dosya halinde getireceğiz. Burada dikkat edilmesi gereken bir durum var. Hangi işletim sisteminde olduğunuza bağlı olarak oluşacak olan dosyanın uzantısı değişecektir. Örneğin pyinstaller’ı Windows üzerinde kullanırsak ornek.exe gibi dosya, Linux üzerinde kullanırsak ornek.elf gibi birer dosya oluşacaktır. pyinstaller’ı kullanmadan önce projenizi oluşturduğunuz virtual enviroment içerisinde olduğunuzdan emin olun. Aksi takdirde bizim oluşturmuş olduğumuz ve başka programlar içerisine import ettiğimiz modülleri pyinstaller tanımayacak, dolayısıyla complation işlemi hata ile sonlanacaktır.

  • pyinstaller –onefile client.py