
wsb-detect vous permet de détecter si vous êtes en cours d'exécution dans Windows Sandbox ("WSB")
wsb-detect vous permet de détecter si vous êtes en cours d'exécution dans le bac à sable Windows ("Windows Sandbox" ou WSB). Ce bac à sable est utilisé par Windows Defender pour l'analyse dynamique, et couramment manuellement par les analystes de sécurité et autres. À la fin de l'année 2019, Microsoft a introduit une nouvelle fonctionnalité nommée Windows Sandbox (WSB en abrégé). Les techniques utilisées pour identifier WSB sont décrites ci-dessous, dans la section techniques. N'hésitez pas à soumettre une pull request si vous avez des idées d'identification 🎉. J'ai joué avec de temps en temps, j'aurai bientôt plus d'informations sur Windows Sandbox.
Le bac à sable Windows vous permet de créer rapidement, en 15 secondes, une machine virtuelle jetable basée sur Hyper-V avec toutes les qualités d'une machine virtuelle familière telles que le partage du presse-papiers, le mappage de répertoires, etc. Le bac à sable est également le fondement de Microsoft Defender Application Guard (WDAG), pour l'analyse dynamique sur les hôtes compatibles Hyper-V et peut être activé sur n'importe quelle machine Windows 10 Pro ou Entreprise. Ce n'est pas particulièrement intéressant, mais pourrait néanmoins s'avérer utile dans le développement d'implantations. Merci à mon ami Jonas L pour son guide lorsque j'explorais les internes du bac à sable (plus à venir à ce sujet).
Le fichier d'en-tête detect.h exporte toutes les fonctions qui peuvent être combinées pour détecter si
#include <stdio.h>
#include "detect.h"
int main(int argc, char** argv)
{
// exemple de vérification vmsmb et nom d'utilisateur
if (wsb_detect_dev() || wsb_detect_username())
{
puts("Nous sommes dans Windows Sandbox !");
return 0;
}
return 1;
}
wsb_detect_procVérifie la présence de CExecSvc.exe, qui est le service d'exécution de conteneur, gérant une grande partie du travail interne.
wsb_detect_timeL'image du bac à sable semble avoir été construite le Saturday, December 7, 2019, 9:14:52 AM - c'est à peu près au moment où Windows Sandbox a été rendu public. Cette vérification croise le timestamp de création du pilote mountmgr.
wsb_detect_usernameCette méthode vérifie si le nom d'utilisateur actuel est WDAGUtilityUserAccount, le compte utilisé par défaut dans le bac à sable.
wsb_detect_suffixCette méthode utilise GetAdaptersAddresses, parcourt la liste des adaptateurs et compare le suffixe DNS à mshome.net - qui est utilisé par défaut dans le bac à sable.
wsb_detect_devVérifie si le périphérique brut \\.\GLOBALROOT\device\vmsmb peut être ouvert, qui est utilisé pour la communication avec l'hôte via SMB.
wsb_detect_cmdAu démarrage, cherche sous la clé RunOnce dans HKEY_LOCAL_MACHINE une commande qui définit le mot de passe comme n'expirant jamais.
wsb_detect_genuineUne méthode plus générique en matière de détection de bac à sable, cependant d'après les tests, Windows ne semble pas être vérifié comme légitime dans les machines virtuelles.
Si vous souhaitez me contacter plus rapidement, n'hésitez pas à me contacter sur Twitter ou par e-mail. De plus, il est possible sur l'hôte de détecter si le bac à sable est en cours d'exécution, en vérifiant si vous pouvez créer un mutex nommé WindowsSandboxMutex. Cela limite le bac à sable à une machine virtuelle par hôte, mais vous pouvez libérer ce mutex en dupliquant simplement le handle et en appelant ReleaseMutex - et voilà, vous pouvez avoir plusieurs instances.
