邮件钓鱼免杀完全指南(2026实战版)·二、OSINT信息收集四步法

admin 2026-05-19 06:07:38 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详细介绍了邮件钓鱼攻击中OSINT信息收集的四步法:域名发现与邮件系统指纹识别、邮箱枚举、GitHub代码泄露扫描和文档元数据提取。重点阐述了精准情报对钓鱼成功率的关键作用,并提供了theHarvester、LinkedIn2username等实用工具的操作方法和不同邮件系统的攻击策略差异。文档包含具体代码示例和实战案例,具有较高可操作性。 综合评分: 85 文章分类: 渗透测试,社会工程学,安全意识,红队,OSINT


cover_image

邮件钓鱼免杀完全指南(2026 实战版)· 二、OSINT 信息收集四步法

原创

IceByte IceByte

IceByte-Sec

2026年5月16日 22:51 内蒙古

在小说阅读器读本章

去阅读

系列说明:本文是《邮件钓鱼免杀完全指南(2026 实战版)》系列的第二篇。上篇建立了全链路攻击视野,本篇深入攻击链最前端——如何利用开源情报(OSINT)在不动声色间获取目标企业的完整邮箱清单和人员画像。


前言:为什么 OSINT 是钓鱼攻击的”七寸”?

大多数钓鱼攻击失败,不是因为载荷不够先进,而是因为发错了人

  • 把财务诈骗邮件发给实习生 → 被直接忽略
  • 把 IT 钓鱼邮件发给 HR → 话题不对,警觉性高
  • 用采购话术发给没有采购权限的员工 → 打开率极低

精准的 OSINT 信息收集,能让攻击者将有限的钓鱼邮件配额(企业邮件网关通常限制每小时发送量)用于最高价值目标。OSINT 的质量直接决定了钓鱼攻击的成功率。

根据 2025 年 Cozy Bear(APT29)攻击 Hydro-Québec 的事件复盘,攻击者花费了超过 3 周时间进行前期情报收集,最终针对 14 名高价值目标发送高度个性化钓鱼邮件,成功率 100%。


第一步:域名发现与邮件系统指纹识别

1.1 提取企业邮箱域名

大多数企业的公开邮箱后缀可以通过以下途径获取:

方法 A:企业官网”联系我们”页面

几乎每家企业官网都有”联系我们”或”商务合作”页面,通常会列出类似 [email protected] 或 [email protected] 的联系方式。这就是企业的主邮箱域名

方法 B:招聘信息挖掘

企业在智联招聘、BOSS 直聘、LinkedIn Jobs 发布的职位中,通常会留下 [email protected] 或 [email protected]。这类邮箱的域名通常是企业统一使用的。

方法 C:WHOIS 历史记录

有时企业更换过邮箱域名(如从 company.net 迁移到 company.com),旧的 WHOIS 记录或历史 DNS 解析记录中可能留有痕迹。可以使用 SecurityTrails 或 ViewDNS 查询历史 DNS 记录。

1.2 MX 记录分析(判断邮件系统类型)

获取域名后,第一步是通过 MX 记录判断目标使用的邮件系统——这决定了后续的投递策略。

# 查询 MX 记录
$ dig MX target-company.com +short

# 常见返回结果及其含义:
0 target-company-com.mail.protection.outlook.com.   # → Microsoft Defender for Office 365
10 inbound.mailguard.com.au.                          # → MailGuard(澳洲常用 SEG)
1 aspmx.l.google.com.                                 # → Google Workspace
10 mx1.coremail.cn.                                   # → Coremail(中国企业常用)
0 target-company-com.mxrecord.io.                     # → Mimecast

不同邮件系统的攻击策略差异

| 邮件系统 | 绕过难度 | 典型弱点 | 推荐手法 | | — | — | — | — | | Microsoft Defender | ⭐⭐⭐⭐ | 用户安全意识高;沙箱强 | EchoSpoofing / 被入侵域名代发 | | Google Workspace | ⭐⭐⭐ | DKIM 配置复杂易出错 | SPF 绕过 / 弱 DMARC 策略 | | Coremail(中国) | ⭐⭐ | 已知漏洞多(CVE-2023-46809 等) | 直接利用 Coremail 漏洞 | | Mimecast | ⭐⭐⭐⭐ | 附件沙箱极强 | HTML Smuggling(网关视角无害) |

1.3 自动化域名发现脚本

以下是一个简单的 Python 脚本,可以批量从企业官网抓取邮箱域名:

