it-swarm-tr.com

Sanal Makine kötü amaçlı yazılımların zarar görmesini engelliyor mu?

Bir sanal makinenin Ana bilgisayar sisteminin (benim durumumda VM - VirtualBox OSE) kötü amaçlı yazılım yürütmesinin güvenli olup olmadığını bilmek istiyorum.

Bir virüs Sunucu sisteminden veri kesip okuyabilir veya yazabilir mi? Sanal makinemde devre dışı bırakırsam İnternet bağlantısı kurabilir mi?

Bir VM bir virüsün ne yaptığını bulmaya çalışmak için güvenli bir ortam mı?

Belleği toplam gerçek belleğimin yaklaşık 1/4'üne indirirsem bir çatal bombası Host sistemini "öldürebilir" mi? Ne kadar CPU zamanı/kaynağı kullanabilir?

66
Martin Thoma

Teorik olarak, konuk sistem VM tarafından tamamen izole edilmiştir ve hatta Saldırıya izin vermeksizin Host'u "göremez"; böylece konuk VM'den ayrılamaz. Tabii ki, pratikte, zaman zaman old ( web arşivi bağlantısı ). Saldırı, VM uygulamasında veya muhtemelen VM'nin dayandığı donanım özelliklerinde bir güvenlik sorununu (yani, kötü sonuçlara yol açan bir programlama hatası) kullanmasını gerektirir. Sanal Makineden veri almak için çok az çıkış yolu vardır; örneğin, İnternet erişimi için, VM, tam TCP/IP ile değil, yalnızca en düşük seviye paketlerle ilgilenen bir sanal ağ kartını taklit etmektedir - bu nedenle, IP yığını sorunlarının çoğu VM kendisi. Bu nedenle, VM 'den kopmaya neden olan hatalar, nadir durumlar olarak kalma eğilimindedir.

VM'nin çok etkili olduğu bazı saldırı türleri vardır; çatal bombaları. Ana sistem açısından, VM tek bir işlemdir. Konuktaki bir çatal bombası konuk işletim sistemindeki zamanlayıcıyı dizlerine getirecektir, ancak Ev Sahibi için bu tamamen zararsız olacaktır. Benzer şekilde bellek için: VM, belirli bir RAM miktarına sahip fiziksel bir makineye öykünür ve verimli bir şekilde yedeklemek için bu miktarda "gerçek" RAM gerekir. Konuk ne yaparsa yapsın, VM hiçbir zaman bundan daha fazla RAM tekeline almaz. (Yine de VM RAM boyutunu, örneğin fiziksel RAM boyutunuzla en fazla 1/2 oranında sınırlamak istiyorsunuz, çünkü ekstra "gerçek" RAM disk önbelleklemesi için kullanışlıdır ve Host OS de bazılarını kullanmak isteyecektir.)

55
Tom Leek

Feragatname: Nispeten üst düzey bir anlayışa gidiyorum. Ayrıntılı bir rehber istiyorsanız bu kapsam dışıdır. Ayrıca, bunun geçerli olmadığı sanal makineleri uygulamanın başka yolları da (tamamen yazılımda) vardır. Ayrıca, yalnızca sanallaştırma mekanizmaları yoluyla "dağılmaya" odaklanıyorum - yani, gerçek sabit ağa sahip ana bilgisayarlarda PC'den PC'ye olabilecek olanlar değil.

Ayrıntıları severim, işte burada biraz gidiyoruz. İlk olarak, kod projesinin x86 CPU'nun farklı modları (gerçek, korumalı ve uzun) ve sanallaştırma kullanımı üzerinde mükemmel montajcı referansları vardır. Bir Intel VT blog (Intel'in bunu yazıp yazmadığından emin değilim) ve son olarak Rootkit Arsenal öğesinin ilk kısmı x86'yı açıklamaya adanmış ve mükemmel bir okuma, izlenecek yol ve Nice diyagramları ile tamamlayın. Her şeyi anlamak sabır ister, bu yüzden burada yapacağım, nasıl çalıştığına dair kısa bir giriş yapmak.

DOS çalıştırdığımızda sallanma şeklimiz

DOS ve erken 16-bit gerçek mod sistemleri bölümlenmiş bir bellek modeli çalıştırır. Segmentlerin boyutu üzerinde kontrol yoktur ve bu segmentlerin hiçbirinde koruma anahtarı yoktur. Kod bir bellek bölümüne yüklenir ve çalışır; diğer segmentlere çok fazla atlayabilir, bu nedenle herhangi bir kod, herhangi bir yerde, IVT girişlerinden birini (kesme vektör tablosu) kendi alanındaki bir adrese yönlendiren bir TSR (sonlandırma ve yerleşik kalma) kod parçası üretmek de dahil olmak üzere her şeyi değiştirebilir, orijinali çalıştırmadan önce. Temel olarak, koruma yoktur. Yok. Nada.

