ca
ring z3ro labs
>
Artificial Intelligence

Cas d'ús: Com millorar l'eficiència dels equips de ciberseguretat utilitzant IA

Miguel Quero
,
Forensic Engineer & Principal Consultant
__wf_reservad_hereta

Introducció

La ciberseguretat és un camp que requereix una actualització constant i adaptació a les noves amenaces i vulnerabilitats que sorgeixen en el món digital. Els equips de ciberseguretat s'enfronten a reptes cada vegada més complexos i variats, que demanen una alta capacitat d'anàlisi, resposta i prevenció. En aquest context, la intel·ligència artificial (IA) es presenta com una eina clau per millorar l'eficiència i l'eficàcia dels equips de ciberseguretat.

En particular, ens centrarem en els grans models lingüístics (LLM). Sistemes d'IA que poden processar i generar llenguatge natural de forma automàtica i precisa. Aquests models compten amb múltiples aplicacions en l'àmbit de la ciberseguretat, com ara:

  • La detecció de ciberatacs mitjançant l'anàlisi de dades i el seu context en temps real, com ara textos, correus electrònics, xarxes socials, etc.
  • La generació d'informes, alertes i recomanacions sobre les mesures de seguretat a prendre.
  • L'automatització de tasques repetitives o rutinàries, com la classificació d'incidències, sobrecàrrega d'alerta, falsos positius i alguna anàlisi manual.

A més de reduir les tasques d'operació de ciberseguretat, l'ús de la intel·ligència artificial resol un dels majors problemes als quals s'enfronten les organitzacions de seguretat avui dia: reclutar i retenir professionals qualificats de seguretat durant una escassetat crònica de talent en el sector, permetent mantenir equips més petits, però altament qualificats dedicats a tasques de major valor afegit, una cosa bona tant per al professional com per a les empreses.

Aquest article no pretén entrar en temes complexos de com funciona la IA a baix nivell i es poden cometre inexactituds tècniques, però l'objectiu és que el lector pugui fer-se una idea real de com l'aplicació de la IA pot ajudar amb simples integracions als equips SOC, DFIR o Threat Hunting en les tasques del dia a dia.

Conceptes bàsics

Per entendre millor els casos d'ús i els diagrames de flux, repassem primer els conceptes essencials de la intel·ligència artificial, explicats de la manera més senzilla i potser inexacta:

· LLM (Gran Model Lingüístic): Els LLM són algoritmes d'aprenentatge automàtic entrenats amb grans conjunts de dades no estructurades amb l'objectiu de comprendre, interpretar i generar text en llenguatge natural. Ja fa temps que tenim alguns d'aquests models al mercat, com GPT4 (OpenAI), Claude2 (Anthropic), Llama2 (Meta) o BARD (Google).

· Fitxa: Un token en intel·ligència artificial és una unitat bàsica de text (paraules o parts de paraules) que s'utilitza per entrenar i consultar models de llenguatge natural, com els LLM. La mida del context (que és limitat com veurem més endavant) es mesura en aquestes unitats, tokens.

· Incorporacions: Les incrustacions són una manera de representar paraules o frases com a vectors numèrics en un espai de baixa dimensió. En termes senzills, les incrustacions són una manera de fer que els ordinadors entenguin el significat de les paraules i les frases en el llenguatge humà. Per exemple, una incrustació podria representar la paraula “gos” com un vector numèric específic, que després es pot utilitzar per entrenar un model de llenguatge natural per reconèixer la paraula “gos” en diferents contextos.

Un dels usos pràctics més interessants dels embeddings i que tocarem en altres articles, és el fet que si utilitzem embeddings per “indexar” els nostres propis textos i bases de coneixement, podem realitzar cerques amb llenguatge natural. Per exemple, en els sistemes convencionals d'indexació, les cerques es realitzen fent coincidir un terme, per exemple, cercant “phishing” donarà lloc a tots els paràgrafs i documents on es trobi aquella paraula. No obstant això, si tenim les nostres dades “indexades” en una base de dades vectorials (embeddings) com ChromaDB o FAISS, podem realitzar la cerca fent preguntes com: Quins són els incidents relacionats amb el phishing on s'ha produït l'exfiltració?

