É possível encontrar informações sobre a máquina host de dentro da máquina virtual?

5

É possível encontrar informações sobre a máquina host de dentro da máquina virtual?

Por exemplo, seu IP.

EDIT: Uma coisa que eu encontrei até agora é:

HKLM \ SOFTWARE \ Microsoft \ Virtual Machine \ Guest \ Parâmetros contém

  • HostName
  • PhysicalHostName
  • PhysicalHostNameFullyQualified

etc.

    
por alex 08.10.2009 / 19:24

7 respostas

4

A resposta ideal (de uma perspectiva de gerenciamento de VM) para isso é que você não deve poder contar nada sobre o host físico, a menos que essas informações estejam explicitamente disponíveis para você. Na prática, as instalações de VM tendem a vazar algumas informações sobre o host, principalmente porque os drivers personalizados (e frequentemente para-virtualizados) são instalados para fornecer melhor desempenho da VM. A configuração padrão de ambientes de VM geralmente fornece algumas informações básicas em vários locais (como os dados do Hyper-V listados).

Embora existam alguns cenários em que posso ver motivos legítimos para querer fazer isso (por exemplo, uma VM em um cluster verificando se o host está sendo executado realmente está entregando todos os recursos físicos que a VM acredita ter antes de começar uma tarefa de alta carga, mas baixa prioridade) quase todos os casos em que uma VM "quer" descobrir mais sobre seu host são mal-intencionados. Se houver um motivo válido para um processo em execução em uma VM conhecer esse tipo de informação, é uma tarefa trivial configurar um mecanismo legítimo para fornecer essas informações a ele - na maioria das vezes, como administrador de VM, não quero a VM é capaz de dizer nada disso.

Esta postagem da Sourcefire VRT descreve alguns dos os mecanismos que são usados pelo Malware para detectar se eles estão sendo executados em uma VM e as ações de mitigação que podem ser tomadas para combatê-los - na maioria das vezes, uma VM pode sempre dizer que está sendo executada em uma VM e geralmente pode informar o Fornecedor de hipervisor, provavelmente, identifique o tipo de hipervisor e, possivelmente, faça uma boa estimativa quanto à versão específica. Algumas informações adicionais geralmente podem ser obtidas da rede, mas esse quase certamente seria o tipo de atividade que deveria ser classificada como maliciosa. Se você ler esse post, verá que é possível configurar uma VM para que seja muito difícil para qualquer coisa que esteja sendo executada na VM descobrir algo diferente do fato básico de que ela é uma VM, por isso confiar nesses mecanismos é um problema idéia.

Em sua pergunta específica sobre o "endereço IP" do hipervisor, a resposta geral seria que os hipervisores podem ter muitos endereços IP - o console de gerenciamento, portas iSCSI, portas Live Motion \ Fault Tolerance e muitas portas que don ' t têm endereços IP explícitos (portas VM) e outras variações. Encontrar o (s) endereço (s) IP do console de gerenciamento pode ser trivial - como no exemplo do Hyper-V - mas fazer qualquer coisa com ele deve ser difícil, em uma infraestrutura de VM bem projetada, as VMs não podem rotear para o console de gerenciamento endereço.

    
por 24.10.2009 / 11:51
2
A chave HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Virtual Machine \ Guest \ Parameters no Registro de uma máquina virtual lista informações de máquinas host hyper-v. Tenho uma VM do Windows 2003 em execução em um servidor Hyper-V 2008 R2. Eu posso ver o nome da máquina host no registro de 2003 vm.

    
por 15.12.2010 / 22:40
1

Você identificou exatamente o que estava procurando, eu acho. Essa chave de registro é a maneira como o Hyper-V fornece informações sobre a máquina host.

A única coisa que você precisa lembrar ao escrever código que a usa é que ela pode estar errada no momento em que você a consome, já que sua VM pode ser salva e restaurada ou pode migrar enquanto qualquer código ou script você ' ve escrito está em execução.

    
por 26.10.2009 / 23:12
0

Quase não. O sistema operacional convidado não tem acesso à máquina host. Por que você quer que seu convidado converse com o host?

    
por 08.10.2009 / 20:12
0

Por motivos de segurança, tenho certeza de que a resposta é não. A menos que você crie uma conexão de rede somente host na qual você pode obter acesso ao host através da rede. A ideia é que o host conceda a você acesso à sua informação primeiro.

    
por 08.10.2009 / 20:31
0

Verifique a libvirt. Parece ser principalmente orientado para o lado do servidor, mas tem alguns recursos do lado do cliente (ou pelo menos planeja incluí-los) para coisas como encontrar slots PCI usados no servidor do cliente para assumir assumir o controle de, digamos, uma placa de som.

Se você quiser apenas descobrir algo simples, como se estivesse executando em uma VM ou que tipo de VM, provavelmente é mais fácil fazer isso observando a ID do BIOS da máquina virtual ou outras cadeias de identificadores de dispositivo.

    
por 08.10.2009 / 20:38
0

Embora um convidado de máquina virtual teoricamente não "saiba" nada sobre seu host (geralmente nem mesmo sabe que é uma VM), é possível obter informações sobre o host simplesmente tratando o host como apenas outra máquina em a rede, do ponto de vista do hóspede. Isso pressupõe que o convidado possa ver o host na rede.

Depois de ter acesso à rede (e credenciais adequadas) ao host, você tem várias opções para coletar informações:

  • Acesso remoto ao registro (como você mencionou acima)
  • Execução remota de comandos. Por exemplo, você pode executar o psexec.exe gratuito ( link ) para executar remotamente o IPCONFIG e / ou qualquer outra linha de comando. Por exemplo:

psexec \host_computer_name ipconfig

    
  
    
por 25.10.2009 / 22:40