К основному содержанию
скилл CX Codex

analyzing-apt-group-with-mitre-navigator — скилл для Codex

Запрашивает данные ATT&CK по APT-группам и собирает слои MITRE ATT&CK Navigator для сравнения TTP и поиска пробелов в обнаружении.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill analyzing-apt-group-with-mitre-navigator -a claude-code
Открыть на GitHub

Что делает analyzing-apt-group-with-mitre-navigator

Скилл получает данные о группах и используемых ими техниках ATT&CK через attackcti, затем формирует карту техник с тактиками, платформами и источниками данных. Он помогает сопоставить несколько APT-групп, подготовить слои MITRE ATT&CK Navigator и наложить их на карту покрытия обнаружения.

Внутри есть Python-примеры для запроса групп, генерации JSON-слоя и сравнения наборов техник. Для работы нужны Python 3.9+ и библиотеки attackcti, mitreattack-python, stix2, requests, а также MITRE ATT&CK Navigator или его локальная версия. Нужен доступ к отчётам threat intelligence либо к MISP/OpenCTI. Это повод заранее проверить окружение Python и источник данных.

Скилл рассчитан на анализ Enterprise ATT&CK: слои могут содержать оценки, цвета, комментарии и метаданные по техникам. Результаты подходят для анализа пробелов в обнаружении, threat hunting и отчётов по threat intelligence.

Какие задачи решает

  • найти техники ATT&CK, связанные с APT-группой
  • собрать JSON-слой для MITRE ATT&CK Navigator
  • сравнить TTP нескольких групп
  • сопоставить техники с покрытием обнаружения
  • подготовить данные для threat-intel отчёта

Примеры запросов агенту

  • Проанализируй APT29 по ATT&CK и сохрани карту техник в apt29_layer.json.
  • Сравни APT29, APT28 и Lazarus Group по используемым техникам и найди общие TTP.
  • Создай слой MITRE ATT&CK Navigator с платформами, тактиками и комментариями для выбранной группы.

Как установить analyzing-apt-group-with-mitre-navigator

1Через Skills CLI (Vercel)

npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill analyzing-apt-group-with-mitre-navigator -a claude-code

2Вручную: положить файлы

~/.claude/skills/analyzing-apt-group-with-mitre-navigator/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/analyzing-apt-group-with-mitre-navigator/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о analyzing-apt-group-with-mitre-navigator

Как установить analyzing-apt-group-with-mitre-navigator в Codex?

Выполните npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill analyzing-apt-group-with-mitre-navigator -a codex, затем используйте файл .agents/skills/analyzing-apt-group-with-mitre-navigator/SKILL.md.

Что делает analyzing-apt-group-with-mitre-navigator?

Скилл запрашивает данные ATT&CK о группах и их техниках, создаёт слои MITRE ATT&CK Navigator и помогает сравнивать покрытие техник для поиска пробелов в обнаружении.

Что нужно для работы с analyzing-apt-group-with-mitre-navigator?

Нужны Python 3.9+ с attackcti, mitreattack-python, stix2 и requests, MITRE ATT&CK Navigator или локальная установка, а также данные из threat intelligence либо MISP/OpenCTI.

Исходный текст

SKILL.md · Apache-2.0
---
name: analyzing-apt-group-with-mitre-navigator
description: Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups' TTPs for detection-gap analysis. Use to compare threat-actor technique coverage, find gaps in detection engineering, or produce Navigator visualizations for threat-intel reporting.
domain: cybersecurity
subdomain: threat-intelligence
tags:
- mitre-attack
- navigator
- apt
- threat-actor
- ttp-analysis
- heatmap
- detection-gap
- threat-intelligence
version: '1.0'
author: mahipal
license: Apache-2.0
d3fend_techniques:
- Executable Denylisting
- Execution Isolation
- File Metadata Consistency Validation
- Content Format Conversion
- File Content Analysis
nist_csf:
- ID.RA-01
- ID.RA-05
- DE.CM-01
- DE.AE-02
mitre_attack:
- T1059.001
- T1071.001
- T1003.001
- T1486
- T1547.001
---
# Analyzing APT Group with MITRE ATT&CK Navigator

## Overview

MITRE ATT&CK Navigator is a web-based tool for annotating and exploring ATT&CK matrices, enabling analysts to visualize threat actor technique coverage, compare multiple APT groups, identify detection gaps, and build threat-informed defense strategies. This skill covers querying ATT&CK data programmatically, mapping APT group TTPs to Navigator layers, creating multi-layer overlays for gap analysis, and generating actionable intelligence reports for detection engineering teams.


