欢迎光临
我们一直在努力

开源情报(OSINT)与安全研究资源导航

摘要:在数字化时代,开源情报(OSINT)和安全研究能力已成为网络安全从业者、白帽子和隐私保护者的核心技能。本文以 Awesome Security 和 Awesome Hacking 资源为线索,系统梳理OSINT工具、漏洞研究、网络扫描、数字取证等领域的精品资源。通过 Python 自动化工具和流程图,帮助中国安全研究者建立系统化的情报收集和分析能力。


目录

  • 一、引言:OSINT是什么?为什么重要?
  • 二、OSINT方法论与流程
  • 三、信息收集工具链
  • 四、网络资产测绘实战
  • 五、自动化OSINT框架
  • 六、安全研究伦理与法律边界
  • 七、漏洞研究资源导航
  • 八、常见问题解答
  • 九、总结
  • 参考资料

一、引言:OSINT是什么?为什么重要?

1.1 OSINT的定义与价值

OSINT(Open Source Intelligence,开源情报)是指从公开可获取的来源收集、分析和利用信息的过程。这些来源包括:

  • 社交媒体平台
  • 公开的网站和数据库
  • 搜索引擎缓存
  • 代码仓库(GitHub/GitLab)
  • 域名和IP注册信息
  • 学术论文和专利
  • 新闻媒体和论坛

