1 Mayıs 2014 Perşembe

Malwarelerin Sanal Makine ve Emulasyon Tespit Etme Teknikleri

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
Timing Based Tespit Etme

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önder