it-swarm-eu.dev

Zastavuje virtuální počítač škodlivé programy?

Chtěl bych vědět, zda je bezpečné, aby hostitelský systém virtuálního počítače (v mém případě VM - VirtualBox OSE) spouštěl malware.

Může virus vypuknout a číst nebo zapisovat data z hostitelského systému? Může to navázat připojení k internetu, pokud je zakážu ve svém virtuálním počítači?

Je VM bezpečné prostředí), aby se pokusilo zjistit, co virus dělá?

Může vidlicová bomba „zabít“ hostitelský systém, pokud omezím paměť na asi 1/4 mé celkové skutečné paměti? Kolik času CPU/zdrojů může použít?

66
Martin Thoma

Teoreticky je hostující systém zcela izolován VM a nemůže ani „vidět“ hostitele, natož na něj zaútočit; takže host nemůže vymanit se z VM. V praxi samozřejmě to se občas stalo ( odkaz na webový archiv ). Útok vyžaduje zneužití problému se zabezpečením (tj. Programovací chyba, která se ukáže, že má ošklivé důsledky) při implementaci VM nebo případně hardwarové funkce, na kterých VM staví. Existuje jen několik výstupních tras pro data z VM; např. pro přístup na internet, VM emuluje virtuální síťovou kartu, která se zabývá pouze pakety nejnižší úrovně, ne plnými TCP/IP - proto většina problémů s IP-stackem zůstává omezena na VM sám. Takže chyby vedoucí k útěku od VM mají tendenci zůstat vzácnými událostmi.

Existuje několik druhů útoků, proti nimž jsou VM velmi účinné, např. vidlice bomby. Z pohledu hostitelského systému je VM jediný proces. Vidlice bomba v hostu přinese na kolena plánovač v host OS, ale pro hosta to bude naprosto neškodné. Podobně pro paměť: VM emuluje fyzický počítač s daným množstvím paměti RAM a bude potřebovat asi takové množství „skutečného“ RAM, aby jej účinně zálohoval. Bez ohledu na to, co host dělá, VM nikdy nebude monopolizovat více RAM než to. (Stále chcete omezit velikost VM RAM na nejvýše 1/2 vaší fyzické RAM velikosti, protože navíc "skutečná" RAM je užitečné pro ukládání do mezipaměti disku a hostitelský operační systém bude chtít některé také použít.)

55
Tom Leek

Zřeknutí se odpovědnosti: Chystám se na relativně vysoké úrovni porozumění. Pokud chcete podrobného průvodce, je to mimo rozsah. Navíc existují i ​​jiné způsoby (výhradně v softwaru) k implementaci virtuálních strojů, na které se to nevztahuje. Zaměřuji se také na „propuknutí“ pouze prostřednictvím virtualizačních mechanismů - tj. Ne na ty, které se mohou stát mezi PC a PC na skutečných hostitelích v pevné síti.

Líbí se mi detail, takže tady jdeme s některými. Za prvé, codeprojekt má několik vynikajících odkazů na assembler na různé režimy CPU x86 (reálné, chráněné a dlouhé) a použití virtualizace . Je tu Intel VT blog (Nejsem si jistý, jestli to Intel napíše) a konečně první část Rootkit Arsenal je věnována vysvětlení x86 a je vynikajícím čtením, kompletní s průchody a pěkné diagramy. Pochopení toho všeho vyžaduje trpělivost, takže to, co zde udělám, je poskytnout velmi stručný úvod, jak to funguje.

Způsob, jakým jsme houpali, když jsme běhali DOS

DOS a rané 16bitové systémy v reálném režimu pracují se segmentovaným paměťovým modelem. Neexistuje žádná kontrola nad velikostí segmentů a na žádném z těchto segmentů nejsou žádné ochranné spínače. Kód se načte do segmentu paměti a spustí; to může daleko skočit do jiných segmentů, takže jakýkoli kód, kdekoli může změnit cokoli, včetně vytvoření TSR (ukončit a zůstat rezidentní) kus kódu, který jednoduše ukazuje jeden z IVT záznamů (přerušovací vektorová tabulka) na adresu ve svém prostoru, před provedením originálu. V zásadě neexistuje žádná ochrana. Žádný. Nada.

