关注 泷羽Sec和泷羽Sec-静安公众号,这里会定期更新与 OSCP、渗透测试等相关的最新文章,帮助你理解网络安全领域的最新动态。后台回复“OSCP配套工具”获取本文的工具
被动信息收集(Passive Information Gathering) 与 主动信息收集(Active Information Gathering) 的区别
在网络安全、渗透测试和威胁情报分析中,这两种信息收集方式的核心区别在于 是否直接与目标系统交互。
1. 被动信息收集
- 定义:
通过公开资源或第三方数据源获取目标信息,不直接与目标系统或网络通信。 - 特点:
- 隐蔽性高:目标无法感知被探测。
- 依赖公开数据:利用搜索引擎、社交媒体、DNS记录、数据库等。
- 法律风险低:通常不违反法律(需遵守隐私政策)。
- 常见方法:
- 搜索引擎:Google Hacking(
site:
,filetype:
等语法)。 - WHOIS查询:获取域名注册信息(注册人、DNS服务器)。
- DNS解析:通过公开DNS记录获取子域名、IP地址(如
dig
、nslookup
)。 - 历史数据:查看网页快照(Wayback Machine)、漏洞数据库(CVE、Exploit-DB)。
- 社交媒体:LinkedIn、GitHub(员工信息、代码泄露)。
- Shodan/Censys:搜索暴露的物联网设备和服务。
- 搜索引擎:Google Hacking(
- 适用场景:
- 渗透测试初期,确定目标范围。
- 威胁情报分析,追踪攻击者基础设施。
- 避免触发目标安全告警(如IDS/IPS)。
2. 主动信息收集
- 定义:
直接与目标系统或网络通信,通过发送探测请求获取信息。 - 特点:
- 交互性强:可能触发安全机制(如防火墙、日志记录)。
- 信息更精准:直接验证目标状态(端口开放性、服务版本)。
- 法律风险高:未经授权的主动探测可能违法(如《计算机欺诈与滥用法》)。
- 常见方法:
- 端口扫描:Nmap(
-sS
半开扫描)、Masscan。 - 服务指纹识别:Banner抓取(Telnet、Netcat)、Nmap脚本(
-sV
)。 - 漏洞探测:Nessus、OpenVAS(验证已知漏洞)。
- 网络嗅探:Wireshark、tcpdump(分析流量)。
- 暴力破解:Hydra(测试弱密码)、DirBuster(目录枚举)。
- 主动DNS查询:直接向目标DNS服务器请求记录。
- 端口扫描:Nmap(
- 适用场景:
- 渗透测试中后期,验证漏洞可利用性。
- 红队行动中模拟真实攻击行为。
- 需获得明确授权(如授权渗透测试)。
对比表格
特征 | 被动信息收集 | 主动信息收集 |
---|---|---|
交互性 | 不直接与目标交互 | 直接与目标交互 |
隐蔽性 | 高(目标无法察觉) | 低(可能触发告警) |
数据来源 | 公开资源、第三方数据库 | 目标系统的响应数据 |
法律风险 | 低(需遵守隐私政策) | 高(需明确授权) |
常用工具 | Shodan, WHOIS, Wayback Machine, Google | Nmap, Nessus, Hydra, Wireshark |
渗透测试阶段 | 前期(侦查) | 中后期(漏洞利用、横向移动) |
实战建议
- 优先被动收集:
在未授权时仅使用被动方法,避免法律风险。例如:通过GitHub搜索目标代码泄露。 - 主动收集需授权:
在渗透测试中,主动扫描前必须获得书面授权。例如:使用Nmap扫描客户网络。 - 混合使用:
结合两者提高效率。例如:被动收集子域名后,主动验证其存活性和服务版本。
开源情报(OSINT,Open Source Intelligence)是指从公开可获取的来源中收集、分析和利用信息,用于支持决策或安全分析。其核心特点是数据来源完全公开(如互联网、媒体、政府记录等),无需侵入目标系统,但需通过技术手段筛选有效信息。
什么是开源情报,如何获取开源情报?
开源情报(OSINT)的核心特点
- 公开性:数据来自免费或公开渠道(如网页、社交媒体、数据库)。
- 合法性:遵守隐私政策和法律法规(如 GDPR、CCPA)。
- 非侵入性:不直接与目标交互,避免触发安全告警。
- 多样性:覆盖文本、图像、视频、元数据等多种格式。
- 可验证性:通过交叉比对多个来源提高信息可信度。
如何获取开源情报?
1. 基础数据来源
- 搜索引擎:
- Google Dorking:使用高级语法(
site:example.com filetype:pdf
)挖掘敏感文件。 - Bing/Yandex:特定区域或语言的内容(如俄语信息用Yandex更高效)。
- Google Dorking:使用高级语法(
- 社交媒体:
- LinkedIn:挖掘员工职位、技术栈(如“某公司使用Apache Tomcat”)。
- Twitter/Telegram:追踪威胁情报(如勒索软件团伙的暗网活动)。
- GitHub/GitLab:搜索代码泄露、API密钥或硬编码密码。
- 域名与IP:
- WHOIS查询:获取域名注册人、邮箱、电话(工具:WhoisXML API)。
- DNS记录:通过
dig
或在线工具(ViewDNS)解析子域名和MX记录。 - 证书透明度日志(如crt.sh):发现目标关联的SSL证书和子域名。
2. 高级技术工具
- 网络资产测绘:
- Shodan:搜索暴露的物联网设备(如摄像头、数据库)。
- Censys:分析IP的开放端口和服务指纹(如Apache版本)。
- FOFA:国内版Shodan,侧重中文目标。
- 元数据提取:
- ExifTool:从图片中提取GPS坐标、拍摄设备。
- FOCA:分析文档(PDF/Word)中的隐藏元数据。
- 历史数据:
- Wayback Machine:查看网站历史快照(如已删除的登录页面)。
- DNS历史记录:通过SecurityTrails追溯IP变更。
3. 自动化与框架
- OSINT集成工具:
- Maltego:可视化关联分析(如域名→IP→员工邮箱→社交媒体)。
- SpiderFoot:自动聚合WHOIS、DNS、漏洞库等数据。
- theHarvester:批量收集邮箱、子域名(支持Google、Bing、PGP密钥服务器)。
- 自定义脚本:
- 使用Python(
requests
、BeautifulSoup
)爬取特定网站数据。 - 调用API(如Twitter API、Shodan API)实现数据批量获取。
- 使用Python(
4. 暗网与威胁情报
- 暗网监控:
- 使用 Tor浏览器 访问暗网论坛(如Dread),搜索数据泄露记录。
- 工具:DarkSearch.io(暗网搜索引擎)。
- 漏洞与威胁库:
- CVE Details:查询已知漏洞的利用方式。
- VirusTotal:分析文件哈希、URL关联的恶意活动。
- AlienVault OTX:获取全球威胁情报指标(IOC)。
实战案例
- 定位数据泄露来源:
- 在GitHub搜索
companyname password
,发现员工误传的配置文件含数据库密码。 - 通过Shodan验证该数据库IP是否暴露在公网。
- 在GitHub搜索
- 钓鱼攻击溯源:
- 从钓鱼邮件元数据中提取发信IP,用AbuseIPDB查询历史恶意行为。
- 关联该IP的SSL证书,发现注册邮箱与某暗网论坛账号一致。
- 供应链攻击分析:
- 通过Crunchbase找到目标供应商的客户列表。
- 使用Censys扫描这些客户的公网资产,发现共用同一脆弱SaaS服务。
注意事项
- 法律合规:
- 避免侵犯隐私(如爬取LinkedIn个人资料可能违反用户协议)。
- 在欧盟地区需遵守GDPR(如模糊化处理个人信息)。
- 道德准则:
- 仅用于授权测试或防御分析,禁止恶意用途。
- 信息验证:
- 交叉验证多个来源(如WHOIS邮箱是否与社交媒体账号关联)。
- 警惕虚假信息(如伪造的GitHub仓库或域名注册信息)。
总结
开源情报(OSINT)是“从公开信息中提炼黄金”的技术,核心在于:
- 明确目标(如“获取某公司的网络拓扑”)。
- 选择工具链(如Maltego关联分析 + Shodan验证)。
- 自动化与人工分析结合,最终形成可行动的威胁情报。
Whois 信息收集
还是官方的靶机网址 https://www.megacorpone.com/
whois megacorpone.com
强制指定 WHOIS 服务器(某些域名需指定注册商服务器):
whois -h whois.verisign-grs.com megacorpone.com
WHOIS 输出信息解析
1. 关键字段解读
字段 | 说明 |
---|---|
Domain Name | 域名名称(如 example.com )。 |
Registry Domain ID | 域名在注册局的唯一标识符(用于追踪变更)。 |
Registrar | 域名注册商(如 GoDaddy、Namecheap)。 |
Creation Date | 域名注册日期(可用于判断目标运营时长)。 |
Expiration Date | 域名过期时间(若未续费可能被抢注)。 |
Updated Date | 最后更新时间(如DNS记录或所有者变更)。 |
Domain Status | 域名状态(如 clientTransferProhibited 表示禁止转移)。 |
Name Server | 域名使用的DNS服务器(可进一步探测子域名)。 |
Registrant Contact | 注册人信息(可能被隐私保护服务隐藏)。 |
Admin/Technical Contact | 管理员和技术联系人信息(可能包含邮箱、电话)。 |
2. 隐私保护的影响
-
Whois Privacy:
注册商提供隐私保护服务时,关键信息(如姓名、邮箱、电话)会被替换为代理信息:
Registrant Name: REDACTED FOR PRIVACY Registrant Email: contact@privacyguard.example
此时需通过其他方式(如历史记录、关联域名)绕过隐私保护。
3. IP WHOIS 的额外信息
-
IP 范围:
NetRange: 192.0.2.0 - 192.0.2.255 # IP地址段 CIDR: 192.0.2.0/24 # 子网掩码 Organization: Example ISP # 所属机构(可能是ISP或企业)
3. 自动化工具整合
-
与脚本结合:使用 Python 的
python-whois
库批量查询域名:import whois from datetime import datetime def get_domain_info(domain_name): try: domain = whois.whois(domain_name) info = { "域名": domain_name, "注册商": domain.registrar, "创建日期": format_date(domain.creation_date), "过期日期": format_date(domain.expiration_date), "最后更新": format_date(domain.updated_date), "状态": list_to_str(domain.status), # 状态可能是列表 "DNS服务器": list_to_str(domain.name_servers), # 关键修复:处理字段为 None 的情况,统一转为 'N/A' "注册人姓名": getattr(domain, 'name', 'N/A') or 'N/A', "注册人邮箱": getattr(domain, 'email', 'N/A') or 'N/A', "注册人电话": getattr(domain, 'phone', 'N/A') or 'N/A', "注册机构": getattr(domain, 'org', 'N/A') or 'N/A', "地址": getattr(domain, 'address', 'N/A') or 'N/A' } return info except Exception as e: return {"错误": str(e)} def format_date(date): if isinstance(date, list): return [d.strftime("%Y-%m-%d") if isinstance(d, datetime) else d for d in date] elif isinstance(date, datetime): return date.strftime("%Y-%m-%d") return date or 'N/A' # 处理日期为 None 的情况 def list_to_str(data): if isinstance(data, list): return ", ".join(str(item) for item in data) return data or 'N/A' # 处理数据为 None 的情况 if __name__ == "__main__": target_domain = "megacorpone.com" result = get_domain_info(target_domain) print("\n[+] WHOIS 情报分析结果:") print("-" * 50) for key, value in result.items(): if key == "错误": print(f" ! 查询失败: {value}") else: print(f" {key:>12} : {value}") # 修复判断逻辑:先检查是否为 'N/A' if result.get('注册人邮箱', 'N/A') != 'N/A': print("\n[+] 潜在攻击面建议:") print(f" - 对邮箱 {result['注册人邮箱']} 进行钓鱼或密码爆破测试") if result.get('DNS服务器', 'N/A') != 'N/A': print(f" - 扫描DNS服务器 {result['DNS服务器']} 的开放端口(如53 UDP/TCP)")
-
Google 信息收集
用法总集篇:https://www.exploit-db.com/google-hacking-database
1. 敏感文件与数据泄露
语法 | 用途 |
---|---|
site:megacorpone.com filetype:sql | 搜索目标域名的SQL数据库文件(可能含明文密码或数据表结构)。 |
site:megacorpone.com "-----BEGIN RSA PRIVATE KEY-----" | 查找泄露的SSH私钥。 |
site:megacorpone.com filetype:env OR filetype:ini | 查找 .env (环境变量)或 .ini (配置文件),常含API密钥、数据库密码。 |
site:megacorpone.com ext:sql intext:password | 搜索含密码字段的SQL文件。 |
site:megacorpone.com "api_key" OR "api_secret" | 查找硬编码的API密钥。 |
2. 后台与登录入口
语法 | 用途 |
---|---|
site:megacorpone.com intitle:"login" inurl:/admin | 查找管理员登录页面(如 /admin/login.php )。 |
site:megacorpone.com inurl:/wp-admin | 定位WordPress后台(若未重命名)。 |
site:megacorpone.com intitle:"index of /cgi-bin" | 发现CGI脚本目录(可能含未授权访问的脚本)。 |
site:megacorpone.com inurl:debug | 查找调试页面(如 debug.php ,可能暴露代码逻辑)。 |
3. 服务器与目录信息泄露
语法 | 用途 |
---|---|
intitle:"index of" site:megacorpone.com | 列出开放目录(可能暴露敏感文件)。 |
site:megacorpone.com "Directory listing for" | 另一种目录列表泄露的关键词。 |
site:megacorpone.com "Apache/2.4.29 (Ubuntu) Server at" | 根据服务器Banner信息定位特定版本的主机(可关联CVE漏洞)。 |
site:megacorpone.com "X-Powered-By: PHP/7.2" | 查找运行指定PHP版本的服务器。 |
4. 备份文件与历史数据
语法 | 用途 |
---|---|
site:megacorpone.com filetype:bak | 搜索备份文件(如 web.config.bak 、database.sql.bak )。 |
site:megacorpone.com inurl:/backup | 查找备份目录(可能含数据库或代码备份)。 |
site:megacorpone.com "backup.zip" | 直接定位压缩备份文件。 |
site:megacorpone.com "This is a snapshot of" | 查找网站快照备份页面。 |
5. 漏洞与错误信息利用
语法 | 用途 |
---|---|
`site:megacorpone.com “error” | “warning”` |
site:megacorpone.com "sql syntax near" | 定位SQL报错页面(可能存在SQL注入漏洞)。 |
site:megacorpone.com "Stack trace:" | 查找Java/PHP堆栈跟踪信息(暴露代码逻辑)。 |
site:megacorpone.com "PHP Fatal error" | 发现PHP致命错误页面。 |
6. 员工与内部信息收集
语法 | 用途 |
---|---|
site:linkedin.com employees megacorpone.com | 搜索LinkedIn上目标公司的员工信息。 |
site:megacorpone.com "confidential" OR "internal" | 查找标有“内部”或“机密”的文件。 |
site:github.com "megacorpone.com" password | 在GitHub中搜索目标相关代码中的密码泄露。 |
site:megacorpone.com "@megacorpone.com" filetype:csv | 查找包含公司邮箱的CSV文件(可能为员工列表)。 |
7. 高级组合技巧
- 排除干扰:
site:megacorpone.com -site:www.megacorpone.com
(排除主站,专注子域名)。 - 通配符模糊搜索:
site:megacorpone.com inurl:prod*env
(匹配prod.env
、production.env
等)。 - 时间范围限定:
在Google搜索工具中限定时间(如过去一年),找到最新泄露的数据。
课后练习
Exercises
- Who is the VP of Legal for MegaCorp One and what is their email address?
- Use Google dorks (either your own or any from the GHDB) to search www.megacorpone.com for interesting documents.
- What other MegaCorp One employees can you identify that are not listed on www.megacorpone.com?
练习 1
问题:
找到 MegaCorp One 的法律副总裁(VP of Legal)及其邮箱地址。
Google Hacking 解法:
-
LinkedIn 员工信息挖掘:
site:linkedin.com/in "MegaCorp One" "VP Legal"
-
搜索 LinkedIn 上职位为 “VP Legal” 且公司为 “MegaCorp One” 的用户。
https://www.linkedin.com/in/mike-carlow-8128896a/
-
-
公司网站内部页面:
site:megacorpone.com "leadership" OR "executive team" "legal"
- 在公司官网的“领导团队”或“管理层”页面中查找法律相关职位。
-
文档泄露:
site:megacorpone.com filetype:pdf "VP Legal" email
- 搜索公司 PDF 文件中提及法律副总裁和邮箱的内容。
练习 2
问题:
使用 Google 语法(或 GHDB 中的语法)搜索 www.megacorpone.com
的“有趣文档”。
Google Hacking 解法:
-
敏感文件搜索:
site:megacorpone.com filetype:pdf OR filetype:doc OR filetype:xls
- 查找所有 PDF、Word、Excel 文档(可能含财务报告、客户数据)。
-
配置与备份文件:
site:megacorpone.com (ext:env OR ext:bak OR ext:sql)
- 搜索环境变量文件、备份文件或 SQL 数据库文件。
-
后台与登录入口:
site:megacorpone.com inurl:admin OR intitle:"login"
- 查找管理员后台或登录页面。
-
目录遍历:
site:megacorpone.com intitle:"index of" "parent directory"
- 发现开放目录列表(可能泄露源码、图片等)。
练习 3
问题:
找出未在 www.megacorpone.com
官网列出的其他员工。
Google Hacking 解法:
-
社交媒体与代码库:
site:github.com “megacorpone.com” “employee” OR “staff”
- 在 GitHub 代码中搜索员工信息(如注释中的邮箱、测试账号)。

2. **会议与演讲记录**:
```markdown
site:youtube.com OR site:slideshare.net "MegaCorp One" "speaker"
- 查找公司员工在外部会议或演讲中公开的姓名和职位。
-
新闻稿与合作伙伴:
site:news.google.com "MegaCorp One" "announces" OR "partner"
- 从新闻稿中挖掘未在官网列出的员工(如项目负责人)。
-
WHOIS 与域名关联:
"MegaCorp One" site:whois.com
- 通过 WHOIS 查询关联域名,获取注册人姓名和邮箱(可能为员工)。
-
泄露的通讯录:
site:megacorpone.com filetype:csv "contact" OR "employee"
- 搜索泄露的 CSV 通讯录文件。
Netcraft 信息收集
网址:https://searchdns.netcraft.com/
Recon-ng 信息收集workspaces create my_workspace
1. 安装与启动
-
安装(Kali 默认已预装,若需更新):
sudo apt update && sudo apt install recon-ng
-
启动:
recon-ng
2. 基本工作流程
初始化数据库
首次使用时需创建数据库:
workspaces create my_workspace # 创建工作区
workspaces load my_workspace # 加载工作区
查看模块
列出所有可用模块:
marketplace search
筛选特定模块(如域名枚举):
marketplace search domain
加载模块
例如查看,下载,加载 whois_pocs
模块(通过 WHOIS 查找域名信息):
marketplace info recon/domains-hosts/google_site_web
marketplace install recon/domains-hosts/google_site_web
modules load recon/domains-contacts/whois_pocs
back # 回到主界面
设置参数
指定目标域名(以 example.com
为例):
options set SOURCE megacorpone.com
执行模块
运行当前加载的模块:(用代理运行)
run
查看结果
查看数据库中的收集结果:
show hosts # 显示主机信息
show contacts # 显示邮箱/联系人
3. 常用模块示例
域名信息收集
modules load recon/domains-hosts/hackertarget
options set SOURCE megacorpone.com
run
邮箱枚举(需 API 密钥,如 Hunter.io)
modules load recon/domains-contacts/hunter_io
keys add hunter_api YOUR_API_KEY # 替换为实际 API 密钥
options set SOURCE example.com
run
子域名爆破(使用 bruteforce 字典):
modules load recon/domains-hosts/brute_hosts
options set SOURCE megacorpone.com
options set WORDLIST /usr/share/wordlists/subdomains-top1million.txt
run
IP 关联主机发现(使用 Shodan):
modules load recon/domains-hosts/shodan_hostname
keys add shodan_api YOUR_API_KEY # 替换为 Shodan API 密钥
options set SOURCE 192.168.1.1 # 设置目标 IP
run
4. 高级技巧
-
批量执行模块:
使用resource
命令批量运行脚本:resource /path/to/script.txt
脚本内容示例:
modules load recon/domains-hosts/hackertarget options set SOURCE example.com run modules load recon/domains-contacts/whois_pocs run
-
导出数据:
将结果导出为 CSV:show contacts export /home/kali/contacts.csv show hosts export /home/kali/hosts.csv
-
API 密钥管理:
添加或查看已配置的 API 密钥:keys add shodan_api YOUR_KEY # 添加密钥 keys list # 列出所有密钥
练习Exercise
(Reporting is not required for this exercise)
-
Use the recon/domains-hosts/google_site_web and recon/hosts-hosts/resolve modules to gather information on MegaCorp One.
-
Take some time to explore other recon-ng modules.
-
使用 recon/domains-hosts/google_site_web 和 recon/hosts-hosts/resolve 模块收集 MegaCorp One 的信息。
-
探索其他 Recon-ng 模块。
1. 启动 Recon-ng 并创建工作区
recon-ng # 启动工具
workspaces create megacorp_one # 创建名为 megacorp_one 的工作区
workspaces load megacorp_one # 加载工作区
2. 使用 google_site_web 模块发现子域名
# 加载模块
modules load recon/domains-hosts/google_site_web
# 设置目标域名(假设目标域名为 megacorpone.com)
options set SOURCE megacorpone.com
# 执行模块
run
作用:
通过 Google 搜索语法 site:megacorpone.com
查找所有关联子域名(如 dev.megacorpone.com
、api.megacorpone.com
等),并将结果保存到数据库。
3. 使用 resolve 模块解析主机名 IP
# 加载模块
modules load recon/hosts-hosts/resolve
# 自动从数据库读取上一步发现的子域名,无需手动设置 SOURCE
# 执行模块
run
作用:
将发现的子域名解析为 IP 地址(例如 dev.megacorpone.com → 192.168.1.100
),结果存储在 hosts
表中。
4. 查看收集结果
show hosts # 显示所有主机名及其解析的 IP
5. 探索其他常用模块
以下为扩展操作示例,帮助进一步信息收集:
-
子域名爆破(使用字典爆破):
modules load recon/domains-hosts/brute_hosts options set SOURCE megacorpone.com options set WORDLIST /usr/share/wordlists/subdomains-top1million.txt run
-
邮箱枚举(需 Hunter.io API 密钥):
modules load recon/domains-contacts/hunter_io keys add hunter_api YOUR_API_KEY # 替换为实际 API 密钥 options set SOURCE megacorpone.com run
-
端口扫描(使用 Bing 搜索引擎发现开放端口):
modules load recon/hosts-ports/bing_ip options set SOURCE 192.168.1.100 # 替换为目标 IP run
-
WHOIS 查询(获取域名注册信息):
modules load recon/domains-contacts/whois_pocs options set SOURCE megacorpone.com run
🔔 想要获取更多网络安全与编程技术干货?
关注 泷羽Sec-静安 公众号,与你一起探索前沿技术,分享实用的学习资源与工具。我们专注于深入分析,拒绝浮躁,只做最实用的技术分享!💻
扫描下方二维码,马上加入我们,共同成长!🌟
👉 长按或扫描二维码关注公众号
或者直接回复文章中的关键词,获取更多技术资料与书单推荐!📚