VMware Tools i Windows 95, 98, ME, NT 4

Windows 95 boxJeśli ktoś od czasu do czasu chce odpalić stare Windowsy na VMware (w wersji >= 10) to może mieć problemy z funkcjonowaniem narzędzi pomocniczych udostępniających takie funkcje jak np. drag&drop pomiędzy naszą maszyną a wirtualką, oprócz tego zapewnia nowe wersje sterowników.

VMware wyszedł na pomoc wszystkim użytkownikom starych wersji Windows i udostępnił swoje VMware Tools do zainstalowania jedynie w trybie online, tylko chyba nikt tego nigdy nie przetestował choć jeden raz, bo zamiast udostępnić to w formacie obrazu ISO, zrobili tak:

  • obraz ISO z VMware Tools zapakowali w pakiet MSI
  • następnie pakiet MSI zapakowali we własny instalator

Tylko jest jeden problem, ich instalator jest niekompatybilny z Windows 95, 98, ME oraz NT 4 (przetestowałem wszystkie), dla których został zaprojektowany! Brakuje mu dodatkowych bibliotek, których po prostu na tych systemach nie ma, a jak już są to brakuje mu nowych funkcji.

Janusze kompatybilności chciałoby się powiedzieć. Użerałem się z tym chwilę i widziałem, że nie tylko ja mam z tym problemy, więc udostępniam link do obrazu ISO jakby ktoś kiedyś chciał sobie przypomnieć jak to kiedyś było pod Win 9x 😉

http://speedy.sh/Amzv7/winPre2k.iso (wyciągnięty z tools-winPre2k-9.6.5.exe)

Wykrywanie VMware w C#

Jak wykryć VMware

VMware jest często wykorzystywane w celu uruchamiania złamanego oprogramowania lub aby ominąć zabezpieczenia autora oprogramowania.

Często to wygląda tak, że kupujący po zakupie oprogramowania otrzymuje licencję zablokowaną na sprzętowy identyfikator jednego komputera, który okazuje się być obrazem VMware i tak później oprogramowanie jest dystrybuowane (czytaj sprzedawane) dalej.

Wersji natywnych, wykorzystujących systemowe różnice w działaniu na wykrywanie VMware są dziesiątki, chciałem przedstawić krótki snippet w C# do wykrywania może nie samego VMware, ale narzędzi VMware Tools, które instaluje się na wirtualnej maszynie, aby zapewnić komfortową pracę między wirtualną maszyną, a maszyną użytkownika (np. zapewnić funkcje drag&drop plików etc.), jest to zwykle jedna z pierwszych czynności jakie robi się po zainstalowaniu systemu na wirtualnej maszynie.

using System;
using System.Runtime.InteropServices;

// potrzebne importy
[DllImport("KERNEL32.dll", SetLastError=true)]
static extern IntPtr OpenEvent(uint dwDesiredAccess, bool bInheritHandle, string lpName);

[DllImport("KERNEL32.dll", SetLastError=true)]
static extern IntPtr CreateMutex(IntPtr lpMutexAttributes, bool bInitialOwner, string lpName);

[DllImport("KERNEL32.dll")]
private extern static Boolean CloseHandle(IntPtr handle);

public const int ERROR_ALREADY_EXISTS = 183;

/// 
/// wykrywanie obecności VMWare po zainstalowanych narzędziach VMWare Tools
/// na wirtualnej maszynie
/// 
/// true jeśli wykryto zainstalowane narzędzia VMWare Tools
public static bool IsVMWare()
{
    // otwórz obiekt "VMwareDnDManagerEvent"
    IntPtr eventHandle = OpenEvent(0x001F0003, false, "VMwareDnDManagerEvent");

    // jeśli udało się otworzyć event, to znaczy, że obecne są narzędzia VMWare Tools
    if (eventHandle != IntPtr.Zero)
    {
        CloseHandle(eventHandle);
        return true;
    }

    // utwórz mutex o nazwie wykorzystywanej przez VMWare Tools
    IntPtr mutexHandle = CreateMutex(IntPtr.Zero, false, "VMwareGuestDnDDataMutex");

    // zamknij uchwyt mutexa
    if (mutexHandle != IntPtr.Zero)
    {
        CloseHandle(mutexHandle);
    }

    // jeśli mutex o tej nazwie istnieje, to znaczy, że są obecne narzędzia VMware Tools
    if (Marshal.GetLastWin32Error() == ERROR_ALREADY_EXISTS)
    {
        return true;
    }

    return false;
}

Wykrywanie dotyczy VMware w wersji 7, w wersji 8 należy już zastosować inne nazwy obiektów ze względu na zaktualizowane VMware Tools, jeśli ktoś jest zainteresowany wykrywaniem VMware w najnowszych wersjach (i nie tylko tego środowiska, np. VirtualBox etc.), proszę o kontakt.

Krytyczna luka w VMware

Grupa Core (ale nie ta od warezu) wykryła lukę w oprogramowaniu VMware, która w przypadku korzystania ze współdzielonych folderów między środowiskiem wirtualnym a host’em powoduje, że możliwe jest uzyskanie dostępu do wrażliwych plików na komputerze host’a (pliki systemowe).

W przypadku analizy jakiegoś złośliwego oprogramowania, które potrafi infekować pliki ze współdzielonych folderów mogłoby się źle skończyć nie tylko w środowisku wirtualnym.

http://isc.sans.org/diary.html?storyid=4018

http://kb.vmware.com/…/externalId=1004034

Luka ta dotyczy wszystkich produktów z rodziny VMware, zarówno wersji serwerowych, workstation oraz odtwarzaczy (players) i na chwilę obecną zalecane jest wyłączenie współdzielenia folderów (znając życie, zaraz powstaną nowe wersje wirusów, które będą potrafiły wykorzystać ten fakt).