· Context: Podríem definir context com la “memòria a curt termini” de les LLMs, el context és tot el que envolta la pregunta que volem fer i li dóna prou significat perquè el model respongui amb la màxima precisió possible. Utilitzem context de forma natural quan utilitzem ChatGPT o BingChat, simplement notant com les eines són capaces de seguir el fil de la conversa i esdevenir més precises a mesura que avancem.

La mida del context és quelcom que varia en funció del tipus de model que seleccionem i és vital que la seva elecció s'adapti a les nostres necessitats. Alguns exemples de mida són:

  • Llama2: 4k
  • GPT4: 32k
  • Claude2: 100km
  • GPT4 Turbo: 128k
  • Dolphin Yi 34b: 200k

· Propietat: Un prompte en intel·ligència artificial és una frase o conjunt de paraules que s'utilitza per guiar un model de llenguatge natural, com els LLM, per generar una resposta específica. Els indicis són útils per proporcionar context i orientació als models d'aprenentatge automàtic. En termes senzills, les indicacions són com preguntes o instruccions que es donen a un model de llenguatge natural per generar una resposta específica. Cada prompt que executem s'afegirà al context fins esgotar la mida del context o tancar la sessió amb el LLM.

Cas d'ús: Llibres de jocs generats automàtics intel·ligents

En futurs articles veurem diferents casos d'ús de la IA en entorns de ciberseguretat. En aquest cas volem resoldre un dels problemes clàssics dels playbooks de ciberseguretat, la rapidesa amb què queden desfasats i com de difícil és de vegades trobar el playbook adequat quan no s'entén bé la investigació/incident/alerta (utilitzaré vigilant per simplificar) que estàs enfrontant.

Ara bé, imaginem que volem que cada vegada que es genera una alerta en el nostre sistema, el nostre sistema d'IA entengui el context de l'alerta, busqui tota la informació d'alertes similars, com es van resoldre i generi un playbook personalitzat en el qual explica de què tracta l'alerta i com s'ha d'abordar per a una resolució òptima. (Evidentment el playbook s'ha de personalitzar per a cada àrea de ciberseguretat, però més endavant veurem com es pot personalitzar aquest playbook forçant una mica el prompt de la pregunta).

Doncs bé, en principi sembla una cosa senzilla d'abordar si no fos perquè segurament la LLM que anem a utilitzar no té ni idea de la nostra base de coneixement acumulada a la nostra empresa, ja sigui en documents o eines de gestió. Per solucionar aquest problema en IA tenim dos enfocaments que podem fer: Afinació RAG i model. Amb el que hem de tornar a revisar algun concepte:

· Afinació del model: El concepte és senzill, triar un model existent, ja sigui opensource o privat i reciclar-lo amb les nostres dades. Per a això caldrà generar el que es coneix com a “dataset”, que no és més que un recull de preguntes i respostes en un format específic que faci que el nostre model pugui aprendre més “nativament” sobre el nostre entorn.

Per a aquests treballs d'afinació disposem de serveis privats com Azure OpenAI Studio o podem optar per reciclar models opensource com llama2 i els seus derivats.

Com a avantatge d'aquesta solució, és que, si tenim un bon equip tècnic capaç de generar un conjunt de dades de qualitat (i en cas d'anar per l'opció opensource, d'equips de processament adequats), la precisió i rapidesa en les respostes del model serà notable.

Però com a desavantatge tenim que l'afinació és un procés car i lent, que donarà com a resultat que les dades amb què es va entrenar el model, aviat quedin obsoletes, i més en l'àmbit de la ciberseguretat.

· RAG (generació augmentada de recuperació): RAG és el marc més de moda en l'actualitat, ja que ens permet treballar amb fonts de dades actualitzades, ja siguin públiques o privades, sense necessitat de reciclar el model.

Podríem utilitzar moltes paraules tècniques per explicar què és RAG, però podem simplificar-ho dient que RAG és un mètode que aprofita les finestres contextuals de les LLM per “dopar” el model amb informació extra amb la qual volem que ens doni la resposta.

Per exemple, imaginem que obrim una sessió amb GPT4-Turbo des d'OpenAI i preguntem “Em podeu fer un resum de l'incident DOGO del mes passat?”, evidentment el model respondrà que no sap de què parles, però, si abans de fer la pregunta, enganxem el text de tot l'informe (Tenint en compte que GPT4-Turbo suporta 128k tokens, gairebé 250 pàgines d'informe hi cabrien...) i al final formulem la mateixa pregunta, el model podrà no només respondre a aquesta pregunta, sinó també totes les que demanes relacionades amb l'informe.

