常见的网络服务-SMTP
约 1729 字大约 6 分钟
2024-11-26
SMTP
SMTP (Simple Mail Transfer Protocol) 简单邮件传输协议
- 端口25
 - 用于处理电子邮件的发送
 - 需要与
POP/IMAP(用于检索传入邮件)结合形成协议对,才能完成邮件的发送和接收服务。 SMTP服务的三个基本功能: - 验证谁通过SMTP服务发送邮件
 - 向外发送邮件
 - 如果邮件无法发送,将信息返回发件人
 
POP and IMAP
POP(Post Office Protocol)邮局协议和IMAP(Internet Message Access Protocol)互联网消息访问协议都是负责在客户端和邮件服务器之间传输邮件的电子协议。
- POP: 从邮件服务器下载整个收件箱到客户端
 - IMAP:多端同步收件箱(任何修改,都会保存到邮件服务器)
 
电子邮件如何完成传递

- 客户端与SMTP服务器建立连接:邮件用户代理(电子邮件客户端或外部程序)连接到SMTP服务器(例如:smtp.google.com)。 
- SMTP握手->建立并验证连接->SMTP会话启动
 
 - 客户端向服务器发送邮件: 
- 邮件地址
 - 邮件正文
 - 邮件附件
 
 - SMTP服务器检查域名: 检查收件人和发件人的域名是否相同
 - SMTP服务器建立连接: 
- 发件人的SMTP服务器将在中继电子邮件之前与收件人的SMTP服务器建立连接。
 - 如果收件人的服务器无法访问或不可用-电子邮件将被放入SMTP队列(
smtp queue)。 
 - 收件人服务器验证传入邮件:检查域名和用户名是否已被识别。
 - 将邮件发送到POP/IMAP服务器
 - 电子邮件显示在收件人的邮箱中 这是一个非常简化的过程版本,还有很多子协议、通信和细节没有包括在内。如果你想了解更多细节,请仔细阅读:
 
url: https://computer.howstuffworks.com/e-mail-messaging/email3.htm
title: "How Email Works"
description: "Email gives us the ability to contact any person in the world in a matter of seconds. Find out how email works and how email servers deliver messages."
host: computer.howstuffworks.com
favicon: https://cdn.hswstatic.com/en-us/hsw/img/icons/favicon.svg
image: https://cdn.hswstatic.com/gif/email-katrina.jpgSMTP 运行环境
SMTP服务器软件在windwos上很常见,在Linux 上也有许多SMTP变体可以运行。 这里有一个资源,它解释了SMTP的技术实现和工作,比我在这里介绍的更详细。
url: https://www.afternerd.com/blog/smtp/
title: "SMTP protocol Explained (How Email works?) - Afternerd"
description: "Ever wondered what happens after you compose an email to your friend and then click the “send” button? In this article, I am going to teach you the SMTP protocol by following the journey of an email message from when you click the “send” button until it lands in your friend’s mailbox."
host: www.afternerd.com
favicon: https://www.afternerd.com/blog/wp-content/uploads/2020/06/cropped-android-chrome-512x512-32x32.png
image: https://www.afternerd.com/blog/wp-content/uploads/2017/11/youvegotmail.jpgSMTP 代表什么?
答案 Simple Mail Transfer Protocol
SMTP 处理什么发送? (用复数回答)
答案:emails
SMTP 通信过程的第一步是?
答案:SMTP handshake
解析: TCP 服务正式通信前,都会进行握手handshake
SMTP 默认端口是 ?
答案:25
如果收件人服务器不可用,SMTP服务器将电子邮件发送到哪里?
答案:smtp queue
电子邮件最终会在哪个服务器上结束?
答案:POP/IMAP
Linux机器可以运行SMTP服务器吗(是/否) ?
答案:Y
Windows机器可以运行SMTP服务器吗(是/否) ?
答案:Y
SMTP枚举
工具及步骤
- 指纹识别 
- nmap
 - Metsploit:
smtp_version模块 
 - 用户枚举 
- 手动枚举: 
- telnet 、SMTP内部命令(
VRFY、EXPN) 
 - telnet 、SMTP内部命令(
 - 自动化工具: 
- Metsploit:
smtp_enum模块 smtp-user-enum工具 (用于枚举Solaris 上的操作系统及用户名)
 - Metsploit:
 
 - 手动枚举: 
 
相关信息
我们可以通过telnet连接来完成用户枚举,但是Metsploit提供了一个方便快捷的smtp_enum的模块,可以使用用户单词列表,同时枚举多个主机。
相关信息
smtp-user-enum,可以通过SMTP服务检查 VRFY、EXPN和RCPT TO命令的响应来更好地通枚举Solaris系统上的操作系统级用户帐户。
回答以下问题
首先,让我们对目标机器运行一个端口扫描,和上次一样。SMTP运行在哪个端口上?
答案 25
好了,现在我们知道我们应该瞄准哪个端口了,让我们启动Metasploit。我们使用什么命令来执行此操作?
答案 msfconsole
如果你想获得更多的帮助或练习使用Metasploit,TryHackMe有一个关于Metasploit的模块,你可以在这里查看:
让我们搜索模块smtp_version,它的完整模块名是什么?
答案 auxiliary/scanner/smtp/smtp_version
很好,现在-选择模块并列出选项。我们该怎么做呢?
答案 options
查看选项,一切似乎都正确吗?我们需要设置的选项是什么?
答案 RHOSTS
将其设置为目标计算机的正确值。然后运行exploit。系统邮件名是什么?
答案 polosmtp.home
什么邮件传输代理(MTA)正在运行SMTP服务器? 这需要一些外部研究。
答案 Postfix
很好!我们现在已经有了大量关于目标系统的信息,可以进入下一阶段。让我们搜索模块smtp_enum,它的完整模块名称是什么?
答案 auxiliary/scanner/smtp/smtp_enum
我们将使用seclists(/usr/share/wordlists/SecLists/Usernames,如果你安装了它)的Usernames子部分中的 “top-usernames-shortlist.txt” 单词列表。
Seclists是一个令人惊叹的单词列表集合。如果你正在运行Kali或Parrot,你可以使用以下命令安装seclists:“sudo apt install seclists”或者,你可以从这里下载仓库。
我们需要为单词列表的路径设置什么选项?
答案 USER_FILE
一旦我们设置了这个选项,我们需要设置的其他基本参数是什么?
答案 RHOSTS
现在,运行漏洞,这可能需要几分钟,所以喝杯茶,咖啡,水。多喝水!
好的,我会的现在完成了,返回什么用户名?
答案 administrator
利用SMTP
好了,我们通过枚举得到了一些重要信息:
- 用户名
 - SMTP服务器的类型和操作系统
 - 其他开放端口的服务:
ssh 
我们将根据这些信息利用 Hydra暴力破解SSH的登陆密码:
hydra -t 16 -l USERNAME -P /usr/share/wordlists/rockyou.txt -vV MACHINE_IP ssh回答以下问题
我们在枚举阶段找到的用户的密码是什么?
答案 alejandro
好极了!现在,让我们以用户身份SSH进入服务器,smtp.txt的内容是什么
答案 THM{who_knew_email_servers_were_c00l?}