## When to Use

- When investigating security incidents that require analyzing apt group with mitre navigator
- When building detection rules or threat hunting queries for this domain
- When SOC analysts need structured procedures for this analysis type
- When validating security monitoring coverage for related attack techniques

## Prerequisites

- Python 3.9+ with `attackcti`, `mitreattack-python`, `stix2`, `requests` libraries
- ATT&CK Navigator (https://mitre-attack.github.io/attack-navigator/) or local deployment
- Understanding of ATT&CK Enterprise matrix: 14 Tactics, 200+ Techniques, Sub-techniques
- Access to threat intelligence reports or MISP/OpenCTI for threat actor data
- Familiarity with STIX 2.1 Intrusion Set and Attack Pattern objects

## Key Concepts

### ATT&CK Navigator Layers

Navigator layers are JSON files that annotate ATT&CK techniques with scores, colors, comments, and metadata. Each layer can represent a single APT group's technique usage, a detection capability map, or a combined overlay. Layer version 4.5 supports enterprise-attack, mobile-attack, and ics-attack domains with filtering by platform (Windows, Linux, macOS, Cloud, Azure AD, Office 365, SaaS).

### APT Group Profiles in ATT&CK

ATT&CK catalogs over 140 threat groups with documented technique usage. Each group profile includes aliases, targeted sectors, associated campaigns, software used, and technique mappings with procedure-level detail. Groups are identified by G-codes (e.g., G0016 for APT29, G0007 for APT28, G0032 for Lazarus Group).

### Multi-Layer Analysis

The Navigator supports loading multiple layers simultaneously, allowing analysts to overlay threat actor TTPs against detection coverage to identify gaps, compare multiple APT groups to find common techniques worth prioritizing, and track technique coverage changes over time.

## Workflow

### Step 1: Query ATT&CK Data for APT Group

```python
from attackcti import attack_client
import json

lift = attack_client()

# Get all threat groups
groups = lift.get_groups()
print(f"Total ATT&CK groups: {len(groups)}")

# Find APT29 (Cozy Bear / Midnight Blizzard)
apt29 = next((g for g in groups if g.get('name') == 'APT29'), None)
if apt29:
    print(f"Group: {apt29['name']}")
    print(f"Aliases: {apt29.get('aliases', [])}")
    print(f"Description: {apt29.get('description', '')[:300]}")

# Get techniques used by APT29 (G0016)
techniques = lift.get_techniques_used_by_group("G0016")
print(f"APT29 uses {len(techniques)} techniques")

technique_map = {}
for tech in techniques:
    tech_id = ""
    for ref in tech.get("external_references", []):
        if ref.get("source_name") == "mitre-attack":
            tech_id = ref.get("external_id", "")
            break
    if tech_id:
        tactics = [p.get("phase_name", "") for p in tech.get("kill_chain_phases", [])]
        technique_map[tech_id] = {
            "name": tech.get("name", ""),
            "tactics": tactics,
            "description": tech.get("description", "")[:500],
            "platforms": tech.get("x_mitre_platforms", []),
            "data_sources": tech.get("x_mitre_data_sources", []),
        }
```

### Step 2: Generate Navigator Layer JSON

```python
def create_navigator_layer(group_name, technique_map, color="#ff6666"):
    techniques_list = []
    for tech_id, info in technique_map.items():
        for tactic in info["tactics"]:
            techniques_list.append({
                "techniqueID": tech_id,
                "tactic": tactic,
                "color": color,
                "comment": info["name"],
                "enabled": True,
                "score": 100,
                "metadata": [
                    {"name": "group", "value": group_name},
                    {"name": "platforms", "value": ", ".join(info["platforms"])},
                ],
            })

    layer = {
        "name": f"{group_name} TTP Coverage",
        "versions": {"attack": "16.1", "navigator": "5.1.0", "layer": "4.5"},
        "domain": "enterprise-attack",
        "description": f"Techniques attributed to {group_name}",
        "filters": {
            "platforms": ["Linux", "macOS", "Windows", "Cloud",
                          "Azure AD", "Office 365", "SaaS", "Google Workspace"]
        },
        "sorting": 0,
        "layout": {
            "layout": "side", "aggregateFunction": "average",
            "showID": True, "showName": True,
            "showAggregateScores": False, "countUnscored": False,
        },
        "hideDisabled": False,
        "techniques": techniques_list,
        "gradient": {"colors": ["#ffffff", color], "minValue": 0, "maxValue": 100},
        "legendItems": [
            {"label": f"Used by {group_name}", "color": color},
            {"label": "Not observed", "color": "#ffffff"},
        ],
        "showTacticRowBackground": True,
        "tacticRowBackground": "#dddddd",
        "selectTechniquesAcrossTactics": True,
        "selectSubtechniquesWithParent": False,
        "selectVisibleTechniques": False,
    }
    return layer

layer = create_navigator_layer("APT29", technique_map)
with open("apt29_layer.json", "w") as f:
    json.dump(layer, f, indent=2)
print("[+] Layer saved: apt29_layer.json")
```

### Step 3: Compare Multiple APT Groups

```python
groups_to_compare = {"G0016": "APT29", "G0007": "APT28", "G0032": "Lazarus Group"}
group_techniques = {}

for gid, gname in groups_to_compare.items():
    techs = lift.get_techniques_used_by_group(gid)
    tech_ids = set()
    for t in techs:
        for ref in t.get("external_references", []):
            if ref.get("source_name") == "mitre-attack":
                tech_ids.add(ref.get("external_id", ""))
    group_techniques[gname] = tech_ids

common_to_all = set.intersection(*group_techniques.values())
print(f"Techniques common to all groups: {len(common_to_all)}")
for tid in sorted(common_to_all):
    print(f"  {tid}")

for gname, techs in group_techniques.items():
    others = set.union(*[t for n, t in group_techniques.items() if n != gname])
    unique = techs - others
    print(f"\nUnique to {gname}: {len(unique)} techniques")
```

### Step 4: Detection Gap Analysis with Layer Overlay

```python
# Define your current detection capabilities
detected_techniques = {
    "T1059", "T1059.001", "T1071", "T1071.001", "T1566", "T1566.001",
    "T1547", "T1547.001", "T1053", "T1053.005", "T1078", "T1027",
}

actor_techniques = set(technique_map.keys())
covered = actor_techniques.intersection(detected_techniques)
gaps = actor_techniques - detected_techniques

print(f"=== Detection Gap Analysis for APT29 ===")
print(f"Actor techniques: {len(actor_techniques)}")
print(f"Detected: {len(covered)} ({len(covered)/len(actor_techniques)*100:.0f}%)")
print(f"Gaps: {len(gaps)} ({len(gaps)/len(actor_techniques)*100:.0f}%)")

# Create gap layer (red = undetected, green = detected)
gap_techniques = []
for tech_id in actor_techniques:
    info = technique_map.get(tech_id, {})
    for tactic in info.get("tactics", [""]):
        color = "#66ff66" if tech_id in detected_techniques else "#ff3333"
        gap_techniques.append({
            "techniqueID": tech_id,
            "tactic": tactic,
            "color": color,
            "comment": f"{'DETECTED' if tech_id in detected_techniques else 'GAP'}: {info.get('name', '')}",
            "enabled": True,
            "score": 100 if tech_id in detected_techniques else 0,
        })

gap_layer = {
    "name": "APT29 Detection Gap Analysis",
    "versions": {"attack": "16.1", "navigator": "5.1.0", "layer": "4.5"},
    "domain": "enterprise-attack",
    "description": "Green = detected, Red = gap",
    "techniques": gap_techniques,
    "gradient": {"colors": ["#ff3333", "#66ff66"], "minValue": 0, "maxValue": 100},
    "legendItems": [
        {"label": "Detected", "color": "#66ff66"},
        {"label": "Detection Gap", "color": "#ff3333"},
    ],
}
with open("apt29_gap_layer.json", "w") as f:
    json.dump(gap_layer, f, indent=2)
```

### Step 5: Tactic Breakdown Analysis

```python
from collections import defaultdict

tactic_breakdown = defaultdict(list)
for tech_id, info in technique_map.items():
    for tactic in info["tactics"]:
        tactic_breakdown[tactic].append({"id": tech_id, "name": info["name"]})

tactic_order = [
    "reconnaissance", "resource-development", "initial-access",
    "execution", "persistence", "privilege-escalation",
    "defense-evasion", "credential-access", "discovery",
    "lateral-movement", "collection", "command-and-control",
    "exfiltration", "impact",
]

print("\n=== APT29 Tactic Breakdown ===")
for tactic in tactic_order:
    techs = tactic_breakdown.get(tactic, [])
    if techs:
        print(f"\n{tactic.upper()} ({len(techs)} techniques):")
        for t in techs:
            print(f"  {t['id']}: {t['name']}")
```

## Validation Criteria

- ATT&CK data queried successfully via TAXII server
- APT group mapped to all documented techniques with procedure examples
- Navigator layer JSON validates and renders correctly in ATT&CK Navigator
- Multi-layer overlay shows threat actor vs. detection coverage
- Detection gap analysis identifies unmonitored techniques with data source recommendations
- Cross-group comparison reveals shared and unique TTPs
- Output is actionable for detection engineering prioritization

## References

- [MITRE ATT&CK Navigator](https://mitre-attack.github.io/attack-navigator/)
- [ATT&CK Groups](https://attack.mitre.org/groups/)
- [attackcti Python Library](https://github.com/OTRF/ATTACK-Python-Client)
- [Navigator Layer Format v4.5](https://github.com/mitre-attack/attack-navigator/blob/master/layers/LAYERFORMATv4_5.md)
- [CISA Best Practices for MITRE ATT&CK Mapping](https://www.cisa.gov/sites/default/files/2023-01/Best%20Practices%20for%20MITRE%20ATTCK%20Mapping.pdf)
- [Picus: Leverage MITRE ATT&CK for Threat Intelligence](https://www.picussecurity.com/how-to-leverage-the-mitre-attack-framework-for-threat-intelligence)

© mahipal · Apache-2.0 · mukul975/Anthropic-Cybersecurity-Skills

Похожие скиллы

Всё по теме «Безопасность» →
debian-linux-triage официальный github Скилл помогает разбирать проблемы Debian Linux через apt, systemd и dpkg, учитывая AppArmor и firewall. Подойдёт для диагностики с пошаговой проверкой. 9 197установок assuredworkloads-frameworks-navigator официальный google Сопоставляет требования комплаенса с Google Cloud Data Boundary Frameworks и облачными контролями. Помогает выбрать встроенные фреймворки и найти пробелы в требованиях. CX Codex 191установок secops-hunt официальный Google LLC Скилл помогает искать угрозы в Google SecOps: проверять гипотезы, искать IoC и аномалии в событиях UDM. Подойдёт для проактивного threat hunting. CX Codex 1 900установок red-team Alireza Rezvani Скилл для структурированного планирования авторизованных операций красной команды: анализ цепочек атак по MITRE ATT&CK, оценка техник, выявление критических точек и оценка рисков OPSEC. 826установок threat-detection Alireza Rezvani Помогает искать скрытую активность через гипотезы, IOC и аномалии в телеметрии. Нужен для проактивной охоты до срабатывания автоматических алертов. 637установок siem-detection briiirussell Проектирует и проверяет правила детекта для SIEM: отслеживает покрытие логов, генерирует запросы Sigma, KQL, SPL и размечает техники MITRE ATT&CK. CX Codex +1 330установок

Из того же набора89

analyzing-certificate-transparency-for-phishing Отслеживает журналы Certificate Transparency, чтобы находить фишинговые домены-двойники и несанкционированные сертификаты для доменов организации. CX Codex +1 547установок analyzing-active-directory-acl-abuse Читает DACL объектов Active Directory через ldap3, разбирает их в SDDL и показывает ACE, где GenericAll, WriteDACL или WriteOwner достались не админам. CX Codex +1 548установок testing-api-for-broken-object-level-authorization Проверяет REST и GraphQL API на уязвимости BOLA и IDOR через подмену идентификаторов объектов. Помогает найти ошибки разграничения доступа между пользователями. CX Codex +1 541установок testing-jwt-token-security Скилл для проверки JWT на криптографические слабости, подмену алгоритма и обход авторизации. Нужен на пентесте API и SSO. CX Codex +1 536установок analyzing-network-traffic-with-wireshark Скилл учит агента захватывать пакеты через tshark и Wireshark: искать C2-трафик, утечки и сбои протоколов. CX Codex +1 533установок analyzing-dns-logs-for-exfiltration Разбирает логи DNS-запросов и ищет туннелирование, DGA-домены и скрытые C2-каналы. Нужен, когда трафик уходит мимо файрвола и прокси. CX Codex +1 527установок analyzing-command-and-control-communication Скилл разбирает сетевое взаимодействие вредоносных программ с C2 и помогает понять протокол, маячки, кодирование и инфраструктуру. Нужен для анализа PCAP и сигнатур. CX Codex +1 528установок testing-for-broken-access-control Помогает проверять веб-приложения и API на ошибки контроля доступа по OWASP A01:2021. Пригодится при аудите RBAC и анализе изоляции данных. CX Codex +1 522установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой