Całkowicie odizoluj maszynę VirtualBox


17

Chciałbym użyć VirtualBox do zainstalowania oprogramowania, które nie powinno mieć dostępu do mojego komputera-hosta (i odwrotnie). Jednak przewiduję również możliwość próbowania bardziej „niebezpiecznych” rzeczy, takich jak próba uruchomienia exploitów zero-day i zobaczenia, co mogą zrobić.

Jak odizolować maszynę wirtualną od hosta? Powinienem (lub może nie?) Skonfigurować zaporę między gościem a gospodarzem? Czy dodatki dla gości stanowią zagrożenie bezpieczeństwa? Co z udostępnionymi katalogami?

W tej chwili na maszynie gościa trwają testy GNU / Linux Debian.


7
Stack Exchange ma grupę ds. Bezpieczeństwa informacji , jeśli chcesz zadać szczegółowe pytania bezpieczeństwa.
cybernard

Oddelegowanie @cybernard tutaj. Po odrobinie rozwinięcia byłoby to bardzo właściwe pytanie dla Security.SE, zakładając, że nie jest to duplikat (co, obawiam się, że może być, biorąc pod uwagę rozwój ich społeczności).
0xdd

1
Nie powinieneś używać VirtualBox, ponieważ współdziała on z twoim systemem poprzez moduł jądra, który jest znacznie większym ryzykiem niż implementacje czystej przestrzeni użytkownika. Zwłaszcza wirtualny moduł jądra jest uważany za bzdury przez deweloperów jądra. Lepszym wyborem jest emulator, taki jak qemu działający jako nieuprzywilejowany użytkownik, który nie ma dostępu do niczego interesującego i reguł zapory, które uniemożliwiają temu użytkownikowi dostęp do sieci. (Publikowanie komentarza, ponieważ nie odpowiada bezpośrednio na pytanie dotyczące VirtualBox)
allo

Odpowiedzi:


36

Zacznę od stwierdzenia, że ​​to pytanie jest bardzo szerokie i pokazuje bardzo mało oryginalnych badań i że ta odpowiedź nie powinna być postrzegana jako zachęta do tego rodzaju pytań. Zamiast tego ta odpowiedź ma na celu dostarczenie bardzo podstawowych wskazówek bezpieczeństwa dla osób, które dopiero zaczynają od analizy złośliwego oprogramowania.

Przy założeniu, że korzystasz ze znanego, wcześniej zbadanego złośliwego oprogramowania, sposób izolacji środowiska zależy w dużej mierze od tego, do czego zdolne jest to złośliwe oprogramowanie. Niektóre ogólne zasady mające zastosowanie do większości współczesnego złośliwego oprogramowania mogą być następujące:

  • Odizoluj swoją maszynę wirtualną od Internetu. Może to być tak proste, jak brak skonfigurowania przekazywania interfejsu do komputera-gościa, i zapobiega komunikowaniu się złośliwego oprogramowania z potencjalnymi węzłami dowodzenia i kontroli, które mogłyby nakazać mu działanie w nieprzewidziany sposób.

  • Użyj odpowiedniego hiperwizora. Istnieje kilka głównych na rynku, w tym VirtualBox, HyperV, QEMU i macOS Hypervisor.framework, aby wymienić tylko kilka; niektóre z nich są aktywnie atakowane przez złośliwe oprogramowanie i w zależności od wersji mogą być podatne na złośliwe oprogramowanie wyłamujące się z maszyny gościa.

  • Zdecydowanie nie instaluj dodatków gości ani analogów innych platform. Dosłownie celem tego rodzaju oprogramowania jest ustanowienie integracji między gościem a gospodarzem, skutecznie osłabiając separację między nimi. Nie jestem badaczem złośliwego oprogramowania, ale zdziwiłbym się, gdyby nie było złośliwego oprogramowania, które byłoby specjalnie atakowane na tego rodzaju powierzchni.

Aby odnieść się bezpośrednio do niektórych punktów:

Jak odizolować maszynę wirtualną od hosta?

W tym momencie maszynę wirtualną można dość dokładnie odizolować, ale niektóre funkcje muszą nadal przechodzić przez hosta mniej więcej bezpośrednio, przy niewielkiej ochronie hiperwizora. Od samego początku większość maszyn wirtualnych innych niż KVM (takich jak VirtualBox) nie będzie dzielić jądra z systemem operacyjnym hosta. To samo służy jako bloker dla wielu klas exploitów, w szczególności blokując możliwość uruchamiania dowolnych wywołań systemowych na jądrze hosta (z zauważalną gwiazdką, że zepsuta implementacja warstwy VM może pozwolić na obejście tego przez złośliwe oprogramowanie w mniej oczywisty sposób).