Vzestup 32bitového chráněného režimu

Chráněný režim se zkomplikuje rychle. Existují tři části - segmentace, stránkování a PAE. Každý vyžaduje tabulku dat, která říká CPU o tomto segmentu, stránce nebo mu pomáhá rozšířit adresní prostor (PAE). Patří mezi ně slavné prstencové vlajky (platí pro segmenty a stránky), které implementují izolaci procesu. Stránkování je způsob, jak načíst data z RAM a na disk) a vytvořit fantastické věci, jako je virtuální paměť (viz, virtuální slovo Word! Jsme tam!)

Dlouhý režim

Dlouhý režim odstraňuje segmentaci a jednoduše pověřuje struktury PAE/stránkování. Pro úplnou trivializaci implementace operačního systému je opět stránkování řízeno strukturami v paměti, které jsou poté nastaveny pomocí zvláštních pokynů. Voila, jeden může dosáhnout izolace procesu se správným nastavením. Opět se trochu trivializuji ...

Dej mi virtualizaci!

Dobře. Virtualizace je stejný obecný koncept . Virtuální stroje jsou nastaveny pomocí řídicích struktur virtuálních strojů, které diktují, jak je jejich paměť mapována zpět do fyzické paměti, podobně jako stránkování . Důležité je, že za určitých podmínek bude virtuální stroj muset požádat hostitelský operační systém o něco, , jako je izolace procesu, například jako softwarové přerušení . Tito jsou odkazováni na VM východy a poskytují hostiteli informace, jako je stav registrů při ukončení. Kinda, stejně jako systémové volání .

Může část škodlivého softwaru vypuknout z virtuálního počítače?

Pokud jde o VM), hostitelský operační systém má veškerý svůj vlastní paměťový prostor a může být infikován/poškozen/zničen podle libosti.

Pokud jde o přímý vliv na hostitelskou paměť, virtuální stroj nemůže, protože ji nemůže vidět. Hostitel musí namapovat požadovanou paměť do prostoru virtuálního stroje. V tomto paměťovém prostoru musí také implementovat vše od systému BIOS. Aby bylo možné komunikovat s určitými hostitelskými zařízeními pro určité úkoly, musí hostitelský počítač nastavit tyto VM podmínky ukončení a cíl VM je musí spustit). se stane, ovládání je přeneseno do hostitele.

Existují tedy dvě možné rizikové oblasti:

  1. Akce, které hostitel provádí v reakci na ukončení VM). Pokud v tomto zpracování existují nějaké chyby, může být možné přesvědčit hostitele, aby provedl něco, co by neměl.
  2. Jakýkoli přístup hostitele do paměti hostujícího stroje. Nezapomeňte, že kód hostitelského stroje spuštěný v kruhu 0 může vniknout a havarovat večírek, kdekoli to bude příjemné. Stává se tak, že můžete nastavit hostovu paměť od hosta (překvapivě).

Tím se dostanete k vašemu vykořisťovacímu mechanismu. Potřebujete obslužnou chybu v výstupní rutině VM), pak musíte být schopni přesvědčit tento kód, aby provedl nějakou paměť, ideálně kód, který jste právě vložili na stránku od hosta vm. Po dokončení řekni sbohem Kansasu.

Jak říká Tom Leek, VM jsou neuvěřitelně efektivní v obraně proti vidlicovým bombám. Podobně jako OS může omezit, kolik paměti může proces přidělit, takže může omezit, kolik paměti je mapováno na VM. Došel a hostující OS věří, že je nedostatek fyzické paměti; Hostitel to nepřidělí více , pokud nevykonáte ukončení VM exit), což by bylo trochu nebezpečné a nevěřím tomu je hotovo.

Jak je to pravděpodobné?

