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

analyzing-ransomware-leak-site-intelligence — скилл для Claude Code

Собирает структурированные данные с сайтов утечек вымогателей (DLS) и оценивает риски атак по секторам. Пригодится SOC-аналитикам для разведки угроз.

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

Что делает analyzing-ransomware-leak-site-intelligence

Скилл помогает отслеживать данные на сайтах утечек (Data Leak Sites, DLS), где группировки вымогателей публикуют сведения о жертвах при двойном вымогательстве. Он нацелен на сбор открытых фидов, включая Ransomwatch, извлечение списков компаний и выявление активных групп — например, LockBit, Akira или Qilin. В H1 2025 фиксировалось 96 активных группировок, которые вносили около 535 записей о жертвах каждый месяц.

Внутри скилла заложена логика скрипта на Python: он загружает JSON-файлы с перечнем атак и профилями группировок, парсит даты и группирует частоту публикаций через Counter и pandas. Это позволяет быстро выделить свежие инциденты за последние 30 дней или изучить динамику отдельной банды по месяцам.

Прямой заход на сайты в сети Tor из рабочей среды опасен, поэтому сбор данных нужно изолировать в исследовательской среде или вести через готовые фиды вроде RansomLook и DarkFeed. Для выполнения скриптов требуется Python 3.9+ с библиотеками requests, beautifulsoup4, pandas и matplotlib.

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

  • собирать публикации жертв с сайтов утечек через фиды Ransomwatch
  • отслеживать активность группировок Qilin, Akira и LockBit по месяцам
  • строить отчёты об угрозах двойного вымогательства для конкретных секторов
  • готовить процедуры расследования инцидентов для аналитиков SOC

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

  • «Собери список жертв вымогателей за последние 30 дней через фид Ransomwatch»
  • «Посчитай помесячную активность группировки Akira по данным утечек»

Как установить analyzing-ransomware-leak-site-intelligence

1Через Skills CLI (Vercel)

npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill analyzing-ransomware-leak-site-intelligence -a claude-code

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

~/.claude/skills/analyzing-ransomware-leak-site-intelligence/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/analyzing-ransomware-leak-site-intelligence/

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

Вопросы о analyzing-ransomware-leak-site-intelligence

Как установить analyzing-ransomware-leak-site-intelligence в Claude Code?

Выполните команду npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill analyzing-ransomware-leak-site-intelligence -a claude-code в терминале.

Что делает этот скилл?

Он помогает безопасно собирать сведения о жертвах вымогателей из внешних фидов и анализировать активность кибергруппировок.

Какие зависимости нужны для работы?

Потребуется Python 3.9+ с библиотеками requests, beautifulsoup4, pandas и matplotlib. Для подключения к адресам .onion напрямую нужен SOCKS5-прокси Tor.

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

SKILL.md · Apache-2.0
---
name: analyzing-ransomware-leak-site-intelligence
description: Safely monitor ransomware group Tor-hosted data leak sites (DLS) to collect and extract structured victim posting data, track group activity trends over time, and produce sector- and geography-specific ransomware risk assessments. Use when performing threat intelligence gathering on active ransomware groups or building proactive defense reporting from double-extortion leak-site activity.
domain: cybersecurity
subdomain: threat-intelligence
tags:
- ransomware
- leak-site
- data-leak
- extortion
- threat-intelligence
- leak-site-monitoring
- dls
- victim-tracking
version: '1.0'
author: mahipal
license: Apache-2.0
nist_csf:
- ID.RA-01
- ID.RA-05
- DE.CM-01
- DE.AE-02
mitre_attack:
- T1657
- T1486
- T1567.002
- T1591
mitre_f3:
  version: '1.1'
  tactics:
  - monetization
  - reconnaissance
  techniques:
  - id: F1018
    name: Convert to Cryptocurrency
    tactic: monetization
    source: f3
  - id: F1029
    name: Gather Customer Information
    tactic: reconnaissance
    source: f3
  - id: T1593
    name: Search Open Websites/Domains
    tactic: reconnaissance
    source: attack
  - id: F1025.003
    name: 'Electronic Funds Transfer: Wire Transfer'
    tactic: monetization
    source: f3
