用途
SMTP Penetration Testing 是一个针对 SMTP(Simple Mail Transfer Protocol)服务器开展安全评估的技能。其目标是识别邮件服务器中的漏洞,包括开放中继(open relay)、用户枚举、弱认证和错误配置,并输出安全加固建议。技能覆盖从服务发现到邮件认证记录分析的完整测试流程。
主要能力
技能覆盖以下测试环节:
- SMTP 架构理解:组件为 MTA(传输)→ MDA(投递)→ MUA(客户端);端口包括 25(SMTP)、465(SMTPS)、587(submission)、2525(替代端口)。
- 服务发现与版本识别:使用 Nmap 探测 SMTP 端口和服务版本,使用 dig、nslookup、host 查询域名的 MX 记录。
- Banner 抓取:通过 Telnet、Netcat 或 Nmap 获取服务器软件、版本、主机名及支持的扩展(STARTTLS、AUTH 等)。
- SMTP 命令枚举:测试 VRFY、EXPN、RCPT TO 等命令,判断用户是否存在或展开邮件列表。
- 用户枚举:使用 smtp-user-enum(VRFY/EXPN/RCPT 三种模式)、Metasploit 的 smtp_enum 模块、Nmap 的 smtp-enum-users 脚本枚举有效邮箱地址。
- 开放中继测试:使用 Nmap 的 smtp-open-relay 脚本、Metasploit 的 smtp_relay 模块或手动 Telnet 测试,并尝试不同发件人/收件人组合。
- 暴力破解认证:使用 Hydra、Medusa 或 Metasploit 的 smtp_login 模块测试弱 SMTP 凭据。
- SMTP 命令注入测试:包括头部注入(如 Bcc、X-Injected)与发件人伪造测试。
- TLS/SSL 安全测试:使用 openssl s_client 检查 STARTTLS 与直接 SSL,使用 Nmap 的 ssl-enum-ciphers 枚举加密套件。
- SPF、DKIM、DMARC 分析:通过 dig TXT 查询相关记录,并解读 SPF 策略(-all 严格失败、~all 软失败、?all 中性)。
使用方式
技能以命令和操作流程的形式提供,不涉及代码编写。典型使用步骤为:先进行服务发现与 Banner 抓取,再进行命令枚举与用户枚举,随后进行开放中继、暴力破解、命令注入、TLS 和邮件认证记录测试,最后输出安全评估报告、用户枚举结果、中继测试结果和修复建议。
所需工具
# Nmap with SMTP scripts
sudo apt-get install nmap
# Netcat
sudo apt-get install netcat
# Hydra for brute force
sudo apt-get install hydra
SMTP user enumeration tool:
sudo apt-get install smtp-user-enum
Metasploit Framework:
msfconsole
所需知识
- SMTP 协议基础
- 邮件架构(MTA、MDA、MUA)
- DNS 与 MX 记录
- 网络协议
所需访问权限
- 目标 SMTP 服务器 IP 或主机名
- 测试的书面授权
- 用于枚举和暴力破解的字典文件
常用命令示例
服务发现:
nmap -p 25,465,587,2525 -sV TARGET_IP
nmap -sV -sC -p 25 TARGET_IP
nmap --script=smtp-* -p 25 TARGET_IP
dig MX target.com
Banner 抓取:
telnet TARGET_IP 25
nc TARGET_IP 25
用户枚举:
smtp-user-enum -M VRFY -U /usr/share/wordlists/users.txt -t TARGET_IP
smtp-user-enum -M RCPT -U users.txt -t TARGET_IP -p 25 -d target.com
nmap --script smtp-enum-users -p 25 TARGET_IP
开放中继测试:
nmap -p 25 --script smtp-open-relay TARGET_IP
暴力破解:
hydra -l admin -P /usr/share/wordlists/rockyou.txt smtp://TARGET_IP
TLS 测试:
openssl s_client -connect TARGET_IP:25 -starttls smtp
邮件认证记录查询:
dig TXT target.com | grep spf
dig TXT selector._domainkey.target.com
dig TXT _dmarc.target.com
适用场景
- 对自有或获授权的邮件服务器进行完整安全评估
- 枚举有效用户以评估信息暴露风险
- 测试并记录开放中继漏洞
- 检查 SMTP 服务的加密配置与邮件认证记录
- 为管理员提供安全加固依据
常见漏洞与响应码
常见漏洞包括:开放中继(高风险,通过外部收件人测试)、用户枚举(中风险,通过 VRFY/EXPN/RCPT 测试)、Banner 泄露(低风险)、弱认证(高风险,通过暴力破解测试)、无 TLS(中风险,通过 STARTTLS 测试)、缺失 SPF/DKIM(中风险,通过 DNS 记录查询)。
关键响应码:220 服务就绪;221 关闭连接;250 请求动作完成;354 开始邮件输入;421 服务不可用;450 邮箱不可用;550 用户未知/邮箱未找到;553 邮箱名不允许。
限制
法律要求
- 仅测试自己拥有或获得授权测试的 SMTP 服务器
- 发送垃圾邮件或恶意邮件是违法的
- 记录所有测试活动
- 不得滥用发现的开放中继
技术限制
- 现代服务器通常禁用 VRFY/EXPN
- 速率限制可能减慢枚举速度
- 某些服务器对有效与无效用户返回相同响应
- Greylisting 可能延迟枚举响应
道德边界
- 绝不通过发现的开放中继发送实际垃圾邮件
- 不得为恶意用途收集邮箱地址
- 向服务器管理员报告开放中继
- 仅将发现用于授权的安全改进
排障提示
- 连接被拒绝:端口被阻断或关闭,检查端口,ISP 可能封锁 25 端口,可尝试 587/465 或使用 VPN
- VRFY/EXPN 被禁用:服务器已加固,改用 RCPT TO 方法,分析响应时间或代码差异
- 暴力破解被阻断:存在速率限制或锁定,减慢速度(hydra -W 5)、使用密码喷洒、检查 fail2ban
- SSL/TLS 错误:端口或协议错误,465 用于 SSL,25/587 用于 STARTTLS,验证 EHLO 响应
面向管理员的加固建议
禁用开放中继(外部投递要求认证)、禁用 VRFY/EXPN、强制 TLS(所有连接要求 STARTTLS)、实施 SPF/DKIM/DMARC、速率限制、账户锁定、Banner 加固、日志监控、补丁管理、访问控制(限制 SMTP 到授权 IP)。