Connect the dots #11: « Réponses à la Cyber Kill Chain: Threat Intel & Virtual Patching »
Voici les articles les plus importants de la série "Connect the dots" puisque nous allons voir comment mettre en place des défenses appropriées pour contrer la Cyber Kill Chain.
En face de chacune des étapes de la Cyber Kill Chain, nous avons l'opportunité de mettre en place un certain nombre de composants de sécurité mais aussi de processus. En combinant les deux activités, mise en place de composants de prévention et, organisation de la détection et de la remédiation nous obtiendrons une défense dynamique et efficace. Pour cela, il faut déjà écarter trois idées fausses, qui sont pourtant couramment répandues dans les esprits:
1- Malgré tous les composants de sécurité que l'on va "empiler" pour prévenir une attaque, celle-ci aura finalement lieu un jour, car les attaquants scannent tous les jours toutes les adresses IP de la planète pour trouver des vulnérabilités à exploiter. De plus, on l'a vu en analysant les attaques dans tous les articles "Connect the dots", aucun composant seul ne peut bloquer une attaque aussi sophistiquée.
2- "Les composants de sécurité, tel qu'un anti-virus, vont fonctionner sans aucune surveillance post installation". C'est faux, car les attaquants vont progressivement désactiver les défenses et vont pénétrer jour après jour au plus profond de notre système jusqu'à en devenir les maitres. Au contraire, il faut renforcer nos capacités de détection et de remédiation immédiate, un peu comme les urgences d'un hôpital par rapport aux soins chirurgicaux, qui vont être effectués dans un deuxième temps.
3- "On a le temps". On l'a vu avec toutes les attaques de ce type, ce sont les attaquants qui "ont le temps", puisqu'ils peuvent se maintenir de façon cachée dans les systèmes pendant des jours, voire des semaines ou des mois. Une fois que l'attaque est détectée, la plupart du temps uniquement parce que des centaines de machines sont infectées, il est trop tard. Trop tard pour installer des composants de sécurité, trop tard pour organiser un SOC, trop tard pour récupérer des sauvegardes obsolètes ou contaminées.
Nous allons donc devoir mettre en place à la fois une organisation adéquate pour détecter les attaques et effectuer les premières actions de remédiation afin d'en limiter l'impact et, en même temps, revoir tous nos composants de sécurité pour améliorer notre résistance à ces attaques.
Pour cela, nous allons passer en revue chaque étape, chaque "dot" des cyber-attaques et mettre en face les éléments d'amélioration de nos défenses:
Examinons chaque point de défense (en bleu dans le schéma) lié à un point d'attaque (en jaune dans le schéma):
Dot#1: Reconnaissance.
Nous devons être alertés si des attaques sont en cours, y compris chez d'autres sites comparables en taille ou en activité. Le "threat intel", le renseignement sur les menaces, nous y aidera. Nous pourrons l'utiliser ensuite pour analyser l'attaque subie, la comparer avec d'autres entreprises et partager des indices de compromission (IOC). Des outils d'analyse de l'exposition à internet permettront de repérer nos points faibles, nos vulnérabilités, notamment pour les serveurs exposés dans la DMZ (adresses publiques joignables depuis Internet) et pour les serveurs web institutionnels qui donnent des informations sur notre marque ou bien les comptes de réseaux sociaux de la communication ou des dirigeants. On devra aussi faire la chasse aux e-mails +mots de passe divulgués ou en vente dans le Darkweb et enfin, vérifier que des domaines avec un "typo" n'ont pas été déposés récemment par des tiers anonymes. Pour vous outiller vous disposez de sources payantes, mais aussi gratuites comme les sources OSINT (Open Source INTelligence) et les CERT (Computer Emergency Response Team):
Auteurs: H I Sutton – Aliaume Leroy – Tony Roper
Voici un tableau des principaux points d'attention que doit vous fournir le threat intel:
– Monitoring des menaces typiques dans votre domaine d'activité. Est-ce que des attaques ont eu lieu récemment dans votre domaine spécifique ?
– Y a-t-il une alerte sur une faille critique d'un logiciel que vous utilisez (comme par l'exemple l'outil Solarwinds) ?
– Y a-t-il des crédentités qui ont été dérobées correspondant à votre domaine de messagerie ? Pour cela le site "HaveIbeenpwned" sera essentiel.
– Y a-t-il des fournisseurs (notamment de votre système informatique) ou des partenaires qui se sont fait pirater et qui ont des communications avec vous, notamment sous forme d'échange de fichiers ?
– Y a-t-il des comptes de dirigeants, dans les réseaux sociaux, qui sont compromis ou qui diffusent des fake news ?
– Y a-t-il des sites web que vous possédez qui se font "défacer" ou qui sont "down" ?
– Y a-t-il des domaines dont le nom ressemble ou reprend votre marque, mais qui n'ont pas été déposés par votre entreprise ?
Il doit y avoir une organisation sous forme d'un poste d'analyste qui va détecter ces évènements, qui va faire ensuite une levée de doute en vérifiant l'information, puis créer un ticket d'incident si l'évènement est considéré comme grave. Le délai doit être extrêmement court ainsi que la chaine hiérarchique entre cet analyste et le CISO/RSSI. L'idéal est de disposer d'un canal de chat pour le threat intel où toutes les parties prenantes sont informées en même temps et en temps réel d'un évènement perturbateur.
Dot#2: Préparation de l'attaque.
Pour empêcher au maximum l'attaque, il faut éviter que les ordinateurs exposés sur internet présentent des failles exploitables. Il y a deux façons complémentaires d'y parvenir: Tout d'abord tout ce qui peut être patché (installation des correctifs de sécurité) doit l'être aussi vite que possible: Par exemple, les mises à jour Windows Server et Windows poste de travail. Une attention particulière doit être faite sur les machines qui sont dans la DMZ, c'est à dire atteignables depuis Internet, ainsi que les postes en télétravail, également sur Internet, surtout ceux qui accèdent aux ressources du système par un VPN (connexion chiffrée du poste vers le réseau de l'entreprise). Pour vérifier le niveau d'exposition réel à ces failles par absence de patches, il faut également mettre en place un monitoring permanent des patches manquants. Pour cela on utilisera des outils typiques des pentesteurs ou de sociétés spécialisées dans la découverte de failles. L'Ideal étant de n'avoir aucune vulnérabilité connue exploitable sur le périmètre exposé. Cependant, plusieurs obstacles se dressent devant cet idéal. Le premier est l'obsolescence de certains systèmes qui ne reçoivent plus de mises à jour. Pour Windows on parle de Windows 7 ! Le deuxième obstacle est l'exposition du code source pour les sites web et le fait qu'un navigateur web est un "interpréteur". Si dans une requête je demande le mot de passe de l'utilisateur, la réponse du serveur sera "true" ou "false", vrai ou faux. Si c'est vrai, le serveur donne accès à l'utilisateur. Certains ont donc imaginé une séquence qui fait que le serveur répond "true" à chaque fois, donnant ainsi accès à l'attaquant sans connaître le mot de passe:
Cette faille connue sous le nom de SQL injection, utilise le fait que la chaine de caractères transmises dans le champ password est interprétée par le serveur comme une commande SQL. L'interprétation de "or" qui veut dire "ou" donne true pour le mot de passe car la chaine donne: "nimportequoicomme password ou 1=1, est-ce vrai" ? Le premier mot de passe est faux bien évidemment, mais la deuxième proposition est vraie car "1 est égal à 1". "Faux ou Vrai" donne "Vrai". Au final on est authentifié…
Le problème est donc dans le code source du site web qui accepte des caractères comme ' ou = dans les formulaires.
En attendant de corriger le code source de toutes ces failles dites OWASP Top 10, il y a moyen de se protéger en amont avec un serveur proxy qui va intercepter toutes ces requêtes à destination du serveur web et va filtrer toutes celles qui sont dangereuses, ce qui va créer un "retardateur" pour les attaquants qui ne verront pas la faille exploitable. Ce type de dispositif s'appelle un "WAF" (Web Application Firewall) et il va permettre de protéger tous les serveurs web exposés, tout en signalant les failles à corriger. On peut considérer que l'on vient d'effectuer un virtual patching c'est à dire que l'on a un effet visible externe de patch passé, alors qu'en réalité la machine ne l'est pas. Ce dispositif contre fortement la phase de préparation des attaques. Le même concept de virtual patching doit être appliqué aux machines qui sont obsolètes (Windows 7 et XP) et aux serveurs qui, pour diverses raisons, ne peuvent pas être patchés immédiatement.
En résumé des dots défensifs pour les étapes 1 et 2:
– Threat Intel
– Patching / WAF / Virtual patching.