XLL : Techniques de phishing
Avec la récente annonce de Microsoft concernant le blocage des macros dans les documents provenant d'Internet (courrier électronique ET téléchargement web), les attaquants ont commencé à explorer agressivement d'autres options pour parvenir à un accès piloté par l'utilisateur (UDA). Plusieurs considérations doivent être pesées et équilibrées lors de la recherche d'une méthode viable de phishing pour l'accès :
Ce sont les questions principales, mais il y en a certainement d'autres. Les choses deviennent plus complexes lorsque l'on réalise que ces facteurs se cumulent ; par exemple, si un client dispose d'un proxy web qui interdit le téléchargement d'exécutables ou de DLL, vous devrez peut-être placer votre charge utile à l'intérieur d'un conteneur (ZIP, ISO, etc.). Cela peut présenter d'autres problèmes par la suite en matière de détection. Des défenses plus robustes nécessitent des combinaisons de techniques plus complexes pour être contournées.
Cet article sera rédigé en ayant à l'esprit une organisation cible fictive ; cette organisation a mis en place plusieurs mesures défensives, notamment des règles de filtrage des e-mails, le blocage de certains types de fichiers lors du téléchargement, la liste blanche des applications sur les postes de travail et Microsoft Defender for Endpoint comme solution EDR.
Les organisations réelles peuvent n'employer aucune de ces mesures, certaines, ou même davantage de défenses, ce qui peut simplifier ou compliquer les techniques décrites dans cette recherche. Comme toujours, connaissez votre cible.
Les XLL sont des DLL, spécialement conçues pour Microsoft Excel. Pour l'œil non averti, elles ressemblent beaucoup à des documents Excel normaux.

Les XLL offrent une option très attrayante pour l'UDA étant donné qu'elles sont exécutées par Microsoft Excel, un logiciel très courant dans les réseaux clients ; en bonus supplémentaire, parce qu'elles sont exécutées par Excel, notre charge utile contournera presque assurément les règles de liste blanche des applications car une application de confiance (Excel) l'exécute. Les XLL peuvent être écrites en C, C++ ou C#, ce qui offre beaucoup plus de flexibilité, de puissance (et de santé mentale) que les macros VBA, ce qui en fait un choix souhaitable.
L'inconvénient, bien sûr, est qu'il y a très peu d'utilisations légitimes pour les XLL, donc cela DEVRAIT être une case très facile à cocher pour les organisations afin de bloquer le téléchargement de cette extension de fichier à la fois par courrier électronique et par téléchargement web. Malheureusement, de nombreuses organisations ont des années de retard et, par conséquent, les XLL restent une méthode viable de phishing pour quelque temps.
Il existe une série d'événements différents qui peuvent être utilisés pour exécuter du code dans une XLL, le plus notable étant xlAutoOpen. La liste complète peut être consultée ici :

En double-cliquant sur une XLL, l'utilisateur est accueilli par cet écran :

Cette simple boîte de dialogue est tout ce qui sépare l'utilisateur de l'exécution de code ; avec un ingénierie sociale assez mince, l'exécution de code est presque assurée.
Il faut garder à l'esprit que les XLL, étant des exécutables, sont spécifiques à l'architecture. Cela signifie que vous devez connaître votre cible ; la version de Microsoft Office/Excel utilisée par l'organisation cible dictera (généralement) l'architecture pour laquelle vous devez construire votre charge utile.
Il existe une rupture assez nette dans les versions d'Office qui peut être utilisée comme règle empirique :
Office 2016 ou antérieur : x86
Office 2019 ou ultérieur : x64
Il convient de noter qu'il est possible d'installer l'autre architecture pour chaque produit, mais ce sont les architectures par défaut installées et dans la plupart des cas, cela devrait être un moyen fiable de décider quelle architecture utiliser pour votre XLL. Bien sûr, selon la méthode de livraison et le prétexte utilisé dans le cadre de la campagne de phishing, il est possible de fournir les deux versions et de compter sur la victime pour sélectionner la version appropriée pour son système.
La charge utile XLL construite lors de cette recherche était basée sur ce projet par edparcell. Son dépôt contient de bonnes instructions pour démarrer avec les XLL dans Visual Studio, et j'ai utilisé son code comme point de départ pour développer un fichier XLL malveillant.
Une divergence notable par rapport à son dépôt est que si vous souhaitez créer votre propre projet XLL, vous devrez télécharger le dernier SDK Excel puis suivre les instructions du dépôt précédemment lié en utilisant cette version plutôt que la version 2010 du SDK mentionnée dans le README.
La livraison de la charge utile est une considération sérieuse dans le contexte de l'UDA. Nous nous concentrerons sur deux méthodes principales :
Que ce soit en joignant un fichier ou en incluant un lien vers un site web où un fichier peut être téléchargé, l'e-mail est une partie essentielle du processus UDA. Au fil des ans, de nombreuses organisations (et fournisseurs de messagerie) ont mûri et imposé des règles pour protéger les utilisateurs et les organisations contre les pièces jointes malveillantes. Les résultats varieront, mais les organisations ont désormais la capacité de :
Tester les règles de messagerie d'une organisation peut être une partie importante d'un engagement, mais il faut toujours faire attention à ne pas révéler qu'une opération Red Team est en cours et que des informations sont activement collectées.
Pour les besoins de cet article, nous supposerons que l'organisation cible dispose de règles robustes concernant les pièces jointes aux e-mails qui empêchent la livraison d'une charge utile XLL. Nous allons pivoter et examiner la livraison par le web.