| name | conducting-external-reconnaissance-with-osint |
| description | 使用开源情报(OSINT)技术执行外部侦察,在不直接与目标系统交互的情况下映射组织的外部攻击面。测试人员从 DNS 记录、证书透明度日志、搜索引擎、社交媒体、代码仓库和数据泄露数据库等公开来源收集信息,以构建全面的目标画像。
|
| domain | cybersecurity |
| subdomain | penetration-testing |
| tags | ["OSINT","reconnaissance","attack-surface","footprinting","passive-recon"] |
| version | 1.0.0 |
| author | mahipal |
| license | Apache-2.0 |
使用 OSINT 执行外部侦察
使用场景
- 在渗透测试的初始侦察阶段收集情报,在主动扫描前进行信息收集
- 映射组织的外部攻击面,识别未知或影子 IT 资产
- 收集员工信息、邮件格式和组织架构,用于社会工程学活动
- 识别在互联网上发布的暴露凭据、泄露数据或敏感文档
- 在红队演练前确定组织数字足迹的范围
不适用场景:跟踪、骚扰或未经授权地监视个人。OSINT 收集必须在授权演练范围内进行,并符合适用的隐私法律(GDPR、CCPA)。
前置条件
- 针对目标组织执行侦察的书面授权
- 配置了 VPN 或 Tor 的专用研究工作站,用于需要时的匿名查询
- 已安装 OSINT 框架工具:Amass、theHarvester、Shodan CLI、Recon-ng、SpiderFoot
- Shodan、Censys、SecurityTrails、Hunter.io、VirusTotal 和 GitHub 的 API 密钥,以获取增强结果
- 用于研究过程中访问需要注册服务的一次性邮件账户
工作流程
步骤一:域名和 DNS 枚举
枚举与目标相关的所有域名、子域名和 DNS 记录:
- 根域名识别:从主域名开始,通过
whoxy.com 或 domaintools.com 对注册者姓名、邮件和组织进行反向 WHOIS 查询,识别所有相关域名
- 子域名枚举:运行多个工具以获得全面覆盖:
amass enum -passive -d target.com -o amass_subs.txt 从 40+ 个数据源进行被动子域名发现
subfinder -d target.com -all -o subfinder_subs.txt 进行快速被动枚举
crt.sh 证书透明度日志查询:curl -s "https://crt.sh/?q=%25.target.com&output=json" | jq -r '.[].name_value' | sort -u
- DNS 记录分析:查询所有记录类型:
dig target.com ANY,检查揭示邮件基础设施的 SPF、DKIM、DMARC 记录,枚举 MX 记录以识别邮件提供商
- 区域传输尝试:
dig axfr @ns1.target.com target.com 检查错误配置的 DNS 服务器
- 整合结果:合并、去重并将所有发现的子域名解析为 IP 地址。将 IP 地址映射到 ASN 和托管提供商
步骤二:基础设施和服务发现
在不直接扫描目标系统的情况下识别面向互联网的基础设施:
- Shodan:
shodan search "ssl.cert.subject.cn:target.com" 查找所有具有目标域名 TLS 证书的面向互联网服务。同时按组织名称和 IP 范围搜索
- Censys:搜索目标的 IP 范围和 TLS 证书,识别从互联网扫描中索引的服务、技术和潜在漏洞
- 云资产发现:使用
cloud_enum 等工具检查 S3 存储桶(target-com、target-backup、target-dev)、Azure Blob 存储(target.blob.core.windows.net)和 GCP 存储
- WAF 和 CDN 识别:使用
wafw00f target.com 识别可能掩盖源服务器 IP 的 Web 应用防火墙和 CDN 提供商
- 历史数据:使用 Wayback Machine(
web.archive.org)查找已删除的页面、旧版应用和被遗忘的端点
步骤三:邮件和人员情报
收集员工信息和邮件地址,为社会工程学准备:
- 邮件收割:
theHarvester -d target.com -b all -f harvest_results.html 从搜索引擎、LinkedIn 和数据源收集邮件
- 邮件格式识别:使用
hunter.io 确定邮件格式(first.last、flast、firstl)并验证可达性
- LinkedIn 侦察:按部门识别员工,特别是 IT 管理员、安全团队成员和高管。注意职位发布和员工档案中提到的技术
- 组织架构:从 LinkedIn 数据构建组织架构图,了解汇报关系,识别关键人员,映射部门
- 社交媒体分析:查看员工社交媒体档案,了解内部工具、技术、办公地点、徽章照片和安全实践信息
- 招聘信息:分析公司招聘页面和招聘网站上的当前和历史招聘信息,获取技术栈详情、工具和基础设施信息
步骤四:凭据和数据泄露分析
搜索暴露的凭据和敏感数据:
- 泄露数据库:通过
haveibeenpwned.com API 检查与目标域名相关的已泄露邮件地址
- 粘贴网站:在 Pastebin、GitHub Gists 和类似粘贴网站上搜索泄露的凭据、配置文件或内部文档
- 代码仓库:在 GitHub、GitLab 和 Bitbucket 中搜索:
org:target "password"、org:target "api_key"、org:target "secret"
- 使用
trufflehog 或 gitleaks 对目标的公开仓库进行自动化密钥扫描
- 文档元数据:下载目标网站上公开可用的文档(PDF、DOCX、XLSX)并使用
exiftool 提取元数据,以揭示内部用户名、软件版本、打印机名称和文件路径
- Google Dorking:使用精准搜索操作符:
site:target.com filetype:pdf 查找公开文档
site:target.com inurl:admin 查找管理面板
site:target.com "index of /" 查找目录列表
site:pastebin.com "target.com" 查找粘贴网站提及
步骤五:技术栈分析
识别目标使用的技术、框架和服务:
- Web 技术指纹识别:使用
whatweb target.com 或 Wappalyzer 浏览器扩展识别 CMS、框架、JavaScript 库、分析工具和服务器软件
- SSL/TLS 分析:
sslyze target.com 或 testssl.sh target.com 识别密码套件、协议版本、证书详情和密码学弱点
- JavaScript 分析:下载并检查 JavaScript 文件,查找框架标识符、API 端点、内部主机名和版本字符串
- 基于 DNS 的服务识别:检查 TXT 记录以识别服务提供商(如
v=spf1 include:_spf.google.com 表示使用 Google Workspace,MS=msXXXXXX 表示 Microsoft 365)
- 移动应用分析:从应用商店下载目标的移动应用,使用
apktool(Android)或 frida 分析硬编码 URL、API 端点和嵌入的凭据
核心概念
| 术语 | 定义 |
|---|
| OSINT | 开源情报;从公开可用来源(包括网站、社交媒体、公共记录和政府数据)收集的情报 |
| 被动侦察 | 在不直接与目标系统交互的情况下收集信息,不在目标日志中留下痕迹 |
| 主动侦察 | 涉及与目标系统直接交互(扫描、探测)的信息收集,可能被记录 |
| 证书透明度 | 证书颁发机构颁发的 TLS 证书的公开日志,可查询以发现子域名和基础设施 |
| 攻击面 | 未授权用户可尝试进入或从环境中提取数据的所有点的总和 |
| Google Dorking | 使用高级 Google 搜索操作符查找被搜索引擎索引的本不应公开的敏感信息 |
| 影子 IT | 由员工或部门在 IT 部门不知情或未批准的情况下部署的技术系统和服务 |
工具与系统
- Amass(OWASP):综合子域名枚举工具,结合被动来源、DNS 暴力破解和证书透明度日志分析
- Shodan:互联网范围扫描数据库,索引互联网连接设备的服务、横幅和元数据,可按 IP、域名或组织搜索
- theHarvester:用于从公开来源收集邮件、子域名、主机、员工姓名和开放端口的 OSINT 工具
- SpiderFoot:自动化 OSINT 收集平台,查询 200+ 数据源并将发现关联到统一图谱
- Recon-ng:模块化 Web 侦察框架,具有数据库后端,用于组织和交叉引用已发现的情报
常见场景
场景:红队演练的演练前侦察
背景:一家科技公司签约了红队评估。在主动测试开始前,团队执行被动 OSINT 以映射攻击面并识别潜在入口点。目标是一家拥有 500 名员工、主域名为 techcorp.io 的 SaaS 公司。
方法:
- 通过 Amass 和 crt.sh 枚举 147 个子域名,包括 staging.techcorp.io、jenkins.techcorp.io 和 vpn.techcorp.io
- Shodan 发现一个被遗忘的 Elasticsearch 实例在 9200 端口上无需认证即可暴露在互联网上
- theHarvester 收集了 89 个员工邮件地址,揭示格式为 first.last@techcorp.io
- GitHub 搜索发现一名前开发人员的公开仓库包含带有 AWS 访问密钥的
.env 文件
- LinkedIn 分析揭示公司使用 Okta 进行 SSO、使用 Jira 进行项目管理、使用 AWS 进行托管
- Google Dorking 在 docs.techcorp.io 上发现目录列表,暴露内部架构图
- 将所有情报汇编成侦察报告,直接用于威胁建模和攻击规划阶段
常见陷阱:
- 仅依赖单一子域名枚举工具,遗漏其他工具通过不同数据源发现的资产
- 未检查云存储服务(S3、Azure Blob、GCP)的公开可访问存储桶
- 不搜索公开代码仓库中的凭据,这通常会直接产生访问权限
- 在本应是纯被动阶段执行主动扫描(端口扫描、漏洞扫描)
输出格式
## 外部侦察报告 - TechCorp.io
### 攻击面摘要
- **发现的域名**:3 个(techcorp.io、techcorp.com、techcorpapp.com)
- **枚举的子域名**:所有域名共 147 个唯一子域名
- **唯一 IP 地址**:34 个 IP 映射至 AWS us-east-1 和 us-west-2
- **收集的邮件地址**:89 个有效企业邮件地址
- **暴露的服务**:通过 Shodan/Censys 识别到 12 个面向互联网的服务
### 关键发现
**1. 未经认证的 Elasticsearch 实例**
- 主机:52.xx.xx.xx:9200(elastic.techcorp.io)
- 索引数据:包含用户会话令牌和 PII 的应用日志
- 来源:Shodan 搜索 "ssl.cert.subject.cn:techcorp.io"
**2. 公开 GitHub 仓库中的 AWS 凭据**
- 仓库:github.com/former-dev/techcorp-scripts
- 文件:包含 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 的 .env 文件
- 状态:密钥似乎有效(未测试 - 超出被动侦察范围)
**3. 暴露内部文档的目录列表**
- URL:https://docs.techcorp.io/internal/
- 内容:架构图、网络拓扑、运行手册
- 来源:Google Dork "site:techcorp.io intitle:index.of"
### 建议
1. 立即轮换暴露的 AWS 凭据并审计 CloudTrail 日志
2. 限制 Elasticsearch 仅允许内网访问或添加认证
3. 禁用 docs.techcorp.io 上的目录列表并审计所有 Web 服务器
4. 在所有组织仓库中实施 GitHub 密钥扫描