#mermaid-svg-R2jRlN1fHdDrZOlF{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-R2jRlN1fHdDrZOlF .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-R2jRlN1fHdDrZOlF .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-R2jRlN1fHdDrZOlF .error-icon{fill:#552222;}#mermaid-svg-R2jRlN1fHdDrZOlF .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-R2jRlN1fHdDrZOlF .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-R2jRlN1fHdDrZOlF .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-R2jRlN1fHdDrZOlF .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-R2jRlN1fHdDrZOlF .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-R2jRlN1fHdDrZOlF .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-R2jRlN1fHdDrZOlF .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-R2jRlN1fHdDrZOlF .marker{fill:#333333;stroke:#333333;}#mermaid-svg-R2jRlN1fHdDrZOlF .marker.cross{stroke:#333333;}#mermaid-svg-R2jRlN1fHdDrZOlF svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-R2jRlN1fHdDrZOlF p{margin:0;}#mermaid-svg-R2jRlN1fHdDrZOlF .edge{stroke-width:3;}#mermaid-svg-R2jRlN1fHdDrZOlF .section–1 rect,#mermaid-svg-R2jRlN1fHdDrZOlF .section–1 path,#mermaid-svg-R2jRlN1fHdDrZOlF .section–1 circle,#mermaid-svg-R2jRlN1fHdDrZOlF .section–1 polygon,#mermaid-svg-R2jRlN1fHdDrZOlF .section–1 path{fill:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-R2jRlN1fHdDrZOlF .section–1 text{fill:#ffffff;}#mermaid-svg-R2jRlN1fHdDrZOlF .node-icon–1{font-size:40px;color:#ffffff;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-edge–1{stroke:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-R2jRlN1fHdDrZOlF .edge-depth–1{stroke-width:17;}#mermaid-svg-R2jRlN1fHdDrZOlF .section–1 line{stroke:hsl(60, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-R2jRlN1fHdDrZOlF .disabled,#mermaid-svg-R2jRlN1fHdDrZOlF .disabled circle,#mermaid-svg-R2jRlN1fHdDrZOlF .disabled text{fill:lightgray;}#mermaid-svg-R2jRlN1fHdDrZOlF .disabled text{fill:#efefef;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-0 rect,#mermaid-svg-R2jRlN1fHdDrZOlF .section-0 path,#mermaid-svg-R2jRlN1fHdDrZOlF .section-0 circle,#mermaid-svg-R2jRlN1fHdDrZOlF .section-0 polygon,#mermaid-svg-R2jRlN1fHdDrZOlF .section-0 path{fill:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-R2jRlN1fHdDrZOlF .section-0 text{fill:black;}#mermaid-svg-R2jRlN1fHdDrZOlF .node-icon-0{font-size:40px;color:black;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-edge-0{stroke:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-R2jRlN1fHdDrZOlF .edge-depth-0{stroke-width:14;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-0 line{stroke:hsl(240, 100%, 83.5294117647%);stroke-width:3;}#mermaid-svg-R2jRlN1fHdDrZOlF .disabled,#mermaid-svg-R2jRlN1fHdDrZOlF .disabled circle,#mermaid-svg-R2jRlN1fHdDrZOlF .disabled text{fill:lightgray;}#mermaid-svg-R2jRlN1fHdDrZOlF .disabled text{fill:#efefef;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-1 rect,#mermaid-svg-R2jRlN1fHdDrZOlF .section-1 path,#mermaid-svg-R2jRlN1fHdDrZOlF .section-1 circle,#mermaid-svg-R2jRlN1fHdDrZOlF .section-1 polygon,#mermaid-svg-R2jRlN1fHdDrZOlF .section-1 path{fill:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-R2jRlN1fHdDrZOlF .section-1 text{fill:black;}#mermaid-svg-R2jRlN1fHdDrZOlF .node-icon-1{font-size:40px;color:black;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-edge-1{stroke:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-R2jRlN1fHdDrZOlF .edge-depth-1{stroke-width:11;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-1 line{stroke:hsl(260, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-R2jRlN1fHdDrZOlF .disabled,#mermaid-svg-R2jRlN1fHdDrZOlF .disabled circle,#mermaid-svg-R2jRlN1fHdDrZOlF .disabled text{fill:lightgray;}#mermaid-svg-R2jRlN1fHdDrZOlF .disabled text{fill:#efefef;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-2 rect,#mermaid-svg-R2jRlN1fHdDrZOlF .section-2 path,#mermaid-svg-R2jRlN1fHdDrZOlF .section-2 circle,#mermaid-svg-R2jRlN1fHdDrZOlF .section-2 polygon,#mermaid-svg-R2jRlN1fHdDrZOlF .section-2 path{fill:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-R2jRlN1fHdDrZOlF .section-2 text{fill:#ffffff;}#mermaid-svg-R2jRlN1fHdDrZOlF .node-icon-2{font-size:40px;color:#ffffff;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-edge-2{stroke:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-R2jRlN1fHdDrZOlF .edge-depth-2{stroke-width:8;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-2 line{stroke:hsl(90, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-R2jRlN1fHdDrZOlF .disabled,#mermaid-svg-R2jRlN1fHdDrZOlF .disabled circle,#mermaid-svg-R2jRlN1fHdDrZOlF .disabled text{fill:lightgray;}#mermaid-svg-R2jRlN1fHdDrZOlF .disabled text{fill:#efefef;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-3 rect,#mermaid-svg-R2jRlN1fHdDrZOlF .section-3 path,#mermaid-svg-R2jRlN1fHdDrZOlF .section-3 circle,#mermaid-svg-R2jRlN1fHdDrZOlF .section-3 polygon,#mermaid-svg-R2jRlN1fHdDrZOlF .section-3 path{fill:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-R2jRlN1fHdDrZOlF .section-3 text{fill:black;}#mermaid-svg-R2jRlN1fHdDrZOlF .node-icon-3{font-size:40px;color:black;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-edge-3{stroke:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-R2jRlN1fHdDrZOlF .edge-depth-3{stroke-width:5;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-3 line{stroke:hsl(120, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-R2jRlN1fHdDrZOlF .disabled,#mermaid-svg-R2jRlN1fHdDrZOlF .disabled circle,#mermaid-svg-R2jRlN1fHdDrZOlF .disabled text{fill:lightgray;}#mermaid-svg-R2jRlN1fHdDrZOlF .disabled text{fill:#efefef;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-4 rect,#mermaid-svg-R2jRlN1fHdDrZOlF .section-4 path,#mermaid-svg-R2jRlN1fHdDrZOlF .section-4 circle,#mermaid-svg-R2jRlN1fHdDrZOlF .section-4 polygon,#mermaid-svg-R2jRlN1fHdDrZOlF .section-4 path{fill:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-R2jRlN1fHdDrZOlF .section-4 text{fill:black;}#mermaid-svg-R2jRlN1fHdDrZOlF .node-icon-4{font-size:40px;color:black;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-edge-4{stroke:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-R2jRlN1fHdDrZOlF .edge-depth-4{stroke-width:2;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-4 line{stroke:hsl(150, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-R2jRlN1fHdDrZOlF .disabled,#mermaid-svg-R2jRlN1fHdDrZOlF .disabled circle,#mermaid-svg-R2jRlN1fHdDrZOlF .disabled text{fill:lightgray;}#mermaid-svg-R2jRlN1fHdDrZOlF .disabled text{fill:#efefef;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-5 rect,#mermaid-svg-R2jRlN1fHdDrZOlF .section-5 path,#mermaid-svg-R2jRlN1fHdDrZOlF .section-5 circle,#mermaid-svg-R2jRlN1fHdDrZOlF .section-5 polygon,#mermaid-svg-R2jRlN1fHdDrZOlF .section-5 path{fill:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-R2jRlN1fHdDrZOlF .section-5 text{fill:black;}#mermaid-svg-R2jRlN1fHdDrZOlF .node-icon-5{font-size:40px;color:black;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-edge-5{stroke:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-R2jRlN1fHdDrZOlF .edge-depth-5{stroke-width:-1;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-5 line{stroke:hsl(180, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-R2jRlN1fHdDrZOlF .disabled,#mermaid-svg-R2jRlN1fHdDrZOlF .disabled circle,#mermaid-svg-R2jRlN1fHdDrZOlF .disabled text{fill:lightgray;}#mermaid-svg-R2jRlN1fHdDrZOlF .disabled text{fill:#efefef;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-6 rect,#mermaid-svg-R2jRlN1fHdDrZOlF .section-6 path,#mermaid-svg-R2jRlN1fHdDrZOlF .section-6 circle,#mermaid-svg-R2jRlN1fHdDrZOlF .section-6 polygon,#mermaid-svg-R2jRlN1fHdDrZOlF .section-6 path{fill:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-R2jRlN1fHdDrZOlF .section-6 text{fill:black;}#mermaid-svg-R2jRlN1fHdDrZOlF .node-icon-6{font-size:40px;color:black;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-edge-6{stroke:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-R2jRlN1fHdDrZOlF .edge-depth-6{stroke-width:-4;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-6 line{stroke:hsl(210, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-R2jRlN1fHdDrZOlF .disabled,#mermaid-svg-R2jRlN1fHdDrZOlF .disabled circle,#mermaid-svg-R2jRlN1fHdDrZOlF .disabled text{fill:lightgray;}#mermaid-svg-R2jRlN1fHdDrZOlF .disabled text{fill:#efefef;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-7 rect,#mermaid-svg-R2jRlN1fHdDrZOlF .section-7 path,#mermaid-svg-R2jRlN1fHdDrZOlF .section-7 circle,#mermaid-svg-R2jRlN1fHdDrZOlF .section-7 polygon,#mermaid-svg-R2jRlN1fHdDrZOlF .section-7 path{fill:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-R2jRlN1fHdDrZOlF .section-7 text{fill:black;}#mermaid-svg-R2jRlN1fHdDrZOlF .node-icon-7{font-size:40px;color:black;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-edge-7{stroke:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-R2jRlN1fHdDrZOlF .edge-depth-7{stroke-width:-7;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-7 line{stroke:hsl(270, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-R2jRlN1fHdDrZOlF .disabled,#mermaid-svg-R2jRlN1fHdDrZOlF .disabled circle,#mermaid-svg-R2jRlN1fHdDrZOlF .disabled text{fill:lightgray;}#mermaid-svg-R2jRlN1fHdDrZOlF .disabled text{fill:#efefef;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-8 rect,#mermaid-svg-R2jRlN1fHdDrZOlF .section-8 path,#mermaid-svg-R2jRlN1fHdDrZOlF .section-8 circle,#mermaid-svg-R2jRlN1fHdDrZOlF .section-8 polygon,#mermaid-svg-R2jRlN1fHdDrZOlF .section-8 path{fill:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-R2jRlN1fHdDrZOlF .section-8 text{fill:black;}#mermaid-svg-R2jRlN1fHdDrZOlF .node-icon-8{font-size:40px;color:black;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-edge-8{stroke:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-R2jRlN1fHdDrZOlF .edge-depth-8{stroke-width:-10;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-8 line{stroke:hsl(330, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-R2jRlN1fHdDrZOlF .disabled,#mermaid-svg-R2jRlN1fHdDrZOlF .disabled circle,#mermaid-svg-R2jRlN1fHdDrZOlF .disabled text{fill:lightgray;}#mermaid-svg-R2jRlN1fHdDrZOlF .disabled text{fill:#efefef;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-9 rect,#mermaid-svg-R2jRlN1fHdDrZOlF .section-9 path,#mermaid-svg-R2jRlN1fHdDrZOlF .section-9 circle,#mermaid-svg-R2jRlN1fHdDrZOlF .section-9 polygon,#mermaid-svg-R2jRlN1fHdDrZOlF .section-9 path{fill:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-R2jRlN1fHdDrZOlF .section-9 text{fill:black;}#mermaid-svg-R2jRlN1fHdDrZOlF .node-icon-9{font-size:40px;color:black;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-edge-9{stroke:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-R2jRlN1fHdDrZOlF .edge-depth-9{stroke-width:-13;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-9 line{stroke:hsl(0, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-R2jRlN1fHdDrZOlF .disabled,#mermaid-svg-R2jRlN1fHdDrZOlF .disabled circle,#mermaid-svg-R2jRlN1fHdDrZOlF .disabled text{fill:lightgray;}#mermaid-svg-R2jRlN1fHdDrZOlF .disabled text{fill:#efefef;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-10 rect,#mermaid-svg-R2jRlN1fHdDrZOlF .section-10 path,#mermaid-svg-R2jRlN1fHdDrZOlF .section-10 circle,#mermaid-svg-R2jRlN1fHdDrZOlF .section-10 polygon,#mermaid-svg-R2jRlN1fHdDrZOlF .section-10 path{fill:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-R2jRlN1fHdDrZOlF .section-10 text{fill:black;}#mermaid-svg-R2jRlN1fHdDrZOlF .node-icon-10{font-size:40px;color:black;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-edge-10{stroke:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-R2jRlN1fHdDrZOlF .edge-depth-10{stroke-width:-16;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-10 line{stroke:hsl(30, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-R2jRlN1fHdDrZOlF .disabled,#mermaid-svg-R2jRlN1fHdDrZOlF .disabled circle,#mermaid-svg-R2jRlN1fHdDrZOlF .disabled text{fill:lightgray;}#mermaid-svg-R2jRlN1fHdDrZOlF .disabled text{fill:#efefef;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-root rect,#mermaid-svg-R2jRlN1fHdDrZOlF .section-root path,#mermaid-svg-R2jRlN1fHdDrZOlF .section-root circle,#mermaid-svg-R2jRlN1fHdDrZOlF .section-root polygon{fill:hsl(240, 100%, 46.2745098039%);}#mermaid-svg-R2jRlN1fHdDrZOlF .section-root text{fill:#ffffff;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-root span{color:#ffffff;}#mermaid-svg-R2jRlN1fHdDrZOlF .section-2 span{color:#ffffff;}#mermaid-svg-R2jRlN1fHdDrZOlF .icon-container{height:100%;display:flex;justify-content:center;align-items:center;}#mermaid-svg-R2jRlN1fHdDrZOlF .edge{fill:none;}#mermaid-svg-R2jRlN1fHdDrZOlF .mindmap-node-label{dy:1em;alignment-baseline:middle;text-anchor:middle;dominant-baseline:middle;text-align:center;}#mermaid-svg-R2jRlN1fHdDrZOlF :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