import requestsimport refrom urllib.parse import urljoin, urlparse
def extract_emails_from_url(url):    """从指定 URL 页面提取邮箱地址和域名"""    try:        r = requests.get(url, timeout=10, headers={'User-Agent': 'Mozilla/5.0'})        r.raise_for_status()        # 匹配邮箱正则        emails = re.findall(r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}', r.text)        return emails    except Exception as e:        print(f"[-] 无法访问 {url}: {e}")        return []
def discover_email_domain(company_name, website):    """自动化发现企业邮箱域名"""    parsed = urlparse(website)    base = f"{parsed.scheme}://{parsed.netloc}"
    pages_to_check = [        base,        urljoin(base, '/contact'),        urljoin(base, '/contact-us'),        urljoin(base, '/about'),        urljoin(base, '/team'),    ]
    all_emails = []    for page in pages_to_check:        emails = extract_emails_from_url(page)        all_emails.extend(emails)
    # 提取独特域名    domains = set(email.split('@')[1] for email in all_emails)    return list(domains), all_emails
# 使用示例domains, emails = discover_email_domain("ExampleCorp", "https://example.com")print(f"[+] 发现域名: {domains}")print(f"[+] 发现邮箱: {emails[:5]}")  # 只打印前 5 个

第二步:邮箱枚举(Email Enumeration)

确认域名后,下一步是批量收集该域名下的有效邮箱地址

2.1 theHarvester:最强大的多源邮箱枚举工具

theHarvester 是 Kali Linux 内置的 OSINT 工具,支持从 50+ 个数据源 批量收集邮箱、子域名、虚拟主机等信息。

安装

$ pip3 install theHarvester# 或者从 GitHub 克隆最新版$ git clone https://github.com/laramies/theHarvester.git$ cd theHarvester && pip3 install -r requirements.txt

基础用法:

# 从所有数据源搜索目标域名$ theHarvester -d target-company.com -b all
# 指定特定数据源(速度更快)$ theHarvester -d target-company.com -b google,bing,linkedin,hunter
# 限制结果数量(避免被目标发现)$ theHarvester -d target-company.com -b google,bing -l 100
# 输出到文件(XML/JSON/HTML)$ theHarvester -d target-company.com -b all -f results.html

输出示例(部分):

[*] 开始搜索 target-company.com
[*] 搜索引擎结果:[+] 找到 23 个邮箱地址:[email protected]@[email protected]@[email protected]...
[+] 找到 8 个子域名:------------------------mail.target-company.comvpn.target-company.comoa.target-company.com...
[+] 找到 3 个虚拟主机:------------------------184.23.45.67:8080...

theHarvester 的 50+ 数据源分类

| 类型 | 代表数据源 | 特点 | | — | — | — | | 搜索引擎 | Google、Bing、Baidu、DuckDuckGo | 覆盖广,但结果重复率高 | | 商业平台 | Hunter.io、Clearbit、EmailValidator | 数据质量高,但需 API Key | | 代码仓库 | GitHub、GitLab、Bitbucket | 可发现开发者邮箱 + 代码泄露 | | 社交平台 | LinkedIn、Twitter、Reddit | 需要登录,部分数据需付费 | | DNS 服务 | DNSDumpster、SecurityTrails | 发现子域名和 MX 记录 | | 泄露数据库 | HaveIBeenPwned、LeakCheck | 历史泄露数据,可能已失效 |

2.2 LinkedIn 员工信息挖掘

LinkedIn 是获取企业员工姓名和职级的最精准来源。问题是 LinkedIn 有严格的反爬虫机制,直接爬取会被封号。

方法 A:linkedin2username.py

这是一款专为 OSINT 设计的工具,可以通过 LinkedIn 企业页面批量提取员工姓名,并自动生成常见邮箱格式(如 [email protected])。

$ git clone https://github.com/initstring/linkedin2username.git$ cd linkedin2username$ pip3 install -r requirements.txt
# 使用你的 LinkedIn 账号登录(需要有效的 LinkedIn 账号)$ python3 linkedin2username.py -c target-company -n 50

输出示例

[+] 找到 47 个员工:------------------------Zhang San (Senior Manager, IT Department)Li Si (HR Director)Wang Wu (CFO)...
[+] 生成可能的邮箱格式:[email protected]@[email protected]...

方法 B:CrossLinked

更先进的 LinkedIn 爬虫,利用 Google 搜索引擎间接获取 LinkedIn 员工信息(绕过 LinkedIn 反爬虫):w

$ git clone https://github.com/m8sec/CrossLinked.git$ cd CrossLinked && pip3 install -r requirements.txt
$ python3 crosslinked.py -i target-company -o emails.txt

2.3 GitHub 代码泄露扫描

