Открытый инструмент для охоты и классификации AI-интегрированного вредоносного ПО на основе метаданных и когнитивных артефактов без исполнения образцов.
Платформа для бинарного анализа на базе символьного исполнения: способна автоматически найти входные данные, которые проведут программу …
Продвинутая платформа для DFIR (цифровая криминалистика и реагирование на инциденты) — позволяет одновременно "охотиться" на угрозы …
Набор CLI-утилит для анализа файловых систем и образов дисков. Поддерживает NTFS, FAT, EXT2/3/4, HFS+, UFS. Извлечение …
Инфраструктура виртуальной машинной интроспекции для мониторинга состояния гостевых систем на уровне гипервизора KVM.
git clone https://github.com/fetterm4n/CAIRN.git cd CAIRN python -m venv .venv && source .venv/bin/activate pip install -e ".[dev]" cp .env.example .env pip install -e ".[embed]" cairn validate-rules cairn filters
Нейросеть исследования интеллекта когнитивных артефактов (CAIRN) — это исследовательский набор инструментов для идентификации, атрибуции и отслеживания связанных с ИИ артефактов, встроенных в вредоносное ПО. Он работает исключительно с метаданными VirusTotal — без загрузки бинарников, без детонации. Его центральная тезис заключается в том, что вредоносное ПО с поддержкой ИИ оставляет идентифицируемые когнитивные артефакты (жестко заданные промпты, вызовы API LLM, логику оркестрации агентов, строки уклонения от ИИ-анализа, префиксы ключей провайдеров), которые могут быть извлечены, классифицированы и изучены без непосредственного обращения к бинарнику.
Открытый репозиторий не содержит базу данных SQLite с результатами из-за авторских прав. Пользователи с ключом API VT могут восстановить базу данных из опубликованных хешей отчетов и фильтров выборки.
CAIRN объединяет многоуровневую онтологию YARA над структурированным текстом сканирования VT с семантической кластеризацией на основе эмбеддингов и построением графа связей — обеспечивая объяснимую атрибуцию с отслеживанием происхождения для подтвержденных семейств вредоносного ПО с ИИ.