---
# Analyzing Ransomware Leak Site Intelligence

## Overview

Ransomware groups operating under double-extortion models maintain data leak sites (DLS) on Tor hidden services where they post victim names, stolen data samples, and countdown timers to pressure payment. In H1 2025, 96 unique ransomware groups were active, listing approximately 535 victims per month. Monitoring these sites provides intelligence on active threat groups, targeted sectors, geographic patterns, and emerging ransomware families. This skill covers safely collecting DLS intelligence, extracting structured data, tracking group activity trends, and producing sector-specific risk assessments.


## When to Use

- When investigating security incidents that require analyzing ransomware leak site intelligence
- 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 `requests`, `beautifulsoup4`, `pandas`, `matplotlib` libraries
- Tor proxy (SOCKS5) for accessing .onion sites or commercial DLS monitoring feeds
- Understanding of ransomware double-extortion business model
- Familiarity with major ransomware families (Qilin, Akira, LockBit, BlackCat, Clop)
- Access to ransomware tracking feeds (Ransomwatch, RansomLook, DarkFeed)

## Key Concepts

### Double Extortion Model

Modern ransomware groups encrypt victim data AND exfiltrate it before encryption. Leak sites serve as public pressure: victims are listed with a countdown timer, partial data samples, and file trees. If ransom is not paid, full data is published. Some groups have moved to triple extortion, adding DDoS threats or contacting victims' customers directly.

### DLS Intelligence Value

Leak sites provide: victim identification (company name, sector, country), attack timeline (when listed, deadline, data published), data volume estimates, group capability assessment (sectors targeted, attack frequency, operational tempo), and trend analysis (new groups emerging, groups rebranding, law enforcement takedowns).

### Safe Collection Practices

Never directly access DLS sites in a production environment. Use purpose-built monitoring services (Ransomwatch, DarkFeed, KELA, Flashpoint), Tor-isolated research VMs, commercial threat intelligence platforms, or community-maintained datasets. All analysis should be conducted in isolated environments with proper authorization.

## Workflow

### Step 1: Ingest Ransomware Leak Site Data from Public Feeds

```python
import requests
import json
import pandas as pd
from datetime import datetime, timedelta
from collections import Counter

class RansomwareIntelCollector:
    """Collect ransomware DLS intelligence from public tracking sources."""

    RANSOMWATCH_API = "https://raw.githubusercontent.com/joshhighet/ransomwatch/main/posts.json"
    RANSOMWATCH_GROUPS = "https://raw.githubusercontent.com/joshhighet/ransomwatch/main/groups.json"

    def __init__(self):
        self.posts = []
        self.groups = []

    def fetch_ransomwatch_data(self):
        """Fetch ransomware victim posts from ransomwatch."""
        resp = requests.get(self.RANSOMWATCH_API, timeout=30)
        if resp.status_code == 200:
            self.posts = resp.json()
            print(f"[+] Loaded {len(self.posts)} victim posts from ransomwatch")
        else:
            print(f"[-] Failed to fetch posts: {resp.status_code}")

        resp = requests.get(self.RANSOMWATCH_GROUPS, timeout=30)
        if resp.status_code == 200:
            self.groups = resp.json()
            print(f"[+] Loaded {len(self.groups)} ransomware group profiles")

        return self.posts

    def get_recent_victims(self, days=30):
        """Get victims posted in the last N days."""
        cutoff = datetime.now() - timedelta(days=days)
        recent = []
        for post in self.posts:
            try:
                discovered = datetime.fromisoformat(
                    post.get("discovered", "").replace("Z", "+00:00")
                )
                if discovered.replace(tzinfo=None) >= cutoff:
                    recent.append(post)
            except (ValueError, TypeError):
                continue
        print(f"[+] {len(recent)} victims in last {days} days")
        return recent

    def get_group_activity(self, group_name):
        """Get all posts by a specific ransomware group."""
        group_posts = [
            p for p in self.posts
            if p.get("group_name", "").lower() == group_name.lower()
        ]
        print(f"[+] {group_name}: {len(group_posts)} total victims")
        return group_posts

collector = RansomwareIntelCollector()
collector.fetch_ransomwatch_data()
recent = collector.get_recent_victims(days=30)
```

