Malware örnekleri genellikle Virtual Machine gibi
izole bir ortamda analistler tarafından analiz edilir. Bir zararlı yazılım sanal
makine içindeki örneklerinin analizini önlemek amacıyla anti-vm koruma içerir
ya da malware izole bir ortamda çalıştırıldığında normal zararlı işlemlerini
yerine getirmeyecek şekilde kodlanabilmektedir.
Aşağıdaki teknikler bir örnek zararlının VM içinde
çalışan olup olmadığını tespit etmek için kullanılabilir.
- Timing Based
- Artifacts based
Zaman Damgası Sayacı (TSC) Pentiumdan beri tüm x86 işlemcilerde 64-bit
kayıtta mevcuttur. Bu "Reset işleminden beri oluşan döngülerin sayısını
saymaktadır.Eğer kod emule işlemine tabi tutuluyorsa zaman damgaları arasında
değişiklik olacaktır.
Sonuç EDX:EAX formatında saklanmaktadır.
Şimdi gerçek bir fiziksel makinede zaman farkı 100'den genellikle daha
az olur, ama kod emule ediliyorsa bu fark çok büyük olacaktır.
Aşağıdaki kod parçacığı bu farkı kontrol etmeye yaramaktadır. Eğer fark
100 den az ise fiziksel makine olarak değerlendirilip zararlı kodun gerçek
aktivitelerini yapacak şekilde çalışmasını sağlamaktadır. Eğer fark 100 den
büyük ise çalıştırıldığı ortamın sanal ortam olduğuna karar verip zararlı aktiviteler
yapmayacak şekilde çalışmasını sağlayacaktır.
Yukarıdaki program sanal makine varlığını tespit etmek için zaman
damgası talimatı kullanır.
Artifact Base Tespit Etme
Gelişmiş zararlı kodlar sanal makinaların konfigürasyon dosyalarındaki
network ve cihaz artifactlerini ayırt edebilmeyi sağlayabilmektedir.
Zararlı kodlar genellikle debugger veya sanal makine varlığını tespit
etmek bu artifactlerin varlığını kontrol etmektedir.
En iyi tespit kayıt defteri üzerindeki anahtarların kontrolü ile
sağlanabilmektedir. Vmware aşağıdaki anahtarı kullanarak Sanal Disk
Denetleyicisi (Virtual Disk Controller) kayıt defteri anahtarlarını
oluşturur.
HKLM\SYSTEM\CurrentControlSet\Services\Disk\Enum
"SCSIDisk&Ven_VMware_&Prod_VMware_Virtual_S&Rev_1.04&XXX&XXX" gibi bir kayıt olmaktadır.
Aşağıdaki kod parçacığı ilgili registry anahtarını kontrol etmektedir.
Buna göre çalıştırıldığı ortamın sanal olup olmadığına karar verebilmektedir.
Bu teknikler ile sandbox sistemlerini malwareler aşmaya çalışmaktadır.
Sandbox çözümlerininde bu teknikleri içeren zararlı kodlara karşı çözümler
geliştirmesi gerekmektedir.
Time
Based Detection Code;
int main(int argc, char* argv[])
{
unsigned
int time1 = 0;
unsigned
int time2 = 0;
__asm
{
RDTSC
MOV
time1,EAX
RDTSC
MOV
time2, EAX
}
if ((time2 - time1) > 100)
{
printf("%s",
"VM Detected");
return 0;
}
printf("%s",
"VM not present");
return 0;
}
Artifact
Based Detection Code;
int main(int argc, char **argv)
{
char lszValue[100];
HKEY hKey;
int i=0;
RegOpenKeyEx
(HKEY_LOCAL_MACHINE, "SYSTEM\CurrentControlSet\Services\Disk\Enum",
0L, KEY_READ , &hKey);
RegQueryValue(hKey,"0",lszValue,sizeof(lszValue));
printf("%s",
lszValue);
if (strstr(lszValue,
"VMware"))
{
printf("Vmware
Detected");
}
RegCloseKey(hKey);
return 0;
}
Hiç yorum yok:
Yorum Gönderme