mcpField
P
performing-dark-web-monitoring-for-threats

performing-dark-web-monitoring-for-threats

github.com/mukul975安全35.2k103 次安装8 周前更新
代码仓库

关于 performing-dark-web-monitoring-for-threats

这是一项面向安全团队的暗网威胁监控技能,涵盖数据收集、凭据泄露与组织提及监控,以及情报报告生成。内容也强调 Tor 环境下的操作安全与法律、伦理边界。

主要功能

  1. 01配置 Tor 网络采集
  2. 02监控凭据泄露与组织提及
  3. 03检查勒索软件泄露站点
  4. 04生成暗网情报报告
  5. 05遵循操作安全与合规要求

适用场景

  1. 01安全评估中的暗网威胁排查
  2. 02响应相关安全事件
  3. 03定期安全测试与审计

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill performing-dark-web-monitoring-for-threats

安装后在 Claude Code 中输入/performing-dark-web-monitoring-for-threats确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
assets/
template.md
references/
api-reference.md
standards.md
workflows.md
scripts/
agent.py
process.py

详细介绍

针对威胁执行暗网监控

概述

暗网监控涉及系统地扫描 Tor 隐藏服务、地下论坛、粘贴站点和暗网市场,以识别针对组织的威胁,包括泄露的凭据、数据泄露、威胁行为者讨论、漏洞利用工具和计划中的攻击。本技能涵盖搭建监控基础设施、使用基于 Tor 的采集工具、为品牌提及和凭据泄露实现自动化告警,以及分析暗网情报以获取可操作的威胁指标。

何时使用

  • 在执行涉及针对威胁进行暗网监控的安全评估时
  • 在针对相关安全事件遵循事件响应流程时
  • 在执行计划内的安全测试或审计活动时
  • 在通过动手测试验证安全控制措施时

前提条件

  • Tor Browser 和 Tor 代理(端口 9050 上的 SOCKS5)
  • Python 3.9+,以及 requests、stem、beautifulsoup4、stix2 库
  • 了解 Tor 隐藏服务架构(.onion 域)
  • 对暗网监控服务的 API 访问权限(Flare、SpyCloud、DarkOwl、Intel 471)
  • 了解暗网研究的法律和道德边界
  • 用于暗网浏览的隔离 VM(不泄露个人或企业身份)

关键概念

暗网情报来源
  • 地下论坛:威胁行为者讨论 TTP、出售漏洞利用和共享工具的黑客论坛
  • 粘贴站点:用于共享窃取的数据、凭据和代码片段的平台
  • 市场:出售窃取数据、RaaS、漏洞利用工具包和访问权限的暗网市场
  • Telegram/Discord:网络犯罪团体的替代通信渠道
  • 勒索软件泄露站点:勒索软件团体发布受害者窃取数据的博客
采集方法
  • 自动化爬取:基于 Tor 的网页爬虫扫描隐藏服务
  • 基于 API 的监控:商业暗网监控 API(Flare、DarkOwl、Intel 471)
  • 人工 HUMINT:由分析师驱动对特定论坛和市场进行研究
  • 凭据监控:针对泄露凭据的泄露数据库和粘贴站点监控
暗网研究的 OPSEC
  • 使用不含个人数据的专用 VM
  • 将所有流量通过 Tor 路由(推荐 Whonix 或 Tails)
  • 绝不使用个人账户或可识别信息
  • 为论坛注册使用单独的电子邮件地址和角色身份
  • 在 Tor Browser 中禁用 JavaScript 以增强安全性
  • 绝不在生产系统上下载或执行来自暗网来源的文件

工作流

步骤 1:搭建基于 Tor 的 HTTP 客户端
import requests
from requests.adapters import HTTPAdapter

def create_tor_session():
    """Create a requests session routed through Tor SOCKS5 proxy."""
    session = requests.Session()
    session.proxies = {
        "http": "socks5h://127.0.0.1:9050",
        "https": "socks5h://127.0.0.1:9050",
    }
    session.headers.update({
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; rv:109.0) Gecko/20100101 Firefox/115.0",
    })
    return session


def verify_tor_connection(session):
    """Verify that traffic is routed through Tor."""
    try:
        resp = session.get("https://check.torproject.org/api/ip", timeout=30)
        data = resp.json()
        return {
            "is_tor": data.get("IsTor", False),
            "ip": data.get("IP", ""),
        }
    except Exception as e:
        return {"error": str(e)}
步骤 2:监控粘贴站点的凭据泄露
import re
from datetime import datetime