企业员工常将包含邮箱信息的代码推送到 GitHub(如 Git 配置、提交记录、package.json 中的 author 字段)。

工具 A:gitrob

自动扫描目标企业的 GitHub 组织,发现敏感文件和邮箱信息:

$ git clone https://github.com/michenriksen/gitrob.git$ cd gitrob && go build -o gitrob .
# 扫描目标 GitHub 组织$ ./gitrob organizations target-company

工具 B:truffleHog

专注于发现提交历史中的敏感信息(密码、API Key、邮箱):

$ pip3 install truffleHog
# 搜索 GitHub 仓库中的敏感信息$ trufflehog github --repo https://github.com/target-company/main-repo

真实案例:2024 年,某互联网大厂的运维工程师将内部自动化脚本推送到个人 GitHub 仓库,脚本中包含 [email protected]:Password123 的硬编码凭证。攻击者通过 truffleHog 扫描发现后,直接登录了企业 VPN。

2.4 文档元数据提取

企业公开发布的 PDF 报告、Word 文档、Excel 表格中,通常包含作者邮箱(存储在文件元数据的 Author 或 Last Modified By 字段)。

工具:exiftool + Metagoofil

# 使用 Metagoofil 自动化下载并分析文档元数据$ python3 metagoofil.py -d target-company.com -t doc,pdf,xls -l 50 -n 10 -o ./results/
# 输出示例:[+] 下载了 37 个文件[+] 提取到 28 个唯一邮箱:Author: [email protected] Modified By: [email protected]...

手动验证:也可以用 exiftool 直接分析单个文件:

$ exiftool downloaded_file.pdf | grep -i "author\|creator\|email"

2.5 商业平台:Hunter.io

Hunter.io 是目前最精准的邮箱枚举平台,它使用网页爬虫 + 邮件服务器验证 + 公开数据源聚合,提供极高的准确率。

免费版限制:每月 25 次查询。

API 调用示例(Python):

import requests
API_KEY = "YOUR_HUNTER_API_KEY"domain = "target-company.com"
url = f"https://api.hunter.io/v2/domain-search?domain={domain}&api_key={API_KEY}"r = requests.get(url)data = r.json()
print(f"[+] 域名: {data['data']['domain']}")print(f"[+] 发现邮箱数量: {data['data']['stats']['emails']}")
for email in data['data']['emails']:    print(f"  - {email['value']} ({email['type']}, 置信度: {email['confidence']}%)")

返回示例

{  "data": {    "domain": "target-company.com",    "emails": [      {        "value": "[email protected]",        "type": "personal",        "confidence": 98,        "sources": [{"domain": "target-company.com", "uri": "..."}]      }    ],    "stats": {"emails": 47}  }}

提示:Hunter.io 的 confidence 字段表示邮箱的置信度(0-100),建议只使用置信度 > 80 的邮箱,避免向无效邮箱发送钓鱼邮件而触发企业的异常监控。


第三步:SMTP 验证(SMTP Verification)

即使通过 OSINT 收集到了邮箱地址,也无法保证这些邮箱仍然有效(员工可能已离职、邮箱可能被停用)。直接发送钓鱼邮件到无效邮箱会触发企业的异常监控(大量退信)。

SMTP 验证的目标是在不发送真实邮件的情况下,验证邮箱的有效性。

3.1 SMTP 协议中的三个验证命令

SMTP 协议定义了三个可以用于邮箱验证的命令:

| 命令 | 全称 | 作用 | 现代服务器支持情况 | | — | — | — | — | | VRFY | Verify | 询问服务器”这个邮箱是否存在” | ❌ 大多数已禁用 | | EXPN | Expand | 询问邮件组(mailing list)的成员列表 | ❌ 大多数已禁用 | | RCPT TO | Recipient To | 在邮件发送流程中指定收件人,服务器会返回是否可接受 | ✅ 大多数仍支持 |

3.2 smtp-user-enum:三种验证模式详解

smtp-user-enum 是 Kali Linux 内置的 SMTP 用户枚举工具,支持上述三种模式的自动化验证。

安装

$ sudo apt install smtp-user-enum# 或者从源码编译$ wget https://github.com/pentestmonkey/smtp-user-enum/archive/master.zip

模式 1:VRFY(Verify)

$ smtp-user-enum -M VRFY -u admin -t mail.target-company.com

原理:向 SMTP 服务器发送 VRFY admin 命令,如果返回 250 OK,说明邮箱存在;如果返回 550 错误,说明不存在。

问题:现代邮件服务器(Microsoft Exchange、Postfix)默认禁用 VRFY 命令,返回 500 Unrecognized command。此模式成功率极低。

