Connect the dots #3: Armement

Connect the dots #3: Armement

Lors de mon précédent article nous avons analysé le premier "dot" des cyberattaques à savoir la phase de préparation de l'attaque, notamment le dépôt de domaines usurpés et le scan de la cible (phase de "reconnaissance") pour trouver toutes les vulnérabilités, les portes d'entrée au système. Nous allons maintenant examiner un autre "dot" de la chaine de cyber-attaque à savoir les "armes" utilisées. De quel armement disposent les attaquants et pourquoi nos défenses traditionnelles ne les bloquent-ils pas ?

Ce que l'on appelle "armement" en cyber-sécurité, consiste à combiner une charge utile (appelée un payload) avec un "artéfact" (un programme exe, dll, script) qui encapsule ce payload. L'artéfact copie le module malveillant en mémoire et passe ensuite l'exécution à celui-ci. Il peut également s'agir d'un script ou d'un programme qui exploite une vulnérabilité connue (ou inconnue c.a.d. "zero-day"). Ainsi l'artéfact agit comme un missile lanceur, alors que le payload est l'ogive qui va nous exploser à la figure…

(c) Ukrinform

Normalement, l'anti-virus devrait nous protéger contre ce type de programme malveillant, mais nous allons voir que les attaques récentes ont trouvé un système pour contourner ces défenses classiques, ce qui nous oblige à améliorer notre système antiviral sur le poste de travail.