Nepříliš. Závisí to na těchto VM implementacích ukončení úplně, nebo na čtení paměti od hosta na hostiteli s chybou Nice ve vašem čtecím kódu. Také vyžaduje, aby uvedená chyba umožnila ovládat havárii v takovým způsobem, že můžete vynutit spuštění na paměťovou adresu, kterou drží váš hostitel. Výstup = VM) musí mít přístup k této paměti.

Co jsem nepokryl?

  1. Útoky na existující softwarové balíčky, jako je TCPIP. Chyby zabezpečení jsou stejné, jako kdybyste stejně měli dva skutečný fystický počítač.
  2. Úplně softwarově implementovaná virtualizace.
  3. Virtualizace na jakémkoli jiném typu čipu. To platí pro nastavení kompatibilní s Intel VT.

Nakonec již jsem dříve tvrdil, že izolace procesu je formou karantény. Po přečtení této odpovědi a této odpovědi byste nyní měli být schopni pochopit, proč je takto definuji. V x86 jsou mezi izolací procesů a virtuálními stroji značné podobnosti.

Aktualizace

Takže jsem se toho ještě víc zabořil, zejména do výzkumu modré pilulky. To, co jsem popsal, je velmi zjednodušující pohled na vysoké úrovni. Našel jsem více podrobností. Zde je celý příspěvek je věnován z laboratoře Invisible Things Lab. Ukázalo se, že jejich obrana diskuse zahrnovala koncept odepření vykonávacího přístupu na stránky režimu uživatele z okruhu 0, čímž brání přímému provedení dat, která virtuální stroj vložil do paměti. kazuje se, že to je implementováno v procesorech Intel a v jádru Linuxu aktuálně existují záplaty. Takže, v závislosti na tom, jak to jde, může se stát, že útoky této povahy budou mnohem těžší, i když existují vykořisťování.

31
user2213

Uskutečnil jsem trochu experimentování se malwarem v rámci VM - většinou využívající backtrack4 k přerušení z jednoho hostitele na druhého. Jsem především uživatelem VMware Workstation.

Největší problém spočívá v možnosti síťového připojení vašeho VM přenosu zpět do vašeho hostitelského OS. Chcete zcela zakázat síťování nebo použít síť, která nemá přístup zpět k vašemu hostiteli) .

Omezená paměť je dobrým doporučeným postupem. Obecně to udržuji asi na čtvrtinu, stejně jako vy. Čas CPU je omezen na počet jader nebo (pokud máte ve svém softwaru jemnější zrnitost) procento času CPU definovaného pro váš konkrétní VM.

Cílové útoky schopné vymanit se z virtuálního prostředí existují a jsou komerčně dostupné - například zmínky o cloudburst @ Hendrick -, ale jsou relativně vzácné. Udržovat si přehled o virtualizačních opravách je velmi dobrý nápad.

Podrobnosti viz zde , zde a zde .

11
Tim Brigham

Kromě všech dobrých informací o tom, zda virus může uniknout z VM, dovolte mi upozornit na další problém, který je třeba zvážit:

Je možné, aby škodlivý kód zjistil, zda je spuštěn uvnitř virtuálního počítače nebo ne . Často se jedná o jméno detekce virtuálního stroje nebo "červené pilulky" a je k dispozici mnohotechniky .

Některé viry a další malware navíc používají tyto techniky ke zjištění, zda jsou spuštěny ve virtuálním počítači, a pokud ano, vypnou své užitečné zatížení (vyhněte se jakémukoli škodlivému jednání). Dělají to proto, aby lidem ztěžovali život, aby mohli malware zpětně analyzovat nebo detekovat.

V důsledku toho a VM) není dobrý způsob, jak zjistit, co část malwaru dělá. Malware nemusí být schopen vymanit se z virtuálního počítače, ale zároveň nemusí když běží uvnitř VM, udělejte cokoli. Pokud to spustíte v VM a uvidíte, že nic nedělá), rozhodněte se, že je neškodný, a pak se rozhodněte spustit mimo VM - můžete se dostat do vlastnictví. Buďte opatrní.

10
D.W.