模式 2:EXPN(Expand)

$ smtp-user-enum -M EXPN -u all-staff -t mail.target-company.com

原理:询问邮件组(如 [email protected])的成员列表。如果目标使用了邮件组,此模式可以一次性获取大量邮箱。

问题:同样被大多数现代邮件服务器禁用。仅在某些老旧的系统(如 Sendmail 8.x)上可能有效。

模式 3:RCPT TO(推荐)

# 单个邮箱验证$ smtp-user-enum -M RCPT -u zhangsan -t mail.target-company.com -d target-company.com
# 批量验证(从文件读取)$ smtp-user-enum -M RCPT -U emails.txt -t mail.target-company.com -d target-company.com -m 50

原理

  1. 与 SMTP 服务器建立 TCP 连接(端口 25 或 587)
  2. 发送 HELO 命令(伪造发件人域名)
  3. 发送 MAIL FROM:<[email protected]>
  4. 发送 RCPT TO:<[email protected]>
  5. 如果服务器返回 250 OK → 邮箱存在;如果返回 550 → 不存在

为什么 RCPT TO 模式仍然有效?

因为 RCPT TO 是 SMTP 邮件发送流程中的必要步骤——如果禁用了这个命令的响应,邮件服务器将无法拒绝无效收件人的邮件,导致无法发送退信。因此,几乎所有邮件服务器都保留了对 RCPT TO 的响应。

批量验证的注意事项

  • 速率限制:大多数邮件服务器对单个 IP 的 RCPT TO 查询频率有限制(通常 10-30 次/分钟),超出后会被暂时封禁
  • 使用代理:建议配合代理池(如 TOR 或付费代理服务)进行批量验证
  • 误判处理:某些邮件服务器对不存在的邮箱返回 250 OK,但实际发送时才会退信(称为”接受后丢弃”)。此类服务器的验证结果需要谨慎对待

3.3 使用 swaks 进行高级 SMTP 验证

swaks(Swiss Army Knife for SMTP)是另一个强大的 SMTP 测试工具,可以进行更精细的手动验证:

# 测试邮箱是否存在(不实际发送邮件)$&nbsp;swaks --to [email protected] --server mail.target-company.com --stop-after&nbsp;RCPT
# 输出示例:->&nbsp;RCPT&nbsp;TO:<[email protected]><-&nbsp;250&nbsp;2.1.5&nbsp;Recipient&nbsp;OK. &nbsp;&nbsp;# ← 邮箱存在

第四步:构建人员画像(Personnel Profiling)

拥有了有效的邮箱清单后,最后一步是将这些零散的邮箱转化为可被利用的人员画像。一个完整的人员画像应包括:

  1. 姓名 + 职级(判断是否为高价值目标)
  2. 部门(判断可被利用的业务场景)
  3. 汇报关系(判断哪些人可以被”上级口吻”钓鱼)
  4. 近期动态(LinkedIn 动态、企业新闻,用于个性化话术)

4.1 职级判断

不同职级的员工对不同类型的钓鱼邮件敏感程度不同:

| 职级/岗位 | 可被利用的话术类型 | 成功率 | 推荐附件类型 | | — | — | — | — | | CEO/CFO/高管 | 并购、融资、财务审计 | ~42% | PDF(伪造审计报告) | | HR | 简历、面试通知、薪资调整 | ~35% | DOCX(伪造简历) | | IT Admin | 系统升级、VPN 配置、安全补丁 | ~28% | VHD/ISO(伪造升级包) | | 财务 | 发票、付款通知、税单 | ~38% | XLS(伪造发票) | | 普通员工 | 培训通知、团建活动、企业文化 | ~12% | 各类(效果一般) |

实战技巧:高管(C-Level)通常不直接处理邮件,而是有助理(Assistant)代为处理。针对高管的钓鱼,实际上应该发送给助理的邮箱(如 [email protected])。

4.2 部门职能分析

了解目标所在的部门,可以帮助你选择最逼真的话术和附件:

  • IT 部门 → 技术类话术(”服务器漏洞补丁”、”VPN 配置文件更新”)
  • HR 部门 → 人事类话术(”2026 年社保基数调整通知”、”新员工入职登记表”)
  • 财务部门 → 发票类话术(”增值税专用发票”、”付款通知书”)
  • 研发部门 → 代码类话术(”GitHub 安全漏洞通知”、”代码审计报告”)

4.3 社交关系图谱

某些钓鱼攻击需要伪造”内部人员”的身份(如”我是 IT 部门的张三,需要你配合升级 VPN 客户端”)。要伪造得逼真,需要了解目标企业的内部汇报关系和组织架构