OSINT信息来源

网络资产

域名/IP

子域名

开放端口

技术栈

社交媒体

个人资料

关系网络

地理位置

时间线

代码仓库

泄露密钥

内部路径

开发者信息

依赖分析

公开数据

工商注册

招聘网站

专利论文

法院公告

1.2 OSINT的合法应用场景

场景应用价值
企业安全 暴露面梳理 发现影子IT和泄露资产
红队演练 攻击面分析 模拟真实攻击路径
威胁情报 追踪攻击者 关联IOC和TTP
品牌保护 假冒监测 发现钓鱼网站和仿冒APP
合规审计 数据泄露检测 发现员工泄露敏感信息

⚠️ 法律声明:OSINT仅限于收集公开可获取的信息,严禁未经授权访问非公开系统。


二、OSINT方法论与流程

2.1 情报收集流程

#mermaid-svg-UbkSV4RsjQjPxgNa{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-UbkSV4RsjQjPxgNa .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-UbkSV4RsjQjPxgNa .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-UbkSV4RsjQjPxgNa .error-icon{fill:#552222;}#mermaid-svg-UbkSV4RsjQjPxgNa .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-UbkSV4RsjQjPxgNa .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-UbkSV4RsjQjPxgNa .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-UbkSV4RsjQjPxgNa .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-UbkSV4RsjQjPxgNa .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-UbkSV4RsjQjPxgNa .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-UbkSV4RsjQjPxgNa .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-UbkSV4RsjQjPxgNa .marker{fill:#333333;stroke:#333333;}#mermaid-svg-UbkSV4RsjQjPxgNa .marker.cross{stroke:#333333;}#mermaid-svg-UbkSV4RsjQjPxgNa svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-UbkSV4RsjQjPxgNa p{margin:0;}#mermaid-svg-UbkSV4RsjQjPxgNa .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-UbkSV4RsjQjPxgNa .cluster-label text{fill:#333;}#mermaid-svg-UbkSV4RsjQjPxgNa .cluster-label span{color:#333;}#mermaid-svg-UbkSV4RsjQjPxgNa .cluster-label span p{background-color:transparent;}#mermaid-svg-UbkSV4RsjQjPxgNa .label text,#mermaid-svg-UbkSV4RsjQjPxgNa span{fill:#333;color:#333;}#mermaid-svg-UbkSV4RsjQjPxgNa .node rect,#mermaid-svg-UbkSV4RsjQjPxgNa .node circle,#mermaid-svg-UbkSV4RsjQjPxgNa .node ellipse,#mermaid-svg-UbkSV4RsjQjPxgNa .node polygon,#mermaid-svg-UbkSV4RsjQjPxgNa .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-UbkSV4RsjQjPxgNa .rough-node .label text,#mermaid-svg-UbkSV4RsjQjPxgNa .node .label text,#mermaid-svg-UbkSV4RsjQjPxgNa .image-shape .label,#mermaid-svg-UbkSV4RsjQjPxgNa .icon-shape .label{text-anchor:middle;}#mermaid-svg-UbkSV4RsjQjPxgNa .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-UbkSV4RsjQjPxgNa .rough-node .label,#mermaid-svg-UbkSV4RsjQjPxgNa .node .label,#mermaid-svg-UbkSV4RsjQjPxgNa .image-shape .label,#mermaid-svg-UbkSV4RsjQjPxgNa .icon-shape .label{text-align:center;}#mermaid-svg-UbkSV4RsjQjPxgNa .node.clickable{cursor:pointer;}#mermaid-svg-UbkSV4RsjQjPxgNa .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-UbkSV4RsjQjPxgNa .arrowheadPath{fill:#333333;}#mermaid-svg-UbkSV4RsjQjPxgNa .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-UbkSV4RsjQjPxgNa .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-UbkSV4RsjQjPxgNa .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-UbkSV4RsjQjPxgNa .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-UbkSV4RsjQjPxgNa .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-UbkSV4RsjQjPxgNa .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-UbkSV4RsjQjPxgNa .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-UbkSV4RsjQjPxgNa .cluster text{fill:#333;}#mermaid-svg-UbkSV4RsjQjPxgNa .cluster span{color:#333;}#mermaid-svg-UbkSV4RsjQjPxgNa div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-UbkSV4RsjQjPxgNa .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-UbkSV4RsjQjPxgNa rect.text{fill:none;stroke-width:0;}#mermaid-svg-UbkSV4RsjQjPxgNa .icon-shape,#mermaid-svg-UbkSV4RsjQjPxgNa .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-UbkSV4RsjQjPxgNa .icon-shape p,#mermaid-svg-UbkSV4RsjQjPxgNa .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-UbkSV4RsjQjPxgNa .icon-shape .label rect,#mermaid-svg-UbkSV4RsjQjPxgNa .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-UbkSV4RsjQjPxgNa .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-UbkSV4RsjQjPxgNa .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-UbkSV4RsjQjPxgNa :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