I aquí rau el “truc” de RAG, per enriquir el context de manera òptima per obtenir respostes precises i personalitzades amb el meu abast.

Com a nota de seguretat, com que són dades molt sensibles, hem d'anar amb compte amb els serveis de LLM a utilitzar:

  • Mode segur: Utilitzar serveis privats com Azure OpenAI o OpenAI Enterprise, que no utilitzen les dades, ni per reciclar els seus models, ni tercers ni res fora de l'àmbit del client.
  • Mode de paranoia: Utilitzeu un model de codi obert com Llama2 (o les seves variants) en equips On-Premise.

Utilitzeu el disseny de casos

Per a aquest cas d'ús utilitzarem RAG ja que és l'enfocament més senzill, ràpid i barat per configurar el nostre sistema de playbook automàtic.

Per a aquest cas d'ús necessitarem els següents elements:

  • Un sistema de venda d'entrades on hem registrat les alertes o incidències amb els seus corresponents seguiments i solucions.
  • És molt important per a la IA poder generar bons playbooks, que els nostres tècnics hagin detallat amb precisió i professionalitat aquelles entrades a l'hora de tancar-les, és a dir, que les alertes no vagin amb el típic “Resolt”, sinó que intentin explicar, ni que sigui breument, com s'ha resolt el bitllet.
  • Tenir una base mínima d'entrades per treballar.

El flux seria el següent:

Et detallem aquests 6 senzills passos per al nostre playbook automàtic:

  • Pas 1: El sistema de venda de bitllets rep una nova alerta dels nostres sistemes de ciberseguretat.
  • Pas 2: El sistema d'IA recull les dades de la nova alerta per començar a generar un context.
  • Pas 3: El sistema d'IA basat en el nom de l'alerta, l'usuari, la màquina, les ordres utilitzades... o el que cada empresa consideri rellevant, genera dades de tiquets relacionats amb aquella alerta per afegir-los com a context.
  • Pas 4: El sistema d'IA utilitza tot aquell context anterior i genera un prompt amb les preguntes adequades per forçar l'estructura del playbook desitjat i l'executa a la LLM.
  • Pas 5: El sistema d'IA genera el playbook i l'adjunta a l'entrada.
  • Pas 6: L'usuari ja pot utilitzar el nou playbook per dur a terme la seva investigació de manera més eficient

Aquest flux es podria fer en unes poques línies amb frameworks com Langchain. Un exemple de codi seria:

importar osfrom dotenv import load_dotenvfrom langchain.chains import llmChainFrom langchain.prompts import promptTemplateFrom langchain.chat_models import AzureChatOpenaiFrom libs.libticketing importar ticket_login, get_ticket, from libs.libticketing import get_related_text, post_playbookload_dotenv () # Entorn de càrrega variablesticketid = “107545" # Identificador d'incidència (Per aquest exemple) model = “gpt-35-turbo” # Model nametoken = ticket_login () # Inicia sessió a Ticketing SystemAlert = get_ticket (token, ticketid) # Obtenir informació del bitllet relacionada = get_related_text (token, relacionat) # Obtenir entrades relacionades# Context TemplateTemplate = “" "Pregunta: Actuant com a Morgoth, una ciberseguretat AI avançada avaluar la informaciópas a pas abans de respondre a les preguntes del final del text: {alert} {relacionat} Respondre el següent de manera estructurada: - En el primer, podries explicar en un breu currículum què està passant en aquesta alerta? .- Fes una llista de totes les entrades relacionades, segueix les següents regles: - Utilitzar el format de punt de bala. - Trieu un màxim de cinc entrades relacionades més rellevants. No més de cinc. - Llegiu atentament els seguiments i solucions de les entrades anteriors i feu un breu resum. - Cada bala només amb ID de tiquet, Tipus de Positiu, i una breu descripció de la solució.- I la part més important, podries recomanar com s'ha de resoldre aquesta alerta?. Resposta: “" "prompt = promptTemplate (plantilla=plantilla, input_variables= ['alerta', 'relacionat']) llm = AzureChatOpenAI (desplegament_nom=model, temperatura=1, verbose=true, max_tokens=2048) llm_chain = llmChain (llm=llm, prompt=prompt) contestar = llm_prompt chain.run (alert=alerta, related=relacionat) imprimir (contestar) post_playbook (token, resposta)

