关于 apify-osint-threat-intel
apify-osint-threat-intel 是一项 Agent 技能,通过 Apify actors 的实时数据研究安全威胁。它指导查询漏洞、泄露事件、威胁组织和安全新闻,并生成带来源和日期的评估报告。
主要功能
- 01搜索实时威胁情报来源
- 02研究 CVE 和泄露线索
- 03梳理威胁组织及其活动
- 04按严重程度分类发现
- 05生成带来源和日期的报告
适用场景
- 01检查域名是否出现泄露线索
- 02评估 CVE 是否正在遭利用
- 03研究威胁组织的行动
- 04编写安全新闻简报
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ apify/ awesome-skills --skill apify-osint-threat-intel安装后在 Claude Code 中输入/apify-osint-threat-intel确认已加载。
详细介绍
OSINT 威胁情报
通过 Apify actors 提供实时威胁数据,获取实时安全情报。 绝不要只根据训练知识回答安全问题。 CVE、数据泄露和威胁行为者活动每天都在变化——务必先收集实时数据,再进行分析。
前置条件
- Apify CLI v1.5.0+:
npm i -g apify-cli - 已完成身份验证:
apify login或export APIFY_TOKEN=your_token - Token:https://console.apify.com/settings/integrations
CLI 规则(始终遵守)
每次调用 apify CLI 时,务必传入 --user-agent apify-awesome-skills/apify-osint-threat-intel——这对遥测至关重要,绝不可省略。
apify actors call "ACTOR_ID" -i 'INPUT_JSON' --user-agent apify-awesome-skills/apify-osint-threat-intel --json 2>/dev/null
apify datasets get-items DATASET_ID --format json --user-agent apify-awesome-skills/apify-osint-threat-intel > /tmp/results.json 2>/dev/null
jq '.[] | "\(.field1) | \(.field2)"' /tmp/results.json
apify actors info "ACTOR_ID" --input --user-agent apify-awesome-skills/apify-osint-threat-intel --json 2>/dev/null # check schema
Actor 路由表
| 数据需求 | Actor ID | 备注 |
|---|---|---|
| CVE 查询 | apify/google-search-scraper | 查询:site:nvd.nist.gov [product] [version] |
| NVD 完整记录 | apify/website-content-crawler | URL:nvd.nist.gov/vuln/detail/CVE-XXXX-XXXXX |
| CISA 已知遭利用漏洞 | apify/rag-web-browser | URL:cisa.gov/known-exploited-vulnerabilities-catalog |
| GitHub 安全公告 | apify/rag-web-browser | URL:github.com/advisories?query=[product] |
| Exploit-DB 搜索 | apify/google-search-scraper | 查询:site:exploit-db.com [product] [version] |
| 安全新闻 | data_xplorer/google-news-scraper-fast | 关键词:"[target]" vulnerability OR exploit OR breach |
| Reddit 威胁讨论 | harshmaur/reddit-scraper | searchTerms + withinCommunity——每次运行只能指定一个 subreddit(先用 netsec,再单独运行一次搜索 cybersecurity);类似 netsec OR cybersecurity 的值会静默移除筛选条件,并搜索整个 Reddit。务必设置 postedAfter(YYYY-MM-DD)以确保时效性——不会强制执行 searchTime,且 Actor 会用多年前的帖子补足数量上限。按事件付费:每次运行 $0.02 + 每条帖子 $0.002;maxPostsCount 按每个搜索词计算。 |
| Threat intel Twitter/X | apidojo/tweet-scraper | 关键词:#threatintel [target],搜索模式 |
| 数据泄露提及搜索 | apify/google-search-scraper | 查询:"[domain]" site:pastebin.com OR intext:breach |
| 供应商安全公告 | apify/website-content-crawler | 供应商安全页面的直接 URL |
| Shodan 暴露线索 | apify/google-search-scraper | 查询:site:shodan.io "[domain OR org name]" |
| 威胁行为者研究 | apify/rag-web-browser | MITRE ATT&CK:attack.mitre.org/groups/ |
优先使用 apify/google-search-scraper 和 apify/rag-web-browser,速度比 website-content-crawler 快。
仅在需要完整页面正文时使用 website-content-crawler(例如 NVD 详情、供应商公告)。
不要在以下网站使用 website-content-crawler:reddit.com、twitter.com、pastebin.com、linkedin.com。
核心工作流
步骤 0 — 运行任何操作前先明确范围
询问用户:
- 目标类型:域名、IP、软件/版本、CVE ID、威胁行为者名称或关键词?
- 目标:一次性查询,还是持续监控简报?
- 自主程度:全自动运行,还是每次调用 actor 前先确认?
步骤 1 — 确定模块
| 用户说 | 模块 | 步骤 |
|---|---|---|
| "查找 [product] 的 CVE" | CVE 情报 | 2a |
| "[domain] 是否遭到泄露/暴露" | 域名威胁画像 | 2b |
| "研究 [threat actor / malware]" | 威胁行为者画像 | 2c |
| "关于 [topic] 的安全新闻" | 安全新闻简报 | 2d |
| "[company] 的攻击面" | 攻击面发现 | 2b + 2d |
| "关于 [target] 的完整威胁报告" | 多模块 | 2a + 2b + 2c + 2d |
步骤 2a — CVE 情报
收集产品或版本的实时 CVE 数据:
# 1. Search NVD via Google
apify actors call "apify/google-search-scraper" -i '{
"queries": "site:nvd.nist.gov CVE [PRODUCT] [VERSION]",
"maxPagesPerQuery": 1
}' --user-agent apify-awesome-skills/apify-osint-threat-intel --json 2>/dev/null
# 2. Pull full NVD record for each CVE ID found
apify actors call "apify/website-content-crawler" -i '{
"startUrls": [{"url": "https://nvd.nist.gov/vuln/detail/CVE-XXXX-XXXXX"}],
"proxyConfiguration": {"useApifyProxy": true},
"maxCrawlPages": 1
}' --user-agent apify-awesome-skills/apify-osint-threat-intel --json 2>/dev/null
# 3. Check if CVE is in CISA's Known Exploited Vulnerabilities list
apify actors call "apify/rag-web-browser" -i '{
"query": "[CVE-ID] site:cisa.gov/known-exploited-vulnerabilities-catalog",
"maxResults": 3
}' --user-agent apify-awesome-skills/apify-osint-threat-intel --json 2>/dev/null
# 4. Check Exploit-DB for public PoC
apify actors call "apify/google-search-scraper" -i '{
"queries": "site:exploit-db.com [PRODUCT] [VERSION]",
"maxPagesPerQuery": 1
}' --user-agent apify-awesome-skills/apify-osint-threat-intel --json 2>/dev/null
综合评估:严重程度(CVSS)、可利用性(CISA KEV = 正在遭到利用)、是否存在公开 PoC(是/否)、是否有可用补丁(是/否)。
步骤 2b — 域名威胁画像
# 1. Search for breach mentions
apify actors call "apify/google-search-scraper" -i '{
"queries": "\"[DOMAIN]\" breach OR leak OR hacked OR \"data exposed\"",
"maxPagesPerQuery": 1
}' --user-agent apify-awesome-skills/apify-osint-threat-intel --json 2>/dev/null
# 2. Check paste sites for credential leaks
apify actors call "apify/google-search-scraper" -i '{
"queries": "\"[DOMAIN]\" site:pastebin.com OR site:ghostbin.com OR site:rentry.co",
"maxPagesPerQuery": 1
}' --user-agent apify-awesome-skills/apify-osint-threat-intel --json 2>/dev/null
# 3. Check Shodan exposure hints via Google
apify actors call "apify/google-search-scraper" -i '{
"queries": "site:shodan.io \"[DOMAIN OR ORG]\"",
"maxPagesPerQuery": 1
}' --user-agent apify-awesome-skills/apify-osint-threat-intel --json 2>/dev/null
# 4. Scan r/netsec for mentions — one subreddit per run; repeat with "withinCommunity": "cybersecurity"
# postedAfter = today minus 365 days (YYYY-MM-DD). 3 terms × 5 posts = 15 posts ≈ $0.05.
# Use `postUrl` as the Source and `createdAt` for the date stamp.
apify actors call "harshmaur/reddit-scraper" -i '{
"searchTerms": ["[DOMAIN] breach", "[DOMAIN] hack", "[DOMAIN] vulnerability"],
"withinCommunity": "netsec",
"postedAfter": "[YYYY-MM-DD]",
"maxPostsCount": 5,
"crawlCommentsPerPost": false
}' --user-agent apify-awesome-skills/apify-osint-threat-intel --json 2>/dev/null
步骤 2c — 威胁行为者画像
# 1. MITRE ATT&CK lookup
apify actors call "apify/rag-web-browser" -i '{
"query": "[THREAT ACTOR NAME] site:attack.mitre.org",
"maxResults": 3
}' --user-agent apify-awesome-skills/apify-osint-threat-intel --json 2>/dev/null
# 2. Recent activity via news
apify actors call "data_xplorer/google-news-scraper-fast" -i '{
"keywords": ["[THREAT ACTOR NAME] attack OR campaign OR malware"],
"timeframe": "30d",
"maxArticles": 15
}' --user-agent apify-awesome-skills/apify-osint-threat-intel --json 2>/dev/null
# 3. Community threat intel on Twitter/X
apify actors call "apidojo/tweet-scraper" -i '{
"searchTerms": ["#threatintel [THREAT ACTOR]", "[THREAT ACTOR] TTPs"],
"maxItems": 20,
"sort": "Latest"
}' --user-agent apify-awesome-skills/apify-osint-threat-intel --json 2>/dev/null
# 4. Reddit discussion — postedAfter = today minus 365 days; `createdAt` of the newest post = "Last seen"
apify actors call "harshmaur/reddit-scraper" -i '{
"searchTerms": ["[THREAT ACTOR NAME]"],
"withinCommunity": "netsec",
"postedAfter": "[YYYY-MM-DD]",
"maxPostsCount": 10,
"crawlCommentsPerPost": false
}' --user-agent apify-awesome-skills/apify-osint-threat-intel --json 2>/dev/null
步骤 2d — 安全新闻简报
# 1. Google News for topic
apify actors call "data_xplorer/google-news-scraper-fast" -i '{
"keywords": ["[TOPIC] vulnerability OR CVE OR breach OR exploit"],
"timeframe": "7d",
"maxArticles": 20
}' --user-agent apify-awesome-skills/apify-osint-threat-intel --json 2>/dev/null
# 2. Reddit r/netsec latest — sort goes into the URL (/new/); `searchSort` does not apply to startUrls
apify actors call "harshmaur/reddit-scraper" -i '{
"startUrls": [{"url": "https://www.reddit.com/r/netsec/new/"}],
"maxPostsCount": 15,
"crawlCommentsPerPost": false
}' --user-agent apify-awesome-skills/apify-osint-threat-intel --json 2>/dev/null
第 3 步 — 分类和评估
对每项发现,应用以下分类:
| 严重程度 | 标准 |
|---|---|
| 严重 | CVSS ≥ 9.0,或列入 CISA KEV 清单,或存在公开 PoC 且尚未修补 |
| 高 | CVSS 7.0–8.9,或新闻报道了正在发生的攻击 |
| 中 | CVSS 4.0–6.9,或提及数据泄露但没有正在发生的攻击 |
| 低 | CVSS < 4.0,或属历史问题、已修补且没有正在发生的攻击 |
| 信息性 | 有暴露迹象,但未确认存在漏洞 |
第 4 步 — 提交结构化报告
输出格式:
## Threat Intelligence Report — [TARGET]
Date: [today]
### Executive Summary
[2–3 sentence risk verdict]
### Critical Findings
- [CVE/Finding] — Severity: [X] — Status: [Patched/Unpatched/Active exploit]
Source: [URL]
### Breach/Exposure Indicators
- [Finding] — Source: [URL]
### Threat Actor Activity (if applicable)
- [Actor] — TTPs: [list] — Last seen: [date]
### Recommended Actions
1. [Immediate action]
2. [Short-term action]
3. [Monitoring recommendation]
### Data Sources
[Bullet list of all URLs cited]
数据质量规则
- 每项结论都需要来源 URL — 不得作出没有依据的断言
- 空结果也是情报 — 明确报告空结果(“未找到粘贴内容提及”)
- 为所有发现标注日期 — CVE 严重程度、修补状态和数据泄露报告都具有时效性
- 置信度等级:
[Confirmed]— 一手来源(NVD、CISA、供应商公告)[Reported]— 新闻报道及社区佐证[Unverified]— 单一二手来源,需明确标注
- 并行执行彼此独立的 Actor 调用(CVE 搜索、新闻和 Reddit 可以同时运行;两次 Reddit 搜索——
netsec、cybersecurity——也可以同时运行) - 预算:若需要超过 10 次 Actor 调用,请提醒用户;继续前需取得批准
故障排除
| 问题 | 解决方法 |
|---|---|
google-search-scraper 返回 0 条结果 | 简化查询,移除 site: 筛选条件,或尝试更宽泛的关键词 |
website-content-crawler 在 NVD 上超时 | 使用 rag-web-browser 作为备用方案,并提供直接的 CVE URL |
harshmaur/reddit-scraper 返回 0 条内容,或返回来自无关 subreddit 的帖子 | 在运行的键值存储中读取 RUN-SUMMARY 记录:inputWarnings 会说明何时丢弃了 withinCommunity(名称超过一个)或日期无法解析;emptyReason 会解释为何返回 0 条内容。缩短关键词(Reddit 搜索会按字面匹配)。备用方案:使用 fatihtahta/reddit-scraper-search-fast,参数为 {"subredditName": "netsec", "subredditKeywords": ["[TERM]"], "subredditTimeframe": "month", "maxPosts": 10}(每条帖子 $0.00149,无启动费;字段包括 title、url、subreddit、created_utc、score、num_comments) |
tweet-scraper 返回的结果很少 | 扩大搜索范围,使用 #cybersecurity [term],或移除必须包含主题标签的要求 |
| CISA KEV 页面过大,无法抓取 | 使用 rag-web-browser,并以具体 CVE ID 作为查询 |
示例提示词
- “检查 example.com 是否存在任何已知漏洞,或是否出现在近期数据泄露信息中。”
- “关于 CVE-2026-1234 的最新威胁情报是什么?它是否正遭到利用?”
- “分析 APT28 组织——近期行动、TTP 和基础设施。”
**范围界定:**此技能用于研究组织、基础设施和已命名的威胁组织。它不会创建针对私人个体的跨平台档案。
评论
支持 Markdown