Uso de LLM y ESRE para encontrar sesiones de usuario similares
En nuestro artículo anterior, exploramos el uso del GPT-4 Large Language Model (LLM) para condensar sesiones complejas de usuario de Linux en resúmenes concisos. Destacamos las conclusiones clave de nuestros experimentos, arrojando luz sobre los matices del preprocesamiento de datos, el ajuste rápido y los ajustes de los parámetros del modelo. En el contexto del mismo experimento, dedicamos algún tiempo a examinar las sesiones que compartían similitudes. Estas sesiones similares pueden ayudar posteriormente a los analistas a identificar actividades sospechosas relacionadas. Exploramos los siguientes métodos para encontrar similitudes en las sesiones de usuario:
- En un esfuerzo por descubrir perfiles de usuario y sesiones similares, un enfoque que adoptamos fue categorizar las sesiones de acuerdo con las acciones ejecutadas por los usuarios; logramos esto instruyendo al Modelo de Modelo de Lenguaje (LLM) para categorizar las sesiones de usuario en categorías predefinidas
- Además, aprovechamos las capacidades de ELSER (modelo de recuperación de Elastic para la búsqueda semántica) para ejecutar una búsqueda semántica en los resúmenes de modelos derivados del experimento de resumen de sesiones
Esta investigación se centra en nuestros experimentos empleando GPT-4 para la categorización de sesiones y ESRE para la búsqueda semántica.
Aprovechamiento de GPT para la categorización de sesiones
Consultamos a un colega de investigación de seguridad con experiencia en el dominio para definir nueve categorías para nuestro conjunto de datos de sesiones 75 . Estas categorías generalizan los principales comportamientos y características significativas observadas en las sesiones. Incluyen las siguientes actividades:
- Ejecución de Docker
- Operaciones de red
- Búsquedas de archivos
- Uso de la línea de comandos de Linux
- Uso de aplicaciones de espacio aislado de Linux
- Instalaciones de pips
- Instalaciones de paquetes
- Ejecuciones de scripts
- Ejecuciones de procesos
Lecciones aprendidas
Para nuestros experimentos, usamos una implementación de GPT-4 en Azure AI Studio con un límite de tokens de 32k. Para explorar el potencial del modelo GPT para la categorización de sesiones, llevamos a cabo un serial de experimentos, dirigiendo el modelo para categorizar las sesiones introduciendo el mismo documento de resumen JSON que empleamos para el proceso de resumen de sesiones.
Este esfuerzo incluyó varias iteraciones, durante las cuales nos concentramos en mejorar las indicaciones y el aprendizaje de pocos disparos . En cuanto a los parámetros del modelo, mantuvimos una temperatura de 0 en un esfuerzo por hacer que las salidas fueran menos diversas.
Ingeniería de avisos
Llevar: La inclusión de explicaciones de las categorías en las solicitudes no afecta al rendimiento del modelo.
El componente de categorización de sesión se introdujo como una extensión de la solicitud de resumen de sesión. Exploramos el efecto de incorporar explicaciones contextuales para cada categoría junto con las indicaciones. Curiosamente, nuestros hallazgos revelaron que agregar contexto ilustrativo no influyó significativamente en el rendimiento del modelo, en comparación con las indicaciones desprovistas de dicha información complementaria.
A continuación se muestra una plantilla que empleamos para guiar el proceso de categorización del modelo:
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}
Afinación de pocos disparos
Llevar: Agregar ejemplos para cada categoría mejora la precisión.
Al mismo tiempo, investigamos la efectividad de mejorar el rendimiento del modelo mediante la inclusión de un ejemplo para cada categoría en el mensaje anterior. Esta estrategia resultó en una mejora significativa, aumentando notablemente la precisión del modelo en un 20%.
Evaluación de las categorías GPT
La evaluación de las categorías de GPT es crucial para medir la calidad y la fiabilidad de los resultados. En la evaluación de los resultados de la categorización, se estableció una comparación entre la categorización del modelo y la categorización humana asignada por el experto en seguridad (denominada "Ground_Truth" en la imagen a continuación). Calculamos la precisión total en función del número de coincidencias exitosas para la evaluación de la categorización.
Observamos que GPT-4 se enfrentaba a retos cuando se trataba de muestras que llevaban múltiples categorías. Sin embargo, al asignar una sola categoría, se alineó con la categorización humana en el 56% de los casos. La categoría "Utilidad de línea de comandos de Linux" planteó un desafío particular, con el 47% de los falsos negativos, a menudo clasificados erróneamente como "Ejecución de procesos" o "Ejecución de scripts". Esta discrepancia surgió debido a las definiciones estrechamente relacionadas de las categorías "Utilidad de línea de comandos de Linux" y "Ejecución de procesos" y también puede haber información insuficiente en las solicitudes, como los argumentos de la línea de comandos del proceso, que podrían servir como un valioso factor distintivo para estas categorías.
Dados los resultados de nuestra evaluación, llegamos a la conclusión de que necesitamos ajustar las descripciones de cada categoría en el mensaje o proporcionar más ejemplos al modelo a través de un entrenamiento de pocas tomas. Además, ok la pena considerar si GPT es la opción más adecuada para la clasificación, particularmente dentro del contexto del paradigma de incitación.
Búsqueda semántica con ELSER
También queríamos probar ELSER, el Elastic Learned Sparse EncodeR para la búsqueda semántica. La búsqueda semántica se centra en el significado contextual, en lugar de en entradas de palabras clave estrictamente exactas, y ELSER es un modelo de recuperación capacitado por Elastic que te permite realizar búsquedas semánticas y recuperar resultados más relevantes.
Probamos algunos ejemplos de preguntas de búsqueda semántica en los resúmenes de las sesiones. Los resúmenes de las sesiones se almacenaron en un índice de Elasticsearch, y fue sencillo descargar el modelo ELSER siguiendo un tutorial oficial. Los tokens generados por ELSER se almacenan en el índice, como se muestra en la siguiente imagen:
Posteriormente, la búsqueda semántica en el índice fue capaz de recuperar los eventos más relevantes. Las consultas de búsqueda semántica sobre los eventos incluyeron:
- Relacionado con contraseñas: produce registros relacionados con 1Password
- Java: registros que producen registros que usaban Java
- Python: registros que producen registros que usaban Python
- Sesión no interactiva
- Sesión interactiva
Un ejemplo de búsqueda semántica se puede ver en la consola de Dev Tools a través de una consulta text_expansion.
Algunas conclusiones son:
- Para la búsqueda semántica, la plantilla de solicitud puede hacer que el resumen tenga demasiadas palabras clave no relacionadas. Por ejemplo, queríamos que cada resumen incluyera una evaluación de si la sesión debía considerar "maliciosa" o no, esa palabra específica siempre se incluía en el resumen resultante. Por lo tanto, los resúmenes de las sesiones benignas y las sesiones maliciosas contenían la palabra "maliciosa" a través de oraciones como "Esta sesión es maliciosa" o "Esta sesión no es maliciosa". Esto podría afectar a la precisión.
- La búsqueda semántica parecía incapaz de diferenciar eficazmente entre ciertos conceptos relacionados, como interactivo y no interactivo. Es posible que un pequeño número de términos específicos no se consideró lo suficientemente importante para el significado principal del resumen de la sesión para la búsqueda semántica.
- La búsqueda semántica funciona mejor que BM25 para los casos en los que el usuario no especifica las palabras clave exactas. Por ejemplo, la búsqueda de registros y resúmenes relacionados con "Python" o "Java" es igualmente eficaz tanto con ELSER como con BM25. Sin embargo, ELSER podría recuperar datos más relevantes al buscar registros relacionados con el "lenguaje orientado a objetos". Por el contrario, el uso de una búsqueda de palabras clave para "lenguaje orientado a objetos" no produce resultados relevantes, como se muestra en la imagen a continuación.
¿Qué sigue?
Actualmente estamos buscando mejorar aún más el resumen a través de la generación aumentada de recuperación (RAG), empleando herramientas en el motor de búsqueda y relevancia elástica (ESRE). Mientras tanto, nos encantaría conocer tus experimentos con LLM, ESRE, etc. Si quieres compartir lo que estás haciendo o tener algún problema durante el proceso, ponte en contacto con nosotros a través de nuestro canal de Slack de la comunidad y de los foros de debate.