关于 investigate-anything
用于规划和管理开放来源调查的基础技能,面向需要明确调查对象、问题和授权边界的分析人员。它提供从范围设定、收集计划和来源分级,到竞争假设检验与停止条件的完整流程。
主要功能
- 01明确授权范围与调查边界
- 02将模糊目标改写为可回答问题
- 03按来源和侵入性制定收集计划
- 04采用来源与信息双重分级
- 05用竞争假设检验证据
适用场景
- 01调查公司或供应商的所有权问题
- 02核验账号是否属于特定人物
- 03评估域名与其他实体是否有关联
- 04为调查设定可验证的结论与停止条件
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ useosint/ skills --skill investigate-anything安装后在 Claude Code 中输入/investigate-anything确认已加载。
附带文件reference/ach-worksheet.mdreference/source-grading.md
详细介绍
调查任何对象
这是入口。所有后续工作都比本应先行的思考更快,因此大多数糟糕的调查并非收集失败,而是框定失败。你可以针对一个名字运行四十种工具,最后整理出一份言之凿凿、却指向错误对象的档案。这里的工作是决定你要回答什么问题、什么结果才算回答,以及什么证据会证明你错了。
核心词汇
本仓库中的所有技能都会用到这些术语,仅在此处定义。
- 选择器 — 一个可识别的数据点:姓名、账号名、电子邮件、电话、域名、IP、钱包、哈希值、车牌、IMO、公司编号。
- 跳转 — 将一个选择器转化为新的选择器(电子邮件 → 泄露记录 → 重复使用的账号名 → 论坛个人资料 → 真名)。调查 就是 一连串跳转。每次跳转也都可能让你转向另一个人。
步骤 1 — 授权范围
阅读 ../../ETHICS.md,然后写下五件事:
- 调查对象 — 明确具体实体,并与姓名相似的人区分开来。写下你会采用的区分依据(“09xxxxxx 号公司的董事 J. Okonkwo”,而非“J. Okonkwo”)。
- 目标 — 参见步骤 2。
- 允许范围内 — 选择器类型、来源,以及是否允许互动。
- 允许范围外 — 明确列出你不会做的事:登录任何属于调查对象的账户、联系他们或其家人、收集医疗或宗教数据,以及使用任何与目标无关的选择器。
- 司法管辖权 — 哪些司法辖区的法律适用于你、调查对象和数据。在欧盟/英国,汇总关于在世人士的零散公开信息属于个人数据处理,需要有合法依据并遵循数据最小化原则。
如果你无法说明是谁授权了这项调查,以及授权依据是什么,就停止。不是“谨慎推进”,而是停止。未经授权的调查,不能靠一份写得好的报告来补救。
完成条件:五项内容都已写下,而且你能说出哪项具体操作会让你越界。
步骤 2 — 将问题框定为可回答的问题
“调查一下 X”不是目标;它没有停止条件,因此最终会在你感到厌倦或找到某个看似有结果的东西时结束。重新表述请求,直到它包含一个调查对象、一项将据此作出的决策,以及一个能够得出结论的条件。
| 模糊表述 | 可回答的问题 |
|---|---|
| 调查这家公司 | 这家供应商是否有未披露且受到制裁的所有者?它是否在发票上的地址开展业务? |
| 这个账号是谁 | @handle 的操作者与这位名义上的前员工是同一个人,还是另有其人? |
| 查查这个域名 | example.com 是否与钓鱼域名由同一方运营,且使用共享基础设施? |
然后写出否定条件:什么发现意味着答案是 否。如果任何发现都不可能意味着否,那么这个问题就不可证伪,无论你看到什么,都会确认自己的判断。
完成条件:目标用一个句子表述,并且你已写明“否”的答案会是什么样。
步骤 3 — 收集前先写好计划
漫无目的地跳转会让人觉得很有成效,因为每次跳转都会带来一些发现。收集计划则是一个问题清单,每个问题都对应最有可能得出结论的来源,并按成本和侵扰性排序,这样你就能及时发现自己已经在一个有趣却无法回答任何问题的分支上花了三个小时。
对于每个问题:写明能够回答它的指标、能提供该指标的来源或技能、该来源是否为被动方式,以及若没有发现结果该怎么做。始终优先采用被动方式:先穷尽档案、登记册和日志,再考虑任何会接触调查对象的操作。随着调查进展,可以修订计划——这样做的意义在于让偏离计划的情况变得可见。
完成条件:每个目标问题都对应一个明确的来源或技能,并列出首选/备选顺序。
第 4 步 — 按起始选择器路由
输入工作流技能的名称。
| 你有 | 运行 |
|---|---|
| 某人的姓名或真实身份 | find-anyone |
| 公司、品牌或发票实体 | x-ray-a-company |
| 域名、网站或 IP | recon-a-domain-passively |
| 用户名或账号名 | hunt-a-handle |
| 电子邮件地址 | what-an-email-reveals |
| 电话号码 | whose-number-is-this |
| 要定位或核实的照片或视频 | where-was-this-taken |
| 你已确认归属的社交资料 | pattern-of-life-from-socials |
没有明确的起点?从既独特又已编入索引的选择器开始——电子邮件和域名优于姓名和账号名,因为姓名会重名,账号名也可能被陌生人占用。
描述你正在做什么时,相关技术技能会自行加载。在接触任何由调查对象控制的内容之前,先运行 investigate-without-getting-made。从第一次调查切入点开始,就用图谱记录案件:graph-the-network。
完成标准:已运行相应的工作流,并记录了带来源的调查发现。
第 5 步 — 收集来源时就评定等级,不要事后再做
使用海军部(北约风格)分级方案:每条信息都分别为来源和信息评定等级,前者用字母表示,后者用数字表示。
- 字母 A–F:来源的过往记录和信息获取能力。A = 记录可靠,真实性毫无疑问;F = 无法判断。
- 数字 1–6:内容是否得到其他独立来源的证实,以及内容本身是否合乎逻辑。1 = 已在其他来源得到证实;6 = 无法判断。
来源的独立性很重要:公司登记文件为 B2,报道该文件的管理良好的报纸最多也只能评为 B2,而匿名论坛转述该报纸的帖子则是 D3——不能算作新的佐证。评定你实际接触的来源,而不是它声称引用的来源。完整分级表、示例和常见误评: reference/source-grading.md。
完成标准:每条保留的调查发现都带有两字符等级。
第 6 步 — 将假设相互检验
之所以有竞争性假设分析(ACH),是因为调查的自然模式——选出最可能的故事,然后寻找支持——总会成功。任何看似合理的故事都很容易找到支持。
列出所有假设,包括那些平淡无奇的情况(“这是同名的另一个人”“该账号已被转卖”“共享 IP 属于共享主机”)。建立证据与假设对照矩阵,并逐格只判断证据是否与该假设一致。然后按列分析:不一致之处最少的假设胜出,而不是支持最多的那个。与所有假设都一致的证据不具备诊断价值——调查对象拥有 LinkedIn 账号并不能区分任何情况。少数有诊断价值的条目胜过一百条仅仅一致的条目。工作表和填写示例:reference/ach-worksheet.md。
完成标准:至少列出一个你不愿接受的假设,并记录哪些证据会推翻你倾向的假设。
问题出在哪里
确认偏误,OSINT 版。 你拿到一个姓名,并被告知此人在物流行业工作。你找到一份物流行业档案,就不再追问这是否是一个同名的不同的人。关键迹象在于:找到候选人后,你的判别条件就消失了——你用这些条件来寻找,却不再用它们来验证。解决方法:搜索前,先写下目标人物必须具备和不能具备的属性;用这两类条件逐一核查每个候选人。排除候选人也是发现,应写入报告。
循环引用。 三个来源说法一致,于是你将其评为已确认。实际上,这三个来源都转载了同一篇博客文章,或者都从同一个聚合器或同一份泄露数据集中提取信息。这是导致自信地错误归因的最常见原因,而且除非你主动查证,否则很难察觉。对于每个用于佐证的来源,都要追查其出处:按时间顺序核对发布日期,留意措辞是否相同或是否抄到了同一个错别字,并检查那些所谓“独立”的人员搜索网站是否转售了同一份数据经纪商数据流——参见 dig-through-data-brokers。独立意味着数据收集不同,而不是网站不同。
将过时数据当作当前信息呈现。 登记信息、WHOIS 和数据经纪商记录标注的是数据采集日期,并非今日的事实。每条事实旁都要注明观察日期;通过 read-deleted-pages 存档页面。
选择器偏移。 每次转向其他线索,都有可能找错人。连续进行 5 次转向,每次正确的概率都是 90%,合起来就只有五成把握。重新锚定:每次转向后,都要说明哪个已确认的选择器将新线索与目标人物联系起来。
将工具输出当作证据。 枚举工具的命中列表、数据泄露聚合器的匹配结果、人脸搜索的评分——这些都只是线索。工具并未验证身份;它只匹配了字符串或向量。
置信度评级
除非某项技术技能另有说明,否则在整个仓库范围内适用。
- 已确认——有两个或更多真正独立的来源(数据收集不同,而非网站不同),或有一个权威的一手记录(例如签署过的登记备案),且没有相互矛盾的信息。
- 很可能——有一个强有力的来源,或有多个经循环引用核查后仍可信的弱来源,并且已检验相关替代假设,且这些假设的可能性较低。
- 未确认——只有一条未经佐证的线索。要在报告中如实说明;不要因为后文依赖它,就悄悄将其升级为已确认。
- 已排除——存在矛盾证据。记录排除结论及原因。
何时停止
当目标问题已达到决策所需的置信度,或你能够说明现有公开来源无法回答该问题,并指出哪些手段可以回答(信息公开申请、传票、访谈)时,就应停止。“我们核查了 A、B 和 C,但无法证实 X”本身就是成果,而且往往是诚实的结论。超出范围边界时也应停止——这需要重新授权,不是可以在执行过程中自行判断的事项。
完成标准:目标问题已得到回答,或已记录为无法回答,并且已运行 write-the-intel-brief。
示例
目标:发票上的供应商 Nordvale Trading 是否由被禁实体的前任董事控制?判别信息:董事的出生月份/年份。
x-ray-a-company 返回了一条登记记录,其中董事“A. Kestrel”的出生日期相符,地址是一个邮件转寄套间。两个人员搜索网站和一个商业名录网站都显示 A. Kestrel 的同一住址——看似相互印证,直到追溯来源后发现,三者都沿用了同一条经纪商数据源中对街道名称的同一处拼写错误。这属于循环印证;评为 D3,并予以剔除。
相互竞争的假设:(1) 同一人,(2) 不同的 A. Kestrel,(3) 借名提名人。诊断性信息:被禁实体的申报文件与 Nordvale 的文件都列出同一家不常见的会计师事务所,而且发票页脚中的域名与被禁实体旧网站的注册人邮箱相同(who-owns-this-domain)。这与假设 (2) 不符,与假设 (1) 和 (3) 相符。报告结论为“很可能”,并标明提名人假设尚未验证,同时指出信息缺口:该司法管辖区未披露受益所有权。
线索追踪
每个工作流在运行期间都会将信息输入 graph-the-network,并在最后输入 write-the-intel-brief。选择器到技能的路由在步骤 4;各技术技能都会列出自己的线索追踪方式。
法律说明
公开可用不代表获得许可。数据保护法适用于对公开个人数据的汇总,汇总后的数据比其中任何单项数据都更敏感。即使数据是公开的,服务条款仍适用于自动化收集;爬取争议取决于是否获得授权以及合同约定,而非页面是否可见。未经书面授权,切勿登录、探测或向目标所属系统发送流量。