Aquest petit codi d'exemple que es pot implementar ràpidament en qualsevol flux de treball d'un equip de ciberseguretat que utilitza eines de gestió com ServiceNow, Jira, GLPI... i generaria un petit playbook d'aquest tipus per a cada bitllet obert:

En aquesta alerta, s'informa que un usuari anomenat john.doe ha iniciat sessió amb èxit a inet enfrontant-se a hosts mitjançant un atac de phishing. MDATP ha identificat aquesta activitat com atac d'accés inicial d'alta gravetat utilitzant la tàctica de TA0001.

Llista d'entrades relacionades:

- TickETid: #12345, Tipus de positiu: Activitat sospitosa, Descripció: El mateix dia es va generar una alerta similar, que destacava l'activitat sospitosa en un dispositiu corporatiu. En aquest incident, es va identificar que l'aparell estava compromès mitjançant un atac de phishing. Es van prendre mesures immediates de correcció desconnectant el dispositiu de la xarxa i duent a terme una investigació exhaustiva.

- TicketID: #23456, Tipus de positiu: Malware, Descripció: Una altra alerta generada pocs dies abans d'aquesta incidència destacava l'activitat de malware en el sistema. El malware va ser identificat com un RAT i es va utilitzar per obtenir accés no autoritzat al sistema des d'un servidor remot. El dispositiu es va aïllar immediatament de la xarxa i es van restablir totes les credencials.

- TickETid: #34567, Tipus de positiu: Compte Compromís, Descripció: Aquesta alerta identificava que un compte pertanyent a un empleat superior estava compromés i utilitzat per accedir a fitxers sensibles. La investigació va trobar que el vector d'atac era un correu electrònic de phishing, i els passos de correcció van implicar restablir el compte d'usuari compromès i aconsellar a tots els usuaris que estiguessin vigilants contra correus electrònics sospitosos.

- TicketID: #45678, Tipus de positiu: Robatori de credencials, Descripció: Aquesta alerta destacava que les credencials d'un usuari eren robades i utilitzades per iniciar sessió en un dispositiu corporatiu. La investigació va trobar que l'usuari havia caigut víctima d'un correu electrònic de phishing, i les seves credencials van ser utilitzades per obtenir accés no autoritzat al sistema. El dispositiu es va aïllar immediatament de la xarxa, i es va recomanar a l'usuari que canviés la seva contrasenya i habilités l'autenticació multi-factor.

- TickETid: #56789, Tipus de positiu: Amenaça privilegiada, Descripció: Aquesta alerta destacava l'activitat sospitosa en un dispositiu corporatiu pertanyent a un empleat que havia renunciat recentment. Es va identificar que l'empleat havia accedit a fitxers sensibles i intentava transferir-los a una unitat externa. El dispositiu es va desconnectar immediatament de la xarxa i es va revocar l'accés de l'empleat a fitxers sensibles.

A partir dels bitllets relacionats, es recomana prendre mesures immediates de correcció, incloent desconnectar el dispositiu de la xarxa i dur a terme una investigació exhaustiva per identificar l'abast del dany. Totes les credencials per a l'usuari afectat s'han de restablir, i s'ha d'habilitar l'autenticació multi-factor. A més, s'ha d'aconsellar a tots els usuaris que estiguin vigilants contra correus electrònics sospitosos i s'ha de proporcionar una formació regular de conscienciació sobre la seguretat. A més, es recomana dur a terme un exercici de caça d'amenaces per identificar incidents similars en el medi ambient.

En futurs articles afegirem embeddings i bases de dades vectorials per millorar la precisió en la recerca de solucions relacionades.

Conclusió

Podem concloure que estem davant d'una nova etapa en el món de la ciberseguretat on la IA tindrà un paper fonamental no només pel que fa a les amenaces (que també), sinó per ajudar els equips de ciberseguretat a ser molt més eficients i ràpids en la resposta. Com hem vist en aquest cas d'ús i en els que vindran en futurs articles, no és una cosa difícil, per la qual cosa no hi ha excusa per no començar a utilitzar aquestes tecnologies que estan al nostre abast.

Comparteix aquesta publicació

__wf_reservad_hereta
Miguel Quero
Forensic Engineer & Principal Consultant