Comment fonctionne un anti-virus ? Lorsqu'un fichier est proposé au système pour s'exécuter en mémoire, que celui-ci provienne du disque, d'un e-mail en pièce jointe ou d'une clef USB, il est analysé par l'anti-virus. Si le module est réputé comme nocif dans une base de signature antivirale, il est rejeté. Il peut être détruit ou mis en quarantaine. L'utilisateur est alors prévenu. Dans cette analyse dite "statique", de nombreuses améliorations sont intervenues depuis les anti-virus initiaux il y a 25 ans. En plus de cette base de signatures, qui, évidemment, doit être le plus à jour possible, on a ajouté une analyse heuristique, c'est à dire une analyse qui va évaluer la dangerosité d'un module inconnu suivant des critères tels que: le type de compilateur du module, la date de compilation (une date très récente est plus suspecte qu'un module ancien), la table des importations de module connexes, les métadonnées, l'éventuelle signature du code. Toutes ces données (incomplètes) vont donner une "impression", un score d'évaluation de la nocivité du module analysé, même si celui-ci ne figure pas explicitement dans la base des virus.  Cela a permis, il y a quelques années de contrer les attaquants qui changeaient quelques caractères à des virus existants dont ils avaient récupéré le code source sur internet. Le troisième élément de l'analyse statique est la corrélation avec d'autres modules utilisés. Si la chaine est logique, alors ce module est considéré comme valide, bien qu'inconnu au sens de la base de signatures.

Les attaquants ont eu alors l'idée d'utiliser un programme connu pour cacher le payload: C'est le principe de l'artéfact. Le système croit exécuter "notepad.exe" (le bloc notes de Windows) alors qu'en fait, c'est un programme "modifié" qui contient le payload. On appelle ce dispositif, une obfuscation. En langage trivial, le module malveillant est "planqué" dans un programme connu.

Une nouvelle génération d'anti-virus a alors permis de déjouer ce nouveau type de virus en analysant, non pas le fichier, mais son comportement dans la mémoire de la machine. C'est le principe de l'analyse dynamique, dite sandbox, "bac à sable". Au lieu d'exécuter le module inconnu dans la mémoire de l'ordinateur, on l'exécute dans un espace mémoire spécial, pour examiner ce qu'il fait une fois lancé. Si le module tente d'exécuter des commandes nocives au système, il est alors neutralisé dans la sandbox et n'arrive jamais à s'exécuter dans la "vraie" mémoire de la machine. Il est donc impératif de se doter d'un anti-virus récent, qui combine à la fois l'analyse statique et l'analyse dynamique. Inutile de dire que votre action numéro un est d'avoir constamment 100% de votre parc doté d'un anti-virus récent (avec analyse dynamique) et à jour.

(c) LOWE'S

Cependant, les attaquants ont réussi à déjouer également ce type d'anti-virus, et ceci de manière systématique depuis l'apparition des ransomwares, en particulier depuis début 2019. Si on examine comment fonctionne une sandbox, on s'aperçoit que l'analyse ne doit durer que quelques secondes, sinon l'utilisateur va recliquer sur le module concerné, redéclenchant une analyse… Du coup, les attaquants on mis en place des systèmes de chiffrement (faible de type Base64 XOR) pour ralentir l'exécution du module en mémoire.  Ils ont également mis des branchements logiques pour une fois repérée une sandbox, ne jamais arriver au point où va s'exécuter le malware. 

Enfin ils peuvent aussi changer le script, repéré précédemment par nos défenses, par exemple au lieu de "0" ils mettent "0x0" dans le code, ce qui donne toujours le résultat de zéro, mais cela trompe les analyses statiques de code.

Ils utilisent également le big data du cloud comme VirusTotal pour vérifier que le payload n'est pas repérable par les anti-virus habituels.

(c) virustotal.com

La parade est donc d'utiliser le même système de VirusTotal pour vérifier les fichiers inconnus ou de soumettre à cette base des nouveaux virus qui ont été trouvés ou bien des sites piégés. Le mieux est d'intégrer automatiquement cet appel au big data pour tous les modules inconnus qui cherchent à s'exécuter dans la mémoire. On devra également whitelister les applications de manière à n'autoriser en mémoire que les programmes qui ont clairement été identifiés comme "sains".

Les attaquants ont donc évolué depuis cette période (récente) et utilisent alors la liste des applis whitelistées et notamment celles qui sont à la base de tout système informatique comme support de leur charge maligne: les Powershell (lignes de commande système), les macro notamment celles de MS Office, certaines DLL (librairies dynamiques) et surtout les "LOL".

L'expression "LOL" en cybersécurité ne veut pas dire "mdr" (mort de rire) mais "Living Of the Lands", c'est à dire "vivre de la terre", un peu comme une armée qui pille les villages du territoire envahi. Il s'agit simplement d'utiliser un dispositif accepté par les défenses comme vecteur, support de la charge virale.

Il existe différents types de LOL: Les LOLBINS qui utilisent des binaires Windows pour dissimuler le virus, les LOLLIBS qui utilisent des bibliothèques (librairies) et les LOLSCRIPTS qui utilisent des lignes de commande pour faire appel à un mini-programme qui tient en quelques lignes de commande. Voici un exemple avec METASPLOIT:

(c) Rapid 7

Et ce n'est pas tout: Comme les défenses modernes repèrent les fichiers malsains, y compris ceux encapsulés dans les modules autorisés, les attaquants ont inventé des attaques "fileless" "sans fichier". L'artéfact pour cacher le module n'est pas présent sous forme de fichier sur le disque, il n'existe qu'en mémoire de l'ordinateur cible, éventuellement avec une très faible activité disque. Si on scanne la machine avec l'antivirus, on ne trouvera jamais de trace ! L'avantage (si on peut dire) est que lorsqu'on redémarre l'ordinateur, le logiciel disparait aussi. Le problème est qu'il aura pu exécuter quelque chose comme communiquer avec le QG des attaquants (le C2 ou C&C – Command & Control), nous en parlerons dans un prochain article "dot". Ou encore, ce programme malveillant aura procédé à un "mouvement latéral" pour contaminer une autre machine ou bien exfiltrer des données.

Les attaques "fileless" donnent une sensation de n'avoir aucune contamination à première vue et permettent ainsi aux attaquants de rester cachés pendant des jours, voire des semaines ou des mois, dans le système cible sans être repérés. Notez que ce type d'attaque était l'apanage exclusif de services de renseignement de haut niveau comme pour le cas de Stuxnet vers 2010. (https://en.wikipedia.org/wiki/Stuxnet). Mais aujourd'hui, on peut les trouver dans n'importe quel kit de red team comme Cobalt Strike. Les attaquants ont donc accès aujourd'hui à ces technologies de pointe.

(c) ZERO DAYS  Réalisation : Alex Gibney

Une nouvelle génération de programmes antiviraux à donc vu le jour pour se défendre efficacement contre ces attaques. Je ne sais pas qui les maladroitement appelés "EDR" (Endpoint Detection & Response), mais il s'agit en fait d'un antivirus "nextgen" –nouvelle génération- sur le poste de travail, mais également les serveurs ou les smartphones. Malgré tout, est-on sûr de bloquer toutes les attaques avec ces solutions ?

Comment contrer subtilement les attaquants à ce niveau ? On pourrait leur faire croire qu'ils sont rentrés pour les piéger… En créant une "terracotta army" une armée en terre cuite. Il s'git d'ordinateurs "leurres" qui ressemblent aux "vrais", contiennent des données "bidon" mais vraisemblables, qui ont pour but de repérer l'attaque et de faire croire à l'attaquant qu'ils ont percé les défenses. 

(c) Outlookindia.com

L'intérêt évident de cette stratégie est de laisser l'attaquant poursuivre son attaque et de finir par les confondre une fois l'attaque déroulée complètement, notamment lors du contact de retour avec "la base" (le fameux C2 dont nous allons parler dans un prochain article):

(c) CYNET

(c) CYNET

Une fois le scenario d'attaque compris, les IOC, Indicators of Compromise (Indicateurs de Compromission) vont constituer la "signature de l'attaque". Cette signature sera transmise à tous les éléments de défense réseau et système de manière à la bloquer à la source et notamment empêcher les machines contaminées de discuter avec le C2.  

On pourra également mutualiser ces IOC avec tout un pays, voire le monde entier à travers les bases de connaissance défensives dont nous avons parlé dans le premier article (Threat Intel).

Il apparaît clairement que pour résister aux attaques modernes apparues de manière "industrielle" depuis début 2019, il s'agit de coopérer avec un maximum d'entreprises et de pays, que cela soit pour l'alerte d'une attaque ou bien pour partager des informations sur les attaques ou les attaquants. 

La notion de SOC (Security Operation Center) devient une nécessité, comme pour les urgences d'un l'hôpital (remédiation rapide mais incomplète) par rapport au bloc opératoire (traitement complet, mais action lente). 

En résumé de cet article "dot armement": Les antivirus standard sont complètement insuffisants. Il faut s'équiper avec des systèmes nouvelle génération: les EDR. On doit mutualiser les efforts avec les bases d'IOC. Il faut s'attendre à un déferlement d'attaques et donc renforcer le système d'alerte et de réaction par rapport au système de prévention.