Utiliser les LLM et ESRE pour trouver des sessions utilisateur similaires
Dans notre article précédent, nous avons exploré l'utilisation du modèle GPT-4 Large Language Model (LLM) pour condenser les sessions complexes des utilisateurs de Linux en résumés concis. Nous avons souligné les principaux enseignements de nos expériences, en mettant en lumière les nuances du prétraitement des données, du réglage rapide et de l'ajustement des paramètres du modèle. Dans le cadre de la même expérience, nous avons consacré du temps à l'examen des sessions présentant des similitudes. Ces sessions similaires peuvent ensuite aider les analystes à identifier des activités suspectes connexes. Nous avons exploré les méthodes suivantes pour trouver des similitudes dans les sessions des utilisateurs :
- Afin de découvrir des profils d'utilisateurs et des sessions similaires, nous avons entrepris de classer les sessions en fonction des actions exécutées par les utilisateurs. Pour ce faire, nous avons demandé au modèle de langage (LLM) de classer les sessions d'utilisateurs dans des catégories prédéfinies.
- En outre, nous avons exploité les capacités d'ELSER (le modèle de recherche sémantique d'Elastic) pour exécuter une recherche sémantique sur les résumés de modèles dérivés de l'expérience de résumé de session
Cette recherche se concentre sur nos expériences utilisant GPT-4 pour la catégorisation des sessions et ESRE pour la recherche sémantique.
Exploitation de GPT pour la catégorisation des sessions
Nous avons consulté un collègue chercheur en sécurité ayant une expertise dans le domaine pour définir neuf catégories pour notre ensemble de données de 75 sessions. Ces catégories généralisent les principaux comportements et les caractéristiques significatives observés au cours des sessions. Elles comprennent les activités suivantes :
- Exécution Docker
- Opérations de réseau
- Recherches de fichiers
- Utilisation de la ligne de commande Linux
- Utilisation de l'application Sandbox Linux
- Installations de tuyauterie
- Installations de paquets
- Exécution de scripts
- Exécution des processus
Enseignements tirés
Pour nos expériences, nous avons utilisé un déploiement GPT-4 dans Azure AI Studio avec une limite de jetons de 32k. Afin d'explorer le potentiel du modèle GPT pour la catégorisation des sessions, nous avons mené une série d'expériences, en demandant au modèle de catégoriser les sessions en entrant le même document de résumé JSON que nous avons utilisé pour le processus de résumé des sessions.
Cet effort a donné lieu à de nombreuses itérations, au cours desquelles nous nous sommes concentrés sur l'amélioration des messages-guides et de l'apprentissage par petites touches. En ce qui concerne les paramètres du modèle, nous avons maintenu une température de 0 afin de rendre les résultats moins diversifiés.
Ingénierie rapide
À retenir : L'inclusion d'explications sur les catégories dans les messages-guides n'a pas d'incidence sur les performances du modèle.
La composante de catégorisation des sessions a été introduite en tant qu'extension de l'invite de résumé des sessions. Nous avons étudié l'effet de l'intégration d'explications contextuelles pour chaque catégorie en plus des messages-guides. De manière intrigante, nos résultats ont révélé que l'ajout d'un contexte illustratif n'a pas influencé de manière significative les performances du modèle, par rapport aux invites dépourvues de ces informations supplémentaires.
Vous trouverez ci-dessous un modèle que nous avons utilisé pour guider le processus de catégorisation du modèle :
You are a cybersecurity assistant, who helps Security analysts in summarizing activities that transpired in a Linux session. A summary of events that occurred in the session will be provided in JSON format. No need to explicitly list out process names and file paths. Summarize the session in ~3 paragraphs, focusing on the following:
- Entities involved in the session: host name and user names.
- Overview of any network activity. What major source and destination ips are involved? Any malicious port activity?
- Overview of any file activity. Were any sensitive files or directories accessed?
- Highlight any other important process activity
- Looking at the process, network, and file activity, what is the user trying to do in the session? Does the activity indicate malicious behavior?
Also, categorize the below Linux session in one of the following 9 categories: Network, Script Execution, Linux Command Line Utility, File search, Docker Execution, Package Installations, Pip Installations, Process Execution and Linux Sandbox Application.
A brief description for each Linux session category is provided below. Refer to these explanations while categorizing the sessions.
- Docker Execution: The session involves command with docker operations, such as docker-run and others
- Network: The session involves commands with network operations
- File Search: The session involves file operations, pertaining to search
- Linux Command Line Utility: The session involves linux command executions
- Linux Sandbox Application: The session involves a sandbox application activity.
- Pip Installations: The session involves python pip installations
- Package Installations: The session involves package installations or removal activities. This is more of apt-get, yum, dpkg and general command line installers as opposed to any software wrapper
- Script Execution: The session involves bash script invocations. All of these have pointed custom infrastructure script invocations
- Process Execution: The session focuses on other process executions and is not limited to linux commands.
###
Text: {your input here}
Réglage en quelques coups
À retenir : L'ajout d'exemples pour chaque catégorie améliore la précision.
Simultanément, nous avons étudié l'efficacité de l'amélioration des performances du modèle en incluant un exemple pour chaque catégorie dans l'invite ci-dessus. Cette stratégie a permis une amélioration significative, notamment en augmentant la précision du modèle de 20 %.
Évaluation des catégories de TPG
L'évaluation des catégories de TPG est cruciale pour mesurer la qualité et la fiabilité des résultats. Lors de l'évaluation des résultats de la catégorisation, une comparaison a été établie entre la catégorisation du modèle et la catégorisation humaine attribuée par l'expert en sécurité (appelée "Ground_Truth" dans l'image ci-dessous). Nous avons calculé la précision totale sur la base du nombre de correspondances réussies pour l'évaluation de la catégorisation.
Nous avons observé que le GPT-4 était confronté à des difficultés lorsqu'il s'agissait d'échantillons appartenant à plusieurs catégories. Cependant, lors de l'attribution d'une seule catégorie, il s'est aligné sur la catégorisation humaine dans 56 % des cas. La catégorie "Linux Command Line Utility" a posé un problème particulier, avec 47 % de faux négatifs, souvent classés à tort comme "Process Execution" ou "Script Execution." Cette divergence s'explique par le fait que les définitions des catégories "Linux Command Line Utility" et "Process Execution" sont étroitement liées. Il se peut également que les messages-guides ne contiennent pas suffisamment d'informations, telles que les arguments de la ligne de commande du processus, qui auraient pu constituer un facteur de distinction précieux pour ces catégories.
Au vu des résultats de notre évaluation, nous concluons que nous devons soit ajuster les descriptions de chaque catégorie dans l'invite, soit fournir davantage d'exemples au modèle par le biais d'un entraînement en quelques coups. En outre, il convient de se demander si le GPT est le choix le plus approprié pour la classification, en particulier dans le contexte du paradigme de l'incitation.
Recherche sémantique avec ELSER
Nous voulions également essayer ELSER, l'Elastic Learned Sparse EncodeR pour la recherche sémantique. La recherche sémantique se concentre sur la signification contextuelle, plutôt que sur la saisie de mots-clés strictement exacts, et ELSER est un modèle de recherche formé par Elastic qui vous permet d'effectuer une recherche sémantique et d'obtenir des résultats plus pertinents.
Nous avons testé quelques exemples de questions de recherche sémantique sur les résumés des sessions. Les résumés des sessions ont été stockés dans un index Elasticsearch, et il a été facile de télécharger le modèle ELSER en suivant un tutoriel officiel. Les jetons générés par ELSER sont stockés dans l'index, comme le montre l'image ci-dessous :
Ensuite, la recherche sémantique sur l'index a globalement permis de retrouver les événements les plus pertinents. Les requêtes de recherche sémantique sur les événements ont été incluses :
- En rapport avec le mot de passe - produisant des journaux en rapport avec 1Password
- Java - pour obtenir les journaux qui utilisent Java
- Python - pour obtenir les journaux qui utilisent Python
- Session non interactive
- Session interactive
Un exemple de recherche sémantique peut être vu dans la console Dev Tools par le biais d'une requête text_expansion.
En voici quelques exemples :
- Pour la recherche sémantique, le modèle d'invite peut faire en sorte que le résumé contienne trop de mots-clés sans rapport entre eux. Par exemple, nous voulions que chaque résumé comprenne une évaluation permettant de déterminer si la session devait être considérée comme "malicieuse", ce mot spécifique a toujours été inclus dans le résumé résultant. Par conséquent, les résumés des sessions bénignes et des sessions malveillantes contenaient le mot "malveillant" dans des phrases telles que "Cette session est malveillante" ou "Cette session n'est pas malveillante". Cela aurait pu avoir un impact sur la précision.
- La recherche sémantique semble incapable de différencier efficacement certains concepts connexes, tels que l'interactivité et la non-interactivité. Un petit nombre de termes spécifiques peut ne pas avoir été jugé suffisamment important pour la signification principale du résumé de la session dans le cadre d'une recherche sémantique.
- La recherche sémantique fonctionne mieux que BM25 dans les cas où l'utilisateur ne spécifie pas les mots-clés exacts. Par exemple, la recherche des journaux et résumés liés à "Python" ou "Java" est tout aussi efficace avec ELSER qu'avec BM25. Cependant, ELSER a pu récupérer des données plus pertinentes lors de la recherche de journaux liés au "langage orienté objet". En revanche, la recherche par mot-clé de "langage orienté objet" ne donne pas de résultats pertinents, comme le montre l'image ci-dessous.
Et ensuite ?
Nous étudions actuellement la possibilité d'améliorer encore le résumé par le biais de la génération augmentée de recherche (RAG), en utilisant les outils du moteur de recherche et de pertinence Elastic (ESRE). En attendant, nous serions ravis de connaître vos expériences en matière de LLM, d'ESRE, etc. Si vous souhaitez partager ce que vous faites ou si vous rencontrez des problèmes au cours du processus, n'hésitez pas à nous contacter sur notre canal Slack et nos forums de discussion.