目标定义

信息收集

数据处理

关联分析

情报产出

验证反馈

主动扫描

被动收集

历史数据

去重清洗

标准化

时间线

关系图谱

行为模式

归因分析


三、信息收集工具链

3.1 域名与IP信息收集

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
OSINT域名信息收集工具
功能:收集域名的WHOIS、DNS、子域名信息
"""

import socket
import subprocess
from typing import List, Dict, Optional
from dataclasses import dataclass

@dataclass
class DomainInfo:
"""域名信息"""
domain: str
ip_addresses: List[str]
subdomains: List[str]
whois_data: Dict
dns_records: Dict

class DomainIntelligence:
"""
域名情报收集器

收集目标域名的多维信息。
"""

def __init__(self):
self.results: Dict[str, DomainInfo] = {}

def resolve_ip(self, domain: str) > List[str]:
"""
解析域名IP地址

Args:
domain: 目标域名

Returns:
IP地址列表
"""
try:
ips = socket.gethostbyname_ex(domain)[2]
return ips
except socket.gaierror:
return []

def get_dns_records(self, domain: str) > Dict[str, List[str]]:
"""
获取DNS记录

使用dig命令获取各种DNS记录类型。
"""
records = {}
record_types = ["A", "AAAA", "MX", "NS", "TXT", "CNAME"]

for rtype in record_types:
try:
result = subprocess.run(
["dig", "+short", rtype, domain],
capture_output=True,
text=True,
timeout=10
)
if result.returncode == 0 and result.stdout.strip():
records[rtype] = result.stdout.strip().split("\\n")
except (subprocess.TimeoutExpired, FileNotFoundError):
pass

return records

def subdomain_enum(self, domain: str, wordlist: List[str] = None) > List[str]:
"""
子域名枚举

Args:
domain: 目标域名
wordlist: 子域名字典

Returns:
发现的子域名列表
"""
if wordlist is None:
wordlist = ["www", "mail", "ftp", "api", "blog", "admin", "test", "dev", "staging"]

found = []
print(f"🔍 开始枚举 {domain} 的子域名…")

for sub in wordlist:
subdomain = f"{sub}.{domain}"
try:
socket.gethostbyname(subdomain)
found.append(subdomain)
print(f" ✅ 发现: {subdomain}")
except socket.gaierror:
pass

return found

def analyze(self, domain: str) > DomainInfo:
"""
完整分析域名

Args:
domain: 目标域名

