Soru:
Sanallaştırılmış bir ortam nasıl tespit edilir?
perror
2013-04-10 03:12:46 UTC
view on stackexchange narkive permalink

Bir programın sanallaştırılmış bir ortamda çalıştığını algılamasının farklı yolları nelerdir? Ve ne tür bir sanallaştırmanın kullanıldığını tespit etmek mümkün müdür?

Sanal bir ortamda çalıştığını tespit etmeye çalışan programı, çalışmadığını düşünerek kandırmaya mı çalışıyorsunuz?
Sorumun yelpazesinin biraz fazla geniş olduğunu düşünüyorum. Sadece sanallaştırılmış bir ortamın tespitine odaklanacak şekilde düzenleyeceğim (karşı önlemler daha sonra gelebilir).
Bazı araçların ([imvirt] (http://micky.ibh.net/~liske/imvirt.html)) veya diğer bazı benzer [basit tekniklerin] (http://www.dmo.ca/blog/ linux üzerinde sanallaştırma algılama /). Ancak bu teknikler, sanallaştırıcının kendisini gizlemeye çalışmadığı gerçeğine dayanmaktadır.
Bazı bağlantılar yayınlıyorum [Thwarting Virtual Machine Detection A] (handlers.sans.org/tliston/ThwartingVMDetection_Liston_Skoudis.pdf) .. [Bu algılama değil] (İşletim Sistemleri bir Sanal Makinede çalışıp çalışmadıklarını söyleyebilir mi?) ..VMD Başlangıçta [araştırma amaçlı RED-Pill ve Blue-Pil] (http://en.wikipedia.org/wiki/Blue_Pill_%28software%29) tarafından yazılan iki yeni virüs, saldırı amaçlı `MyDoom ve stuXmet`dir. henüz düzgün şekilde demonte edilmelidir!
Sekiz yanıtlar:
nopnopgoose
2013-04-10 09:42:54 UTC
view on stackexchange narkive permalink

Sanal makineleri / öykünücüleri tespit etmenin çok sayıda yolu vardır, çoğunlukla simülasyondaki bir kusuru belirleme ve ardından bunu test etme modelini izler.

En basit şekilde, yaygın sanallaştırma araç takımları kendi her türlü sistem sürücü ve aygıtının üzerine isim verin. Yalnızca ağ bağlantılarının adına veya MAC adreslerine bakmak, bunu maskelemek için özel olarak yapılandırılmamışsa, VMware'i tanımlamak için yeterli olabilir. Aynı şekilde, sanal makinenin belleği, sanallaştırma yazılımının varlığını açık hale getiren çok sayıda diziye sahip olabilir.

Diğer bazı sanal makine yapaylıkları, hem ana bilgisayar hem de konuk için, kesme tanımlayıcı tablo kaydını döndürmek için SIDT derleme talimatı gibi üst üste gelemeyen bir veri yapısına sahip olma gerekliliğinden kaynaklanır. (IDT) Sanal makineler tipik olarak IDT'yi fiziksel bir ana bilgisayardan daha yüksek bir kayıtta depolar.

Normalde sanallaştırma sistemiyle etkileşim gerektiren belirli işlevlerin veya talimatların zamanını ölçmek, dolaylı olarak sizi anlamanın bir yoludur ' Sanal makinede yeniden çalıştırma.

Anti-sanal makine yöntemleri olarak iki yaklaşım akla geliyor: Birincisi, sanal ortamı değiştirerek olası tüm sanallaştırma izlerini kaldırabilir, bu da basit kontrollere karşı iyi çalışabilir. 'vmware' veya benzer dizeler, bilinen teknikler ile kurnaz vm yapılandırması arasında bir çeşit silahlanma yarışına neden olur.

İkinci yaklaşım, sanal makine algılama tekniklerini tanımlamak için büyük ölçüde statik analize güvenmek ve bunu yaptıktan sonra etkilerini etkisiz hale getirerek sanal makine farkında olmayan yürütülebilir ve dinamik olarak analiz edilebilecek bir uygulama elde etmek için bunları yamamaktır.

Birkaç yaşındaysa iyi bilgiler içeren birkaç kaynak:

IDT ile ilgili olarak, Joanna Rutkowska'nın araştırmasına mı yoksa kendi araştırmanıza mı güveniyorsunuz? [Çok güvenilir görünmüyor.] (Http://blog.assarbad.net/20061105/redpill-getting-colorless/) Ayrıca [Jason Geffner'ın blogunda.] (Http://malwareanalysis.com/CommunityServer/blogs/ geffner / arşiv / 2006/08/21 / 15.aspx)
Ange
2013-04-10 12:17:35 UTC
view on stackexchange narkive permalink

liste sonsuz olabilir, bu yüzden kısa tutacağım:

  • sanallaştırılmış ortam yapıları: kayıt defteri anahtarları, sabit disk adı, ağ kartı adresi, belirli sürücüler, ...
  • ortam farklılıkları: fare yok, internet bağlantısı, ses kartı, ...
  • yürütme farkı: blok çevirinin algılanması (başka bir iş parçacığı oluşturun ve IP'ye istatistik uygulayın), farklı sistem değerleri kaydeder, ...
    • kullanıcı etkileşimi eksikliği (otomatik ortama özgü): fare hareketi yok, dosya işlemi yok, ...
  • belirli ortam farklılıkları: VmWare arka kapı, VirtualPC istisna hatası, ...

( anti hata ayıklama etiketi wiki)

waliedassar
2013-04-17 12:53:35 UTC
view on stackexchange narkive permalink

Sanal makinelerin algılanması için bazı püf noktaları:

VirtualBox

VirtualPc

Hiper yönetici tespiti

Yine de, Kodu kendinden açıklamalı hale getirmeye çalıştım, daha ayrıntılı bilgi için ilgili blog yazılarına da bakabilirsiniz.

Remko
2013-04-10 19:01:38 UTC
view on stackexchange narkive permalink

Bir süre sonra (Delphi'de) bir test programı yazdım.

Aşağıdaki iki işlev, VMware ve HyperV'yi algılar

  // Elias Bachaalanyfunction tarafından açıklandığı gibi VMware algılama IsInsideVMware: Boolean; sonuca başla: = True; asm push edx'i deneyin; ecx itin; ebx'i itin; mov eax, 'VMXh'; mov ebx, 0; mov ecx, 10; mov edx, 'VX'; eax olarak, dx; cmp ebx, 'VMXh'; setz [Sonuç]; pop ebx; pop ecx; pop edx; son; Sonuç hariç: = Yanlış; end; end; function IsHyperV: Boolean; asm cpuid; ecx, ecx testi; set [Result]; end;  

Aşağıdaki işlev, Satıcı Markası dizesi aracılığıyla Hyper-V'yi kontrol eder (VMware'de bu "VMwareVMware" döndürür:

  function IsRunningUnderHyperV: BOOL; stdcall; var VMBranding: array [0..12] of AnsiChar; begin asm mov eax, $ 40000000; cpuid; mov dword ptr [VMBranding + 0], ebx; // VM markalama dizesi mov dword ptr'yi alın [VMBranding + 4], ecx; mov dword ptr [VMBranding + 8], edx; end; VMBranding [12]: = # 0; Sonuç: = CompareText (String (VMBranding), 'Microsoft Hv') = 0; end; 

İlgili bağlantılar:

N3mes1s
2013-04-10 12:49:36 UTC
view on stackexchange narkive permalink

Daha önce gönderilen yanıtlardaki eklentilerde, cuckoosandbox vm tespiti için birkaç yara kuralı uygular:

https://github.com/cuckoobox/cuckoo/blob/1884b5579ff8e053b3d4a8523a5da576eee43552/data/yara/ ikili dosyalar / vmdetect.yar

Lütfen bağlantı ve / veya ilgili konu hakkında kısa bir açıklama ekleyin. Yalnızca bağlantı yanıtları yanıt olarak kabul edilmez.
Nex
2013-04-11 12:58:43 UTC
view on stackexchange narkive permalink

Guguklu sandbox havuzunda sık kullanılan püf noktaları bulabilirsiniz.

Lütfen bağlantı ve / veya ilgili konu hakkında kısa bir açıklama ekleyin. Yalnızca bağlantı yanıtları yanıt olarak kabul edilmez.
0xC0000022L
2014-01-31 10:18:37 UTC
view on stackexchange narkive permalink

Bir tür ilgili not gibi, ancak asıl soruyu biraz yanıltmak. Geçen yıl (2013) Berlin'deki VB konferansında KVM tabanlı değiştirilmiş bir hiper yönetici hakkında bir sunum vardı. Adı CXPInspector ve verdikleri sunum (teknoloji akışındaki ilk sunum) burada bulunabilir.

İşte ilgili tez / tez (237 sayfa) ve işte biraz daha kısa bir kağıt var (doğrudan CXPInspector hakkında olmasa da).

Yöntem daha yeni işlemci özelliklerini kullanıyor. Sunum güzel bir genel bakış sunuyor. Temelde akla gelebilecek tek saldırı - CPU ve hiper yönetici uygulamasındaki kusurlara dayalı olanlar dışında - bir zamanlama saldırısı olacaktır. Ve bugünlerde birçok makine hızlı olsa da, bu pek güvenilir bir yöntem değil. Eskiden öyleydi, ancak bu günlerde en iyi ihtimalle kumar oynanıyor.

Noteworthy
2017-03-07 04:11:30 UTC
view on stackexchange narkive permalink

Burada, sanallaştırmanın nasıl tespit edileceğine dair net bir fikir verecek, açık kaynaklı bir programda uygulanan anti-sandbox / vm / debugger tekniklerinin bir koleksiyonu yer almaktadır: https://github.com/LordNoteworthy/al-khaser.

Desteklenen tekniklerin listesi aşağıda verilmiştir:

Anti-debugging attack

  • IsDebuggerPresent
  • CheckRemoteDebuggerPresent
  • Process Environement Block (BeingDebugged)
  • Process Environement Block (NtGlobalFlag)
  • ProcessHeap (Flags)
  • ProcessHeap (ForceFlags)
  • NtQueryInformationProcess (ProcessDebugPort)
  • NtQueryInformationProcess (ProcessDebugFlags)
  • NtQueryInformationProcess (ProcessDebugObject)
  • NtSetInformationThread (HideThreadFromDebugger)
  • NtQueryInformationProcess (ProcessDebugFlags) (ObjectTypeInformation)
  • NtQueryObject (ObjectAllTypesInformation)
  • CloseHanlde (NtClose) Geçersiz Tutamaç
  • SetHandleInformation (Korumalı Tutamaç)
  • UnhandledExceptionFilter
  • OutputDebugString (GetLastErro r ())
  • Donanım Sınır Değerleri (SEH / GetThreadContext)
  • Yazılım Kesme Noktaları (INT3 / 0xCC)
  • Bellek Kesme Noktaları (PAGE_GUARD)
  • 0x2d'yi Kes
  • Kesme 1
  • Ana İşlem (Explorer.exe)
  • SeDebugPrivilege (Csrss.exe)
  • NtYieldExecution / SwitchToThread
  • TLS geri aramaları

Anti-Dumping

  • PE başlığını bellekten silin
  • SizeOfImage

Zamanlama Saldırıları [Anti-Sandbox]

  • RDTSC (bir VM Çıkışını zorlamak için CPUID ile)
  • RDTSC (GetProcessHeap & CloseHandle ile Locky sürümü)
  • Sleep -> SleepEx -> NtDelayExecution
  • Uyku (döngüde küçük bir gecikme)
  • Uyuyun ve zamanın hızlandırılıp hızlandırılmadığını kontrol edin (GetTickCount)
  • SetTimer (Standart Windows Zamanlayıcıları)
  • timeSetEvent (Çoklu Ortam Zamanlayıcıları)
  • WaitForSingleObject -> WaitForSingleObjectEx -> NtWaitForSingleObject
  • WaitForMultipleObjects -> WaitForMultipleObjectsEx ->

İnsan Etkileşimi / Genel [Anti-Sandbox]

  • Fare hareketi
  • Toplam Fiziksel bellek (GlobalMemoryStatusEx)
  • DeviceIoControl (IOCTL_DISK_GET_LENGTH_INFO kullanan disk boyutu) )
  • GetDiskFreeSpaceEx (TotalNumberOfBytes) kullanılarak disk boyutu
  • İşlemci sayısı (Win32 / Tinba - Win32 / Dyre)

Anti-Virtualization / Full -Sistem Öykünmesi

  • Kayıt defteri anahtarı değeri yapıları

    • DONANIM \ DEVICEMAP \ Scsi \ Scsi Bağlantı Noktası 0 \ Scsi Veri Yolu 0 \ Hedef Kimliği 0 \ Mantıksal Birim Kimliği 0 (Tanımlayıcı) (VBOX)
    • DONANIM \ DEVICEMAP \ Scsi \ Scsi Bağlantı Noktası 0 \ Scsi Veriyolu 0 \ Hedef Kimliği 0 \ Mantıksal Birim Kimliği 0 (Tanımlayıcı) (QEMU)
    • DONANIM \ Açıklama \ Sistem (SystemBiosVersion) (VBOX)
    • DONANIM \ Açıklama \ Sistem (SystemBiosVersion) (QEMU)
    • DONANIM \ Açıklama \ Sistem (VideoBiosVersion ) (SANAL KUTUSU)
    • DONANIM \ Açıklama \ Sistem (SystemBiosDate) (06/23/99)
    • DONANIM \ DEVICEMAP \ Scsi \ Scsi Port 0 \ Scsi Bus 0 \ Target Id 0 \ Mantıksal Birim Kimliği 0 (Tanımlayıcı ) (VMWARE)
    • DONANIM \ DEVICEMAP \ Scsi \ Scsi Port 1 \ Scsi Bus 0 \ Target Id 0 \ Logical Unit Id 0 (Identifier) ​​(VMWARE)
    • DONANIM \ DEVICEMAP \ Scsi \ Scsi Port 2 \ Scsi Bus 0 \ Target Id 0 \ Logical Unit Id 0 (Identifier) ​​(VMWARE)
  • Kayıt Anahtarları yapıları güçlü>

    • "DONANIM \ ACPI \ DSDT \ VBOX__"
    • "DONANIM \ ACPI \ FADT \ VBOX__"
    • "DONANIM \ ACPI \ RSDT \ VBOX__ "
    • " YAZILIM \ Oracle \ VirtualBox Konuk Eklemeleri "
    • " SYSTEM \ ControlSet001 \ Services \ VBoxGuest "
    • " SYSTEM \ ControlSet001 \ Services \ VBoxMouse "
    • " SYSTEM \ ControlSet001 \ Services \ VBoxService "
    • " SYSTEM \ ControlSet001 \ Services \ VBoxSF "
    • " SYSTEM \ ControlSet001 \ Services \ VBoxVideo "
    • YAZILIM \ VMware, Inc. \ VMware Araçları
    • YAZILIM \ Wine
  • Dosya sistemi yapıları

    • "system32 \ drivers \ VBoxMouse.sys"
    • "system32 \ drivers \ VBoxGuest.sys"
    • "system32 \ drivers \ VBoxSF.sys "
    • " system32 \ drivers \ VBoxVideo.sys "
    • "system32\vboxdisp.dll"
    • "system32\vboxhook.dll"
    • "system32\vboxmrxnp.dll"
    • "system32 \ vboxogl. dll "
    • " system32 \ vboxoglarrayspu.dll "
    • " system32 \ vboxoglcrutil.dll "
    • " system32 \ vboxoglerrorspu.dll "
    • "system32 \ vboxoglfeedbackspu.dll"
    • "system32 \ vboxoglpackspu.dll"
    • "system32 \ vboxoglpassthroughspu.dll"
    • "system32 \ vboxservice.exe"
    • "system32\vboxtray.exe"
    • "system32\VBoxControl.exe"
    • "system32 \ drivers \ vmmouse.sys"
    • "system32 \ drivers \ vmhgfs.sys"
  • Dizin yapıtları

    • "% PROGRAMFILES % \ oracle \ virtualbox konuk eklemeleri \ "
    • "% PROGRAMFILES% \ VMWare \ "
  • Bellek artefaktları güçlü >

    • Ara Açıklayıcı Tablo (IDT) konumu
    • Yerel Tanımlayıcı Tablosu (LDT) konumu
    • Global Tanımlayıcı Tablosu (GDT) konumu
    • STR ile görev durumu segment numarası
  • MAC Adresi

      "\ x08 \ x00 \ x27" (VBOX)
  • "\ x00 \ x05 \ x69" (VMWARE)
  • "\ x00 \ x0C \ x29" (VMWARE)
  • "\ x00 \ x1C \ x14" (VMWARE)
  • "\ x00 \ x50 \ x56" (VMWARE)
  • Sanal cihazlar

    • "\\. \ VBoxMiniRdrDN"
    • "\\. \ VBoxGuest"
    • "\\. \ boru \ VBoxMiniRdDN"
    • "\\. \ VBoxTrayIPC"
    • "\\. \ boru \ VBoxTrayIPC")
    • "\\ . \ HGFS "
    • " \\. \ Vmci "
  • Donanım Aygıtı bilgileri

    • SetupAPI SetupDiEnumDeviceInfo (GUID_DEVCLASS_DISKDRIVE)
      • QEMU
      • VMWare
      • VBOX
      • VIRTUAL HD
  • Bağdaştırıcı adı

    • VMWare
  • Windows Sınıfı

    • VBoxTrayToolWndClass
    • VBoxTrayToolWnd
  • Ağ paylaşımları

    • VirtualBox Paylaşılan Klasörleri
  • İşlemler

    • vboxservice.exe (VBOX)
    • vboxtray.exe (VBOX)
    • vmtoolsd.exe (VMWARE)
    • vmwaretray.exe (VMWARE)
    • vmwareuser (VMWARE)
    • vmsrvc.exe (VirtualPC)
    • vmusrvc.exe (SanalPC)
    • prl_cc.exe (Parallels)
    • prl_tools.exe (Parallels)
    • xenservice.exe (Citrix Xen)
  • WMI

    • Win32_Bios'tan (Seri Numarası) (VMWARE) * SEÇİN
    • Win32_PnPEntity (DeviceId) (VBOX) 'dan SEÇ *
    • Win32_NetworkAdapterConfiguration (MACAddress) (VBOX)' dan SEÇ *
    • Win32_NTEventlogFile (VBOX) 'dan SEÇ *
    • Win32_İşlemci (NumaraOfCores) (GENEL) SEÇİNİZ *
    • Win32_LogicalDisk'ten (Boyut) (GENEL) * SEÇİN
  • DLL Dışa Aktarmalar ve Yüklenen DLL'ler

    • kernel32.dll! wine_get_unix_file_nameWine (Wine)
    • sbiedll.dll (Sandboxie)
    • dbghelp.dll (MS destek rutinlerinde hata ayıklama)
    • api_log.dll (iDefense Labs)
    • dir_watch.dll (iDefense Labs)
    • pstorec.dll (SunBelt Sandbox)
    • vmcheck.dll (Sanal PC)
    • wpespy.dll (WPE Pro)
  • CPU*”

    • (EAX = 0x1) kullanarak hipervizör varlığı
    • (EAX = 0x40000000)
      • "KVMKVMKVM kullanan hipervizör tedarikçisi \ 0 \ 0 \ 0 "(KVM)
      • " Microsoft Hv "(Microsoft Hyper-V veya Windows Virtual PC)
      • " VMwareVMware "(VMware)
      • "XenVMMXenVMM" (Xen)
      • "prl hyperv" (Parallels) - "VBoxVBoxVBox" (VirtualBox)
  • Anti-Analysis

    • Süreçler
      • OllyDBG / ImmunityDebugger / WinDbg / IDA Pro
      • SysInternals Suite Araçları (Process Explorer / Process Monitor / Regmon / Filemon, TCPView, Autoruns)
      • Wireshark / Dumpcap
      • ProcessHacker / SysAnalyzer / HookExplorer / SysInspector
      • ImportREC / PETools / LordPE
      • JoeBox Sandbox


    Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
    Loading...