def monitor_paste_sites(session, organization_domains):
    """Monitor paste sites for leaked credentials matching organization domains."""
    findings = []

    # Check Have I Been Pwned API (clearnet)
    for domain in organization_domains:
        try:
            resp = requests.get(
                f"https://haveibeenpwned.com/api/v3/breaches",
                headers={"hibp-api-key": "YOUR_HIBP_KEY"},
                timeout=30,
            )
            if resp.status_code == 200:
                breaches = resp.json()
                for breach in breaches:
                    if domain.lower() in breach.get("Domain", "").lower():
                        findings.append({
                            "source": "HIBP",
                            "breach_name": breach["Name"],
                            "breach_date": breach.get("BreachDate"),
                            "data_classes": breach.get("DataClasses", []),
                            "pwn_count": breach.get("PwnCount", 0),
                            "domain": domain,
                        })
        except Exception as e:
            print(f"[-] HIBP error for {domain}: {e}")

    return findings


def search_for_keywords(session, keywords, onion_paste_urls):
    """Search dark web paste sites for specific keywords."""
    results = []

    for paste_url in onion_paste_urls:
        try:
            resp = session.get(paste_url, timeout=60)
            if resp.status_code == 200:
                content = resp.text.lower()
                for keyword in keywords:
                    if keyword.lower() in content:
                        results.append({
                            "url": paste_url,
                            "keyword": keyword,
                            "timestamp": datetime.utcnow().isoformat(),
                            "snippet": extract_context(content, keyword.lower()),
                        })
        except Exception as e:
            print(f"[-] Error fetching {paste_url}: {e}")

    return results


def extract_context(text, keyword, context_chars=200):
    """Extract text context around a keyword match."""
    idx = text.find(keyword)
    if idx == -1:
        return ""
    start = max(0, idx - context_chars)
    end = min(len(text), idx + len(keyword) + context_chars)
    return text[start:end]
步骤 3:监控勒索软件泄露站点
def check_ransomware_leak_sites(session, organization_name):
    """Check known ransomware group leak sites for organization mentions."""
    # Use Ransomwatch API (clearnet aggregator of ransomware leak sites)
    try:
        resp = requests.get(
            "https://raw.githubusercontent.com/joshhighet/ransomwatch/main/posts.json",
            timeout=30,
        )
        if resp.status_code == 200:
            posts = resp.json()
            matches = []
            for post in posts:
                post_title = post.get("post_title", "").lower()
                if organization_name.lower() in post_title:
                    matches.append({
                        "group": post.get("group_name", ""),
                        "title": post.get("post_title", ""),
                        "discovered": post.get("discovered", ""),
                        "url": post.get("post_url", ""),
                    })
            return matches
    except Exception as e:
        print(f"[-] Ransomwatch error: {e}")
    return []
步骤 4:生成暗网情报报告
def generate_dark_web_report(findings, organization):
    """Generate structured dark web intelligence report."""
    report = {
        "organization": organization,
        "report_date": datetime.utcnow().isoformat(),
        "executive_summary": "",
        "credential_leaks": [],
        "ransomware_mentions": [],
        "dark_web_mentions": [],
        "recommendations": [],
    }

    for finding in findings:
        if finding.get("source") == "HIBP":
            report["credential_leaks"].append(finding)
        elif finding.get("group"):
            report["ransomware_mentions"].append(finding)
        else:
            report["dark_web_mentions"].append(finding)

    # Generate executive summary
    cred_count = len(report["credential_leaks"])
    ransom_count = len(report["ransomware_mentions"])
    report["executive_summary"] = (
        f"Monitoring identified {cred_count} credential leak sources "
        f"and {ransom_count} ransomware group mentions for {organization}."
    )

    if ransom_count > 0:
        report["recommendations"].append(
            "CRITICAL: Organization mentioned on ransomware leak site. "
            "Initiate incident response immediately."
        )
    if cred_count > 0:
        report["recommendations"].append(
            "HIGH: Leaked credentials detected. Force password resets for "
            "affected accounts and enable MFA."
        )

    return report

验证标准

  • 已建立 Tor 连接,并通过 check.torproject.org 验证
  • 凭据泄露监控从 HIBP 和粘贴站点返回结果
  • 勒索软件泄露站点监控识别出相关提及
  • 生成带有可操作建议的暗网情报报告
  • 所有监控均在法律和道德边界内执行
  • 保持 OPSEC:无个人或企业身份暴露

参考资料

评论

支持 Markdown