Telegram a devenit una dintre sursele de date cu cel mai mare semnal pentru informații despre amenințări cibernetice în timp real. Actorii de amenințare aliniați la interese statale, colectivele hacktiviste și grupurile criminale care conduc atacuri împotriva guvernelor, infrastructurii critice și țintelor din domeniul apărării anunță în mod obișnuit operațiunile înainte sau imediat după producerea lor — numind victimele, revendicând vectorii de atac și postând dovezi. Problema constă în volum și structură: sute de canale, mii de mesaje pe zi, aproape toate în limbaj natural nestructurat, amestecate cu zgomot, repostări și dezinformare.

Corvus.Sense este construit pentru a rezolva această problemă la scară de producție. La baza sa se află un pipeline LLM în mai multe etape care ingerează fluxuri brute de mesaje Telegram și produce înregistrări structurate de informații despre amenințări cu clasificare pe sector, atribuire geografică, etichetare a vectorilor de atac și scoruri de încredere — în sub 90 de secunde de la publicarea mesajului. Acest articol descrie arhitectura acelui pipeline și motivele din spatele fiecărei decizii de proiectare.

De ce LLM-uri și nu extracție bazată pe reguli

Prima decizie de proiectare a fost dacă să se utilizeze extracția deterministă (regex, potrivire de cuvinte cheie, recunoașterea entităților numite) sau inferența LLM generativă pentru clasificare. Am evaluat ambele abordări extensiv pe un set de date etichetat cu 12.000 de anunțuri de atac confirmate pe 34 de canale Telegram. Concluziile au fost fără echivoc.

Sistemele bazate pe reguli au atins o precizie acceptabilă pentru grupurile de actori bine cunoscuți cu tipare de postare consistente, dar s-au prăbușit pentru actorii noi, code-switching (mesaje care amestecă ucraineana, rusa și engleza), abrevieri, ofuscare deliberată și variație stilistică. Ratele de fals negativ de peste 30% pentru canalele actorilor noi au făcut extracția bazată pe reguli inadecvată operațional — a rata unul din trei anunțuri de atac reale nu este un produs viabil de informații.

Clasificarea bazată pe LLM a atins peste 91% F1 pe același set de evaluare, inclusiv pe mesajele cu code-switching și canalele actorilor noi care nu au fost prezente în datele de antrenament. Compromisul constă în latență și costul per mesaj, ambele abordate prin arhitectura pipeline-ului descrisă mai jos.

Etapa 1 a pipeline-ului: ingestie și preprocesare

Corvus.Sense se conectează la canalele Telegram prin API-ul Telegram folosind conturi de serviciu dedicate. Fiecare canal configurat este interogat la un interval configurabil (implicit 30 de secunde). Mesajele noi de la ultimul marcaj temporal de interogare sunt preluate, deduplicate față de indexul de ID-uri de mesaje și puse în coadă pentru procesare.

Preprocesarea gestionează mai multe probleme de calitate a datelor înainte ca orice inferență să aibă loc. Mesajele mai scurte de 20 de tokenuri sunt eliminate — conțin conținut semantic insuficient pentru clasificare. Mesajele redirecționate sunt urmărite cu canalul lor sursă original; dacă originalul a fost deja procesat, redirecționarea este marcată ca duplicat și ignorată, prevenind ca același anunț să genereze mai multe înregistrări de alertă. Mesajele numai media (imagini, video fără legendă) sunt puse în coadă separat pentru un pipeline bazat pe viziune care depășește domeniul acestui articol.

Detectarea limbii rulează pe fiecare mesaj pentru a eticheta limba sursă (ISO 639-1). Această etichetă este transmisă downstream promptului LLM pentru a permite exemple few-shot adecvate limbii în promptul de clasificare.

Etapa 2 a pipeline-ului: clasificarea binară a relevanței

Apelul complet de clasificare LLM este costisitor față de volumul de mesaje procesate. O poartă de clasificator binar ușor rulează înainte de orice inferență LLM pentru a filtra conținutul non-operațional. Acest clasificator este un model encoder optimizat (350M parametri) antrenat să distingă anunțurile de atac operaționale de comentarii, repostări de știri, posturi de recrutare, propagandă și conținut general al canalului.

Clasificatorul binar operează sub 200 de milisecunde per mesaj pe hardware de inferență exclusiv CPU. Pe setul de evaluare de producție, atinge 94,3% precizie și 89,7% recall. Cifra de recall nu este împinsă mai sus în mod intenționat — costul unui fals negativ în această etapă (un anunț real care nu trece la clasificarea LLM) este ridicat, deci pragul este setat conservativ pentru a maximiza recall-ul. Falsele pozitive în această etapă costă un apel complet de inferență LLM, ceea ce constituie compromisul controlat.

