{"id":488740,"date":"2026-07-27T13:33:13","date_gmt":"2026-07-27T13:33:13","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=488740"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=488740","title":{"rendered":"\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u00abLangGraph, \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 RAG + \u0421\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u043d\u044b\u0439 \u0434\u0432\u0438\u0436\u043e\u043a\u00bb: \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0433\u0440\u0430\u0444 \u0434\u043b\u044f\u00a0\u043f\u043e\u0442\u043e\u043a\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<h3>\u0412\u00a0\u0447\u0435\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430?<\/h3>\n<p>\u041f\u0440\u0438\u00a0\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043d\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u044e\u0442 \u043e\u0434\u0438\u043d \u0438\u0437\u00a0\u0434\u0432\u0443\u0445 \u043f\u0443\u0442\u0435\u0439:<\/p>\n<ul>\n<li>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439\u00a0\u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b. \u0420\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u0438, \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b,\u00a0\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442\u00a0\u0431\u044b\u0441\u0442\u0440\u043e. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e\u00a0\u043d\u0438\u043a\u0430\u043a \u043d\u0435\u00a0\u043f\u043e\u0439\u043c\u0430\u044e\u0442 \u043d\u043e\u0432\u044b\u0435, \u0440\u0430\u043d\u0435\u0435 \u043d\u0435\u00a0\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b. <\/p>\n<\/li>\n<li>\n<p>\u041f\u0443\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0439\u00a0\u2014 \u0441\u043a\u0430\u0440\u043c\u043b\u0438\u0432\u0430\u0442\u044c \u0441\u044b\u0440\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u00a0\u041b\u041b\u041c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e. \u0412\u00a0\u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434\u00a0\u0431\u044b\u0441\u0442\u0440\u043e \u0443\u043c\u0438\u0440\u0430\u0435\u0442. \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043c\u044b \u043d\u0435\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u0432\u00a0\u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043e\u0440\u043e\u0433\u043e \u0438 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e.<\/p>\n<\/li>\n<\/ul>\n<div class=\"floating-image\">\n<figure class=\"float full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d2a\/c12\/76c\/d2ac1276c98e98db2ee6e5bd8765455f.png\" alt=\"Pasted image 20260714193730.png\" title=\"2 \u043f\u0443\u0442\u0438\" width=\"762\" height=\"745\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/d2a\/c12\/76c\/d2ac1276c98e98db2ee6e5bd8765455f.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d2a\/c12\/76c\/d2ac1276c98e98db2ee6e5bd8765455f.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>2\u00a0\u043f\u0443\u0442\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u043e\u00a0\u0437\u0430\u0447\u0435\u043c \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0447\u0442\u043e\u2011\u0442\u043e \u043e\u0434\u043d\u043e? \u0418 \u0434\u0430, \u044f \u0437\u043d\u0430\u044e \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u043a\u0443 \u043f\u0440\u043e\u00a0\u0437\u0430\u0439\u0446\u0435\u0432, \u043d\u043e\u00a0\u0432\u0435\u0434\u044c \u0438 python\u00a0\u2014 \u0434\u0432\u0443\u0441\u0442\u0432\u043e\u043b\u043a\u0430.<\/p>\n<p>\u041c\u044b \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c <strong>\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u0443\u044e\u00a0\u043b\u0438\u043d\u0438\u044e SOC<\/strong>. \u0417\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c \u041b\u041b\u041c \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u043d\u044b\u0445 \u0434\u0432\u0438\u0436\u043a\u043e\u0432. \u041f\u043e\u043c\u0435\u0441\u0442\u0438\u043b\u043e\u0441\u044c \u0432\u0441\u0435 \u044d\u0442\u043e \u0432\u00a0\u043e\u0434\u0438\u043d \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0433\u0440\u0430\u0444.<\/p>\n<\/div>\n<p><strong>\u0421\u0442\u0430\u0442\u044c\u044f \u043e\u0431\u00a0\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435<\/strong>, \u0430\u00a0\u043d\u0435\u00a0\u0433\u043e\u0442\u043e\u0432\u043e\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0438.<br \/>\u041c\u044b \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d \u043d\u0430\u00a0\u043b\u043e\u0433\u0430\u0445 \u043a\u0438\u0431\u0435\u0440\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043d\u043e\u00a0\u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c <em>\u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0438 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0439<\/em>. \u041b\u043e\u0433\u0438\u00a0\u043b\u0438\u0448\u044c \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u044e\u0442\u00a0\u043a\u0430\u043a\u00a0\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f\u00a0\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438. YARA \u0438 Sigma \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u043d\u0430\u00a0\u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u0445 \u0434\u0432\u0438\u0436\u043a\u0430\u0445 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u00a0\u0442\u0435\u043a\u0441\u0442\u043e\u043c. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043d\u0438\u0436\u0435 \u0433\u0440\u0430\u0444 \u043c\u043e\u0436\u043d\u043e \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u00a0\u0440\u0430\u0437\u0431\u043e\u0440 \u043e\u0442\u0437\u044b\u0432\u043e\u0432, \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044e \u0441\u043f\u0430\u043c\u0430 \u0438\u043b\u0438\u00a0\u043c\u043e\u0434\u0435\u0440\u0430\u0446\u0438\u044e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438.<\/p>\n<h4>\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435:<\/h4>\n<ol start=\"2\">\n<li>\n<p><a href=\"#concept_idea\" rel=\"noopener noreferrer nofollow\">\u0418\u0434\u0435\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#graph_design\" rel=\"noopener noreferrer nofollow\">\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0433\u0440\u0430\u0444\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#ai-core\" rel=\"noopener noreferrer nofollow\">AI-\u044f\u0434\u0440\u043e<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#static_rules\" rel=\"noopener noreferrer nofollow\">\u0414\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0442\u043a\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#metrics\" rel=\"noopener noreferrer nofollow\">\u041c\u0435\u0442\u0440\u0438\u043a\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#dataset\" rel=\"noopener noreferrer nofollow\">\u0421\u0438\u043d\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u0430\u0442\u0430\u0441\u0435\u0442<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#conclusions\" rel=\"noopener noreferrer nofollow\">\u0412\u044b\u0432\u043e\u0434\u044b<\/a><\/p>\n<\/li>\n<\/ol>\n<hr\/>\n<p><a class=\"anchor\" name=\"concept_idea\" id=\"concept_idea\"><\/a><\/p>\n<h3>1. \u0418\u0434\u0435\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b<\/h3>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0f0\/213\/df0\/0f0213df0d6b0cee626de82791eaed2c.png\" alt=\"\u0421\u0445\u0435\u043c\u0430 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\" title=\"\u0421\u0445\u0435\u043c\u0430 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/0f0\/213\/df0\/0f0213df0d6b0cee626de82791eaed2c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0f0\/213\/df0\/0f0213df0d6b0cee626de82791eaed2c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0421\u0445\u0435\u043c\u0430 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430 \u0430\u043d\u0430\u043b\u0438\u0437\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0438 \u043b\u043e\u0433\u0438\u043a\u0443 \u0441\u0432\u044f\u0437\u0435\u0439 \u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0441\u0430\u043c. \u041d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435\u043c \u0438 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435\u043c Vector \u0438 Kafka \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0441\u044f \u0442\u0438\u043c\u043b\u0438\u0434 \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u0430\u00a0\u0432\u0441\u044f AI\u2011\u0447\u0430\u0441\u0442\u044c, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043b\u043e\u0433\u0438\u043a\u0438 \u0433\u0440\u0430\u0444\u0430 \u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0434\u0432\u0438\u0436\u043a\u043e\u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u00a0\u043b\u0435\u0436\u0430\u043b\u0430 \u043d\u0430\u00a0\u043c\u043d\u0435. \u0417\u0430\u0434\u0430\u0447\u0430 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0432\u00a0\u0440\u0430\u043c\u043a\u0430\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0443\u043c\u0430 \u0423\u0440\u0424\u0423 \u043a\u0430\u043a\u00a0<em>\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f 1-\u0439\u00a0\u043b\u0438\u043d\u0438\u0438 SOC<\/em> \u0441\u00a0\u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u00a0\u0431\u0430\u0437\u0435 MITRE.<\/p>\n<h4>\u041f\u043e\u0442\u043e\u043a \u043b\u043e\u0433\u043e\u0432<\/h4>\n<pre><code class=\"markdown\">[Log Files]        \u2193    [Vector] (Lua-\u0447\u0430\u043d\u043a\u0435\u0440: 250 \u0441\u0442\u0440\u043e\u043a, overlap 20)        \u2193[Kafka] (topic: processed-logs-batches)        \u2193[Consumer] (aiokafka, retry 3x, exp backoff, DLQ)        \u2193[LangGraph DAG] (8 \u0443\u0437\u043b\u043e\u0432)        \u2193[PostgreSQL] (Log + Report + Pending YARA Rules)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041b\u043e\u0433\u2011\u0444\u0430\u0439\u043b\u044b \u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f Vector, \u043d\u0430\u0440\u0435\u0437\u0430\u044e\u0442\u0441\u044f Lua\u2011\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c \u0432\u00a0\u0447\u0430\u043d\u043a\u0438 \u043f\u043e 250\u00a0\u0441\u0442\u0440\u043e\u043a \u0441\u00a0\u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0442\u0438\u0435\u043c 20\u00a0\u0441\u0442\u0440\u043e\u043a (\u0447\u0442\u043e\u0431\u044b \u043d\u0435\u00a0\u0440\u0430\u0437\u0440\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043d\u0430\u00a0\u0433\u0440\u0430\u043d\u0438\u0446\u0435). \u0414\u0430\u043b\u0435\u0435 \u0443\u0445\u043e\u0434\u044f\u0442 \u0432\u00a0Kafka. \u0422\u0430\u043c \u0438\u0445 \u043b\u043e\u0432\u0438\u0442 consumer \u0441\u00a0retry\u2011\u043b\u043e\u0433\u0438\u043a\u043e\u0439 \u0438 Dead Letter Queue \u0434\u043b\u044f\u00a0\u043d\u0435\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439. \u0418 \u0434\u0430\u043b\u0435\u0435 \u0444\u0430\u0439\u043b\u044b \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u0447\u0435\u0440\u0435\u0437 \u043d\u0430\u0448 \u0433\u0440\u0430\u0444.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0435\u0449\u0435 \u0431\u043b\u0438\u0436\u0435 \u043a\u00a0\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435.<\/p>\n<hr\/>\n<p><a class=\"anchor\" name=\"graph_design\" id=\"graph_design\"><\/a><\/p>\n<h3>2. \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0413\u0440\u0430\u0444\u0430<\/h3>\n<p>\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0432\u00a0\u044d\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438\u00a0\u2014\u00a0\u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0435 \u0446\u0435\u043f\u043e\u0447\u043a\u0438. \u041c\u044b \u043f\u043e\u0448\u043b\u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0434\u0430\u043b\u044c\u0448\u0435:<\/p>\n<pre><code class=\"python\">workflow = StateGraph(AnalysisState)workflow.add_node(\"prefilter\", nodes.prefilter_node)workflow.add_node(\"agent1\", nodes.agent1_node)workflow.add_node(\"description_agent\", nodes.description_agent_node)workflow.add_node(\"parse_logs\", nodes.parse_logs_node)workflow.add_node(\"agent2\", nodes.agent2_node)workflow.add_node(\"yara_scan\", nodes.yara_scan_node)workflow.add_node(\"sigma_scan\", nodes.sigma_scan_node)workflow.add_node(\"agent3\", nodes.agent3_node)# AI-\u0432\u0435\u0442\u043a\u0430workflow.add_edge(\"prefilter\", \"agent1\")workflow.add_edge(\"agent1\", \"agent3\")workflow.add_edge(\"agent1\", \"description_agent\")workflow.add_edge(\"description_agent\", \"agent2\")workflow.add_edge(\"agent2\", \"agent3\")# \u0414\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0442\u043a\u0430 (\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e AI)workflow.add_edge(\"parse_logs\", \"yara_scan\")workflow.add_edge(\"parse_logs\", \"sigma_scan\")workflow.add_edge(\"yara_scan\", \"agent3\")workflow.add_edge(\"sigma_scan\", \"agent3\")workflow.add_edge(START, \"prefilter\")workflow.add_edge(START, \"parse_logs\")<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>\u041a\u0430\u043a\u00a0\u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e:<\/strong><\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/349\/43c\/4b8\/34943c4b80f1e9a9d0e99a12ee9e39ac.png\" alt=\"\u0413\u0440\u0430\u0444 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 LangGraph DAG\" title=\"\u0413\u0440\u0430\u0444 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/349\/43c\/4b8\/34943c4b80f1e9a9d0e99a12ee9e39ac.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/349\/43c\/4b8\/34943c4b80f1e9a9d0e99a12ee9e39ac.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0413\u0440\u0430\u0444 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439<\/figcaption><\/div>\n<\/figure>\n<p>\u0415\u0441\u0442\u044c \u0434\u0432\u0435\u00a0<em>\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0435<\/em>\u00a0\u0432\u0435\u0442\u043a\u0438 (\u0434\u0430, \u0442\u0435 \u0441\u0430\u043c\u044b\u0435 \u043f\u0443\u0442\u0438).<\/p>\n<p>\u0412\u00a0\u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0441\u0435 \u043b\u043e\u0433\u0438 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044e \u0432 <strong>prefilter<\/strong>. \u0414\u0430\u043b\u0435\u0435 <strong>Agent 1<\/strong> \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043b\u043e\u0433\u0438, \u0432\u044b\u044f\u0432\u043b\u044f\u0435\u0442 \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u0438 \u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0433\u0440\u0443\u043f\u043f\u044b \u0441\u0442\u0440\u043e\u043a, \u0434\u043b\u044f\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 <strong>Description Agent<\/strong> \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u0439. <strong>Agent 2\u00a0(RAG)<\/strong> \u0438\u0449\u0435\u0442 MITRE ATT&amp;CK \u0442\u0435\u0445\u043d\u0438\u043a\u0438 \u0434\u043b\u044f\u00a0\u043a\u0430\u0436\u0434\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b \u043f\u043e\u00a0\u0435\u0451 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e.<\/p>\n<p>\u0412\u043e\u00a0\u0432\u0442\u043e\u0440\u043e\u0439 \u043b\u043e\u0433\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 <strong>parse_logs<\/strong>. \u0414\u0430\u043b\u0435\u0435 <strong>YARA<\/strong> \u0438 <strong>Sigma<\/strong> \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.<\/p>\n<p>\u0412\u0441\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u043f\u043e\u0442\u043e\u043a\u0430 \u0441\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u00a0Agent 3. \u041e\u043d \u0434\u0435\u043b\u0430\u0435\u0442 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0432\u043e\u0434\u043a\u0443: \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 YARA, Sigma, RAG \u0438 \u0430\u043d\u0430\u043b\u0438\u0437 \u043e\u0442\u00a0Agent 1\u00a0\u0432\u00a0\u043e\u0442\u0447\u0451\u0442.<\/p>\n<p>\u041c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0437\u0430\u0442\u0440\u0430\u0442\u044b \u043d\u0430\u00a0\u0442\u043e\u043a\u0435\u043d\u044b, \u0438 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 LLM, \u0430\u00a0\u0435\u0449\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043d\u0435\u00a0\u043b\u0443\u0447\u0448\u0438\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c LLM \u0441\u043e\u0432\u0441\u0435\u043c \u0433\u043e\u043b\u043e\u0434\u043d\u043e\u0439. Agent 1\u00a0\u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u043a\u00a0\u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432\u044b\u0448\u0435, \u043d\u043e\u00a0\u043f\u043e\u043a\u0430 \u044f \u0441\u043c\u043e\u0442\u0440\u0435\u043b \u043d\u0430\u00a0\u0441\u0445\u0435\u043c\u0443, \u0432\u00a0\u0433\u043e\u043b\u043e\u0432\u0443 \u043f\u0440\u0438\u0448\u043b\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0444\u0438\u0447\u0430.<\/p>\n<p><strong>\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0444\u0438\u0447\u0430:<\/strong> Agent 1\u00a0\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u00a0\u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0432\u043e\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0432\u00a0Agent 3\u00a0(\u0440\u0435\u0431\u0440\u043e\u00a0<code>agent1 \u2192 agent3<\/code>). \u0418 \u044d\u0442\u043e \u043d\u0435\u00a0\u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u0422\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f\u00a0<em>zero\u2011cost \u0431\u043e\u043d\u0443\u0441<\/em>\u00a0\u2014 Agent 1\u00a0\u0443\u0436\u0435 \u043f\u0440\u043e\u0433\u043d\u0430\u043b \u0432\u0441\u0435 \u043b\u043e\u0433\u0438 \u0447\u0435\u0440\u0435\u0437 LLM \u0434\u043b\u044f\u00a0\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438. \u041c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0441\u0438\u043c \u0435\u0433\u043e \u043d\u0430\u00a0\u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u043e\u0433\u043e\u00a0\u0436\u0435 \u0432\u0432\u043e\u0434\u0430 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u0430\u043a\u0438\u0435 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u044b \u043c\u043e\u0433\u0443\u0442\u00a0\u0431\u044b\u0442\u044c. \u0421\u0432\u043e\u0435\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0439 \u0442\u0435\u0441\u0442 \u043d\u0430 \u00ab\u043c\u0430\u0433\u0438\u044e LLM\u00bb. \u041d\u0430\u00a0\u0432\u044b\u0445\u043e\u0434\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u044b \u043e\u0431\u00a0\u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u0430\u0445 \u0443\u0441\u043b\u043e\u0432\u043d\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e (\u0431\u0435\u0437\u00a0\u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u0442\u0440\u0430\u0442\u044b \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u043e\u043a\u0435\u043d\u043e\u0432). Agent 3\u00a0\u043f\u043e\u0437\u0436\u0435 \u0440\u0435\u0448\u0438\u0442, \u0447\u0442\u043e\u00a0\u0438\u0437\u00a0\u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u043e, \u0430\u00a0\u0447\u0442\u043e\u00a0\u043d\u0435\u0442.<\/p>\n<hr\/>\n<p><a class=\"anchor\" name=\"ai-core\" id=\"ai-core\"><\/a><\/p>\n<h3>3. AI\u2011\u044f\u0434\u0440\u043e: Agent 1\u00a0\u2192 Agent 2\u00a0(RAG) \u2192 Agent 3<\/h3>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/517\/7da\/61f\/5177da61fb87d4c1db3038544a5ae2c6.png\" alt=\"AI-\u044f\u0434\u0440\u043e\" title=\"AI\u2011\u044f\u0434\u0440\u043e\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/517\/7da\/61f\/5177da61fb87d4c1db3038544a5ae2c6.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/517\/7da\/61f\/5177da61fb87d4c1db3038544a5ae2c6.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>AI\u2011\u044f\u0434\u0440\u043e<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u00a0\u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u043c\u043f\u0442\u043e\u0432, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u043e\u043d\u0438 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0435. \u0418\u0445 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438 \u0432 <a href=\"https:\/\/github.com\/axstiz\/AI-CyberLogAgent\/tree\/main\/log_ai_agent\/ai_agent_v2\/prompts\" rel=\"noopener noreferrer nofollow\">\/prompts<\/a>.<\/p>\n<h4>Agent 1\u00a0\u2014 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0430 \u043b\u043e\u0433\u043e\u0432<\/h4>\n<p>LLM \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u043a\u043d\u043e \u043b\u043e\u0433\u043e\u0432 \u0438 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 \u0438\u0437\u00a0\u043d\u0435\u0433\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f. <code>cmd.exe execution<\/code> \u043d\u0430\u00a0\u0444\u043e\u043d\u0435\u00a0<code>[warning]<\/code>\u00a0=&gt; \u0441\u043e\u0431\u044b\u0442\u0438\u0435. \u041f\u0430\u0447\u043a\u0430\u00a0<code>Authentication failed<\/code>\u00a0\u0441\u00a0\u0440\u0430\u0437\u043d\u044b\u0445 IP =&gt; \u0431\u0440\u0443\u0442\u0444\u043e\u0440\u0441.<\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u044d\u0442\u043e\u0433\u043e \u043e\u043d \u043f\u0440\u043e\u0431\u0443\u0435\u0442 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u0433\u2011\u0444\u0430\u0439\u043b \u0446\u0435\u043b\u0438\u043a\u043e\u043c (\u0444\u0438\u0447\u0430 \u0432\u044b\u0448\u0435).<\/p>\n<h4>RAG\u00a0\u2014 \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043f\u043e\u00a0MITRE ATT&amp;CK<\/h4>\n<p>\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u00ab\u0447\u0442\u043e\u2011\u0442\u043e \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435\u00a0\u0431\u044b\u043b\u043e\u00bb (\u043e\u0442 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0439 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432\u00a0\u0442\u0430\u043a\u043e\u043c \u0434\u0435\u043b\u0435 \u043c\u0430\u043b\u043e \u0442\u043e\u043b\u043a\u0443). \u0412\u0430\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c,\u00a0<em>\u043a\u0430\u043a\u0430\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0435\u0445\u043d\u0438\u043a\u0430<\/em> \u0438\u0437\u00a0MITRE ATT&amp;CK \u0437\u0430\u043c\u0435\u0447\u0435\u043d\u0430: T1110\u00a0(Brute Force), T1190\u00a0(Exploit Public\u2011Facing Application) \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.<\/p>\n<p>\u0412\u00a0\u044d\u0442\u043e\u043c \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0435 RAG \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a\u00a0<strong>\u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440<\/strong>, \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043d\u0443\u0436\u043d\u043e\u0439 \u0442\u0435\u0445\u043d\u0438\u043a\u0438 MITRE \u0434\u043b\u044f\u00a0\u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u0439 (\u0447\u0442\u043e\u2011\u0442\u043e \u0432\u00a0\u0441\u0442\u0438\u043b\u0435 \u00abIntent Classification \u0447\u0435\u0440\u0435\u0437 RAG\u00bb \u0438\u043b\u0438 \u00abFew\u2011shot Classifier\u00bb).<\/p>\n<p>\u042f \u0441\u0434\u0435\u043b\u0430\u043b \u0435\u0433\u043e\u00a0<em>\u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u043c<\/em> \u0438 \u0441\u00a0\u0442\u0430\u043a\u0438\u043c\u0438 \u044d\u0442\u0430\u043f\u0430\u043c\u0438:<\/p>\n<ol>\n<li>\n<p><strong>\u0423\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 LLM<\/strong>\u00a0\u2014 \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0435\u0440\u0435\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432\u00a0\u043f\u043e\u0438\u0441\u043a\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430\u00a0\u0440\u0443\u0441\u0441\u043a\u043e\u043c. \u0420\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u0431\u0430\u0437\u0430 \u0442\u0435\u0445\u043d\u0438\u043a MITRE \u0432\u00a0\u043d\u0430\u0448\u0435\u0439 ChromaDB\u00a0\u0431\u044b\u043b\u0430\u00a0\u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u0430 \u0438 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043d\u0430 \u043c\u043d\u043e\u0439 \u0441\u00a0\u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0439 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0441\u043b\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p><strong>\u0413\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a<\/strong>\u00a0\u2014 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 + BM25\u00a0\u0441\u00a0\u0432\u0435\u0441\u0430\u043c\u0438 0.6\/0.4.<\/p>\n<\/li>\n<li>\n<p><strong>LLM re\u2011rank<\/strong>\u00a0\u2014 \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0442\u043e\u043f-3\u00a0\u0442\u0435\u0445\u043d\u0438\u043a\u0438 \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0438\u0437\u00a0\u043d\u0438\u0445 \u043b\u0443\u0447\u0448\u0443\u044e.<\/p>\n<\/li>\n<\/ol>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f\u00a0ChromaDB (\u0431\u0430\u0437\u044b \u0437\u043d\u0430\u043d\u0438\u0439)<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"json\">{    \"technique_id\": \"T1687\",    \"technique_name\": \"Exploitation for Defense Impairment\",    \"description\": \"\u0417\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u0445 \u0437\u0430\u0449\u0438\u0442\u044b (\u0430\u043d\u0442\u0438\u0432\u0438\u0440\u0443\u0441\u044b, EDR, \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u044b) \u0434\u043b\u044f \u0438\u0445 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u043e\u0441\u043b\u0430\u0431\u043b\u0435\u043d\u0438\u044f. \u0426\u0435\u043b\u044c - \u043d\u0430\u0440\u0443\u0448\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u0438\u0441\u0442\u0435\u043c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0438 \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u044b.\",    \"tactic\": \"defense-impairment\",    \"keywords_ru\": [      \"\u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f \u0437\u0430\u0449\u0438\u0442\u044b\",      \"\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 EDR\",      \"\u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0430\u043d\u0442\u0438\u0432\u0438\u0440\u0443\u0441\u0430\",      \"\u043e\u0431\u0445\u043e\u0434 \u0437\u0430\u0449\u0438\u0442\u044b\",      \"\u043e\u0441\u043b\u0430\u0431\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u0449\u0438\u0442\u044b\"    ]  },<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 (demo)<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"python\">def hybrid_search(    self,    query: str,    k: int = 10,    vector_weight: float = 0.6,    bm25_weight: float = 0.4,    score_threshold: float = 0.3,) -&gt; list[dict]:    if not self._vectorstore:        raise RuntimeError(\"ChromaDB not initialized\")    if not self._bm25 or not self._technique_docs:        return self.search(query, k=k, score_threshold=score_threshold)    try:        # 1. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c 2k \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0438\u0437 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u0430\u043d\u0436\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430        vec_results = self._vectorstore.similarity_search_with_score(query, k=k * 2)        bm25_results = self._bm25.search(query, k=k * 2)        if not vec_results and not bm25_results:            return []        # 2. \u041d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f: \u0434\u0435\u043b\u0438\u043c \u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 score        vec_max = max((1.0 - s) for _, s in vec_results) if vec_results else 1.0        bm25_max = max(s for _, s in bm25_results) if bm25_results else 1.0        combined: dict[str, float] = {}        for doc, score in vec_results:            tid = doc.metadata.get(\"technique_id\", \"\")            if not tid:                continue            norm_sim = (1.0 - score) \/ vec_max if vec_max &gt; 0 else 0            combined[tid] = combined.get(tid, 0) + norm_sim * vector_weight  # * 0.6        for idx, bm25_score in bm25_results:            if idx &lt; len(self._technique_docs):                tid = self._technique_docs[idx][\"technique_id\"]                norm_bm25 = bm25_score \/ bm25_max if bm25_max &gt; 0 else 0                combined[tid] = combined.get(tid, 0) + norm_bm25 * bm25_weight  # * 0.4        # 3. \u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0438 \u0444\u0438\u043b\u044c\u0442\u0440 \u043f\u043e threshold        results = []        for tid, score in sorted(combined.items(), key=lambda x: x[1], reverse=True)[:k]:            if score &lt; score_threshold:                continue            for doc in self._technique_docs:                if doc[\"technique_id\"] == tid:                    results.append({                        \"content\": f\"passage: {doc['text']}\",                        \"metadata\": { ... },                        \"score\": score,                    })                    break        return results    except Exception as e:        return self.search(query, k=k, score_threshold=score_threshold)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p>\u0413\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043f\u043e\u0432\u044b\u0441\u0438\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0439: \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u0445\u043e\u0440\u043e\u0448\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f, \u043d\u043e\u00a0\u0438\u043d\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u043c\u0430\u0445\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u00a0\u0442\u043e\u0447\u043d\u044b\u043c\u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430\u043c\u0438, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0430\u0431\u0431\u0440\u0435\u0432\u0438\u0430\u0442\u0443\u0440\u0430\u043c\u0438 \u0438\u043b\u0438\u00a0\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u0443\u0442\u0438\u043b\u0438\u0442. BM25\u00a0\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u00a0\u043d\u0438\u043c\u0438.<\/p>\n<p>LLM re\u2011rank \u043d\u0443\u0436\u0435\u043d, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u0442\u0435\u0445\u043d\u0438\u043a\u0438 \u043e\u0447\u0435\u043d\u044c \u0431\u043b\u0438\u0437\u043a\u0438 \u043f\u043e\u00a0\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f\u043c. \u0427\u0430\u0441\u0442\u043e \u043f\u0435\u0440\u0432\u0430\u044f \u0432\u00a0\u0432\u044b\u0434\u0430\u0447\u0435 \u043d\u0435\u00a0\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0435\u0440\u043d\u043e\u0439, \u0445\u043e\u0442\u044f \u0438 \u043f\u043e\u0445\u043e\u0436\u0430. LLM \u0438\u043c\u0435\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0438 \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u0435\u0442 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435, \u0435\u0441\u043b\u0438 \u043e\u043d\u043e \u043b\u043e\u0436\u043d\u043e.<\/p>\n<h4>Agent 3\u00a0\u2014 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u0435\u0442\u043e\u043a, \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043e\u0442\u0447\u0451\u0442\u0430<\/h4>\n<p>\u0422\u0440\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043a\u0430\u043d\u0430\u043b\u0430 (RAG, YARA, Sigma) \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432\u00a0\u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0442\u0447\u0451\u0442. \u0421\u043e\u0431\u044b\u0442\u0438\u044f Agent 1, \u0441\u043e\u0432\u043f\u0430\u0432\u0448\u0438\u0435 \u0441\u00a0\u043b\u044e\u0431\u043e\u0439 \u0438\u0437\u00a0\u0442\u0440\u0451\u0445 \u0432\u0435\u0442\u043e\u043a, \u0438\u0434\u0443\u0442 \u0432\u00a0\u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442, \u043f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u043d\u0435\u00a0\u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f. \u0422\u0435, \u0447\u0442\u043e\u00a0\u043d\u0435\u00a0\u0441\u043e\u0432\u043f\u0430\u043b\u0438\u00a0\u2014 \u0432\u00a0\u0431\u043b\u043e\u043a\u00a0\u00ab\u0422\u0440\u0435\u0431\u0443\u044e\u0442 \u0440\u0443\u0447\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438\u00bb\u00a0\u0441\u00a0\u043c\u0435\u0442\u0430\u2011\u043f\u043e\u043b\u0435\u043c\u00a0<code>unconfirmed_events_count<\/code>, \u0431\u0435\u0437\u00a0\u0432\u043b\u0438\u044f\u043d\u0438\u044f \u043d\u0430\u00a0severity.<\/p>\n<p>LLM \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u0430\u0442\u0430\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435\u0442 \u043d\u0438 \u0432\u00a0MITRE, \u043d\u0438 \u0432\u00a0YARA\/Sigma). \u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043d\u0430\u0445\u043e\u0434\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c. \u041f\u0443\u0441\u0442\u044c \u043b\u0443\u0447\u0448\u0435 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a \u0432\u0438\u0434\u0438\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0438 \u0440\u0435\u0448\u0430\u0435\u0442 \u0441\u0430\u043c. \u042d\u0442\u043e \u043a\u0430\u043a\u00a0\u043f\u0435\u0440\u0435\u043a\u0440\u0435\u0441\u0442\u043d\u0430\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f + \u00ab\u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0432\u00a0\u043a\u043e\u043d\u0442\u0443\u0440\u0435\u00bb.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a13\/36d\/f3f\/a1336df3f2a51ec406565c27e3638d82.png\" alt=\"\u0421\u0443\u043c\u043c\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f, \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435, \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\" title=\"\u0421\u0443\u043c\u043c\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f, \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0432\u00a0\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/a13\/36d\/f3f\/a1336df3f2a51ec406565c27e3638d82.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a13\/36d\/f3f\/a1336df3f2a51ec406565c27e3638d82.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0421\u0443\u043c\u043c\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f, \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0432\u00a0\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u043b\u044f\u00a0\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 Agent 3\u00a0\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u043e\u0442\u0447\u0435\u0442 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u043c\u0438 \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u044f\u043c\u0438 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0435\u0433\u043e \u0432\u00a0\u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445. \u0418\u0437\u00a0\u043d\u0435\u0435 \u043e\u0442\u0447\u0435\u0442\u044b \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432\u00a0\u0447\u0430\u0442 \u0441\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u043d\u0430\u00a0\u0441\u0430\u0439\u0442\u0435.<\/p>\n<hr\/>\n<p><a class=\"anchor\" name=\"static_rules\" id=\"static_rules\"><\/a><\/p>\n<h3>4. YARA \u0438 Sigma\u00a0\u2014 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0442\u043a\u0430<\/h3>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e30\/1ae\/dca\/e301aedca34c70d0124226d8a797fa80.png\" alt=\"\u0414\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0442\u043a\u0430\" title=\"\u0414\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0442\u043a\u0430\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/e30\/1ae\/dca\/e301aedca34c70d0124226d8a797fa80.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e30\/1ae\/dca\/e301aedca34c70d0124226d8a797fa80.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0414\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0442\u043a\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 8\u00a0YARA \u0438 9\u00a0Sigma \u043f\u0440\u0430\u0432\u0438\u043b \u043a\u0430\u043a\u00a0\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0431\u0430\u0437\u0443. \u0412\u00a0\u0446\u0435\u043b\u043e\u043c, \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c, \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0432\u0435\u0431\u2011\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441. \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0435\u00a0\u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u0430 \u043a\u00a0\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u043d\u0430\u0431\u043e\u0440\u0443.<\/p>\n<h4>YARA \u043f\u0440\u0430\u0432\u0438\u043b\u0430<\/h4>\n<p>\u0412\u00a0\u043d\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u043b\u043e\u0433\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 YARA \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u00a0\u0442\u0435\u043a\u0441\u0442\u043e\u043c, \u0430\u00a0\u043d\u0435\u00a0\u043f\u043e\u00a0\u043f\u0440\u044f\u043c\u043e\u043c\u0443 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e. \u041e\u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0430\u044f, \u043d\u043e\u00a0\u043d\u0430\u0442\u044f\u043d\u0443\u0442\u0430\u044f \u043d\u0430\u00a0\u0442\u0435\u043a\u0441\u0442. \u0412\u00a0\u043e\u0431\u0449\u0435\u043c \u0432\u0438\u0434\u0435\u00a0\u2014 \u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u043d\u0430\u0434 <em>yara\u2011python<\/em>.<br \/>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 <code>yara.compile()<\/code> \u0438 <code>rules.match(data=...)<\/code>\u00a0\u2014\u00a0\u0431\u044b\u0441\u0442\u0440\u044b\u0439 C\u2011\u0448\u043d\u044b\u0439 \u0434\u0432\u0438\u0436\u043e\u043a, \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0439 <code>.yar<\/code> \u0444\u0430\u0439\u043b\u044b \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u043c.<\/p>\n<details class=\"spoiler\">\n<summary>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f YARA \u0434\u0432\u0438\u0436\u043a\u0430 (demo)<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"python\">import yaraclass YaraEngine:    def __init__(self, rules_path):        filepaths = {f.stem: str(f) for f in rules_path.glob(\"*.yar\")}        self._rules = yara.compile(filepaths=filepaths)    def scan(self, parsed_logs: list[dict]) -&gt; list[dict]:        results = []        for log in parsed_logs:            scan_data = \" \".join(filter(None, [                log.get(\"message\", \"\"), log.get(\"uri\", \"\"),                log.get(\"user_agent\", \"\"), log.get(\"referer\", \"\")            ]))            matches = self._rules.match(data=scan_data.encode(\"utf-8\"))            for m in matches:                results.append({                    \"rule\": m.rule,                    \"severity\": m.meta.get(\"severity\", \"unknown\"),                    \"mitre_ref\": m.meta.get(\"mitre_ref\", \"\"),                })        return results<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<h4>Sigma \u043f\u0440\u0430\u0432\u0438\u043b\u0430<\/h4>\n<p>\u0421\u00a0\u043d\u0438\u043c\u0438 \u0447\u0443\u0442\u044c \u0437\u0430\u043d\u044f\u0442\u043d\u0435\u0435. \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e rule\u2011base \u0434\u0432\u0438\u0436\u043e\u043a, \u0441\u043e \u0441\u0442\u0438\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u0434\u00a0Sigma \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u043c. YAML \u043f\u0430\u0440\u0441\u0438\u0442\u0441\u044f \u0432\u00a0\u0441\u043f\u0438\u0441\u043e\u043a \u0443\u0441\u043b\u043e\u0432\u0438\u0439, \u0437\u0430\u0442\u0435\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 <code>contains<\/code>, <code>startswith<\/code>, <code>endswith<\/code>, <code>re<\/code>. \u0427\u0443\u0442\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435, \u0447\u0435\u043c YARA \u043d\u043e\u00a0\u0433\u0438\u0431\u0447\u0435 \u043f\u043e\u0434\u00a0\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043b\u043e\u0433\u0438.<\/p>\n<details class=\"spoiler\">\n<summary>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f Sigma \u0434\u0432\u0438\u0436\u043a\u0430 (demo)<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"python\">import yamlclass SigmaEngine:    def __init__(self, rules_path):        self._rules = []        for yml_file in rules_path.glob(\"*.yml\"):            with open(yml_file) as f:                data = yaml.safe_load(f)            selections = {}            for key, val in data.get(\"detection\", {}).items():                if isinstance(val, dict):                    selections[key] = self._parse_selection(val)            self._rules.append({                \"title\": data.get(\"title\"),                \"level\": data.get(\"level\", \"medium\"),                \"selections\": selections,                \"condition\": data[\"detection\"].get(\"condition\", \"\"),            })    def scan(self, parsed_logs):        results = []        for rule in self._rules:            for log in parsed_logs:                text = \" \".join(filter(None, [log.get(k, \"\") for k in                    (\"message\", \"uri\", \"user_agent\", \"referer\")]))                matched = []                for sel_name, conditions in rule[\"selections\"].items():                    if all(self._check_cond(f, m, v, text)                           for f, m, v in conditions):                        matched.append(sel_name)                if matched:                    results.append({                        \"title\": rule[\"title\"],                        \"severity\": rule[\"level\"],                        \"matched_logs\": matched,                    })        return results    def _parse_selection(self, sel: dict) -&gt; list[tuple]:        parsed = []        for field, value in sel.items():            modifier = \"equals\"            if \"|\" in field:                field, modifier = field.split(\"|\", 1)            for v in (value if isinstance(value, list) else [value]):                parsed.append((field.lower(), modifier.lower(), str(v)))        return parsed<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<h4>\u0410\u0432\u0442\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f YARA\u2011\u043f\u0440\u0430\u0432\u0438\u043b<\/h4>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3b6\/25b\/c8e\/3b625bc8e0736aad561f2c8dc404cbb9.png\" alt=\"\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f YARA\" title=\"\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f YARA\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/3b6\/25b\/c8e\/3b625bc8e0736aad561f2c8dc404cbb9.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3b6\/25b\/c8e\/3b625bc8e0736aad561f2c8dc404cbb9.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f YARA<\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u043e\u0433\u0434\u0430 RAG \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0442\u0435\u0445\u043d\u0438\u043a\u0443 \u0431\u0435\u0437\u00a0\u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u0432\u00a0YARA, Agent 3\u00a0\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u00a0<strong>\u0430\u0432\u0442\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440<\/strong>:<br \/>LLM \u043f\u0438\u0448\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043f\u043e\u00a0\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0442\u0435\u0445\u043d\u0438\u043a\u0438 \u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c \u043b\u043e\u0433\u043e\u0432, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044e, \u0432\u00a0\u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 LLM\u2011\u0440\u0435\u0432\u044c\u044e. \u041f\u0440\u0438\u00a0\u043e\u0448\u0438\u0431\u043a\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043f\u043e\u00a0\u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438, \u0434\u043e 3\u00a0\u043f\u043e\u043f\u044b\u0442\u043e\u043a. \u0413\u043e\u0442\u043e\u0432\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u00a0<code>PendingYaraRules<\/code>, \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u00a0\u0432\u0435\u0431\u2011\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435, \u0433\u0434\u0435 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442 \u0438\u043b\u0438\u00a0\u043e\u0442\u043a\u043b\u043e\u043d\u044f\u0435\u0442 \u0435\u0433\u043e.<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u0430\u0432\u0438\u043b \u0432\u00a0\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u044b, \u043f\u0440\u0438\u0447\u0435\u043c \u0441\u043d\u043e\u0432\u0430 \u0441 \u00abhuman in the loop\u00bb.<\/p>\n<p>\u0414\u0432\u0438\u0436\u043a\u0438 \u0438 \u0430\u0432\u0442\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u0430\u0432\u0438\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u044b: \u0447\u0435\u0440\u0435\u0437 \u0432\u0435\u0431\u2011\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u043b\u0438\u0441\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u0435 \u043b\u043e\u0433\u0438 \u0438\u0437\u00a0<a href=\"https:\/\/github.com\/axstiz\/AI-CyberLogAgent\/tree\/main\/logs_examples\" rel=\"noopener noreferrer nofollow\"><code>logs_examples\/<\/code><\/a>.<\/p>\n<hr\/>\n<p><a class=\"anchor\" name=\"metrics\" id=\"metrics\"><\/a><\/p>\n<h3>5. \u0427\u0442\u043e\u00a0\u0441\u00a0\u043c\u0435\u0442\u0440\u0438\u043a\u0430\u043c\u0438?<\/h3>\n<h4>\u041c\u0435\u0442\u0440\u0438\u043a\u0438 (RAG \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438)<\/h4>\n<p>\u041d\u0430\u00a0\u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435\u00a0<a href=\"https:\/\/github.com\/axstiz\/AI-CyberLogAgent\/tree\/main\/log_ai_agent\/ai_agent_v2\/metrics\/TESTS_DATA\/test2\/\" rel=\"noopener noreferrer nofollow\"><code>test2\/<\/code><\/a>\u00a0\u2014 \u043f\u043e\u0442\u043e\u043a 43\u00a0\u043c\u0438\u043d\u0443\u0442\u044b \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043b\u043e\u0433\u043e\u0432, \u043e\u043a\u043e\u043b\u043e 850\u00a0\u0441\u0442\u0440\u043e\u043a, 38\u00a0\u0442\u0435\u0445\u043d\u0438\u043a MITRE \u0432\u00a0ground truth:<\/p>\n<ul>\n<li>\n<p><strong>Precision:<\/strong>\u00a085.7% (30\u00a0TP \/ 35\u00a0\u0432\u0441\u0435\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0439) <\/p>\n<\/li>\n<li>\n<p><strong>Recall:<\/strong>\u00a078.9% (30\u00a0TP \/ 38\u00a0\u0432\u0441\u0435\u0433\u043e \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0445) <\/p>\n<\/li>\n<li>\n<p><strong>F1:<\/strong>\u00a00.82 <\/p>\n<\/li>\n<\/ul>\n<h4>\u041f\u0435\u0440\u0435\u043a\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0432\u00a0T1190<\/h4>\n<p>5\u00a0\u0438\u0437 8\u00a0false negatives\u00a0\u2014 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0435\u0440\u0435\u043a\u043e\u0441 \u0432\u00a0T1190\u00a0\u00abExploit Public\u2011Facing Application\u00bb. \u041e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c RAG\u2011\u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f \u00ab\u0441\u0432\u0430\u043b\u043a\u0430\u00bb: \u0432\u0441\u0451, \u0447\u0442\u043e\u00a0\u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430\u00a0\u0432\u0435\u0431\u2011\u0430\u0442\u0430\u043a\u0443, \u043d\u043e\u00a0\u043d\u0435\u00a0\u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434\u00a0\u0434\u0440\u0443\u0433\u0438\u0435 \u0442\u0435\u0445\u043d\u0438\u043a\u0438, \u0432\u0435\u0440\u043d\u0435\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u00a0\u043d\u0435\u00a0\u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u00a0\u043b\u043e\u0433\u0430\u043c) \u0443\u0445\u043e\u0434\u0438\u0442 \u0442\u0443\u0434\u0430. \u041f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0442\u0430\u043a, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u0435\u0436\u0434\u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0442\u0435\u0445\u043d\u0438\u043a\u0430\u043c\u0438 \u0440\u0430\u0437\u043c\u044b\u0442\u044b.<\/p>\n<blockquote>\n<p>\u0411\u043e\u043b\u0435\u0435 \u043a\u043e\u043d\u0442\u0440\u0430\u0441\u0442\u043d\u044b\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0432\u00a0\u0431\u0430\u0437\u0435 \u0437\u043d\u0430\u043d\u0438\u0439 (\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0435\u0445\u043d\u0438\u043a\u0438 \u0443\u0436\u0435 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u044b, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0438 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0430\u043c\u0438 \u043f\u043e\u00a0\u0441\u0435\u0431\u0435) \u043c\u043e\u0433\u0443\u0442 \u0443\u0431\u0440\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0435\u0440\u0435\u043a\u043e\u0441 \u0438\u043b\u0438\u00a0\u0441\u043d\u0438\u0437\u0438\u0442\u044c \u0435\u0433\u043e.<\/p>\n<\/blockquote>\n<h4>\u0414\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u043e\u0432<\/h4>\n<p>\u0411\u044b\u043b\u0430 \u0437\u0430\u0434\u0443\u043c\u043a\u0430, \u0447\u0442\u043e\u00a0\u043e\u0434\u043d\u043e \u0438 \u0442\u043e\u00a0\u0436\u0435 \u043e\u043a\u043d\u043e \u043b\u043e\u0433\u043e\u0432 \u043c\u043e\u0436\u0435\u0442\u00a0\u0431\u044b\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043e RAG \u0432\u00a0\u0440\u0430\u043c\u043a\u0430\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0433\u0440\u0443\u043f\u043f \u0441\u043e\u0431\u044b\u0442\u0438\u0439 (\u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432\u00a0\u043f\u0440\u043e\u043c\u043f\u0442\u0435). \u041d\u043e\u00a0\u0442\u0430\u043a\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0438\u043d\u043e\u0433\u0434\u0430 \u0434\u0430\u0435\u0442 \u043d\u0430\u00a0\u0432\u044b\u0445\u043e\u0434\u0435 \u0434\u0432\u0430 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u2011\u0431\u043b\u043e\u043a\u0430. \u042d\u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u00a0\u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0434\u0435\u0434\u0443\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043d\u0430\u00a0\u0443\u0440\u043e\u0432\u043d\u0435 Agent 3. \u0427\u0430\u0441\u0442\u044c \u0438\u0437 5\u00a0false positives \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430\u00a0\u0442\u0430\u043a\u0438\u0435 \u0434\u0443\u0431\u043b\u0438\u00a0\u2014 \u0442\u043e \u0435\u0441\u0442\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e RAG \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0432\u044b\u0448\u0435, \u0447\u0435\u043c \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043c\u0435\u0442\u0440\u0438\u043a\u0438.<\/p>\n<blockquote>\n<p>\u0418\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u2011\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0438\u043d\u0433\u043e\u043c: \u0441\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0442\u0435\u0445\u043d\u0438\u043a\u0438 \u043f\u0435\u0440\u0435\u0434 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u043e\u0442\u0447\u0451\u0442\u043e\u043c<\/p>\n<\/blockquote>\n<h4>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/h4>\n<p><strong>3.5\u00a0\u0441\u0442\u0440\u043e\u043a\u0438\/\u0441\u0435\u043a.<\/strong><br \/>\u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 LLM\u2011\u0432\u044b\u0437\u043e\u0432\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u0433\u0440\u0430\u0444\u0430 \u043e\u0447\u0435\u043d\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u044e\u0442 \u0430\u043d\u0430\u043b\u0438\u0437. Agent 1\u00a0\u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442, \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 70k \u0442\u043e\u043a\u0435\u043d\u043e\u0432, \u043f\u043e\u0442\u043e\u043c RAG re\u2011rank \u0434\u043b\u044f\u00a0\u043a\u0430\u0436\u0434\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b, \u043f\u0443\u0441\u0442\u044c \u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u00a0\u2014 \u0435\u0449\u0451 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u043f\u0440\u0438\u0447\u0435\u043c \u043d\u043e\u0432\u044b\u0435 YARA \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043f\u0440\u0438\u00a0\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c, \u0438 \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u0432\u0440\u0435\u043c\u044f. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0435\u0449\u0435 \u043f\u0440\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043a\u00a0\u043e\u0431\u043b\u0430\u0447\u043d\u043e\u043c\u0443 Gemini 2.5\u00a0Flash, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0431\u043e\u0442\u043b\u0438\u0432\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b \u043d\u0430\u0448 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0449\u0438\u043a, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u043d\u0430\u0448\u0438 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0438 \u043d\u0435\u00a0\u0432\u044b\u0432\u043e\u0437\u0438\u043b\u0438 \u043d\u0443\u0436\u043d\u044b\u0435 \u043d\u0430\u043c \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<p>\u0423\u00a0\u043d\u0430\u0441 \u043d\u0435\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e GPU. \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0434\u043b\u044f\u00a0on\u2011premise, \u043d\u043e\u00a0\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430\u00a0\u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 LLM. \u00ab\u0423\u0440\u043e\u0431\u043e\u0440\u043e\u0441\u00bb \u043a\u0430\u043a\u043e\u0439\u2011\u0442\u043e&#8230; \u043d\u0435\u00a0\u0438\u043d\u0430\u0447\u0435. \u0422\u0430\u043a \u0447\u0442\u043e\u00a0\u043d\u0430\u00a0\u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0435\u00a0\u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043c\u0435\u0440\u0438\u0442\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043d\u0430\u00a0\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c\u00a0\u0436\u0435\u043b\u0435\u0437\u0435.<\/p>\n<blockquote>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0431\u0430\u0442\u0447\u0438\u043d\u0433 \u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0434\u043e 10\u201320\u00a0\u0441\u0442\u0440\u043e\u043a\/\u0441\u0435\u043a.<\/p>\n<\/blockquote>\n<p>\u0414\u043b\u044f\u00a0\u043c\u043d\u043e\u0433\u0438\u0445 \u0437\u0430\u0434\u0430\u0447 \u0432\u043d\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043b\u043e\u0433\u043e\u0432 \u0447\u0430\u0441\u0442\u044c \u0438\u0437\u00a0\u044d\u0442\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043d\u0435\u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430. \u0414\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f\u00a0\u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043c\u043e\u0433\u0443\u0442\u00a0\u0431\u044b\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0442\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u043c\u0438, \u0447\u0442\u043e\u00a0\u043f\u043e\u0432\u044b\u0441\u0438\u0442 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0438\u00a0\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0445 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f\u0445 \u0438 \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442 \u0438\u0445 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435. \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0435\u0442 \u043f\u0440\u0438\u00a0\u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0438 \u043d\u0430\u00a0\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c\u00a0\u0436\u0435\u043b\u0435\u0437\u0435 \u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0438 \u043e\u0431\u044a\u0435\u043c\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0434\u043b\u044f\u00a0\u0430\u043d\u0430\u043b\u0438\u0437\u0430.<\/p>\n<hr\/>\n<p><a class=\"anchor\" name=\"dataset\" id=\"dataset\"><\/a><\/p>\n<h3>6. \u0421\u0438\u043d\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u0430\u0442\u0430\u0441\u0435\u0442<\/h3>\n<p>\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043f\u043e\u0442\u043e\u043a\u043e\u043c \u0432\u00a0\u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435\u00a0<a href=\"https:\/\/github.com\/axstiz\/AI-CyberLogAgent\/tree\/main\/mitre_log_simulator\" rel=\"noopener noreferrer nofollow\"><code>mitre_log_simulator\/<\/code><\/a>\u00a0(\u043a\u043e\u0441\u0442\u044b\u043b\u044c \u00ab\u043d\u0430 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044f\u00bb) \u043d\u0430\u00a0\u043e\u0441\u043d\u043e\u0432\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430\u00a0<strong>Atomic Red Team<\/strong>. \u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0447\u0438\u0441\u0442\u0430\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u0430\u044f \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u044f, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u0430\u0440\u0441\u0438\u043d\u0433 \u0442\u0435\u0445\u043d\u0438\u043a \u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u0441\u0442\u0440\u043e\u043a. \u0412\u0441\u0435 \u044d\u0442\u043e \u0431\u0435\u0437\u00a0\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434 \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435. \u041f\u043e\u043a\u0440\u044b\u0442\u043e 88+\u00a0\u0442\u0435\u0445\u043d\u0438\u043a \u043c\u0430\u0442\u0440\u0438\u0446\u044b. \u0410\u0442\u0430\u043a\u0438 \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u044b\u00a0<code>[warning]<\/code>\u00a0\/\u00a0<code>[error]<\/code>\u00a0\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043f\u0440\u044f\u043c\u044b\u0435 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438: <code>cmd.exe execution<\/code>, <code>multiple failed login attempts<\/code>.<\/p>\n<pre><code class=\"markdown\">[Fri Jun 05 16:42:28 2026] [warning] [client 10.0.84.159] cmd.exe execution: cmd.exe \/c \"...\"<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u043b\u044f\u00a0LLM \u043d\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e\u00a0\u044d\u0442\u043e \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0438\u0439 \u043d\u0435\u00a0\u0441\u0442\u0430\u043d\u0435\u0442 \u0442\u0430\u043a \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0435\u0431\u044f: <code>cmd.exe execution<\/code>, \u0430\u00a0\u0431\u0443\u0434\u0435\u0442 \u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0434\u00a0\u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0442\u0440\u0430\u0444\u0438\u043a. \u0412\u043f\u043e\u043b\u043d\u0435 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0447\u0442\u043e\u00a0\u0432\u00a0\u0431\u043e\u043b\u0435\u0435 \u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u043e\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435 Recall \u0431\u0443\u0434\u0435\u0442 \u043d\u0438\u0436\u0435.<\/p>\n<p>RAG \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442 MITRE\u2011\u0442\u0435\u0445\u043d\u0438\u043a\u0438 \u0434\u0430\u0436\u0435 \u043d\u0430\u00a0\u043d\u0430\u0448\u0435\u043c \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u043e\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0410\u00a0\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0442\u0438 \u0441\u00a0\u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0435\u043b\u044c\u044e\u00a0\u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430\u00a0\u043f\u043e\u0442\u043e\u043a\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u0438 \u0442\u0430\u043a\u0438\u0435 \u0444\u043e\u043a\u0443\u0441\u044b \u0441\u00a0\u0441\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u043e\u0439 \u043f\u043e\u043c\u043e\u0433\u043b\u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0432\u00a0\u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438.<\/p>\n<hr\/>\n<p><a class=\"anchor\" name=\"conclusions\" id=\"conclusions\"><\/a><\/p>\n<h3>7. \u0412\u044b\u0432\u043e\u0434\u044b<\/h3>\n<p>\u0418\u0434\u0435\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e\u00a0\u0434\u043e\u0440\u043e\u0433\u043e \u0432\u00a0\u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445, \u0432\u00a0\u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f\u00a0\u043a\u0438\u0431\u0435\u0440\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p><strong>\u0423\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u0435 \u0434\u043b\u044f\u00a0SOC\u2011\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432.<\/strong>\u00a0\u0412\u00a0\u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u043c SOC \u043f\u0435\u0440\u0432\u0430\u044f\u00a0\u043b\u0438\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u00a0\u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430\u043c\u0438: SIEM\u2011\u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0438 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u043e\u0432. \u041c\u044b \u0440\u0435\u0448\u0430\u043b\u0438 \u0434\u0440\u0443\u0433\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443. \u042d\u0442\u043e \u043d\u0435\u00a0\u0437\u0430\u043c\u0435\u043d\u0430 SOC\u2011\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c, \u0430\u00a0\u0441\u043a\u043e\u0440\u0435\u0435\u00a0\u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u043b\u043e\u0439 \u0434\u0435\u0442\u0435\u043a\u0442\u0430\u00a0\u2014 \u0434\u043b\u044f\u00a0\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432, \u0433\u0434\u0435 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440 \u0435\u0449\u0451 \u043d\u0435\u0442 \u0438\u043b\u0438\u00a0\u0438\u0445 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0435\u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e.<\/p>\n<h4>\u041f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435<\/h4>\n<p>\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0435\u0440\u0432\u043e\u0439\u00a0\u043b\u0438\u043d\u0438\u0438 SOC\u00a0\u2014 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440. \u0417\u0430\u043c\u0435\u043d\u0430 YARA \u043d\u0430\u00a0\u0434\u0432\u0438\u0436\u043e\u043a \u043c\u043e\u0434\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, RAG\u00a0\u2014 \u043d\u0430\u00a0\u0431\u0430\u0437\u0443 \u0437\u043d\u0430\u043d\u0438\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0442\u043e\u043c\u0443\u00a0\u0436\u0435 \u0433\u0440\u0430\u0444\u0443 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0438\u043b\u0438\u00a0\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b.<\/p>\n<p>\u041f\u0430\u0442\u0442\u0435\u0440\u043d\u00a0<code>LangGraph + hybrid RAG + deterministic engine<\/code>\u00a0\u043d\u0430\u00a0\u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u0435\u043d.<\/p>\n<p><a href=\"https:\/\/github.com\/axstiz\/AI-CyberLogAgent\" rel=\"noopener noreferrer nofollow\">\u0412\u0435\u0441\u044c \u043a\u043e\u0434 \u043e\u0442\u043a\u0440\u044b\u0442 \u0432\u00a0\u043c\u043e\u0435\u043c \u0444\u043e\u0440\u043a\u0435 \u043d\u0430\u00a0GitHub.<\/a>\u00a0\u0412\u00a0\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0435\u0441\u0442\u044c \u0442\u0435\u0441\u0442\u044b \u0432\u00a0pipeline_tests\/, docker\u2011compose \u043d\u0430 5\u00a0\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, CI\/CD (Docker Hub + \u0437\u0435\u0440\u043a\u0430\u043b\u043e \u0434\u043b\u044f\u00a0GitVerse), \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0434\u043b\u044f\u00a0RAG.\u00a0<strong>\u0414\u043b\u044f\u00a0\u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u0442\u0430\u0440\u0442\u0430 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0431\u0440\u0430\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439<\/strong> <a href=\"https:\/\/github.com\/Mitoshi-Team\/AI-CyberLogAgent\/releases\/tag\/1.0.1\" rel=\"noopener noreferrer nofollow\"><strong>\u0440\u0435\u043b\u0438\u0437 v1.0.1<\/strong><\/a>\u00a0(\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0432\u00a0README).<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1063584\/\">https:\/\/habr.com\/ru\/articles\/1063584\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0412\u00a0\u0447\u0435\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430?\u041f\u0440\u0438\u00a0\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043d\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u044e\u0442 \u043e\u0434\u0438\u043d \u0438\u0437\u00a0\u0434\u0432\u0443\u0445 \u043f\u0443\u0442\u0435\u0439:\u041f\u0435\u0440\u0432\u044b\u0439\u00a0\u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b. \u0420\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u0438, \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b,\u00a0\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442\u00a0\u0431\u044b\u0441\u0442\u0440\u043e. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e\u00a0\u043d\u0438\u043a\u0430\u043a \u043d\u0435\u00a0\u043f\u043e\u0439\u043c\u0430\u044e\u0442 \u043d\u043e\u0432\u044b\u0435, \u0440\u0430\u043d\u0435\u0435 \u043d\u0435\u00a0\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b. \u041f\u0443\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0439\u00a0\u2014 \u0441\u043a\u0430\u0440\u043c\u043b\u0438\u0432\u0430\u0442\u044c \u0441\u044b\u0440\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u00a0\u041b\u041b\u041c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e. \u0412\u00a0\u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434\u00a0\u0431\u044b\u0441\u0442\u0440\u043e \u0443\u043c\u0438\u0440\u0430\u0435\u0442. \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043c\u044b \u043d\u0435\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u0432\u00a0\u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043e\u0440\u043e\u0433\u043e \u0438 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e.2\u00a0\u043f\u0443\u0442\u0438\u041d\u043e\u00a0\u0437\u0430\u0447\u0435\u043c \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0447\u0442\u043e\u2011\u0442\u043e \u043e\u0434\u043d\u043e? \u0418 \u0434\u0430, \u044f \u0437\u043d\u0430\u044e \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u043a\u0443 \u043f\u0440\u043e\u00a0\u0437\u0430\u0439\u0446\u0435\u0432, \u043d\u043e\u00a0\u0432\u0435\u0434\u044c \u0438 python\u00a0\u2014 \u0434\u0432\u0443\u0441\u0442\u0432\u043e\u043b\u043a\u0430.\u041c\u044b \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u0443\u044e\u00a0\u043b\u0438\u043d\u0438\u044e SOC. \u0417\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c \u041b\u041b\u041c \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u043d\u044b\u0445 \u0434\u0432\u0438\u0436\u043a\u043e\u0432. \u041f\u043e\u043c\u0435\u0441\u0442\u0438\u043b\u043e\u0441\u044c \u0432\u0441\u0435 \u044d\u0442\u043e \u0432\u00a0\u043e\u0434\u0438\u043d \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0433\u0440\u0430\u0444.\u0421\u0442\u0430\u0442\u044c\u044f \u043e\u0431\u00a0\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435, \u0430\u00a0\u043d\u0435\u00a0\u0433\u043e\u0442\u043e\u0432\u043e\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0438.\u041c\u044b \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d \u043d\u0430\u00a0\u043b\u043e\u0433\u0430\u0445 \u043a\u0438\u0431\u0435\u0440\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043d\u043e\u00a0\u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0438 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0439. \u041b\u043e\u0433\u0438\u00a0\u043b\u0438\u0448\u044c \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u044e\u0442\u00a0\u043a\u0430\u043a\u00a0\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f\u00a0\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438. YARA \u0438 Sigma \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u043d\u0430\u00a0\u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u0445 \u0434\u0432\u0438\u0436\u043a\u0430\u0445 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u00a0\u0442\u0435\u043a\u0441\u0442\u043e\u043c. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043d\u0438\u0436\u0435 \u0433\u0440\u0430\u0444 \u043c\u043e\u0436\u043d\u043e \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u00a0\u0440\u0430\u0437\u0431\u043e\u0440 \u043e\u0442\u0437\u044b\u0432\u043e\u0432, \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044e \u0441\u043f\u0430\u043c\u0430 \u0438\u043b\u0438\u00a0\u043c\u043e\u0434\u0435\u0440\u0430\u0446\u0438\u044e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438.\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435:\u0418\u0434\u0435\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0433\u0440\u0430\u0444\u0430AI-\u044f\u0434\u0440\u043e\u0414\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0442\u043a\u0430\u041c\u0435\u0442\u0440\u0438\u043a\u0438\u0421\u0438\u043d\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0412\u044b\u0432\u043e\u0434\u044b1. \u0418\u0434\u0435\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b\u0421\u0445\u0435\u043c\u0430 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0438 \u043b\u043e\u0433\u0438\u043a\u0443 \u0441\u0432\u044f\u0437\u0435\u0439 \u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0441\u0430\u043c. \u041d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435\u043c \u0438 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435\u043c Vector \u0438 Kafka \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0441\u044f \u0442\u0438\u043c\u043b\u0438\u0434 \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u0430\u00a0\u0432\u0441\u044f AI\u2011\u0447\u0430\u0441\u0442\u044c, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043b\u043e\u0433\u0438\u043a\u0438 \u0433\u0440\u0430\u0444\u0430 \u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0434\u0432\u0438\u0436\u043a\u043e\u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u00a0\u043b\u0435\u0436\u0430\u043b\u0430 \u043d\u0430\u00a0\u043c\u043d\u0435. \u0417\u0430\u0434\u0430\u0447\u0430 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0432\u00a0\u0440\u0430\u043c\u043a\u0430\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0443\u043c\u0430 \u0423\u0440\u0424\u0423 \u043a\u0430\u043a\u00a0\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f 1-\u0439\u00a0\u043b\u0438\u043d\u0438\u0438 SOC \u0441\u00a0\u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u00a0\u0431\u0430\u0437\u0435 MITRE.\u041f\u043e\u0442\u043e\u043a \u043b\u043e\u0433\u043e\u0432[Log Files]        \u2193    [Vector] (Lua-\u0447\u0430\u043d\u043a\u0435\u0440: 250 \u0441\u0442\u0440\u043e\u043a, overlap 20)        \u2193[Kafka] (topic: processed-logs-batches)        \u2193[Consumer] (aiokafka, retry 3x, exp backoff, DLQ)        \u2193[LangGraph DAG] (8 \u0443\u0437\u043b\u043e\u0432)        \u2193[PostgreSQL] (Log + Report + Pending YARA Rules)\u041b\u043e\u0433\u2011\u0444\u0430\u0439\u043b\u044b \u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f Vector, \u043d\u0430\u0440\u0435\u0437\u0430\u044e\u0442\u0441\u044f Lua\u2011\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c \u0432\u00a0\u0447\u0430\u043d\u043a\u0438 \u043f\u043e 250\u00a0\u0441\u0442\u0440\u043e\u043a \u0441\u00a0\u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0442\u0438\u0435\u043c 20\u00a0\u0441\u0442\u0440\u043e\u043a (\u0447\u0442\u043e\u0431\u044b \u043d\u0435\u00a0\u0440\u0430\u0437\u0440\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043d\u0430\u00a0\u0433\u0440\u0430\u043d\u0438\u0446\u0435). \u0414\u0430\u043b\u0435\u0435 \u0443\u0445\u043e\u0434\u044f\u0442 \u0432\u00a0Kafka. \u0422\u0430\u043c \u0438\u0445 \u043b\u043e\u0432\u0438\u0442 consumer \u0441\u00a0retry\u2011\u043b\u043e\u0433\u0438\u043a\u043e\u0439 \u0438 Dead Letter Queue \u0434\u043b\u044f\u00a0\u043d\u0435\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439. \u0418 \u0434\u0430\u043b\u0435\u0435 \u0444\u0430\u0439\u043b\u044b \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u0447\u0435\u0440\u0435\u0437 \u043d\u0430\u0448 \u0433\u0440\u0430\u0444.\u0422\u0435\u043f\u0435\u0440\u044c \u0435\u0449\u0435 \u0431\u043b\u0438\u0436\u0435 \u043a\u00a0\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435.2. \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0413\u0440\u0430\u0444\u0430\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0432\u00a0\u044d\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438\u00a0\u2014\u00a0\u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0435 \u0446\u0435\u043f\u043e\u0447\u043a\u0438. \u041c\u044b \u043f\u043e\u0448\u043b\u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0434\u0430\u043b\u044c\u0448\u0435:workflow = StateGraph(AnalysisState)workflow.add_node(&#171;prefilter&#187;, nodes.prefilter_node)workflow.add_node(&#171;agent1&#187;, nodes.agent1_node)workflow.add_node(&#171;description_agent&#187;, nodes.description_agent_node)workflow.add_node(&#171;parse_logs&#187;, nodes.parse_logs_node)workflow.add_node(&#171;agent2&#187;, nodes.agent2_node)workflow.add_node(&#171;yara_scan&#187;, nodes.yara_scan_node)workflow.add_node(&#171;sigma_scan&#187;, nodes.sigma_scan_node)workflow.add_node(&#171;agent3&#187;, nodes.agent3_node)# AI-\u0432\u0435\u0442\u043a\u0430workflow.add_edge(&#171;prefilter&#187;, &#171;agent1&#187;)workflow.add_edge(&#171;agent1&#187;, &#171;agent3&#187;)workflow.add_edge(&#171;agent1&#187;, &#171;description_agent&#187;)workflow.add_edge(&#171;description_agent&#187;, &#171;agent2&#187;)workflow.add_edge(&#171;agent2&#187;, &#171;agent3&#187;)# \u0414\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0442\u043a\u0430 (\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e AI)workflow.add_edge(&#171;parse_logs&#187;, &#171;yara_scan&#187;)workflow.add_edge(&#171;parse_logs&#187;, &#171;sigma_scan&#187;)workflow.add_edge(&#171;yara_scan&#187;, &#171;agent3&#187;)workflow.add_edge(&#171;sigma_scan&#187;, &#171;agent3&#187;)workflow.add_edge(START, &#171;prefilter&#187;)workflow.add_edge(START, &#171;parse_logs&#187;)\u041a\u0430\u043a\u00a0\u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e:\u0413\u0440\u0430\u0444 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439\u0415\u0441\u0442\u044c \u0434\u0432\u0435\u00a0\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0435\u00a0\u0432\u0435\u0442\u043a\u0438 (\u0434\u0430, \u0442\u0435 \u0441\u0430\u043c\u044b\u0435 \u043f\u0443\u0442\u0438).\u0412\u00a0\u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0441\u0435 \u043b\u043e\u0433\u0438 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044e \u0432 prefilter. \u0414\u0430\u043b\u0435\u0435 Agent 1 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043b\u043e\u0433\u0438, \u0432\u044b\u044f\u0432\u043b\u044f\u0435\u0442 \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u0438 \u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0433\u0440\u0443\u043f\u043f\u044b \u0441\u0442\u0440\u043e\u043a, \u0434\u043b\u044f\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 Description Agent \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u0439. Agent 2\u00a0(RAG) \u0438\u0449\u0435\u0442 MITRE ATT&amp;CK \u0442\u0435\u0445\u043d\u0438\u043a\u0438 \u0434\u043b\u044f\u00a0\u043a\u0430\u0436\u0434\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b \u043f\u043e\u00a0\u0435\u0451 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e.\u0412\u043e\u00a0\u0432\u0442\u043e\u0440\u043e\u0439 \u043b\u043e\u0433\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 parse_logs. \u0414\u0430\u043b\u0435\u0435 YARA \u0438 Sigma \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.\u0412\u0441\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u043f\u043e\u0442\u043e\u043a\u0430 \u0441\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u00a0Agent 3. \u041e\u043d \u0434\u0435\u043b\u0430\u0435\u0442 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0432\u043e\u0434\u043a\u0443: \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 YARA, Sigma, RAG \u0438 \u0430\u043d\u0430\u043b\u0438\u0437 \u043e\u0442\u00a0Agent 1\u00a0\u0432\u00a0\u043e\u0442\u0447\u0451\u0442.\u041c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0437\u0430\u0442\u0440\u0430\u0442\u044b \u043d\u0430\u00a0\u0442\u043e\u043a\u0435\u043d\u044b, \u0438 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 LLM, \u0430\u00a0\u0435\u0449\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043d\u0435\u00a0\u043b\u0443\u0447\u0448\u0438\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c LLM \u0441\u043e\u0432\u0441\u0435\u043c \u0433\u043e\u043b\u043e\u0434\u043d\u043e\u0439. Agent 1\u00a0\u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u043a\u00a0\u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432\u044b\u0448\u0435, \u043d\u043e\u00a0\u043f\u043e\u043a\u0430 \u044f \u0441\u043c\u043e\u0442\u0440\u0435\u043b \u043d\u0430\u00a0\u0441\u0445\u0435\u043c\u0443, \u0432\u00a0\u0433\u043e\u043b\u043e\u0432\u0443 \u043f\u0440\u0438\u0448\u043b\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0444\u0438\u0447\u0430.\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0444\u0438\u0447\u0430: Agent 1\u00a0\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u00a0\u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0432\u043e\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0432\u00a0Agent 3\u00a0(\u0440\u0435\u0431\u0440\u043e\u00a0agent1 \u2192 agent3). \u0418 \u044d\u0442\u043e \u043d\u0435\u00a0\u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u0422\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f\u00a0zero\u2011cost \u0431\u043e\u043d\u0443\u0441\u00a0\u2014 Agent 1\u00a0\u0443\u0436\u0435 \u043f\u0440\u043e\u0433\u043d\u0430\u043b \u0432\u0441\u0435 \u043b\u043e\u0433\u0438 \u0447\u0435\u0440\u0435\u0437 LLM \u0434\u043b\u044f\u00a0\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438. \u041c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0441\u0438\u043c \u0435\u0433\u043e \u043d\u0430\u00a0\u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u043e\u0433\u043e\u00a0\u0436\u0435 \u0432\u0432\u043e\u0434\u0430 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u0430\u043a\u0438\u0435 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u044b \u043c\u043e\u0433\u0443\u0442\u00a0\u0431\u044b\u0442\u044c. \u0421\u0432\u043e\u0435\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0439 \u0442\u0435\u0441\u0442 \u043d\u0430 \u00ab\u043c\u0430\u0433\u0438\u044e LLM\u00bb. \u041d\u0430\u00a0\u0432\u044b\u0445\u043e\u0434\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u044b \u043e\u0431\u00a0\u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u0430\u0445 \u0443\u0441\u043b\u043e\u0432\u043d\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e (\u0431\u0435\u0437\u00a0\u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u0442\u0440\u0430\u0442\u044b \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u043e\u043a\u0435\u043d\u043e\u0432). Agent 3\u00a0\u043f\u043e\u0437\u0436\u0435 \u0440\u0435\u0448\u0438\u0442, \u0447\u0442\u043e\u00a0\u0438\u0437\u00a0\u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u043e, \u0430\u00a0\u0447\u0442\u043e\u00a0\u043d\u0435\u0442.3. AI\u2011\u044f\u0434\u0440\u043e: Agent 1\u00a0\u2192 Agent 2\u00a0(RAG) \u2192 Agent 3AI\u2011\u044f\u0434\u0440\u043e\u0412\u00a0\u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u043c\u043f\u0442\u043e\u0432, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u043e\u043d\u0438 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0435. \u0418\u0445 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438 \u0432 \/prompts.Agent 1\u00a0\u2014 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0430 \u043b\u043e\u0433\u043e\u0432LLM \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u043a\u043d\u043e \u043b\u043e\u0433\u043e\u0432 \u0438 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 \u0438\u0437\u00a0\u043d\u0435\u0433\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f. cmd.exe execution \u043d\u0430\u00a0\u0444\u043e\u043d\u0435\u00a0[warning]\u00a0=&gt; \u0441\u043e\u0431\u044b\u0442\u0438\u0435. \u041f\u0430\u0447\u043a\u0430\u00a0Authentication failed\u00a0\u0441\u00a0\u0440\u0430\u0437\u043d\u044b\u0445 IP =&gt; \u0431\u0440\u0443\u0442\u0444\u043e\u0440\u0441.\u041a\u0440\u043e\u043c\u0435 \u044d\u0442\u043e\u0433\u043e \u043e\u043d \u043f\u0440\u043e\u0431\u0443\u0435\u0442 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u0433\u2011\u0444\u0430\u0439\u043b \u0446\u0435\u043b\u0438\u043a\u043e\u043c (\u0444\u0438\u0447\u0430 \u0432\u044b\u0448\u0435).RAG\u00a0\u2014 \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043f\u043e\u00a0MITRE ATT&amp;CK\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u00ab\u0447\u0442\u043e\u2011\u0442\u043e \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435\u00a0\u0431\u044b\u043b\u043e\u00bb (\u043e\u0442 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0439 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432\u00a0\u0442\u0430\u043a\u043e\u043c \u0434\u0435\u043b\u0435 \u043c\u0430\u043b\u043e \u0442\u043e\u043b\u043a\u0443). \u0412\u0430\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c,\u00a0\u043a\u0430\u043a\u0430\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0435\u0445\u043d\u0438\u043a\u0430 \u0438\u0437\u00a0MITRE ATT&amp;CK \u0437\u0430\u043c\u0435\u0447\u0435\u043d\u0430: T1110\u00a0(Brute Force), T1190\u00a0(Exploit Public\u2011Facing Application) \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.\u0412\u00a0\u044d\u0442\u043e\u043c \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0435 RAG \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a\u00a0\u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440, \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043d\u0443\u0436\u043d\u043e\u0439 \u0442\u0435\u0445\u043d\u0438\u043a\u0438 MITRE \u0434\u043b\u044f\u00a0\u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u0439 (\u0447\u0442\u043e\u2011\u0442\u043e \u0432\u00a0\u0441\u0442\u0438\u043b\u0435 \u00abIntent Classification \u0447\u0435\u0440\u0435\u0437 RAG\u00bb \u0438\u043b\u0438 \u00abFew\u2011shot Classifier\u00bb).\u042f \u0441\u0434\u0435\u043b\u0430\u043b \u0435\u0433\u043e\u00a0\u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u043c \u0438 \u0441\u00a0\u0442\u0430\u043a\u0438\u043c\u0438 \u044d\u0442\u0430\u043f\u0430\u043c\u0438:\u0423\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 LLM\u00a0\u2014 \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0435\u0440\u0435\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432\u00a0\u043f\u043e\u0438\u0441\u043a\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430\u00a0\u0440\u0443\u0441\u0441\u043a\u043e\u043c. \u0420\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u0431\u0430\u0437\u0430 \u0442\u0435\u0445\u043d\u0438\u043a MITRE \u0432\u00a0\u043d\u0430\u0448\u0435\u0439 ChromaDB\u00a0\u0431\u044b\u043b\u0430\u00a0\u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u0430 \u0438 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043d\u0430 \u043c\u043d\u043e\u0439 \u0441\u00a0\u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0439 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0441\u043b\u043e\u0432.\u0413\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a\u00a0\u2014 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 + BM25\u00a0\u0441\u00a0\u0432\u0435\u0441\u0430\u043c\u0438 0.6\/0.4.LLM re\u2011rank\u00a0\u2014 \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0442\u043e\u043f-3\u00a0\u0442\u0435\u0445\u043d\u0438\u043a\u0438 \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0438\u0437\u00a0\u043d\u0438\u0445 \u043b\u0443\u0447\u0448\u0443\u044e.\u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f\u00a0ChromaDB (\u0431\u0430\u0437\u044b \u0437\u043d\u0430\u043d\u0438\u0439){    &#171;technique_id&#187;: &#171;T1687&#187;,    &#171;technique_name&#187;: &#171;Exploitation for Defense Impairment&#187;,    &#171;description&#187;: &#171;\u0417\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u0445 \u0437\u0430\u0449\u0438\u0442\u044b (\u0430\u043d\u0442\u0438\u0432\u0438\u0440\u0443\u0441\u044b, EDR, \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u044b) \u0434\u043b\u044f \u0438\u0445 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u043e\u0441\u043b\u0430\u0431\u043b\u0435\u043d\u0438\u044f. \u0426\u0435\u043b\u044c &#8212; \u043d\u0430\u0440\u0443\u0448\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u0438\u0441\u0442\u0435\u043c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0438 \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u044b.&#187;,    &#171;tactic&#187;: &#171;defense-impairment&#187;,    &#171;keywords_ru&#187;: [      &#171;\u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f \u0437\u0430\u0449\u0438\u0442\u044b&#187;,      &#171;\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 EDR&#187;,      &#171;\u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0430\u043d\u0442\u0438\u0432\u0438\u0440\u0443\u0441\u0430&#187;,      &#171;\u043e\u0431\u0445\u043e\u0434 \u0437\u0430\u0449\u0438\u0442\u044b&#187;,      &#171;\u043e\u0441\u043b\u0430\u0431\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u0449\u0438\u0442\u044b&#187;    ]  },\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 (demo)def hybrid_search(    self,    query: str,    k: int = 10,    vector_weight: float = 0.6,    bm25_weight: float = 0.4,    score_threshold: float = 0.3,) -&gt; list[dict]:    if not self._vectorstore:        raise RuntimeError(&#171;ChromaDB not initialized&#187;)    if not self._bm25 or not self._technique_docs:        return self.search(query, k=k, score_threshold=score_threshold)    try:        # 1. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c 2k \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0438\u0437 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u0430\u043d\u0436\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430        vec_results = self._vectorstore.similarity_search_with_score(query, k=k * 2)        bm25_results = self._bm25.search(query, k=k * 2)        if not vec_results and not bm25_results:            return []        # 2. \u041d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f: \u0434\u0435\u043b\u0438\u043c \u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 score        vec_max = max((1.0 &#8212; s) for _, s in vec_results) if vec_results else 1.0        bm25_max = max(s for _, s in bm25_results) if bm25_results else 1.0        combined: dict[str, float] = {}        for doc, score in vec_results:            tid = doc.metadata.get(&#171;technique_id&#187;, &#171;&#187;)            if not tid:                continue            norm_sim = (1.0 &#8212; score) \/ vec_max if vec_max &gt; 0 else 0            combined[tid] = combined.get(tid, 0) + norm_sim * vector_weight  # * 0.6        for idx, bm25_score in bm25_results:            if idx &lt; len(self._technique_docs):                tid = self._technique_docs[idx][&#171;technique_id&#187;]                norm_bm25 = bm25_score \/ bm25_max if bm25_max &gt; 0 else 0                combined[tid] = combined.get(tid, 0) + norm_bm25 * bm25_weight  # * 0.4        # 3. \u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0438 \u0444\u0438\u043b\u044c\u0442\u0440 \u043f\u043e threshold        results = []        for tid, score in sorted(combined.items(), key=lambda x: x[1], reverse=True)[:k]:            if score &lt; score_threshold:                continue            for doc in self._technique_docs:                if doc[&#171;technique_id&#187;] == tid:                    results.append({                        &#171;content&#187;: f&#187;passage: {doc[&#8216;text&#8217;]}&#187;,                        &#171;metadata&#187;: { &#8230; },                        &#171;score&#187;: score,                    })                    break        return results    except Exception as e:        return self.search(query, k=k, score_threshold=score_threshold)\u0413\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043f\u043e\u0432\u044b\u0441\u0438\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0439: \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u0445\u043e\u0440\u043e\u0448\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f, \u043d\u043e\u00a0\u0438\u043d\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u043c\u0430\u0445\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u00a0\u0442\u043e\u0447\u043d\u044b\u043c\u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430\u043c\u0438, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0430\u0431\u0431\u0440\u0435\u0432\u0438\u0430\u0442\u0443\u0440\u0430\u043c\u0438 \u0438\u043b\u0438\u00a0\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u0443\u0442\u0438\u043b\u0438\u0442. BM25\u00a0\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u00a0\u043d\u0438\u043c\u0438.LLM re\u2011rank \u043d\u0443\u0436\u0435\u043d, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u0442\u0435\u0445\u043d\u0438\u043a\u0438 \u043e\u0447\u0435\u043d\u044c \u0431\u043b\u0438\u0437\u043a\u0438 \u043f\u043e\u00a0\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f\u043c. \u0427\u0430\u0441\u0442\u043e \u043f\u0435\u0440\u0432\u0430\u044f \u0432\u00a0\u0432\u044b\u0434\u0430\u0447\u0435 \u043d\u0435\u00a0\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0435\u0440\u043d\u043e\u0439, \u0445\u043e\u0442\u044f \u0438 \u043f\u043e\u0445\u043e\u0436\u0430. LLM \u0438\u043c\u0435\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0438 \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u0435\u0442 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435, \u0435\u0441\u043b\u0438 \u043e\u043d\u043e \u043b\u043e\u0436\u043d\u043e.Agent 3\u00a0\u2014 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u0435\u0442\u043e\u043a, \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043e\u0442\u0447\u0451\u0442\u0430\u0422\u0440\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043a\u0430\u043d\u0430\u043b\u0430 (RAG, YARA, Sigma) \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432\u00a0\u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0442\u0447\u0451\u0442. \u0421\u043e\u0431\u044b\u0442\u0438\u044f Agent 1, \u0441\u043e\u0432\u043f\u0430\u0432\u0448\u0438\u0435 \u0441\u00a0\u043b\u044e\u0431\u043e\u0439 \u0438\u0437\u00a0\u0442\u0440\u0451\u0445 \u0432\u0435\u0442\u043e\u043a, \u0438\u0434\u0443\u0442 \u0432\u00a0\u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442, \u043f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u043d\u0435\u00a0\u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f. \u0422\u0435, \u0447\u0442\u043e\u00a0\u043d\u0435\u00a0\u0441\u043e\u0432\u043f\u0430\u043b\u0438\u00a0\u2014 \u0432\u00a0\u0431\u043b\u043e\u043a\u00a0\u00ab\u0422\u0440\u0435\u0431\u0443\u044e\u0442 \u0440\u0443\u0447\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438\u00bb\u00a0\u0441\u00a0\u043c\u0435\u0442\u0430\u2011\u043f\u043e\u043b\u0435\u043c\u00a0unconfirmed_events_count, \u0431\u0435\u0437\u00a0\u0432\u043b\u0438\u044f\u043d\u0438\u044f \u043d\u0430\u00a0severity.LLM \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u0430\u0442\u0430\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435\u0442 \u043d\u0438 \u0432\u00a0MITRE, \u043d\u0438 \u0432\u00a0YARA\/Sigma). \u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043d\u0430\u0445\u043e\u0434\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c. \u041f\u0443\u0441\u0442\u044c \u043b\u0443\u0447\u0448\u0435 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a \u0432\u0438\u0434\u0438\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0438 \u0440\u0435\u0448\u0430\u0435\u0442 \u0441\u0430\u043c. \u042d\u0442\u043e \u043a\u0430\u043a\u00a0\u043f\u0435\u0440\u0435\u043a\u0440\u0435\u0441\u0442\u043d\u0430\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f + \u00ab\u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0432\u00a0\u043a\u043e\u043d\u0442\u0443\u0440\u0435\u00bb.\u0421\u0443\u043c\u043c\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f, \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0432\u00a0\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0414\u043b\u044f\u00a0\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 Agent 3\u00a0\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u043e\u0442\u0447\u0435\u0442 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u043c\u0438 \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u044f\u043c\u0438 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0435\u0433\u043e \u0432\u00a0\u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445. \u0418\u0437\u00a0\u043d\u0435\u0435 \u043e\u0442\u0447\u0435\u0442\u044b \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432\u00a0\u0447\u0430\u0442 \u0441\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u043d\u0430\u00a0\u0441\u0430\u0439\u0442\u0435.4&#8230;.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-488740","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/488740","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=488740"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/488740\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=488740"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=488740"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=488740"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}