Les aventures des logiciels malveillants insaisissables, partie IV : champs de documents DDE et Word

Les aventures des logiciels malveillants insaisissables, partie IV : champs de documents DDE et Word

Cet article fait partie de la série Fileless Malware. Toutes les autres parties de la série :

Dans cet article, j'allais plonger dans un scénario d'attaque sans fichier en plusieurs étapes encore plus complexe avec épinglage sur le système. Mais ensuite, je suis tombé sur une attaque incroyablement simple, sans code : aucune macro Word ou Excel n'est requise ! Et cela prouve bien plus efficacement mon hypothèse initiale qui sous-tend cette série d’articles : briser le périmètre extérieur de toute organisation n’est pas du tout une tâche difficile.

La première attaque que je vais décrire exploite une vulnérabilité de Microsoft Word basée sur dépassé protocole d'échange de données dynamique (DDE). Elle était déjà fixé. La seconde exploite une vulnérabilité plus générale dans Microsoft COM et les capacités de transfert d'objets.

Retour vers le futur avec DDE

Quelqu'un d'autre se souvient de DDE ? Probablement pas beaucoup. C'était l'un des premiers protocoles de communication inter-processus permettant aux applications et aux appareils de transférer des données.

Je le connais un peu moi-même car j'avais l'habitude de vérifier et de tester des équipements télécoms. À cette époque, DDE permettait par exemple aux opérateurs de centres d'appels de transférer l'identification de l'appelant vers une application CRM, qui ouvrait finalement une carte client. Pour ce faire, vous deviez connecter un câble RS-232 entre votre téléphone et votre ordinateur. C'était l'époque !

Il s'avère que Microsoft Word est toujours soutient le DDE.

Ce qui rend cette attaque efficace sans code, c'est que vous pouvez accéder au protocole DDE directement à partir de champs automatiques dans un document Word (chapeau à SensePost pour recherches et publications à ce sujet).

Codes de champ est une autre ancienne fonctionnalité de MS Word qui vous permet d'ajouter du texte dynamique et un peu de programmation à votre document. L'exemple le plus évident est le champ du numéro de page, qui peut être inséré dans le pied de page en utilisant la valeur {PAGE *MERGEFORMAT}. Cela permet aux numéros de page d'être générés automatiquement.

Les aventures des logiciels malveillants insaisissables, partie IV : champs de documents DDE et Word
Astuce : vous pouvez trouver l'élément de menu Champ sous Insérer.

Je me souviens que lorsque j’ai découvert cette fonctionnalité pour la première fois dans Word, j’ai été étonné. Et jusqu'à ce que le correctif le désactive, Word prenait toujours en charge l'option des champs DDE. L'idée était que DDE permettrait à Word de communiquer directement avec l'application, afin qu'elle puisse ensuite transmettre la sortie du programme dans un document. Il s'agissait d'une technologie très jeune à l'époque : la prise en charge de l'échange de données avec des applications externes. Elle a ensuite été développée en technologie COM, que nous examinerons également ci-dessous.

Finalement, les pirates ont réalisé que cette application DDE pouvait être un shell de commande, qui lançait bien sûr PowerShell, et à partir de là, les pirates pouvaient faire ce qu'ils voulaient.
La capture d'écran ci-dessous montre comment j'ai utilisé cette technique furtive : un petit script PowerShell (ci-après dénommé PS) du champ DDE charge un autre script PS, qui lance la deuxième phase de l'attaque.

Les aventures des logiciels malveillants insaisissables, partie IV : champs de documents DDE et Word
Merci à Windows pour l'avertissement contextuel indiquant que le champ DDEAUTO intégré essaie secrètement de démarrer le shell

La méthode privilégiée pour exploiter la vulnérabilité consiste à utiliser une variante avec le champ DDEAUTO, qui exécute automatiquement le script. à l'ouverture Document Word.
Réfléchissons à ce que nous pouvons faire à ce sujet.

En tant que hacker novice, vous pouvez, par exemple, envoyer un e-mail de phishing en prétendant que vous êtes du Service fédéral des impôts et intégrer le champ DDEAUTO avec le script PS pour la première étape (un compte-gouttes, essentiellement). Et vous n'avez même pas besoin de faire de véritable codage de macros, etc., comme je l'ai fait dans article précédent.
La victime ouvre votre document, le script intégré est activé et le pirate informatique se retrouve à l'intérieur de l'ordinateur. Dans mon cas, le script PS distant imprime simplement un message, mais il pourrait tout aussi bien lancer le client PS Empire, qui fournira un accès shell à distance.
Et avant que la victime n'ait le temps de dire quoi que ce soit, les hackers se révèleront être les adolescents les plus riches du village.