32 bit korumalı modun yükselişi

Korumalı mod hızla karmaşıklaşır. Bunun üç kısmı vardır - segmentasyon, sayfalama ve PAE. Her biri, CPU'ya söz konusu segment, sayfa hakkında bilgi veren veya adres alanını (PAE) genişletmesine yardımcı olan bir veri tablosu gerektirir. Bunlar, süreç izolasyonu uygulayan ünlü halka bayrakları (segmentlere ve sayfalara uygulanır) içerir. Disk belleği, verileri RAM ve diske yükleyip sanal bellek gibi süslü şeyler oluşturmanın yoludur) (bkz. Word sanal! Oraya varıyoruz!)

Uzun mod

Uzun mod segmentasyonu ortadan kaldırır ve sadece PAE/Paging yapılarını zorunlu kılar. Yine, bir işletim sistemi uygulamasını tamamen önemsizleştirmek için, Çağrı, bellekteki yapılarla kontrol edilir ve bunlar daha sonra özel talimatlar ile kurulur. Voila, doğru ayarlarla proses izolasyonu elde edilebilir. Yine, biraz önemsizleşiyorum ...

Bana sanallaştırma yap!

Tamam. Sanallaştırma aynı genel kavramdır. Sanal makineler, belleklerinin fiziksel belleğe nasıl eşlendiğini belirleyen sanal makine kontrol yapıları kullanılarak kurulur, biraz sayfalama gibi. En önemlisi, belirli koşullar altında sanal makinenin Host işletim sisteminden bir şey istemesi gerekecektir, biraz süreç izolasyonu gibi, biraz yazılım kesintisi gibi. Bunlar VM çıkışlar ve çıkışta kayıtların durumu gibi Ana bilgisayara bilgi sağlar. Tıpkı bir sistem çağrısı gibi.

Bir kötü amaçlı yazılım parçası sanal makineden çıkabilir mi?

Bu nedenle, VM söz konusu olduğunda, Ana Bilgisayar İşletim Sisteminin tüm kendi bellek alanı vardır ve istendiği gibi enfekte olabilir/hasar görebilir/imha edilebilir.

Ana makine belleğini doğrudan etkileme açısından, sanal makine göremez, çünkü göremez. Ana Makine, gerekli belleği sanal makine alanına eşlemelidir. Ayrıca, bu bellek alanında, BIOS'tan yukarı doğru her şeyi uygulamalıdır. Belirli görevler için belirli Ana Bilgisayar aygıtlarıyla iletişim kurmak için Ana makine, bu VM çıkış koşullarını ve hedef VM bunları tetiklemelidir. gerçekleşirse, kontrol Ana Bilgisayara aktarılır.

Bu nedenle, iki olası riskli alan vardır:

  1. Ana Makinenin bir VM çıkışına yanıt olarak gerçekleştirdiği eylemler. Bu işlemde herhangi bir hata varsa, Ana Bilgisayarı yapmaması gereken bir şeyi yürütmeye ikna etmek mümkün olabilir.
  2. Konuk makinenin bellek alanına herhangi bir Ana Bilgisayar erişimi. 0 halkasında çalışan Host makine kodunun vals içerisine girebildiğini ve partiyi istediği yerde çökebileceğini unutmayın. Böylece konuk hafızasını konuktan ayarlayabilirsiniz (şaşırtıcı bir şekilde).

Bu sizi istismar mekanizmanıza götürür. VM çıkış yordamında bir işleme hatası gerekir, o zaman biraz bellek yürütmek için bu kodu ikna edebilmeniz gerekir, ideal olarak konuk vm'den bir sayfaya koyduğunuzda kodlayın. , Kansas'a güle güle deyin.

Tom Leek'in dediği gibi, VM'ler çatal bombalarına karşı savunmada inanılmaz derecede etkilidir. İşletim sisteminin bir sürecin ne kadar bellek ayırabileceğini sınırlamasına benzer şekilde, VM'ye ne kadar bellek eşlendiğini sınırlayabilir. Tükenmek ve konuk işletim sistemi fiziksel bellek yetersiz olduğuna inanıyor; Ana bilgisayar daha fazla ayırmayacak sürece bunu yapmak için bir VM çıkış uygulayın, ki bu biraz tehlikeli olurdu ve bunun yapıldığına inanmıyorum.

Bu ne kadar olası?