CAIRN не запускает правила YARA на сыром бинарном контенте. Вместо этого он строит структурированное текстовое представление — текст сканирования — из каждого отчета VT файла, агрегируя:
--deep или --behaviours)Правила YARA сопоставляются с этим составленным текстом, делая каждое попадание прослеживаемым к именованному полю метаданных VT. Аналитик всегда знает почему образец совпал, а не только что он совпал.
flowchart LR
%% ── Acquisition ──────────────────────────────────────────────
subgraph ACQ[" Acquisition "]
F(["🔍 Filter channel\ncairn pull --filter <slug>"])
PV(["🔗 Pivot seed\ncairn pivot <sha256 / domain / ip>"])
end
%% ── VT API ───────────────────────────────────────────────────
subgraph VTAPI[" VirusTotal API "]
VTR[/"File report\nmetadata · AV · crowdsourced"/]
VTB[/"+ Sandbox behaviours\n--deep / --behaviours"/]
end
%% ── Scan Text ────────────────────────────────────────────────
subgraph SCANTEXT[" Scan Text Extraction "]
ST[["names · AV labels · PE strings\nembedded URLs · sandbox IOCs\nScriptBlockText"]]
end
%% ── YARA ─────────────────────────────────────────────────────
subgraph YARAONT[" YARA Ontology "]
T1["T1 · Primitive Artifacts\nAPI endpoints · key prefixes\nprompt residue · runtime refs"]
T2["T2 · Behavioral Context\nco-occurrence patterns\nshell + LLM · evasion + offense"]
T3["T3 · Operational Families\nfamily attribution\nseed-anchored rules"]
T1 --> T2 --> T3
end
%% ── Corpus ───────────────────────────────────────────────────
subgraph STORE[" Corpus "]
DB[("SQLite\ndata/cairn.sqlite")]
end
%% ── Semantic layer ───────────────────────────────────────────
subgraph SEMANTIC[" Semantic Similarity "]
EMB["Embedding encode\nsentence-transformers"]
CLU["HDBSCAN clustering\ncairn cluster"]
NEAR["Nearest-neighbour\ncairn near"]
EMB --> CLU
EMB --> NEAR
end
%% ── Outputs ──────────────────────────────────────────────────
subgraph OUT[" Outputs "]
REPORT(["📄 Findings report\nCSV + markdown"])
GRAPH(["🕸️ Relationship graph\nJSON"])
FAMILY(["📋 Family report\ndocs/FAMILY.md"])
SOA(["🗂️ Archetype taxonomy\nREADME.md"])
end
%% ── Secondary input ──────────────────────────────────────────
PI(["📡 PromptIntel feed\ncairn sync-promptintel"])
%% ── Edges: core path ─────────────────────────────────────────
F -->|cairn pull| VTR
PV -->|cairn pivot| VTR
VTR --> VTB
VTR --> ST
VTB -.->|optional| ST
ST --> T1
T3 --> DB
T1 & T2 --> DB
DB --> EMB
DB --> REPORT
DB --> GRAPH
DB --> FAMILY
FAMILY --> SOA
%% ── Edges: secondary ─────────────────────────────────────────
PI -.->|binary-relevant IOCs| DB
%% ── Subgraph styles (dotted borders) ─────────────────────────
style ACQ fill:none,stroke:#4a9eff,stroke-width:1.5px,stroke-dasharray:6 3,color:#4a9eff
style VTAPI fill:none,stroke:#3dba6f,stroke-width:1.5px,stroke-dasharray:6 3,color:#3dba6f
style SCANTEXT fill:none,stroke:#4a9eff,stroke-width:1.5px,stroke-dasharray:6 3,color:#4a9eff
style YARAONT fill:none,stroke:#ff6b6b,stroke-width:1.5px,stroke-dasharray:6 3,color:#ff6b6b
style STORE fill:none,stroke:#4a9eff,stroke-width:1.5px,stroke-dasharray:6 3,color:#4a9eff
style SEMANTIC fill:none,stroke:#a855f7,stroke-width:1.5px,stroke-dasharray:6 3,color:#a855f7
style OUT fill:none,stroke:#f0c040,stroke-width:1.5px,stroke-dasharray:6 3,color:#f0c040
%% ── Node styles ──────────────────────────────────────────────
classDef core fill:#1e3a5f,stroke:#4a9eff,stroke-width:2px,color:#e8f4ff
classDef vt fill:#1a3a2a,stroke:#3dba6f,stroke-width:2px,color:#e8fff0
classDef yara fill:#3a1e1e,stroke:#ff6b6b,stroke-width:2px,color:#ffe8e8
classDef semantic fill:#2a1e3a,stroke:#a855f7,stroke-width:2px,color:#f5e8ff
classDef output fill:#2a2a1e,stroke:#f0c040,stroke-width:2px,color:#fffde8
classDef secondary fill:#1a1a1a,stroke:#666,stroke-width:1px,stroke-dasharray:4 4,color:#aaa
class F,PV core
class VTR,VTB vt
class ST,DB core
class T1,T2,T3 yara
class EMB,CLU,NEAR semantic
class REPORT,GRAPH,FAMILY,SOA output
class PI secondary
Правила организованы в три уровня возрастающей специфичности:
| Уровень | Назначение | Пример |
|---|---|---|
| T1 — Примитивные артефакты | Отдельные когнитивные артефакты; высокая полнота, ожидаются ложные срабатывания | T1-LLM_API_Endpoint, T1-LLM_API_Key_Hardcoded |
| T2 — Поведенческий контекст | Два или более совместно встречающихся примитива в операционно значимом сочетании | T2-AI_Decoy_Prompt_In_Malware, T2-Agentic_Offensive_Tasking |
| T3 — Операционные семьи | Семейственная атрибуция, привязанная к подтвержденным эталонным хешам | T3-TEAMPCP_Backdoored_LiteLLM_Proxy, T3-HONESTCUE_LLM_Probe_Loader |
Текущее количество правил: 9 T1 / 8 T2 / 9 T3 — всего 26.
content: клаузы)git clone https://github.com/fetterm4n/CAIRN.git
cd CAIRN
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
cp .env.example .env
# Edit .env — set VT_API_KEY (required) and PROMPTINTEL_API_KEY (optional)
Для кластеризации на основе эмбеддингов:
pip install -e ".[embed]"
Проверка установки:
cairn validate-rules # should report 26 rules, valid: true
cairn filters # should list all channels with enabled status
source .venv/bin/activate
# Pull 25 samples from the python-ai-scripts channel
cairn pull --filter python-ai-scripts --limit 25
# Check what fired
cairn summary
# Deep-dive a specific sample (fetches sandbox behavioural data)
cairn refresh --sha256 <sha256> --behaviours
# Re-run all rules against the corpus after editing yara_rules.yar — no API calls
cairn rescan
# Validate known seed samples still fire their expected rules
cairn validate-seeds
cairn filters # list channels and key status
cairn pull --filter <slug> --limit 25 # pull one filter
cairn pull --filter <slug> --limit 25 --deep # include sandbox behaviours
cairn pull --filter <slug> --date-clause "fs:7d+" # restrict by first-seen date
cairn pull-enabled --limit 50 # pull all enabled filters
cairn pull-status # last run date per filter
cairn summary # corpus stats and rule hit counts
cairn refresh --sha256 <sha256> # re-fetch VT data, re-run YARA
cairn refresh --sha256 <sha256> --behaviours # also pull sandbox data
cairn refresh --sha256 <sha256> --telemetry # also fetch Google Insights telemetry
cairn pivot <sha256> # pivot similar_files (default)
cairn pivot <sha256> --rel communicating_files # files sharing network IOCs
cairn pivot <sha256> --rel dropped_files --deep # files dropped in sandbox
cairn pivot <domain> # files that contacted this domain
cairn pivot <ip> # files that contacted this IP
cairn pivot-urls <sha256> # resolve embedded_url objects
Тип сида определяется автоматически: 64 шестнадцатеричных символа → файл, четыре октета → IP, всё остальное → домен.
cairn validate-rules # parse YARA, check tier structure
cairn rescan # re-run rules against corpus
cairn seed-add --sha256 <sha256> --family <NAME> \
--expect <T3-RULE_NAME> # register a known-good seed
cairn validate-seeds # pass/fail expected-rule check
cairn embed # encode scan_text to vectors
cairn embed --reembed # re-encode existing embeddings
cairn cluster --min-cluster-size 3 # HDBSCAN over stored vectors
cairn cluster-summary # summarise clusters; suppresses dead-end noise by default
cairn cluster-summary --include-dead-ends # include clusters flagged in dead_end_hashes.txt
cairn cluster-summary --unknown-only # only clusters with no T3 family attribution
cairn project # project embeddings to 2D (t-SNE / UMAP)
cairn near <sha256> --top 10 # nearest neighbours for a hash
cairn explorer # launch local graph + UMAP UI in browser
cairn explorer --port 8422 --no-browser # custom port, no auto-open
Эксплорер включает панель аналитики корпуса — воронка атрибуции, конвейер семейств, распределение архетипов, временная шкала корпуса, разбивка по платформам и детекциям — доступная через значок линейчатой диаграммы в заголовке боковой панели.