### Step 2: Analyze Group Activity and Trends

```python
def analyze_group_trends(posts, top_n=15):
    """Analyze ransomware group activity trends."""
    group_counts = Counter(p.get("group_name", "unknown") for p in posts)
    monthly_activity = {}

    for post in posts:
        try:
            date = datetime.fromisoformat(
                post.get("discovered", "").replace("Z", "+00:00")
            )
            month_key = date.strftime("%Y-%m")
            group = post.get("group_name", "unknown")
            if month_key not in monthly_activity:
                monthly_activity[month_key] = Counter()
            monthly_activity[month_key][group] += 1
        except (ValueError, TypeError):
            continue

    analysis = {
        "total_posts": len(posts),
        "unique_groups": len(group_counts),
        "top_groups": group_counts.most_common(top_n),
        "monthly_totals": {
            month: sum(counts.values())
            for month, counts in sorted(monthly_activity.items())
        },
        "monthly_top_groups": {
            month: counts.most_common(5)
            for month, counts in sorted(monthly_activity.items())
        },
    }

    print(f"\n=== Ransomware Group Activity ===")
    print(f"Total victims tracked: {analysis['total_posts']}")
    print(f"Active groups: {analysis['unique_groups']}")
    print(f"\nTop {top_n} Groups:")
    for group, count in analysis["top_groups"]:
        print(f"  {group}: {count} victims")

    return analysis

trends = analyze_group_trends(collector.posts)
```

### Step 3: Sector and Geographic Risk Assessment

```python
def assess_sector_risk(posts, target_sector=None, target_country=None):
    """Assess ransomware risk for specific sector or geography."""
    sector_data = {}
    country_data = {}

    for post in posts:
        # Extract sector if available (not all feeds include this)
        sector = post.get("sector", post.get("industry", "unknown"))
        country = post.get("country", "unknown")

        if sector not in sector_data:
            sector_data[sector] = {"count": 0, "groups": Counter(), "recent": []}
        sector_data[sector]["count"] += 1
        sector_data[sector]["groups"][post.get("group_name", "")] += 1

        if country not in country_data:
            country_data[country] = {"count": 0, "groups": Counter()}
        country_data[country]["count"] += 1
        country_data[country]["groups"][post.get("group_name", "")] += 1

    # Sector risk scoring
    total = len(posts)
    risk_assessment = {
        "total_victims": total,
        "sectors": {},
        "countries": {},
    }

    for sector, data in sorted(sector_data.items(), key=lambda x: -x[1]["count"]):
        pct = (data["count"] / total * 100) if total > 0 else 0
        risk_assessment["sectors"][sector] = {
            "victim_count": data["count"],
            "percentage": round(pct, 1),
            "top_groups": data["groups"].most_common(5),
            "risk_level": (
                "critical" if pct > 15
                else "high" if pct > 8
                else "medium" if pct > 3
                else "low"
            ),
        }

    for country, data in sorted(country_data.items(), key=lambda x: -x[1]["count"]):
        pct = (data["count"] / total * 100) if total > 0 else 0
        risk_assessment["countries"][country] = {
            "victim_count": data["count"],
            "percentage": round(pct, 1),
            "top_groups": data["groups"].most_common(5),
        }

    return risk_assessment

risk = assess_sector_risk(collector.posts)
```

### Step 4: Track Emerging and Rebranding Groups

