CAIRN

Malware Analysis & Forensics активный

Открытый инструмент для охоты и классификации AI-интегрированного вредоносного ПО на основе метаданных и когнитивных артефактов без исполнения образцов.


Установка
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 с семантической кластеризацией на основе эмбеддингов и построением графа связей — обеспечивая объяснимую атрибуцию с отслеживанием происхождения для подтвержденных семейств вредоносного ПО с ИИ.

Animated CAIRN Explorer graph



Как это работает

CAIRN не запускает правила YARA на сыром бинарном контенте. Вместо этого он строит структурированное текстовое представление — текст сканирования — из каждого отчета VT файла, агрегируя:

  • Имена файлов, теги, описание типа, информация о подписи
  • Строки результатов детекции AV
  • Результаты краудсорсинговых YARA и IDS
  • Строки ресурсов PE ExifTool (FileDescription, CompanyName)
  • Результаты анализа Sigma, включая PS1 ScriptBlockText (Event ID 4104)
  • Поведенческие данные песочницы: DNS-запросы, HTTP-разговоры, URL шаблонов памяти, сброшенные файлы, созданные процессы (через --deep или --behaviours)
  • Объекты связей: встроенные URL, контактируемые домены и IP

Правила 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

Трёхуровневая онтология YARA

Правила организованы в три уровня возрастающей специфичности:

Уровень Назначение Пример
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.


Требования

  • Python 3.11+
  • Ключ API VirusTotal Intelligence — требуется подписка VirusTotal Intelligence для запросов поиска по контенту (content: клаузы)
  • Опционально: Ключ API PromptIntel для синхронизации фида IOC

Установка

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

Справочник CLI

Выборка (Acquisition)

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

Поворот (Pivot)

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 Explorer corpus analytics dashboard

Экспорт и отчеты

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

Фид PromptIntel

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 спроектирован для работы без прямого взаимодействия с вредоносным ПО:

  • Никаких загрузок бинарников
  • Никаких загрузок файлов на VirusTotal
  • Никаких отправок URL или активных сканирований
  • Никаких запланированных автоматических выборок
  • Хранит только: метаданные VT, строки/фрагменты контента, хеши, объекты связей и заметки аналитика

Хотя конвейер сбора и сопоставления правил CAIRN работает только с метаданными, все атрибуции семейств и назначения архетипов, опубликованные в этом репозитории, сначала подтверждаются через практический реверс-инжиниринг Cisco Talos. Никакой отчёт о семействе не публикуется только на основании метаданных.


Участие

Вклады приветствуются. Перед открытием pull request:

  1. Запустите cairn validate-rules и cairn validate-seeds — оба должны пройти
  2. Новые T3-правила требуют как минимум одного подтверждённого seed-хеша
  3. Отчёты о семействах следуют шаблону в .claude/skills/new-family-report/
  4. Обновите таблицу таксономии архетипов в этом README при добавлении нового семейства

Лицензия

Распространяется под лицензией MIT. См. LICENSE для подробностей.

Copyright (c) 2026 Cisco Systems, Inc. and its affiliates

Войдите, чтобы оставить комментарий