Perspectivă cheie: Poarta binară nu este blocajul de acuratețe — este un filtru de cost. Acuratețea este livrată de etapa LLM. Poarta există pentru a se asigura că LLM-ul gestionează doar mesajele operaționale candidate, reducând apelurile LLM zilnice cu aproximativ 78% față de rularea inferenței LLM pe întregul flux de mesaje.

Etapa 3 a pipeline-ului: clasificare și îmbogățire LLM

Mesajele care trec poarta binară intră în etapa de clasificare LLM. Corvus.Sense utilizează un prompt cu ieșire structurată care instruiește modelul să extragă și să clasifice fiecare dintre următoarele câmpuri din textul mesajului:

Organizația victimă. Organizația țintă numită sau implicită, normalizată la o formă canonică. Acolo unde mesajul numește o organizație specifică (de ex. un minister, o utilitate sau o instituție financiară), acel nume este extras verbatim. Acolo unde victima este implicată prin sector și geografie fără un nume specific, câmpul este populat ca null și marcat pentru revizuire de către analist.

Clasificarea sectorului. Una dintre opt etichete de taxonomie fixă: infrastructură critică, financiar, guvernamental, telecomunicații, energie, apărare, sănătate sau transport. Taxonomia fixă este intenționată — clasificarea cu text liber produce etichete inconsistente care nu pot fi agregate în mod fiabil. LLM-ului i se furnizează definiții pentru fiecare categorie și este instruit să selecteze o singură etichetă cea mai potrivită.

Atribuirea geografică. Codul de țară ISO 3166-1 alpha-2 pentru țara de operare a victimei. Acolo unde mai multe țări sunt numite ca ținte, toate sunt extrase ca matrice. Modelul este instruit explicit să distingă țara victimei de țara de origine prezumată a actorului — o sursă frecventă de erori în abordările naive de extracție.

Vectorul de atac. Una dintre șase categorii de vectori: DDoS, defacement, exfiltrare de date, ransomware, furt de acreditări sau compromiterea lanțului de aprovizionare. Atacurile cu vectori multipli sunt reprezentate ca matrice.

Scoruri de încredere. Pentru fiecare câmp extras, modelul returnează un scor de încredere de la 0 la 1. Promptul instruiește modelul să reprezinte incertitudinea epistemică autentică — un mesaj care spune „vom ataca energia ucraineană" produce încredere ridicată pentru geografie (UA) și sector (energie), dar încredere mai scăzută pentru vectorul de atac (nespecificat) și organizația victimă (nenumită). Scorurile nu sunt calibrare post-hoc; sunt derivate direct din reprezentarea incertitudinii modelului în timpul generării.

Promptul LLM este structurat pentru a produce un răspuns JSON conform unui schema strict. Analiza răspunsului validează schema la primire; răspunsurile malformate declanșează o reîncercare automată cu o instrucțiune suplimentară pentru corectarea erorii de formatare. Logica de reîncercare este limitată la două tentative; mesajele care produc în continuare ieșiri malformate după două reîncercări sunt marcate pentru revizuire de către analist și eliminate din procesarea automată.

Perspectivă cheie: Constrângerea taxonomiei fixe pentru sector și vectorul de atac este critică pentru utilizabilitatea operațională. Un LLM lăsat să genereze etichete de clasificare text liber va produce sinonime inconsistente — „rețea electrică", „infrastructură de electricitate" și „sector utilitar" se referă toate la ținte din sectorul energetic, dar nu pot fi agregate fără un pas de normalizare. Constrângerea la un set fix de etichete la momentul inferenței elimină această întreagă clasă de probleme de calitate a datelor downstream.

Construcția grafului lanțului de atac

Fiecare înregistrare de mesaj clasificat este scrisă în baza de date grafică a lanțului de atac după clasificarea LLM. Graful modelează peisajul amenințărilor ca un graf de proprietăți cu trei tipuri de noduri: actori de amenințare, organizații victimă și evenimente de atac. Muchiile reprezintă relații: „a condus" (actor la eveniment), „a vizat" (eveniment la victimă) și „a folosit vectorul" (eveniment la nodul taxonomiei vectorului de atac).