Returns:
DomainInfo对象
"""
print(f"\\n{'='*60}")
print(f"域名情报分析: {domain}")
print(f"{'='*60}")

ips = self.resolve_ip(domain)
print(f"\\n📍 IP地址: {ips}")

dns = self.get_dns_records(domain)
print(f"\\n📋 DNS记录:")
for rtype, values in dns.items():
print(f" {rtype}: {values}")

subs = self.subdomain_enum(domain)
print(f"\\n🔍 子域名 ({len(subs)}个): {subs}")

info = DomainInfo(
domain=domain,
ip_addresses=ips,
subdomains=subs,
whois_data={},
dns_records=dns
)

self.results[domain] = info
return info

def demo_domain_intel():
"""演示域名情报收集"""
intel = DomainIntelligence()

# 使用示例域名
intel.analyze("example.com")

print("\\n💡 生产环境建议:")
print(" – 使用Amass进行大规模子域名枚举")
print(" – 使用Shodan/Censys查询IP关联资产")
print(" – 使用SecurityTrails获取历史DNS数据")

if __name__ == "__main__":
demo_domain_intel()


四、网络资产测绘实战

4.1 端口扫描与服务识别

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
网络资产扫描工具
功能:端口扫描和服务指纹识别
"""

import socket
import asyncio
from typing import List, Dict, Set
from dataclasses import dataclass

@dataclass
class PortScanResult:
"""端口扫描结果"""
host: str
port: int
state: str # open/closed/filtered
service: str
banner: str

class NetworkScanner:
"""
网络扫描器

异步端口扫描和服务识别。
"""

COMMON_PORTS = {
21: "FTP", 22: "SSH", 23: "Telnet", 25: "SMTP",
53: "DNS", 80: "HTTP", 110: "POP3", 143: "IMAP",
443: "HTTPS", 3306: "MySQL", 3389: "RDP",
5432: "PostgreSQL", 6379: "Redis", 8080: "HTTP-Proxy",
8443: "HTTPS-Alt", 9200: "Elasticsearch", 27017: "MongoDB"
}

def __init__(self, timeout: float = 2.0):
self.timeout = timeout

async def scan_port(self, host: str, port: int) > Optional[PortScanResult]:
"""
扫描单个端口

Args:
host: 目标主机
port: 目标端口

Returns:
扫描结果或None
"""
try:
reader, writer = await asyncio.wait_for(
asyncio.open_connection(host, port),
timeout=self.timeout
)

# 尝试获取banner
banner = ""
try:
writer.write(b"\\r\\n")
await writer.drain()
data = await asyncio.wait_for(reader.read(1024), timeout=1.0)
banner = data.decode("utf-8", errors="ignore").strip()[:100]
except:
pass

writer.close()
await writer.wait_closed()

return PortScanResult(
host=host,
port=port,
state="open",
service=self.COMMON_PORTS.get(port, "unknown"),
banner=banner
)

except (asyncio.TimeoutError, ConnectionRefusedError, OSError):
return None

async def scan_host(
self,
host: str,
ports: List[int] = None
) > List[PortScanResult]:
"""
扫描主机端口

Args:
host: 目标主机
ports: 端口列表,None则扫描常用端口

Returns:
开放的端口列表
"""
if ports is None:
ports = list(self.COMMON_PORTS.keys())

print(f"🔍 扫描 {host}{len(ports)} 个端口…")

tasks = [self.scan_port(host, port) for port in ports]
results = await asyncio.gather(*tasks)

open_ports = [r for r in results if r is not None]
return open_ports

def generate_report(self, results: List[PortScanResult]) > str:
"""生成扫描报告"""
lines = ["=" * 60, "端口扫描报告", "=" * 60]

if not results:
lines.append("\\n未发现开放端口")
return "\\n".join(lines)

lines.append(f"\\n发现 {len(results)} 个开放端口:\\n")
lines.append(f"{'端口':<8} {'状态':<10} {'服务':<15} {'Banner'}")
lines.append("-" * 60)

for r in sorted(results, key=lambda x: x.port):
banner = r.banner[:30] + "…" if len(r.banner) > 30 else r.banner
lines.append(f"{r.port:<8} {r.state:<10} {r.service:<15} {banner}")

return "\\n".join(lines)

def demo_scanner():
"""演示网络扫描"""
print("=" * 60)
print("网络资产扫描工具")
print("=" * 60)

scanner = NetworkScanner(timeout=1.0)

# 扫描本地服务
async def run_scan():
results = await scanner.scan_host("127.0.0.1", [8000, 8080, 3000, 22, 80])
print(scanner.generate_report(results))

asyncio.run(run_scan())

print("\\n⚠️ 法律提醒:")
print(" 仅扫描您拥有授权的目标!")
print(" 未经授权扫描他人系统可能违法。")

if __name__ == "__main__":
demo_scanner()


五、自动化OSINT框架

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
自动化OSINT报告生成器
功能:整合多个信息源,生成结构化情报报告
"""

import json
from datetime import datetime
from typing import List, Dict
from dataclasses import dataclass, asdict

@dataclass
class OSINTFinding:
"""OSINT发现"""
source: str
category: str
finding: str
confidence: str # high/medium/low
evidence: str
timestamp: str

class OSINTReportGenerator:
"""
OSINT报告生成器