cairn report # CSV + markdown findings draft
cairn graph # relationship graph JSON
cairn graph --output outputs/graphs/cairn_graph.json
cairn audit-provenance # flag rule hits resting on sandbox-memory evidence only
cairn audit-provenance --min-tier T3 # T3 (family attribution) hits only
cairn audit-provenance --min-tier T3 --summary-only # counts only, no per-finding list
cairn triage-gap # surface high-detection samples with no/weak rule signal
cairn refresh-batch --category t1-only-high-det # refresh T1-only/high-det samples in bulk
cairn refresh-batch --category seeds-missing-behaviours --behaviours
cairn telemetry <sha256> # fetch Google Insights telemetry for a sample
cairn telemetry --corpus # summarise telemetry stored across all samples
cairn threads # list open THREADS.md leads
cairn fetch-submitters # backfill VT submitter keys
cairn prune # remove samples listed in config/exclusions.yaml
cairn prune --dry-run # preview what would be removed
cairn sync-promptintel # sync feed, report new binary-relevant records
cairn sync-promptintel --all # print all stored IOCs
Двадцать семь именованных каналов в config/acquisition_filters.yaml (три отключены). Каждый представляет отдельную гипотезу и измеряет доходность независимо.
| Slug | Категория | Типы файлов | Мин. детекция | Примечания |
|---|---|---|---|---|
broad-discovery |
discovery | peexe, pedll | 5 | Высокополный развертывающийся поиск любых ссылок на ИИ/LLM |
prompt-residue |
prompt | peexe, pedll | 5 | Маркеры ролей и остаточные инструкции задач |
agentic-tooling |
agentic | peexe, pedll, ps1, tag:python, js | 5 | Ссылки на именованные агентные фреймворки и термы оркестрации |
local-llm-runtime |
runtime | peexe, pedll | 5 | Ссылки на локальные или открытые рантаймы инференса |
provider-api-integration |
api | peexe, pedll, vba | 5 | Эндпоинты хостовых провайдеров LLM и сигнатуры вызовов SDK |
ai-analysis-evasion |
evasion | peexe, pedll, vba | 5 | Строки, разработанные для подавления ИИ-помощного анализа |
offensive-co-occurrence |
offensive | peexe, pedll | 5 | ИИ-терминология, совместно встречающаяся с наступательной тактикой |
powershell-ai-scripts |
script | ps1, vba | 3 | PowerShell и VBA с вызовами API LLM или промпт-строками |
python-ai-scripts |
script | tag:python | 3 | Python-скрипты с импортами API LLM или встроенными промптами |
codegen-residue |
prompt | peexe, pedll, ps1, vba | 3 | Фразы ассистентов по генерации кода LLM как строковые литералы |
chinese-llm-apis |
api | peexe, pedll, ps1, py | 3 | Эндпоинты китайских провайдеров LLM: BigModel/ChatGLM, Moonshot/Kimi, Qwen/Dashscope, Baidu ERNIE |
llmgate-hunt |
hunt | peexe | 3 | Нацеленная охота на варианты LLMGATE Gen1/2 (TechSoft/AceSoft/sysupdsvc) |
llmgate-gen3-hunt |
hunt | peexe | 3 | Варианты LLMGATE Gen3 с ротированными прикрытными именами (sysmntsvc, wupdmgr) |
promptlock-hunt |
hunt | peexe, pedll, lua | 3 | Нацеленная охота на варианты вымогателя PROMPTLOCK |
honestcue-hunt |
hunt | peexe, pedll | 3 | HONESTCUE .NET загрузчик проб LLM |
airefusal-hunt-a |
hunt | peexe, pedll | 3 | HOLLOWCLAD — строки отказа LLM в авторском фрейминге + инъекция промптов |
airefusal-hunt-b |
hunt | peexe, pedll | 3 | MANTLEMAZE — смоделированный многократный диалог отказа LLM в таблице строк PE |
local-model-hunt |
hunt | tag:python | 2 | Python вредоносное ПО, взаимодействующее с локально размещенными серверами инференса |
local-inference-deploy-hunt |
hunt | peexe, pedll, ps1, elf, tag:python | 2 | Сигналы уровня развертывания: ollama serve/pull, llama-server, localhost:11434, загрузки моделей HF |
vozdyhan-hunt |
hunt | peexe | 2 | Нацеленная охота на варианты WebRAT |
convagent-hunt |
hunt | peexe | 2 | Отозван — отключен; все рукава запросов совпадают с безвредным ПО |
plotsafe-hunt |
hunt | pedll | 2 | Нацеленная охота на PLOTSAFE GoKrypt ACRStealer (C2 plotsafe.icu) |
jobradar-hunt |
hunt | peexe | 2 | Нацеленная охота на JOBRADAR Wails Go десктопное приложение |
vibearound-hunt |
hunt | peexe | 2 | Отозван — отключен; VibeAround — безвредное ПО |
jadepuffer-hunt |
hunt | shell, elf, ps1, tag:linux | 1 | Вымогатель в тематике Langflow (CVE-2025-3248); C2 45.131.66.106 |
cagdasgpt-hunt |
hunt | peexe | 1 | Турецкий PyInstaller ИИ-инструмент с эvasion песочницы через дату-гейт |
| --- |
Каждый архетип представляет отдельный способ использования ИИ противником в цепочке атаки. Одно семейство может инстанцировать несколько архетипов.
| ID | Архетип | Описание | Опубликованные семейства |
|---|---|---|---|
| A0 | Нет ИИ-компонентов | Семейство, обнаруженное CAIRN, не несущее компонентов ИИ или LLM; сохранено для атрибуции на уровне кампании вместе с семейством, содержащим ИИ. | — |
| A1 | Генерация полезной нагрузки под управлением LLM | Вредоносное ПО отправляет жёстко заданный промпт в размещённую LLM во время выполнения для генерации исполняемого кода, скриптов или логики шифрования. | PROMPTLOCK, HONESTCUE, PROMPTFLUX |
| A2 | Маршрутизация / проксирование LLM API через бэкдор | Служба невидимо направляет трафик LLM API через жертву, эксфильтруя ключи и выставляя инференс на счёт хоста. | — |
| A3 | Обход ИИ-анализа | Вредоносное ПО внедряет инструкции на естественном языке, адресованные системам ИИ-анализа, чтобы подавить классификацию или перенаправить внимание аналитика. | FRUITSHELL, GUARDBREAKER |
| A4 | Управление C2 через LLM | Имплант использует размещённую LLM как живой канал задач, получая инструкции оператора или автономную оркестровку атаки через ответы модели. | CLOSEDQUORUM |
| A5 | Компрометация цепочки поставок инфраструктуры LLM | Актёр внедряет бэкдор в компонент инфраструктурного слоя LLM жертвы (прокси, SDK, шлюз) для сбора всех ключей API провайдеров. | TEAMPCP |
| A6 | Сборщик учётных данных ИИ | Вредоносное ПО специально нацелено на ключи API LLM, токены HuggingFace или учётные данные ИИ-сервисов, принадлежащие жертве. | PROMPTSTEAL, QUIETVAULT, LAMEHUG |
| A7 | Оффансивный инструмент с расширением LLM | Традиционный оффансивный инструмент дополняет свой рабочий процесс вызовом LLM API для генерации контента, OSINT или разведывательных задач. | LAMEHUG |
| A8 | Вредоносный SDK / пакет ИИ | Поддельный или заражённый пакет в npm/PyPI маскируется под SDK ИИ-сервиса; активируется при установке. | QUIETVAULT |
| A9 | Червь с поддержкой LLM | Сочетает классическое распространение сетевого червя с управлением задачами через LLM и асинхронную эксфильтрацию C2. | — |
| A10 | Ложный трафик к доменам ИИ | Вредоносное ПО отправляет неаутентифицированные запросы к эндпоинтам провайдеров ИИ в качестве ложного трафика для дезориентации песочничного анализа. | — |
| A11 | Инструмент злоупотребления агентным ИИ | Автономный цикл LLM-драйверного агента является основной способностью продукта, а сам продукт существует для злоупотребления. | — |
Индивидуальные технические отчёты по опубликованным семействам находятся в docs/families/. Дополнительные семейства подтверждены, но удержаны от публикации. LAMEHUG охватывает A6 и A7 по варианту; QUIETVAULT охватывает A6 и A8.
| Семейство | Архетип | Платформа | Отчёт |
|---|---|---|---|
| PROMPTLOCK | A1 | Go / Lua | PROMPTLOCK.md |
| HONESTCUE | A1 | .NET | HONESTCUE.md |
| PROMPTFLUX | A1 | VBScript | PROMPTFLUX.md |
| FRUITSHELL | A3 | PowerShell | FRUITSHELL.md |
| GUARDBREAKER | A3 | VBScript | GUARDBREAKER.md |
| CLOSEDQUORUM | A4 | Go | CLOSEDQUORUM.md |
| TEAMPCP | A5 | Python / npm | TEAMPCP.md |
| LAMEHUG | A6 / A7 | Python | LAMEHUG.md |
| PROMPTSTEAL | A6 | Python (PyInstaller) | PROMPTSTEAL.md |
| QUIETVAULT | A6 + A8 | JavaScript / npm | QUIETVAULT.md |
CAIRN/
├── CLAUDE.md Claude Code instructions (auto-loaded for contributors)
├── THREADS.md Open investigation leads (working list)
│
├── config/
│ ├── acquisition_filters.yaml 27 named VT acquisition channels
│ ├── yara_rules.yar 26 tiered cognitive artifact rules (T1/T2/T3)
│ ├── exclusions.yaml Corpus blocklist — hashes silently skipped on pull and removed by prune
│ └── dead_end_hashes.txt Cluster noise filter — known FP cluster members; suppressed by cluster-summary
│
├── cairn/
│ ├── cli.py Unified CLI entry point
│ ├── vt.py VT client, scan_text_from_vt_row, lookup_behaviours
│ ├── acquisition.py pull_filter, pull_enabled, refresh_samples, pivot
│ ├── corpus.py SQLite corpus (12 tables) + rescan_samples
│ ├── rules.py Custom YARA parser and runner (no yara-python dependency)
│ ├── seeds.py Known seed management and validation
│ ├── embed.py sentence-transformers encode, HDBSCAN cluster, cosine_near, project
│ ├── explorer.py Explorer HTTP server and /api/* endpoints
│ ├── explorer_ui.py Explorer UI — force graph + UMAP cluster view (single-file HTML)
│ ├── graph.py Relationship graph export
│ ├── promptintel.py PromptIntel IOC feed sync
│ └── reporting.py CSV and markdown report export
│
├── docs/
│ ├── SOP.md Full CLI reference and research loop procedures
│ ├── corpus-schema.md SQLite schema documentation
│ └── families/
│ ├── PROMPTLOCK.md Family report — Go/Lua LLM-directed ransomware (A1)
│ ├── HONESTCUE.md Family report — .NET LLM probe loader (A1)
│ ├── PROMPTFLUX.md Family report — VBScript LLM-directed dropper (A1)
│ ├── FRUITSHELL.md Family report — PowerShell reverse shell with AI-evasion (A3)
│ ├── GUARDBREAKER.md Family report — UAC-0099 VBS downloader with anti-AI guardrail trigger (A3)
│ ├── CLOSEDQUORUM.md Family report — Go autonomous AI agent (A4)
│ ├── TEAMPCP.md Family report — backdoored LiteLLM proxy (A5)
│ ├── LAMEHUG.md Family report — HuggingFace token abuser (A6/A7)
│ ├── PROMPTSTEAL.md Family report — PyInstaller AI credential stealer (A6)
│ └── QUIETVAULT.md Family report — npm telemetry spy / malicious SDK (A6+A8)
│
├── data/ SQLite corpus (gitignored)
├── outputs/ Graph and report exports (gitignored)
└── tests/ pytest suite
config/exclusions.yaml — это блоклист корпуса: хеши, попавшие в корпус через фильтры аквизиции, но оправдавшиеся при расследовании, записываются здесь и молча пропускаются при будущих получениях и удаляются командой cairn prune. Файл отслеживается в git, чтобы очищенные образцы не возвращались при последующих прогонах.
Каждая запись фиксирует SHA256, однострочную причину, то, во что был переклассифицирован образец, дату расследования и инициалы аналитика. Блоки комментариев над каждым кластером документируют полное обоснование — те же шаблоны FP, которые в противном случае пришлось бы повторно исследовать любому, кто запускает те же фильтры.
Список исключений охватывает примерно 350 различных образцов примерно по 25 продуктовым кластерам. Документированные распространенные классы FP включают:
| Паттерн | Примеры продуктов | Причина |
|---|---|---|
| Коммерческий EDR со встроенными вызовами LLM | KiteCyber kcsensor | Вызовы API OpenAI/Anthropic — это фича продукта, а не вредонос |
| Цепочки сертификатов C2PA для подтверждения подлинности контента | KVA Project Minecraft launcher | Встроенный OpenAI TSA Root CA как данные PE-подписи вызывает FP по ссылке на провайдера |
| Electron-приложения, использующие эндпоинты Whisper | WeChat video downloader | api.openai.com/audio — это транскрипция, а не чат с LLM |
| Десктоп-раннеры «принеси свой ИИ» | PurpleDoubleD Locally Uncensored, VibeAround | Широкая поверхность провайдера + эвристики стилера на Tauri/NSIS бинарниках |
| Кластеризация imphash PyInstaller | PocketAI, Ollama GUI фронтенды | Идентичная версия PyInstaller даёт совпадающий imphash для несвязанных приложений |
| Инструменты антицензуры с открытым кодом | Zapret Core, CYBERPORTAL X | Способность к редиректу хостов вызывает гипотезу MitM AI-провайдера |
| Безобидные Go автообновляторы | Efficio, ClusterEye | Самообновление + повышение прав → общая эвристика стилера |
| Скомпилированные AHK рабочие инструменты | Бразильский суд: напоминание о табелировании | Класс FP AutoHotkey; метки keylogger и LSASS не подтверждены на бинарном уровне |
| Локальные MCP-мосты | lmcp-tray, vinculum-runner | Скан локальных конфигов AI-клиента вызывает Go-эвристику стилера |
| Артефакты извлечения P-кода VBA-макросов | VBA_P-code.txt |
Артефакты анализа, не исполняемые файлы; AI-строки из извлеченного исходного кода макроса |
Поддержка публичного списка исключений служит двум целям: исследователи, запускающие CAIRN с теми же фильтрами, получают одни и те же результаты без повторного расследования известного чистого ПО, а документированные FP-паттерны информируют текущую настройку правил.
source .venv/bin/activate
python -m pytest tests/ --ignore=tests/test_embed.py -v
test_embed.py требует sentence-transformers — установите через pip install -e ".[embed]" или пропустите с --ignore.
CAIRN спроектирован для работы без прямого взаимодействия с вредоносным ПО:
Хотя конвейер сбора и сопоставления правил CAIRN работает только с метаданными, все атрибуции семейств и назначения архетипов, опубликованные в этом репозитории, сначала подтверждаются через практический реверс-инжиниринг Cisco Talos. Никакой отчёт о семействе не публикуется только на основании метаданных.
Вклады приветствуются. Перед открытием pull request:
cairn validate-rules и cairn validate-seeds — оба должны пройти.claude/skills/new-family-report/Распространяется под лицензией MIT. См. LICENSE для подробностей.
Copyright (c) 2026 Cisco Systems, Inc. and its affiliates