工具:Maltego

Maltego 是顶级的情报关联分析工具,可以将零散的邮箱、域名、IP、社交媒体账号转化为关系图谱

输入: [email protected]&nbsp; &nbsp; &nbsp; ↓Maltego 自动关联:&nbsp; - 同域名下的其他邮箱(通过 Hunter.io)&nbsp; - 注册过的社交平台(通过 WhatCMS)&nbsp; - 历史密码泄露(通过 HaveIBeenPwned)&nbsp; - 相关联的 IP 和子域名(通过 DNS 记录)&nbsp; &nbsp; &nbsp; ↓输出: 完整的关系图谱(可导出为 PDF/PNG)

Maltego 使用步骤

  1. 在 Maltego 中创建新图谱(Graph)
  2. 将收集到的邮箱逐一添加为 “Email Address” 实体
  3. 右键点击实体 → “Run Transform” → 选择 “To DNS Name”(解析关联域名)
  4. 继续运行其他 Transform(如 “To Breached Credentials”)
  5. 观察自动生成的关系图谱,找出关键节点(如共享密码、同一 IP 下的多个邮箱)

4.4 泄露密码交叉比对

如果目标企业的员工邮箱曾经出现在历史数据泄露事件中,攻击者可以尝试:

  1. 使用泄露的密码直接登录目标邮箱(如果受害者”密码复用”)
  2. 使用泄露的密码作为”字典”,对目标 VPN/OA 系统进行暴力破解
  3. 在钓鱼邮件中伪装成”密码重置通知”,诱导用户主动修改密码(从而获得新密码)

工具:EmploLeaks

专门用于搜索企业邮箱泄露记录的工具:

$&nbsp;git&nbsp;clone&nbsp;https://github.com/oppai-persona/EmploLeaks.git$&nbsp;cd&nbsp;EmploLeaks
# 搜索指定域名的历史泄露记录$&nbsp;python3 emploleaks.py -d target-company.com

输出示例

[+] 找到&nbsp;12&nbsp;条泄露记录:----------------------------------------Email: [email protected]: LinkedIn&nbsp;2021&nbsp;LeakPassword Hash:&nbsp;$6$salt$abcdef...Cleartext Password: Summer2023! &nbsp;&nbsp;# ← 某些泄露事件包含明文密码

⚠️ 法律风险提示:使用历史泄露密码尝试登录目标系统,在绝大多数国家和地区均属刑事犯罪(计算机欺诈与滥用法案,CFAA)。本段内容仅供企业红队在授权测试场景下参考。


总结与下篇预告

本文详细拆解了邮件钓鱼攻击链最前端的 OSINT 信息收集四步法:

  1. 域名发现:通过官网、招聘信息、WHOIS 历史记录提取邮箱域名,并通过 MX 记录判断邮件系统类型
  2. 邮箱枚举:使用 theHarvester(50+ 数据源)、linkedin2usernametruffleHogMetagoofil 批量收集邮箱
  3. SMTP 验证:使用 smtp-user-enum(RCPT TO 模式)批量验证邮箱有效性
  4. 人员画像:职级判断、部门分析、社交关系图谱(Maltego)、泄露密码交叉比对

关键数据

  • 完整的 OSINT 流程可将钓鱼邮件的打开率从 12%(盲目发送) 提升至 47%(精准目标)
  • theHarvester 在 50+ 数据源的加持下,平均可发现企业 60-80% 的员工邮箱

下一篇,我们将深入邮件钓鱼的投递阶段——绕过 SPF/DKIM/DMARC 邮件认证机制。你将学到:

  • SPF 的 redirect= 和 include: 机制差异,以及如何利用配置错误绕过
  • DKIM 签名头字段(h= 参数)篡改手法详解
  • DMARC p=none/quarantine/reject 的实际执行差异(为什么 p=reject 仍然可以被绕过)
  • EchoSpoofing 完整技术还原(含原始邮件头示例)
  • 2026 年 Q1 新披露的 SMTP 服务器绕过漏洞详解

Ice Byte | 邮件钓鱼免杀完全指南(2026) | 转载请注明出处


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:IceByte-Sec IceByte IceByte《邮件钓鱼免杀完全指南(2026 实战版)· 二、OSINT 信息收集四步法》

一次edusrc的打野小记 网络安全文章

一次edusrc的打野小记

文章总结: 文章记录了作者帮助伙伴通过高校小程序漏洞快速提升SRC积分的经历,发现未授权访问、SQL注入、文件上传等问题。核心建议包括利用云存储桶测试、前后端分
评论:0   参与:  0