Twoja maszyna wirtualna nadal ma przestrzeń procesową na sprzęcie maszyny hosta - i chociaż nie jest to generalnie ryzyko, ponieważ nowoczesne systemy operacyjne zapewniają przyzwoitą izolację przestrzeni procesowej, nadal można jej używać do wykorzystywania ataków na bardzo niskim poziomie, takich jak młot linowy , gdzie proces sekwencyjnie zapisuje w pamięci w określony sposób, dopóki nie będzie w stanie odczytać sąsiednich bloków pamięci, których nie posiada - skutecznie umożliwiając wyciek pamięci między procesami.

Warto również zauważyć, że izolacja ma tendencję do zanikania, gdy chcesz wykonać zasadniczo dowolny rodzaj operacji wejścia / wyjścia: wejście i wyjście koniecznie oznacza przejście, które odsłania powierzchnię ataku, którą można wykorzystać do wykonywania akcji hosta. Obejmuje to przekazywanie HID, takie jak mysz i klawiatura, a także takie rzeczy, jak przechodzenie przez sieć - chociaż ogólnie zależy to od tego, jak dobrze zaimplementowano przekazywanie We / Wy w maszynie wirtualnej.

Czy powinienem (czy mogę?) Skonfigurować zaporę ogniową między gościem a gospodarzem?

To zależy, ale generalnie nie jest to zły pomysł . Większość głównych platform obsługuje zapory ogniowe na poziomie hiperwizora. Są one co najmniej tak liberalne jak zapora ogniowa na komputerze hosta, co z kolei jest co najmniej tak samo liberalne jak zapora sieciowa LAN lub VLAN. Jeśli chcesz to wykorzystać zamiast całkowicie odciąć dostęp do sieci poprzez rozłączenie interfejsów sieci wirtualnej, zaleciłbym zbadanie portów i hostów wybranych celów złośliwego oprogramowania i przejście od tego.

Czy dodatki dla gości stanowią zagrożenie bezpieczeństwa?

Tak . Pozwalają na wszelkiego rodzaju integracje między maszyną hosta a maszyną gościa i nie zawsze zawierają otwarte specyfikacje, w których można zobaczyć, co jest otwierane; patrz wyżej.

Co z udostępnionymi katalogami?

To zależy od tego, jak to robisz, ale często jest to zły pomysł . Wiele hiperwizorów robi to, tworząc wirtualny dysk zamontowany w maszynie gościa, której katalog główny znajduje się w tym katalogu. W zależności od implementacji tego mechanizmu, który może się nieco różnić w zależności od frameworka, możesz być bezpieczny, w zależności od tego, jakie szkodliwe oprogramowanie próbujesz przetestować.


Obawiam się, że przeprowadziłeś bardzo mało badań w tym zakresie i że możesz w końcu zaszkodzić swojemu komputerowi lub swoim danym. Zanim przejdziesz dalej, radzę przyjrzeć się różnym mechanizmom izolacji w popularnych systemach operacyjnych (KVM), w jaki sposób integrują się one z platformami wirtualizacji wyższego poziomu ( ), kontenerami ( ) i chrootmechanizmem ( ), aby nazwać kilka), kiedy każdy jest odpowiedni i co mogą, a czego nie mogą zrobić. W tym momencie będziesz mógł lepiej ocenić, czy możesz bezpiecznie bawić się złośliwym oprogramowaniem w odpowiednio odizolowanym środowisku.

Wreszcie, nie powinieneś angażować się w próby pracy z nowym lub mało znanym złośliwym oprogramowaniem (chyba że jesteś doświadczonym badaczem bezpieczeństwa, ale ta odpowiedź nie jest skierowana do doświadczonych badaczy bezpieczeństwa). Złośliwi aktorzy są niezwykle kreatywni, jeśli chodzi o to, co wykorzystują i jak to wykorzystują. Aby się o tym przekonać, rzuć okiem na ostatnie rozmowy DEFCON, które nie koncentrują się wokół inżynierii społecznej lub uzyskania fizycznego dostępu za pomocą środków mechanicznych.


3
Nie sądzę, aby istniała duża różnica w zakresie izolacji pomiędzy KVM a VirtualBox / VMWare / ... ponieważ wszystkie z nich wymagają wsparcia modułu jądra i używają wirtualizacji wspomaganej sprzętowo. Może miałeś na myśli kontenery / dokery? To powiedziawszy prawdopodobnie czyste exploity qemu byłyby tylko w przestrzeni użytkownika, ale obecnie ma prawdopodobnie znacznie mniejszą kontrolę niż kvm (patrz także wykorzystanie napędu dyskietek), ale ani kvm, ani qemu nie pozwala na bezpośrednie wywołania systemowe do jądra, ale oba umożliwiają pośrednie (poprzez wirtualizację lub parawirtualizację) .
Maciej Piechotka,

@MaciejPiechotka mój błąd, który został źle sformułowany. Zaktualizowałem odpowiedź, ale dziękuję za poruszenie tej kwestii!
0xdd
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.