Disons que j'ai un accès complet à une machine distante (en particulier, root
sur un Linux
). Quelle est la meilleure méthode pour vérifier s'il s'agit d'un véritable matériel ou d'une machine virtuelle?
La plupart des méthodes que j'ai vues reposent sur l'examen de divers identifiants liés au matériel à l'aide d'outils tels que lshw
. Il me semble que ces méthodes sont sujettes à une sorte d'attaques d'homme au milieu.
Merci d'avance pour les références ou toute autre information.
Ça dépend. S'il tente de cacher qu'il s'agit d'une machine virtuelle, cela peut être difficile. Cela peut être le cas, par exemple, des machines virtuelles utilisées pour analyser les logiciels malveillants.
Cet article de Symantec rentre dans les détails. En bref, il est généralement possible de détecter, même si la machine virtuelle, essaie de le cacher, en exécutant des instructions pour mettre le CPU dans un état spécifique, puis en exécutant une instruction qui force l'hyperviseur à s'exécuter et à vérifier l'état du CPU après.
Les attaques temporelles peuvent également détecter un hyperviseur, mais peuvent être difficiles si vous n'avez pas de ligne de base.
Un stock VM de par exemple Azure n'essaiera pas de cacher qu'il s'agit d'une VM, et il sera évident que c'est une VM, à partir des descripteurs comme vous le dites.