VirusTotal’da yeni tespit edilen bir Python uzaktan erişim truva atı (RAT), gelişmiş polimorfik ve kendi kendini değiştiren teknikler kullanarak, her yürütmede kod imzasını değiştirmesine ve tespitten kaçmasına olanak tanır.
VirusTotal gönderimlerini inceleyen güvenlik araştırmacıları, VT’de yalnızca 2/64 puan alan şüpheli bir Python RAT (SHA256:7173e20e7ec217f6a1591f1fc9be6d0a4496d78615cc5ccdf7b9a3a37e3ecc3c) tespit etti.
Bu örneği diğerlerinden ayıran şey üç farklı işlev adıdır:self_modifying_wrapper(), decrypt_and_execute()Ve polymorph_code()— anında mutasyon yeteneğinin göstergesi.
Polimorfik kötü amaçlı yazılım, statik algılamayı önlemek için çalışma zamanında kodunu veya veri imzalarını değiştirir. Python’un iç gözlem ve serileştirme modüllerinden yararlanan bu RAT, görünümünü sürekli olarak dönüştürerek her örneğin imza tabanlı antivirüs motorlarına göre farklı görünmesini sağlar.
Basit bir kavram kanıtı, Python’un inspect modülünün bir betiğin kendi kaynak koduna erişmesine nasıl izin verdiğini gösterir:
pythonimport inspect
def dummy_function():
print("I'm a dummy function!")
def main():
print("Function code:")
print(inspect.getsource(dummy_function))
if __name__ == "__main__":
main()
Yürütüldüğünde, bu kod parçasının kaynağını yazdırır dummy_functionPython’un çalışma zamanında kendi kodunu alma yeteneğini gösteren.
Kendini Değiştiren ve Polimorfik Teknikler
Keşfedilen RAT, kodunun kritik bölümlerini kendi kendini değiştiren bir katmana sarar. self_modifying_wrapper() işlev, serileştirilmiş bayt kodunu kaynaklar main()rastgele bir anahtar kullanarak bir XOR şifrelemesi uygular, ardından şifreyi çözer ve sıkıştırılmış dosyayı tekrar çalıştırılabilir bir kod nesnesine dönüştürür.
Bu, şifresi çözülmüş verileri diske yazmadan kötü amaçlı yazılımların bellekte paketlenip paketten çıkarılmasını simüle eder:
pythondef self_modifying_wrapper():
"""Wrap critical code in a self-modifying layer."""
log_path = resource_path('debug.log')
try:
# Extract and encrypt critical code
critical_code = inspect.getsource(main).encode()
xor_key = random.randint(1, 255)
packed_code = bytes(b ^ xor_key for b in critical_code)
# Decrypt and execute from memory
unpacked_code = bytes(b ^ xor_key for b in packed_code)
code_obj = marshal.loads(zlib.decompress(unpacked_code))
exec(code_obj)
with open(log_path, "a") as f:
f.write("[+] Self-modifying code executed\n")
return True
except Exception as e:
with open(log_path, "a") as f:
f.write(f"[-] Self-modifying code failed: {e}\n")
return False
Paketi açtıktan sonra ambalaj, yürütme başarısını veya başarısızlığını günlüğe kaydeder. Bu teknik, geleneksel dosya tabanlı taramayı atlar ve bellek yürütmesine dayanır.
Kendi kendini değiştirmenin ötesinde, RAT’ın polymorph_code() işlev rastgele önemsiz kod ekler, değişken yeniden adlandırma gerçekleştirir, işlev tanımlarını karıştırır ve imza kalıplarını kırmak için işlem dışı rutinler enjekte eder:
pythondef polymorph_code(code):
"""Obfuscate code with advanced randomization and junk code."""
log_path = resource_path('debug.log')
try:
# Random variable renaming
var_map = {var: ''.join(random.choice(string.ascii_letters + string.digits)
for _ in range(random.randint(8, 12)))
for var in code.split() if var.isidentifier()}
for old_var, new_var in var_map.items():
code = code.replace(old_var, new_var)
# Insert junk snippets and shuffle functions
...
with open(log_path, "a") as f:
f.write("[+] Advanced polymorphic transformation applied\n")
return code
except Exception as e:
with open(log_path, "a") as f:
f.write(f"[-] Polymorphic transformation failed: {e}\n")
return code
Bu dönüşümler, her yürütmenin benzersiz bir dosya imzası oluşturmasını sağlayarak algılama oranlarını önemli ölçüde azaltır.
Kapsamlı RAT Yetenekleri
Gelişmiş mutasyonun yanı sıra RAT, eşzamansız işlevler aracılığıyla kapsamlı bir saldırı özellikleri paketi uygular.
Ağları tarayabilir, varsayılan kimlik bilgilerini test edebilir, yönlendiricilerden yararlanabilir, yükleri teslim edebilir ve yürütebilir, verileri çalabilir ve sızdırabilir, kendi kendine yayılabilir ve Discord veya Slack kanallarındaki bot komutları aracılığıyla etkileşime girebilir.
Bazı dikkate değer işlevler şunları içerir: socket_network_scan(), deliver_payload(), spread_to_network(), encrypt(), mine(), screenshot(), listen(), upload(), download()Ve keylog_start() başından sonuna kadar keylog_stop().
Bot arayüzü aşağıdaki gibi komutları ortaya çıkarır: /commands, /encrypt, /mine, /runVe /archivekonuşlandırıldıktan sonra el değmeden çalışmayı mümkün kılar.
Uzlaşma Göstergeleri
Aşağıdaki tablo, hızlı tespit ve yanıt için temel Tehlike Göstergelerini (IoC’ler) özetlemektedir:
| Gösterge | Detaylar |
|---|---|
| SHA256 | 7173e20e7ec217f6a1591f1fc9be6d0a4496d78615cc5ccdf7b9a3a37e3ecc3c |
| VirüsToplam Puanı | 2/64 |
| Polimorfik Katman | self_modifying_wrapper() |
| Gizleme Modülü | polymorph_code() |
Güvenlik ekipleri, XOR paketleme şemasını tanımlamak için algılama imzalarını güncellemeli, günlüklerdeki polimorfik dönüşüm girişlerini incelemelidir. debug.logve gelişen bu tehdidi azaltmak için olağandışı bellek yürütme modellerini izleyin.
Anında Güncellemeler Almak ve GBH’yi Google’da Tercih Edilen Kaynak Olarak Ayarlamak için bizi Google Haberler, LinkedIn ve X’te takip edin.