Când sosește o nouă înregistrare clasificată, motorul grafic efectuează rezolvarea entităților: verifică dacă organizația victimă numită există deja ca nod (folosind potrivirea fuzzy a numelui și dezambiguizarea codului de țară) și dacă canalul Telegram sursă se mapează la un profil de actor cunoscut. Dacă ambele se rezolvă, o muchie este creată care conectează nodul actorului la nodul victimei prin intermediul unui nou nod de eveniment de atac. Dacă actorul este nou (canalul nu a fost încă mapat la un profil), se creează un nod de actor provizoriu pentru revizuire de către analist.

Graful permite interogări pe care bazele de date plate nu le pot susține eficient. Exemple din fluxurile de lucru ale analiștilor: „Arătați toate organizațiile din sectorul energetic vizate de acest actor în ultimele 90 de zile, cu defalcarea vectorilor de atac." „Ce actori au vizat atât organizații din sectorul apărării, cât și din sectorul financiar din Polonia luna aceasta?" „Care este distribuția temporală a atacurilor acestui grup față de evenimentele cinetice din teatrul de operațiuni?" Aceste interogări rulează ca traversări grafice, returnând rezultate în secunde pe grafuri cu zeci de mii de noduri.

Monitorizarea amenințărilor bazată pe OSINT la acest nivel de structurare nu era realizabilă înainte de extracția bazată pe LLM la scara și acuratețea necesară pentru a popula un graf continuu din surse deschise. Abordările anterioare necesitau un efort semnificativ de analist manual per înregistrare, ceea ce limita densitatea și prospețimea grafului.

Analiza pattern-of-life pentru grupuri de actori de amenințare

Odată ce un profil de actor de amenințare acumulează suficientă istorie în graf (de obicei 7 sau mai multe zile de ingestie), Corvus.Sense calculează metrici de pattern-of-life. Acestea sunt derivate din proprietățile temporale și structurale ale nodurilor de eveniment de atac ale actorului în graf.

Distribuția orară a activității. Marcajele temporale ale evenimentelor de atac sunt grupate pe oră UTC din zi și zi a săptămânii. Majoritatea grupurilor aliniate la interese statale operează în orele de lucru din fusul orar al țării de origine; abaterile de la acest tipar (creșteri neobișnuite noaptea târziu, vârfuri în weekend) pot indica schimbări ale ritmului operațional sau implicarea mai multor subgrupuri distribuite geografic. Histograma orară a activității se actualizează zilnic.

Harta termică a preferințelor de țintire. Raportul atacurilor pe sector și geografie este calculat pe toată istoria de evenimente a actorului. Aceasta dezvăluie preferințele consecvente de țintire — un actor care a atacat infrastructura energetică ucraineană în 73% din evenimente este clar specializat, iar noile anunțuri împotriva țintelor energetice din partea acelui actor ar trebui să primească prioritate ridicată indiferent de scorul de încredere.

Urmărirea evoluției TTP. Distribuțiile vectorilor de atac sunt calculate pe ferestre glisante de 30 de zile și comparate cu linia de bază istorică a actorului. Un grup care a condus istoric operațiuni DDoS și care acum este clasificat ca efectuând evenimente de exfiltrare de date reprezintă o schimbare TTP — un semnal de informații de mare valoare care indică dezvoltarea capacităților sau schimbarea obiectivelor.

Perspectivă cheie: Analiza pattern-of-life este cea mai valoroasă nu pentru confirmarea a ceea ce știți deja despre un actor de amenințare, ci pentru detectarea momentului în care comportamentul acestuia se schimbă. Tiparele stabile sunt linii de bază utile; abaterile de la acele tipare sunt semnalul care justifică atenția analistului și potențiala escaladare către consumatorii de informații la nivel superior.

Generarea automată a rezumatelor executive

Corvus.Sense include un pipeline automat de generare a rezumatelor care produce produse de informații lizibile de către oameni din datele grafice structurate. Rezumatele sunt generate pe un program configurabil (zilnic, săptămânal sau la cerere) sau declanșate de evenimente prag (numărul de atacuri al unui actor urmărit care depășește o limită configurată într-o fereastră de timp).

Pipeline-ul de rezumat interoghează graful pentru domeniul actorului, sectorului sau geografiei relevant definit de șablonul de raport, recuperează înregistrările structurate de evenimente și metricile de pattern-of-life, și transmite acest context structurat unui model de generare cu un prompt de sinteză narativă. Ieșirea este un raport de informații în proză în registrul adecvat pentru consumatorii executivi — fără JSON, fără etichete de câmpuri, fără scoruri de încredere dacă nu sunt semnificative analitic.