```python
def track_new_groups(posts, lookback_days=90):
    """Identify newly emerged ransomware groups."""
    group_first_seen = {}
    for post in posts:
        group = post.get("group_name", "")
        try:
            date = datetime.fromisoformat(
                post.get("discovered", "").replace("Z", "+00:00")
            )
            if group not in group_first_seen or date < group_first_seen[group]["first_seen"]:
                group_first_seen[group] = {
                    "first_seen": date,
                    "first_victim": post.get("post_title", ""),
                }
        except (ValueError, TypeError):
            continue

    cutoff = datetime.now() - timedelta(days=lookback_days)
    new_groups = {
        group: info for group, info in group_first_seen.items()
        if info["first_seen"].replace(tzinfo=None) >= cutoff
    }

    # Count total victims per new group
    for group in new_groups:
        victims = [p for p in posts if p.get("group_name") == group]
        new_groups[group]["total_victims"] = len(victims)
        new_groups[group]["avg_per_month"] = round(
            len(victims) / max(1, lookback_days / 30), 1
        )

    print(f"\n=== New Groups (last {lookback_days} days) ===")
    for group, info in sorted(new_groups.items(), key=lambda x: -x[1]["total_victims"]):
        print(f"  {group}: {info['total_victims']} victims, "
              f"first seen {info['first_seen'].strftime('%Y-%m-%d')}")

    return new_groups

new_groups = track_new_groups(collector.posts, lookback_days=90)
```

### Step 5: Generate Intelligence Report

```python
def generate_ransomware_intel_report(trends, risk, new_groups):
    """Generate ransomware threat intelligence report."""
    report = f"""# Ransomware Threat Intelligence Report
Generated: {datetime.now().isoformat()}

## Executive Summary
- **Total victims tracked**: {trends['total_posts']}
- **Active ransomware groups**: {trends['unique_groups']}
- **New groups (last 90 days)**: {len(new_groups)}

## Top Active Groups
| Rank | Group | Victims |
|------|-------|---------|
"""
    for i, (group, count) in enumerate(trends["top_groups"][:10], 1):
        report += f"| {i} | {group} | {count} |\n"

    report += "\n## New Emerging Groups\n"
    for group, info in sorted(new_groups.items(), key=lambda x: -x[1]["total_victims"])[:10]:
        report += f"- **{group}**: {info['total_victims']} victims since {info['first_seen'].strftime('%Y-%m-%d')}\n"

    report += "\n## Sector Risk Assessment\n"
    report += "| Sector | Victims | % | Risk Level |\n|--------|---------|---|------------|\n"
    for sector, data in list(risk["sectors"].items())[:10]:
        report += f"| {sector} | {data['victim_count']} | {data['percentage']}% | {data['risk_level'].upper()} |\n"

    report += """
## Recommendations
1. Monitor DLS feeds daily for your organization and supply chain partners
2. Prioritize patching vulnerabilities exploited by top active groups
3. Implement offline backup strategy to reduce extortion leverage
4. Conduct tabletop exercises for ransomware scenario response
5. Share indicators with sector ISACs and threat sharing communities
"""
    with open("ransomware_intel_report.md", "w") as f:
        f.write(report)
    print("[+] Report saved: ransomware_intel_report.md")
    return report

generate_ransomware_intel_report(trends, risk, new_groups)
```

## Validation Criteria

- Ransomware victim data ingested from public tracking feeds
- Group activity trends analyzed with monthly breakdowns
- Sector and geographic risk assessment produced
- New and emerging groups identified with activity metrics
- Intelligence report generated with actionable recommendations
- All collection conducted through authorized public sources

## References