整合多个收集器的结果,生成标准化报告。
"""

def __init__(self, target: str):
self.target = target
self.findings: List[OSINTFinding] = []
self.timestamp = datetime.now().isoformat()

def add_finding(self, finding: OSINTFinding):
"""添加发现"""
self.findings.append(finding)

def generate_markdown(self) > str:
"""生成Markdown报告"""
lines = [
f"# OSINT情报报告: {self.target}",
f"\\n> 生成时间: {self.timestamp}",
f"> 发现总数: {len(self.findings)}\\n",
"## 执行摘要\\n",
self._generate_summary(),
"\\n## 详细发现\\n"
]

# 按类别分组
categories: Dict[str, List[OSINTFinding]] = {}
for f in self.findings:
categories.setdefault(f.category, []).append(f)

for category, findings in categories.items():
lines.append(f"### {category}\\n")
for i, f in enumerate(findings, 1):
lines.extend([
f"**发现 {i}** ({f.confidence}置信度)",
f"- 来源: {f.source}",
f"- 内容: {f.finding}",
f"- 证据: {f.evidence}",
f"- 时间: {f.timestamp}",
""
])

lines.extend([
"## 风险评级\\n",
self._risk_assessment(),
"\\n## 建议措施\\n",
self._recommendations(),
"\\n—",
"*本报告基于公开信息生成,仅供授权人员使用*"
])

return "\\n".join(lines)

def generate_json(self) > str:
"""生成JSON报告"""
report = {
"target": self.target,
"timestamp": self.timestamp,
"findings_count": len(self.findings),
"findings": [asdict(f) for f in self.findings]
}
return json.dumps(report, ensure_ascii=False, indent=2)

def _generate_summary(self) > str:
"""生成摘要"""
high_conf = sum(1 for f in self.findings if f.confidence == "high")
return f"共发现 {len(self.findings)} 条情报,其中高置信度 {high_conf} 条。"

def _risk_assessment(self) > str:
"""风险评估"""
return "基于收集到的信息,建议关注暴露的网络资产和潜在的敏感信息泄露。"

def _recommendations(self) > str:
"""建议措施"""
return """1. 审查暴露的子域名和服务
2. 检查代码仓库中的敏感信息
3. 评估社交媒体的隐私设置
4. 定期监控域名注册信息变化"""

def demo_report():
"""演示报告生成"""
print("=" * 60)
print("OSINT报告生成器")
print("=" * 60)

generator = OSINTReportGenerator("example.com")

# 添加模拟发现
generator.add_finding(OSINTFinding(
source="DNS枚举",
category="网络资产",
finding="发现12个子域名",
confidence="high",
evidence="admin.example.com, api.example.com 等",
timestamp=datetime.now().isoformat()
))

generator.add_finding(OSINTFinding(
source="GitHub搜索",
category="代码泄露",
finding="发现包含公司邮箱的公开仓库",
confidence="medium",
evidence="github.com/user/repo 包含配置信息",
timestamp=datetime.now().isoformat()
))

report = generator.generate_markdown()
print(report[:1500] + "\\n… [报告截断]")

# 保存
with open("osint_report.md", "w", encoding="utf-8") as f:
f.write(report)
print("\\n💾 报告已保存: osint_report.md")

if __name__ == "__main__":
demo_report()


六、安全研究伦理与法律边界

6.1 法律红线

#mermaid-svg-6jfWNAaSlMZ1RA8d{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-6jfWNAaSlMZ1RA8d .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-6jfWNAaSlMZ1RA8d .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-6jfWNAaSlMZ1RA8d .error-icon{fill:#552222;}#mermaid-svg-6jfWNAaSlMZ1RA8d .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-6jfWNAaSlMZ1RA8d .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-6jfWNAaSlMZ1RA8d .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-6jfWNAaSlMZ1RA8d .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-6jfWNAaSlMZ1RA8d .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-6jfWNAaSlMZ1RA8d .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-6jfWNAaSlMZ1RA8d .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-6jfWNAaSlMZ1RA8d .marker{fill:#333333;stroke:#333333;}#mermaid-svg-6jfWNAaSlMZ1RA8d .marker.cross{stroke:#333333;}#mermaid-svg-6jfWNAaSlMZ1RA8d svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-6jfWNAaSlMZ1RA8d p{margin:0;}#mermaid-svg-6jfWNAaSlMZ1RA8d .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-6jfWNAaSlMZ1RA8d .cluster-label text{fill:#333;}#mermaid-svg-6jfWNAaSlMZ1RA8d .cluster-label span{color:#333;}#mermaid-svg-6jfWNAaSlMZ1RA8d .cluster-label span p{background-color:transparent;}#mermaid-svg-6jfWNAaSlMZ1RA8d .label text,#mermaid-svg-6jfWNAaSlMZ1RA8d span{fill:#333;color:#333;}#mermaid-svg-6jfWNAaSlMZ1RA8d .node rect,#mermaid-svg-6jfWNAaSlMZ1RA8d .node circle,#mermaid-svg-6jfWNAaSlMZ1RA8d .node ellipse,#mermaid-svg-6jfWNAaSlMZ1RA8d .node polygon,#mermaid-svg-6jfWNAaSlMZ1RA8d .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-6jfWNAaSlMZ1RA8d .rough-node .label text,#mermaid-svg-6jfWNAaSlMZ1RA8d .node .label text,#mermaid-svg-6jfWNAaSlMZ1RA8d .image-shape .label,#mermaid-svg-6jfWNAaSlMZ1RA8d .icon-shape .label{text-anchor:middle;}#mermaid-svg-6jfWNAaSlMZ1RA8d .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-6jfWNAaSlMZ1RA8d .rough-node .label,#mermaid-svg-6jfWNAaSlMZ1RA8d .node .label,#mermaid-svg-6jfWNAaSlMZ1RA8d .image-shape .label,#mermaid-svg-6jfWNAaSlMZ1RA8d .icon-shape .label{text-align:center;}#mermaid-svg-6jfWNAaSlMZ1RA8d .node.clickable{cursor:pointer;}#mermaid-svg-6jfWNAaSlMZ1RA8d .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-6jfWNAaSlMZ1RA8d .arrowheadPath{fill:#333333;}#mermaid-svg-6jfWNAaSlMZ1RA8d .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-6jfWNAaSlMZ1RA8d .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-6jfWNAaSlMZ1RA8d .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-6jfWNAaSlMZ1RA8d .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-6jfWNAaSlMZ1RA8d .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-6jfWNAaSlMZ1RA8d .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-6jfWNAaSlMZ1RA8d .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-6jfWNAaSlMZ1RA8d .cluster text{fill:#333;}#mermaid-svg-6jfWNAaSlMZ1RA8d .cluster span{color:#333;}#mermaid-svg-6jfWNAaSlMZ1RA8d div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-6jfWNAaSlMZ1RA8d .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-6jfWNAaSlMZ1RA8d rect.text{fill:none;stroke-width:0;}#mermaid-svg-6jfWNAaSlMZ1RA8d .icon-shape,#mermaid-svg-6jfWNAaSlMZ1RA8d .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-6jfWNAaSlMZ1RA8d .icon-shape p,#mermaid-svg-6jfWNAaSlMZ1RA8d .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-6jfWNAaSlMZ1RA8d .icon-shape .label rect,#mermaid-svg-6jfWNAaSlMZ1RA8d .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-6jfWNAaSlMZ1RA8d .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-6jfWNAaSlMZ1RA8d .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-6jfWNAaSlMZ1RA8d :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

安全研究

授权?

白盒测试

公开信息?

OSINT收集

停止!

漏洞挖掘

情报分析

发现漏洞?

负责任披露

6.2 道德准则

  • 只在授权范围内行动
  • 最小化影响:不要破坏、不要泄露
  • 及时报告:发现漏洞后负责任地披露
  • 保护隐私:不滥用收集到的个人信息
  • 遵守法律:了解并遵守《网络安全法》等法规

  • 七、漏洞研究资源导航

    资源类型名称说明
    漏洞数据库 CVE/NVD 官方漏洞编号库
    Exploit库 Exploit-DB 公开的漏洞利用代码
    威胁情报 MISP 威胁情报共享平台
    工具集 Kali Linux 渗透测试发行版
    学习平台 Hack The Box 在线CTF练习
    漏洞赏金 HackerOne 漏洞赏金平台
    代码审计 SonarQube 静态代码分析
    依赖扫描 Snyk 开源依赖漏洞

    八、常见问题解答

    Q1:OSINT和普通搜索有什么区别?

    答:OSINT强调系统化的收集、分析和验证。普通搜索是找到信息,OSINT是将碎片化的公开信息关联成有价值的情报。

    Q2:个人如何进行合法的OSINT练习?

    答:

  • 对自己的域名和资产进行梳理
  • 参加CTF比赛中的OSINT题目
  • 使用虚拟机搭建测试环境
  • 加入合法的漏洞赏金计划
  • Q3:OSINT工具有哪些推荐?

    答:

    • 综合:Maltego、theHarvester、Amass
    • 域名:SecurityTrails、VirusTotal
    • 社交媒体:Sherlock、Spiderfoot
    • 代码:GitDorker、TruffleHog
    • 网络:Shodan、Censys、Nmap

    九、总结

    #mermaid-svg-yT0uRUOy5mCpzCs0{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-yT0uRUOy5mCpzCs0 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-yT0uRUOy5mCpzCs0 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-yT0uRUOy5mCpzCs0 .error-icon{fill:#552222;}#mermaid-svg-yT0uRUOy5mCpzCs0 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-yT0uRUOy5mCpzCs0 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-yT0uRUOy5mCpzCs0 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-yT0uRUOy5mCpzCs0 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-yT0uRUOy5mCpzCs0 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-yT0uRUOy5mCpzCs0 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-yT0uRUOy5mCpzCs0 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-yT0uRUOy5mCpzCs0 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-yT0uRUOy5mCpzCs0 .marker.cross{stroke:#333333;}#mermaid-svg-yT0uRUOy5mCpzCs0 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-yT0uRUOy5mCpzCs0 p{margin:0;}#mermaid-svg-yT0uRUOy5mCpzCs0 .edge{stroke-width:3;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section–1 rect,#mermaid-svg-yT0uRUOy5mCpzCs0 .section–1 path,#mermaid-svg-yT0uRUOy5mCpzCs0 .section–1 circle,#mermaid-svg-yT0uRUOy5mCpzCs0 .section–1 polygon,#mermaid-svg-yT0uRUOy5mCpzCs0 .section–1 path{fill:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-yT0uRUOy5mCpzCs0 .section–1 text{fill:#ffffff;}#mermaid-svg-yT0uRUOy5mCpzCs0 .node-icon–1{font-size:40px;color:#ffffff;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-edge–1{stroke:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-yT0uRUOy5mCpzCs0 .edge-depth–1{stroke-width:17;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section–1 line{stroke:hsl(60, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled,#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled circle,#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled text{fill:lightgray;}#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled text{fill:#efefef;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-0 rect,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-0 path,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-0 circle,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-0 polygon,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-0 path{fill:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-0 text{fill:black;}#mermaid-svg-yT0uRUOy5mCpzCs0 .node-icon-0{font-size:40px;color:black;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-edge-0{stroke:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-yT0uRUOy5mCpzCs0 .edge-depth-0{stroke-width:14;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-0 line{stroke:hsl(240, 100%, 83.5294117647%);stroke-width:3;}#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled,#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled circle,#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled text{fill:lightgray;}#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled text{fill:#efefef;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-1 rect,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-1 path,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-1 circle,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-1 polygon,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-1 path{fill:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-1 text{fill:black;}#mermaid-svg-yT0uRUOy5mCpzCs0 .node-icon-1{font-size:40px;color:black;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-edge-1{stroke:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-yT0uRUOy5mCpzCs0 .edge-depth-1{stroke-width:11;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-1 line{stroke:hsl(260, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled,#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled circle,#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled text{fill:lightgray;}#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled text{fill:#efefef;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-2 rect,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-2 path,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-2 circle,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-2 polygon,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-2 path{fill:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-2 text{fill:#ffffff;}#mermaid-svg-yT0uRUOy5mCpzCs0 .node-icon-2{font-size:40px;color:#ffffff;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-edge-2{stroke:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-yT0uRUOy5mCpzCs0 .edge-depth-2{stroke-width:8;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-2 line{stroke:hsl(90, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled,#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled circle,#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled text{fill:lightgray;}#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled text{fill:#efefef;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-3 rect,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-3 path,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-3 circle,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-3 polygon,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-3 path{fill:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-3 text{fill:black;}#mermaid-svg-yT0uRUOy5mCpzCs0 .node-icon-3{font-size:40px;color:black;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-edge-3{stroke:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-yT0uRUOy5mCpzCs0 .edge-depth-3{stroke-width:5;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-3 line{stroke:hsl(120, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled,#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled circle,#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled text{fill:lightgray;}#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled text{fill:#efefef;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-4 rect,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-4 path,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-4 circle,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-4 polygon,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-4 path{fill:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-4 text{fill:black;}#mermaid-svg-yT0uRUOy5mCpzCs0 .node-icon-4{font-size:40px;color:black;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-edge-4{stroke:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-yT0uRUOy5mCpzCs0 .edge-depth-4{stroke-width:2;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-4 line{stroke:hsl(150, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled,#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled circle,#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled text{fill:lightgray;}#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled text{fill:#efefef;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-5 rect,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-5 path,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-5 circle,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-5 polygon,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-5 path{fill:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-5 text{fill:black;}#mermaid-svg-yT0uRUOy5mCpzCs0 .node-icon-5{font-size:40px;color:black;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-edge-5{stroke:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-yT0uRUOy5mCpzCs0 .edge-depth-5{stroke-width:-1;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-5 line{stroke:hsl(180, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled,#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled circle,#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled text{fill:lightgray;}#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled text{fill:#efefef;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-6 rect,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-6 path,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-6 circle,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-6 polygon,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-6 path{fill:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-6 text{fill:black;}#mermaid-svg-yT0uRUOy5mCpzCs0 .node-icon-6{font-size:40px;color:black;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-edge-6{stroke:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-yT0uRUOy5mCpzCs0 .edge-depth-6{stroke-width:-4;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-6 line{stroke:hsl(210, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled,#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled circle,#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled text{fill:lightgray;}#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled text{fill:#efefef;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-7 rect,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-7 path,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-7 circle,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-7 polygon,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-7 path{fill:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-7 text{fill:black;}#mermaid-svg-yT0uRUOy5mCpzCs0 .node-icon-7{font-size:40px;color:black;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-edge-7{stroke:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-yT0uRUOy5mCpzCs0 .edge-depth-7{stroke-width:-7;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-7 line{stroke:hsl(270, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled,#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled circle,#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled text{fill:lightgray;}#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled text{fill:#efefef;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-8 rect,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-8 path,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-8 circle,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-8 polygon,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-8 path{fill:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-8 text{fill:black;}#mermaid-svg-yT0uRUOy5mCpzCs0 .node-icon-8{font-size:40px;color:black;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-edge-8{stroke:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-yT0uRUOy5mCpzCs0 .edge-depth-8{stroke-width:-10;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-8 line{stroke:hsl(330, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled,#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled circle,#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled text{fill:lightgray;}#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled text{fill:#efefef;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-9 rect,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-9 path,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-9 circle,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-9 polygon,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-9 path{fill:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-9 text{fill:black;}#mermaid-svg-yT0uRUOy5mCpzCs0 .node-icon-9{font-size:40px;color:black;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-edge-9{stroke:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-yT0uRUOy5mCpzCs0 .edge-depth-9{stroke-width:-13;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-9 line{stroke:hsl(0, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled,#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled circle,#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled text{fill:lightgray;}#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled text{fill:#efefef;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-10 rect,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-10 path,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-10 circle,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-10 polygon,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-10 path{fill:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-10 text{fill:black;}#mermaid-svg-yT0uRUOy5mCpzCs0 .node-icon-10{font-size:40px;color:black;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-edge-10{stroke:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-yT0uRUOy5mCpzCs0 .edge-depth-10{stroke-width:-16;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-10 line{stroke:hsl(30, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled,#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled circle,#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled text{fill:lightgray;}#mermaid-svg-yT0uRUOy5mCpzCs0 .disabled text{fill:#efefef;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-root rect,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-root path,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-root circle,#mermaid-svg-yT0uRUOy5mCpzCs0 .section-root polygon{fill:hsl(240, 100%, 46.2745098039%);}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-root text{fill:#ffffff;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-root span{color:#ffffff;}#mermaid-svg-yT0uRUOy5mCpzCs0 .section-2 span{color:#ffffff;}#mermaid-svg-yT0uRUOy5mCpzCs0 .icon-container{height:100%;display:flex;justify-content:center;align-items:center;}#mermaid-svg-yT0uRUOy5mCpzCs0 .edge{fill:none;}#mermaid-svg-yT0uRUOy5mCpzCs0 .mindmap-node-label{dy:1em;alignment-baseline:middle;text-anchor:middle;dominant-baseline:middle;text-align:center;}#mermaid-svg-yT0uRUOy5mCpzCs0 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

    OSINT知识体系

    收集阶段

    域名信息

    网络扫描

    代码仓库

    社交媒体

    分析阶段

    关联分析

    时间线

    关系图谱

    行为模式

    产出阶段

    情报报告

    风险评估

    修复建议

    合规要求

    法律边界

    道德准则

    授权范围


    参考资料

  • Awesome Security – 安全资源大全
  • Awesome Hacking – 黑客技术资源
  • OSINT Framework – OSINT工具导航
  • Nmap官方文档 – 网络扫描权威参考
  • OWASP Testing Guide – Web测试指南
  • MITRE ATT&CK – 威胁行为框架

  • 本文仅供安全研究和教育目的,所有操作应在合法授权范围内进行。

    赞(0)
    未经允许不得转载:171主机测评 » 开源情报(OSINT)与安全研究资源导航
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址