Critic, modelul de generare a rezumatelor operează pe date structurate recuperate din graf, nu pe textul brut al mesajelor Telegram. Această separare arhitecturală previne halucinațiile din materialul sursă ambiguu: modelul de generare poate face referire numai la evenimente care există ca înregistrări clasificate validate în graf. Dacă un atac revendicat nu a trecut verificările de calitate ale clasificării, nu apare într-un rezumat.

Scoruri de încredere și gestionarea incertitudinii

Fiecare înregistrare clasificată în Corvus.Sense poartă scoruri de încredere la nivel de câmp. Aceste scoruri se transmit tuturor consumatorilor downstream: tabloul de bord al analistului afișează vizual încrederea, regulile de alertă pot fi configurate să se declanșeze numai peste un prag minim per câmp, iar exportul STIX mapează scorurile de încredere la proprietatea de încredere STIX.

Înregistrările pentru care orice câmp critic (sector, geografie sau atribuirea actorului) scade sub pragul configurat sunt plasate în coada de revizuire a analistului în loc să genereze alerte automate. Pragul este configurabil per implementare: instalațiile cu sensibilitate ridicată care monitorizează infrastructura critică pot reduce pragurile pentru a maximiza recall-ul; implementările de monitorizare mai largi pot crește pragurile pentru a reduce volumul cozii analistului.

Pentru câmpurile unde încrederea LLM-ului este marginală (între 0,65 și 0,80 implicit), Corvus.Sense trimite opțional mesajul pentru o a doua trecere LLM independentă folosind o formulare diferită a promptului. Când ambele treceri sunt de acord asupra valorii unui câmp, scorul de încredere este ridicat; când nu sunt de acord, câmpul este marcat ca contestat și ambele valori candidate sunt prezentate analistului.

Configurarea Corvus.Sense pentru urmărirea unui actor de amenințare specific

Secvența următoare descrie cum se configurează Corvus.Sense pentru monitorizarea țintită a unui grup de hackeri denumit pe canalele sale Telegram.

Pasul 1 — Identificați canalele Telegram ale actorului. Compilați ID-uri numerice de canale și @username-uri pentru toate canalele cunoscute operate de sau afiliate cu grupul țintă, inclusiv canalele oglindă și de rezervă. Corvus.Sense acceptă ambele formate.

Pasul 2 — Creați un profil de actor. În panoul Actors, creați un nou profil cu numele canonic al grupului și aliasurile cunoscute. Atribuiți ID-uri de tehnici MITRE ATT&CK care reflectă TTP-urile cunoscute ale grupului. Legați identificatorii canalului de acest profil. Din acest moment, toate mesajele de pe acele canale sunt asociate cu acest nod actor în graf.

Pasul 3 — Configurați domeniul de sector și geografie. Selectați sectoarele și codurile de țară pe care doriți să le monitorizați pentru acest actor. Atacurile din afara domeniului sunt în continuare ingerate și clasificate, dar excluse din generarea de alerte specifice actorului. Aceasta permite ingestia largă, menținând în același timp volumul de alertă concentrat pe evenimentele relevante operațional.

Pasul 4 — Setați pragurile de încredere și livrarea alertelor. Configurați pragurile minime de încredere per câmp. Pentru sectoarele de apărare și infrastructură critică, pragurile mai scăzute (0,65) maximizează recall-ul. Configurați livrarea alertelor prin e-mail, webhook sau un endpoint de integrare SIEM. Corvus.Sense suportă formatele de alertă CEF și JSON pentru ingestia SIEM.

Pasul 5 — Revizuiți și corectați clasificările inițiale. În primele 72 de ore, revizuiți toate înregistrările clasificate din coada analistului pentru acest actor, indiferent de scorul de încredere. Instrumentele de corecție inline permit editări la nivel de câmp. Corecțiile sunt înregistrate și pot fi trimise pentru a îmbunătăți calibrarea modelului pentru tiparele lingvistice ale acestui actor în timp.

Pasul 6 — Activați analiza pattern-of-life. După 7 zile de date acumulate de evenimente, activați vizualizarea pattern-of-life. Distribuțiile orare de activitate, hărțile termice ale preferințelor de țintire și histogramele TTP sunt calculate din graf și actualizate zilnic. Această vizualizare este intrarea principală pentru anticiparea comportamentului viitor de țintire.

Pasul 7 — Exportați informații structurate. Utilizați exportul profilului actorului pentru a genera produse de informații în format JSON, PDF sau bundle STIX 2.1. Exportul STIX mapează datele profilului actorului la obiectele STIX Threat Actor și Campaign pentru partajare prin TAXII sau import în platforme CTI externe.