- [Ransomwatch GitHub](https://github.com/joshhighet/ransomwatch)
- [SOCRadar: Top Ransomware Statistics 2025](https://socradar.io/blog/top-20-ransomware-statistics-to-know-2025/)
- [Bitsight: Ransomware & Deep Web Trends](https://www.bitsight.com/underground/ransomware)
- [Sophos: Threat Intelligence Report 2025](https://www.sophos.com/en-us/blog/threat-intelligence-executive-report-volume-2025-number-6)
- [H-ISAC: Ransomware Data Leak Sites Report](https://www.aha.org/h-isac-green-reports/2025-08-26-h-isac-tlp-ransomware-data-leak-sites-report-august-26-2025)
- [CYFIRMA: Weekly Intelligence Reports](https://www.cyfirma.com/news/weekly-intelligence-report-16-january-2026/)

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

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

Всё по теме «Безопасность» →
detection-engineering-coverage-evaluation официальный google Скилл проводит цикл проверки покрытия правил Google SecOps: от разбора данных об угрозе до поиска пробелов и создания новых правил. Пригодится для оценки детектирования по синтетическим событиям. CX Codex 6 394установок secops-detection-engineering официальный Google LLC Скилл помогает писать, проверять, тестировать и развёртывать правила YARA-L 2.0 в Google SecOps. Подходит для поиска пробелов в покрытии. CX Codex 1 900установок investigate-anything UseOSINT Задаёт правила и структуру для OSINT-расследований по людям, компаниям или доменам. Помогает составить план сбора данных и выбрать подходящий воркфлоу до первых запросов. CX Codex +1 1 800установок osint-recon briiirussell Собирает и сопоставляет данные из открытых источников для анализа цифрового следа и поверхности атаки. Помогает структурировать разведку по доменам, организациям и утечкам. CX Codex +1 386установок memory-leak-debugging ChromeDevTools Находит утечки памяти в JavaScript и Node.js через Chrome DevTools MCP. Пригодится для анализа высокого расхода памяти, OOM и heap snapshots. CX Codex +1 3 200установок xss-cross-site-scripting yaklang Скилл для ИИ-агента, который подсказывает неочевидные XSS-векторы: выбор пейлоада под контекст, обход WAF и CSP. CX Codex +1 3 900установок

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

exploiting-api-injection-vulnerabilities Скилл находит инъекции в параметрах, заголовках и телах запросов к API. Пригодится при оценке защищённости эндпоинтов и проверке правил валидации пользовательских значений. CX Codex +1 311установок analyzing-outlook-pst-for-email-forensics Скилл разбирает PST и OST Outlook: извлекает письма, заголовки, вложения и удалённые элементы. Нужен для почтовой криминалистики и реагирования на инциденты. CX Codex +1 308установок abusing-shadow-credentials-for-privesc Скилл помогает захватить учётную запись Active Directory через атрибут msDS-KeyCredentialLink без сброса пароля. Нужен на авторизованных пентестах при наличии прав GenericWrite или GenericAll. CX Codex +1 307установок testing-for-host-header-injection Проверяет веб-приложение на инъекции HTTP-заголовка Host и связанные риски сброса пароля, отравления кэша, SSRF и маршрутизации виртуальных хостов. CX Codex +1 306установок testing-for-xss-vulnerabilities-with-burpsuite Ведёт агента по шагам поиска и подтверждения XSS в веб-приложении: от карты сайта до обхода CSP. Нужен на авторизованном пентесте. CX Codex +1 307установок analyzing-powershell-script-block-logging Скилл разбирает журналы PowerShell Script Block Logging из EVTX и находит обфусцированные команды, Base64-полезные нагрузки и попытки обхода AMSI. CX Codex +1 305установок analyzing-packed-malware-with-upx-unpacker Скилл помогает распаковать замаскированный UPX-образец и вернуть оригинальный исполняемый файл для статического анализа. CX Codex +1 303установок analyzing-ransomware-encryption-mechanisms Разбирает алгоритмы шифрования программ-вымогателей, схемы генерации ключей и структуру шифрования файлов. Помогает оценить шансы на расшифровку данных без выкупа. CX Codex +1 302установок

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

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