Çok değil. Bu VM uygulamalardan tamamen çıkmaya veya Ana Bilgisayardaki misafirin belleğini okuma kodunuzda güzel bir hata ile okumaya bağlıdır.Ayrıca, söz konusu hatanın kilitlenmeyi kontrol etmenizi sağlar. Çalıştırmayı Ana Bilgisayarınızın sahip olduğu bellek adresine zorlayabilirsiniz. VM çıkış bu belleğe erişebilmelidir.

Neyi kapsamadım?

  1. TCPIP gibi mevcut yazılım yığınlarına saldırı. Buradaki güvenlik açıkları, iki gerçek fiziksel PC'nizle aynıdır.
  2. Tamamen yazılımla sanallaştırma uygulandı.
  3. Diğer çip türlerinde sanallaştırma. Bu, Intel VT uyumlu kurulumlar için geçerlidir.

Son olarak, daha önce var süreç izolasyonu bir sanal alan biçimi olduğunu savundu. Bu cevabı ve bu cevabı okurken, onları neden bu şekilde tanımladığımı anlayabilmelisiniz. X86'da işlem yalıtımı ve sanal makineler arasında dikkate değer benzerlikler vardır.

Güncellemesi

Bu yüzden, özellikle mavi hap araştırmasına daha da fazla kazdım. Tarif ettiğim çok basit bir üst düzey görüş. Daha fazla detay buldum. İşte Görünmez Şeyler Laboratuvarı'ndan bir tüm makale . savunmalar konuşmasının, 0 halkasından kullanıcı modu sayfalarına yürütme erişimini reddetme kavramını içerdiği, böylece sanal makinenin belleğe yerleştirdiği verilerin doğrudan yürütülmesini engellediği anlaşıldı. Bunun Intel CPU'larda uygulandığı anlaşılıyor ve şu anda Linux Çekirdeğinde yamalar var. Bu nedenle, bunun nasıl gittiğine bağlı olarak, istismarlar olsa bile, bu türden saldırıların çok daha zor hale gelmesi durumu olabilir.

31
user2213

Ben bir VM - çoğunlukla bir ana bilgisayardan diğerine kırmak için backtrack4 kullanarak içinde oldukça kötü amaçlı yazılım deneme yaptım.Ben öncelikle bir VMware Workstation kullanıcısıyım.

En büyük sorun VM Ana işletim sisteminize geri aktarma olasılığı). Ağları tamamen devre dışı bırakmak ve/veya Ana Makinenize erişimi olmayan bir ağ kullanmak istiyorsunuz .

Belleği sınırlamak iyi bir uygulama. Genelde seninle aynı çeyreği koruyorum. CPU süresi, çekirdek sayısı veya (yazılımınızda daha hassas taneli denetimleriniz varsa), belirli VM'niz için tanımlanan CPU süresi yüzdesi ile sınırlıdır.

Sanal ortamdan ayrılabilen hedefli saldırılar mevcuttur ve ticari olarak erişilebilir durumdadır (cloudburst @Hendrick gibi) - ancak nispeten nadirdir. Sanallaştırma yamalarınızı güncel tutmak çok iyi bir fikirdir.

Ayrıntılar için burada , burada ve burada konusuna bakın.

11
Tim Brigham

Virüsün VM'den kaçıp kaçamayacağıyla ilgili tüm iyi bilgilere ek olarak, dikkate almam gereken başka bir konuya işaret edeyim:

Kötü amaçlı kodun sanal makinede yürütülüp yürütülmediğini algılaması mümkündür. Bu genellikle sanal makine algılama veya "kırmızı haplar" ve birçokteknik vardır.

Ayrıca, bazı virüsler ve diğer kötü amaçlı yazılımlar, bir sanal makinede çalıştırılıp çalıştırılmadığını tespit etmek için bu teknikleri kullanır ve öyleyse, yüklerini kapatın (kötü amaçlı herhangi bir işlem yapmaktan kaçının). Bunu, insanların kötü amaçlı yazılımları tersine mühendislik veya tespit etmeleri için hayatı zorlaştırmak için yapıyorlar.

Sonuç olarak, bir VM bir kötü amaçlı yazılım parçasının ne yaptığını öğrenmek için iyi bir yol değildir. Kötü amaçlı yazılım VM'den çıkamayabilir, ancak aynı zamanda VM içinde çalışırken herhangi bir şey yapın. VM içinde çalıştırırsanız ve hiçbir şey yapmadığını görürseniz, zararsız olduğuna karar verin ve sonra VM - Sahip olabilirsiniz, orada dikkatli olun.

10
D.W.