
Yakın zamanda keşfedilen Python tabanlı bir uzaktan erişim truva atı (RAT), benzeri görülmemiş polimorfik davranışlar sergiliyor ve her çalıştırıldığında kod imzasını değiştiriyor.
İlk olarak VirusTotal’da gözlemlenen örnek, adı verilen örnek Nirorat.pytam RAT yetenekleri paketi içermesine rağmen başlangıçta algılama motorlarında yalnızca 26/100 puan aldı.
Analistler, kötü amaçlı yazılımın, kritik kod bölümlerini sürekli dönüştürerek imza tabanlı tespitten kaçınmak için Python’un iç gözlem ve kod değiştirme özelliklerinden yararlandığına inanıyor.
Internet Storm Center analistleri, aşağıdaki gibi işlev adlarını ilişkilendirdikten sonra tehdidi belirlediler: selfmodifyingwrapper
, decryptandexecute
Ve polymorphcode
numunenin kaynağında.
Bu işlevler, bellekten kendi kodunu çıkararak, rastgele XOR tabanlı paketleme uygulayarak ve yürütülmeden önce önemsiz parçacıkları enjekte ederek kötü amaçlı yazılımın kaçınma taktiklerini yönlendirir. Bu tür dinamik mutasyon, iki yürütmenin aynı parmak izini paylaşmamasını sağlar ve statik tarayıcıların zorluklarını artırır.
Esas olarak zararsız görünen Python betiği içeren kimlik avı e-postaları aracılığıyla gönderilen RAT, güvenliği ihlal edilmiş ağ paylaşımları yoluyla da yayılıyor. Yürütüldükten sonra, disk yapıtlarından kaçınarak kendisini tamamen bellekte açar.
Kalıcılık, mutasyona uğramış komut dosyasının bir kopyasının rastgele dosya adları altındaki başlangıç klasörlerine eklenmesiyle sağlanır. Düşük VirusTotal algılama puanı, geleneksel dosya karma imzalarının bu tehdide karşı ne kadar işe yaramaz olduğunu yansıtıyor.
Tespitten Kaçınma Teknikleri
RAT’ın algılamadan kaçınması iki temel mekanizmaya dayanır: kendi kendini değiştirme ve önemsiz kod ekleme.
Çalışma zamanında, selfmodifyingwrapper
işlev Python’la bir hedef rutinin kaynağını alır inspect
modül, her baytı rastgele bir anahtarla XOR’layarak kodlar ve ardından yürütmeden önce bellekte yeniden yapılandırır.
Bu teknik, diskte paketlenmiş bir dosya izi bırakmadan paketleyicinin davranışını yakından simüle eder.
import inspect, random, marshal, zlib
def selfmodifyingwrapper(func):
code = inspect.getsource(func).encode()
key = random.randint(1,255)
packed = bytes(b ^ key for b in code)
unpacked = bytes(b ^ key for b in packed)
codeobj = marshal.loads(zlib.decompress(unpacked))
exec(codeobj)
Ek olarak, polymorphcode
işlev, rastgele önemsizleri (kullanılmayan işlevler, karıştırılmış değişken adları ve işlem yapılmayan döngüler) temel rutinlere enjekte eder.
Kötü amaçlı yazılım, değişken yeniden adlandırma ve rastgele parçacık eklemeyi birleştirerek, her çalıştırmada neredeyse benzersiz bir kaynak oluşturarak hem statik imzayı hem de buluşsal yaklaşımları baltalıyor.
Bu gelişmiş kaçınma stratejileri göz önüne alındığında, savunucuların geleneksel imza tabanlı araçlar yerine davranış analizine ve gerçek zamanlı izlemeye güvenmesi gerekiyor.
Daha Fazla Anında Güncelleme Almak için Bizi Google Haberler, LinkedIn ve X’te Takip Edin, CSN’yi Google’da Tercih Edilen Kaynak olarak ayarlayın.