Les aventures des logiciels malveillants insaisissables, partie IV : champs de documents DDE et Word
Le shell a été lancé sans le moindre codage. Même un enfant peut faire ça !

DDE et champs

Microsoft a ensuite désactivé DDE dans Word, mais pas avant que la société ait déclaré que la fonctionnalité avait simplement été utilisée à mauvais escient. Leur réticence à changer quoi que ce soit est compréhensible. D'après mon expérience, j'ai moi-même vu un exemple où la mise à jour des champs lors de l'ouverture d'un document était activée, mais les macros Word étaient désactivées par le service informatique (mais affichant une notification). À propos, vous pouvez trouver les paramètres correspondants dans la section Paramètres de Word.

Cependant, même si la mise à jour des champs est activée, Microsoft Word informe en outre l'utilisateur lorsqu'un champ demande l'accès aux données supprimées, comme c'est le cas avec DDE ci-dessus. Microsoft vous prévient vraiment.

Mais très probablement, les utilisateurs ignoreront toujours cet avertissement et activeront la mise à jour des champs dans Word. C'est l'une des rares occasions de remercier Microsoft d'avoir désactivé la dangereuse fonctionnalité DDE.

Est-il difficile de trouver un système Windows non corrigé aujourd’hui ?

Pour ce test, j'ai utilisé AWS Workspaces pour accéder à un bureau virtuel. De cette façon, j'ai obtenu une machine virtuelle MS Office non corrigée qui m'a permis d'insérer le champ DDEAUTO. Je n’ai aucun doute que de la même manière, vous pouvez trouver d’autres entreprises qui n’ont pas encore installé les correctifs de sécurité nécessaires.

Mystère des objets

Même si vous avez installé ce correctif, il existe d'autres failles de sécurité dans MS Office qui permettent aux pirates de faire quelque chose de très similaire à ce que nous avons fait avec Word. Dans le prochain scénario, nous apprendrons utilisez Excel comme appât pour une attaque de phishing sans écrire de code.

Pour comprendre ce scénario, rappelons-nous le modèle objet de composant Microsoft, ou en abrégé COM (Modèle Objet Composant).

COM existe depuis les années 1990 et est défini comme un « modèle de composant orienté objet, neutre en termes de langage », basé sur des appels de procédure à distance RPC. Pour une compréhension générale de la terminologie COM, lisez ce post sur StackOverflow.

Fondamentalement, vous pouvez considérer une application COM comme un exécutable Excel ou Word, ou un autre fichier binaire qui s'exécute.

Il s'avère qu'une application COM peut également exécuter scénario — JavaScript ou VBScript. Techniquement, ça s'appelle scriptlet. Vous avez peut-être vu l'extension .sct pour les fichiers sous Windows - il s'agit de l'extension officielle des scriptlets. Essentiellement, il s’agit de code de script enveloppé dans un wrapper XML :

<?XML version="1.0"?>

<scriptlet>
<registration
description="test"
progid="test"
version="1.00"
classid="{BBBB4444-0000-0000-0000-0000FAADACDC}"
remotable="true">
</registration>
<script language="JScript">
<![CDATA[

var r = new ActiveXObject("WScript.Shell").Run("cmd /k powershell -c Write-Host You have been scripted!");

]]>
</script>
</scriptlet>

Les pirates et les pentesters ont découvert qu'il existe dans Windows des utilitaires et des applications distincts qui acceptent les objets COM et, par conséquent, également les scriptlets.

Je peux transmettre un scriptlet à un utilitaire Windows écrit en VBS appelé pubprn. Il se trouve au fond de C:Windowssystem32Printing_Admin_Scripts. À propos, il existe d'autres utilitaires Windows qui acceptent des objets comme paramètres. Regardons d'abord cet exemple.

Les aventures des logiciels malveillants insaisissables, partie IV : champs de documents DDE et Word
Il est tout à fait naturel que le shell puisse être lancé même à partir d'un script d'impression. Allez Microsoft !

À titre de test, j'ai créé un simple scriptlet distant qui lance un shell et affiche un message amusant : "Vous venez d'être scripté !" Essentiellement, pubprn instancie un objet scriptlet, permettant au code VBScript d'exécuter un wrapper. Cette méthode offre un net avantage aux pirates informatiques qui souhaitent se faufiler et se cacher dans votre système.

Dans le prochain article, j'expliquerai comment les scriptlets COM peuvent être exploités par des pirates utilisant des feuilles de calcul Excel.

Pour vos devoirs, jetez un oeil cette vidéo de Derbycon 2016, qui explique exactement comment les pirates ont utilisé les scriptlets. Et lire aussi cet article à propos de scriptlets et d'une sorte de surnom.

Source: habr.com

Ajouter un commentaire