Vulnérabilité de Symantec Endpoint Protection découverte: SafeBreach – Bien choisir son serveur d impression

SafeBreach Labs a découvert une nouvelle vulnérabilité dans le logiciel Symantec Endpoint Protection.

UN V

mohamed_hassan / Pixabay

Dans cet article, nous montrerons comment cette vulnérabilité aurait pu être utilisée pour contourner le mécanisme d’autodéfense de Symantec et réaliser défense évasion, persistance et élévation de privilèges en chargeant un DLL non signée arbitraire dans un processus signé par Symantec et exécuté sous NT AUTHORITY SYSTEM.

Obtenez notre étude de cas sur l'investissement dans les activistes!

Obtenez l'intégralité de la série de 10 articles sur notre étude approfondie sur les investissements d'activistes en PDF. Enregistrez-le sur votre bureau, lisez-le sur votre tablette ou imprimez-le pour le lire n'importe où! Inscrivez-vous ci-dessous!

T3 2019 Lettres de fonds de couverture, conférences et plus

Remarque: Afin d'exploiter cette vulnérabilité, l'attaquant doit disposer des privilèges d'administrateur.

Symantec Endpoint Protection

Symantec Endpoint Protection est une suite logicielle de sécurité comprenant des fonctionnalités de protection contre les logiciels malveillants, de prévention des intrusions et de pare-feu pour les ordinateurs de serveur et les ordinateurs de bureau. Il a été développé par Symantec et possède la plus grande part de marché de tous les produits pour la sécurité des terminaux.

Plusieurs parties du logiciel sont exécutées comme un service Windows exécuté sous le nom «NT AUTHORITY SYSTEM», ce qui lui confère des autorisations très puissantes.

Dans cet article, nous décrivons la vulnérabilité rencontrée dans le logiciel Symantec Endpoint Protection. Nous montrons ensuite comment cette vulnérabilité peut être exploitée pour réaliser une exécution de code arbitraire dans le contexte d'un service Symantec, en obtenant l'accès avec les privilèges de niveau NT AUTHORITY SYSTEM.

Vulnérabilité

Découverte

Dans notre exploration, nous avons trouvé un service (SepMasterService) de Symantec Endpoint Protection qui s'exécute en tant que processus signé et comme NT AUTHORITY SYSTEM, qui tente de charger la DLL suivante qui n’existe pas:

c: Windows SysWOW64 wbem DSPARSE.dll

Symantec Endpoint Protection

Si nous pouvons prouver que nous pouvons réellement être chargés dans ce processus, nous serons en mesure de contourner le mécanisme d'autodéfense du logiciel antivirus, principalement parce que les dossiers du logiciel Symantec Endpoint Protection sont protégés par un pilote de système de fichiers à mini-filtre, ce qui limite les opérations d'écriture même par un administrateur.

Cela signifie que même si nous exécutons en tant qu’administrateur et souhaitons implanter une DLL qui n’existe pas afin de la charger dans les processus Symantec, nous ne pourrons pas le faire.

Démonstration PoC

Afin de tester cette vulnérabilité, nous avons compilé une DLL proxy 32 bits (non signée) à partir du fichier DLL d'origine dsparse.dll (qui se trouve réellement dans SysWow64 et non dans le dossier SysWow64 Wbem), qui écrit ce qui suit dans le nom du fichier. d'un fichier txt:

  1. Le nom du processus qui l'a chargé
  2. Le nom d'utilisateur qui l'a exécuté
  3. Le nom du fichier DLL

Nous l'avons ensuite implanté dans C: Windows SysWow64 Wbem et avons redémarré l'ordinateur:

Symantec Endpoint Protection

Nous avons pu charger une DLL proxy arbitraire (qui en a chargé une autre) et exécuter notre code dans un processus de service signé par Symantec Corporation sous le nom NT AUTHORITY SYSTEM, ce qui a pour effet de contourner le mécanisme de légitime défense du programme.

Analyse de la cause originelle

Il existe plusieurs composants dans plusieurs fichiers qui sont à l'origine de ce problème. Nous allons analyser l'un d'entre eux car la cause première est toujours très similaire.

Une fois que le processus du service «Symantec Endpoint Protection» (ccSvcHst.exe) est lancé, il tente d’exécuter une requête WMI à l’aide d’une fonction de l’interface COM IWbemServices (IWbemServices :: ExecNotificationQueryAsync):

Symantec Endpoint Protection

Un bref aperçu de OleViewDotNet nous montrera que cette interface COM (et ses fonctions) est implémentée à l’aide de la bibliothèque de proxy COM «C: Windows SysWow64 wbem fastprox.dll» (dans notre cas, il s’agit d’un processus WOW64):

Symantec Endpoint Protection

SEP

Après avoir appelé la fonction ExecNotificationQueryAsync de la bibliothèque fastprox.dll, la fonction DsCrackSpnW sera appelée:

SEP

Nous pouvons voir que cette fonction est importée de dsparse.dll, ce qui oblige le service à essayer de charger cette DLL.

SEP

Il existe deux causes fondamentales à cette vulnérabilité:

  • Pas de validation de signature numérique est faite contre le binaire. Le programme ne valide pas si la DLL qu'il est en train de charger est signée (par exemple, en utilisant le WinVerifyTrust une fonction). Par conséquent, il peut charger une DLL non signée arbitraire.
  • La bibliothèque fastprox.dll tente d’importer le fichier dsparse.dll fde son répertoire de travail actuel (CWD), qui correspond à C: Windows SysWow64 Wbem, alors que le fichier se trouve réellement dans le dossier SysWow64.

Usages malveillants potentiels et impact

Nous présentons ci-dessous trois manières possibles pour un attaquant d'exploiter la vulnérabilité découverte et documentée ci-dessus.

Évasion de la défense, exécution signée, contournement de la liste blanche

La vulnérabilité donne aux attaquants la possibilité de charger et exécuter des charges malveillantes dans le contexte d’un processus signé par Symantec. Un attaquant peut abuser de cette capacité à différentes fins, telles que l'exécution et l'évasion, par exemple: Contournement de la liste blanche des applications. L’antivirus peut ne pas détecter le fichier binaire de l’attaquant, car il essaie de le charger sans vérification.

Mécanisme de persistance

Cette vulnérabilité permet aux attaquants de charger et d’exécuter des charges utiles malveillantes de manière persistante, chaque fois que les services sont chargés. Cela signifie qu'une fois que l'attaquant aura abandonné une DLL malveillante, les services chargeront le code malveillant à chaque redémarrage.

Escalade de privilège

Les services lui fournissent la capacité de fonctionner en tant qu’autorité NT SYSTEM.

Versions affectées

Toutes les versions antérieures à Symantec Endpoint Protection 14.2 RU2

Chronologie

5 août 2019 – Vulnérabilité signalée à Symantec

6 août 2019 – Symantec a confirmé la vulnérabilité

22 août 2019 – Symantec a fourni une chronologie pour un correctif.

16 septembre 2019 – Symantec a annoncé qu’il ferait un suivi à la mi-octobre avec un calendrier définitif et qu’il assignerait également un CVE.

15 octobre 2019 – Mise à jour de statut de Symantec

19 octobre, 2019 – Symantec a fourni un calendrier définitif (un avis sera publié le 11 novembre).

21 octobre 2019 – Symantec a fourni les produits et versions concernés.

31 octobre 2019 – Symantec a publié CVE-2019-12758

Vulnérabilité de Symantec Endpoint Protection découverte: SafeBreach – Bien choisir son serveur d impression
4.9 (98%) 32 votes