实验十使用Wireshark分析SMTP和POP3协议
一、实验目的
分析SMTP和POP3协议
二、实验环境
与因特网连接的计算机,操作系统为Windows,安装有Wireshark、IE等软件。三、实验步骤
大多数电子邮件客户端允许用户撰写电子邮件并将其方到发件箱中,还能发送发件箱中的邮件,接收新邮件到收件箱。大多数用户都知道必须连接到因特网才能发送和接收邮件,但他们可能不知道网络通信的细节。
发送邮件的过程和接收邮件的过程截然不同,它们甚至使用不同的应用层协议。电子邮件客户端通常使用邮件传送协议(Simple Mail Transfer Protocol, SMTP)来发送邮件,并用邮局协议(Post Office Protocol, POP)接收邮件。客户端发送邮件时,通常连接一台独立的本地邮件服务器,并将所有外发的邮件发送到这个服务器而不管接收者的地址。本地邮件服务器将报文放在发送邮件队列中。此时,电子邮件客户端不再涉及邮件的传输,而由本地邮件服务器负责对每个接收者传送邮件。SMTP不仅用于电子邮件客户端和本地邮件服务器之间的数据传输,而且还用于本地邮件服务器和每一个接收者的邮件服务器之间的数据传输。
一旦电子邮件报文到达接收者的邮件服务器,就随同该用户的其他接收邮件报文一起放在邮件队列中,用户可以通过类似的POP这样的协议来获取所有的接收邮件。
1、俘获发送邮件时SMTP分组
(1)启动IE,在IE工具栏中选择“邮件”-> “阅读邮件”,出现Outlook界面,在Outlook中选择“工具”->“选项”->“邮件设置”-> “电子邮件帐户...”,出现“电子邮件帐户”窗口,选择“添加新电子邮件帐户”,单击“下一步”,选择“POP3(P)”,单击“下一步”,将会出现如下界面:
图1、电子邮件帐户
点击“测试帐户设置”,测试成功后,点击“下一步”,最后点击“完成”。即完成Outlook的设置。
(2)启动Wireshark分组俘获器。
(3)在Outlook工具栏点击“新建邮件”,写一封新邮件,完成后,点击“发送(S)”发送邮件。
(4)停止分组俘获。
(5)过滤分组:在“Filter...”中输入“(not arp) and (not icmp)”。如图2所示.
2、分析俘获的SMTP分组:
图2:Wireshark俘获的分组
在窗口中,初始化了一个从电子邮件客户端到端口25的TCP连接,这就是SMTP邮件服务器监听的众所周知端口。
服务器首先在新建立的连接中发送数据。首个SMTP分组写到“220 ESMTP”。这说明服务器已经做好准备接收邮件并能处理ESMTP。
电子邮件客户端在第二个SMTP分组中响应“EHLO teacher105”。你可以通过选择一个分组,然后再“Analyze”菜单下选择“Follow TCP stream”来查看控制通道的全部内容。
基于SMTP电子邮件报文传输包括三个主要的命令:MAIL FROM、RCPT TO及DATA。MAIL FROM指定电子邮件发送者的地址,RCPT TO指定了邮件接收者的地址,多个RCPT TO命令指定了多个接收者。最后DATA命令通知服务器将接下来的行当作邮件报文的主体。
DATA部分即包含了一系列首部(Subject、From、To、Content-Type等),又包括报文的实际文本。这些首部只是SMTP DATA的一部分。只有SMTP命令MAIL FROM和RCPT TO对邮件的传输方式有影响,DATA部分的首部对接收者显示的数据。
最后注意的是,在最后一个首部和电子邮件报文的第一行之间存在一个空行。这是RFC 2822中定义的邮件首部和邮件主体的分界。
3、俘获接收邮件协议POP3分组
(1)在浏览器地址栏中输入网址:
(2)启动Wireshark分组俘获器
(3)打开Outlook,(操作和发送邮件时一样),出现图1所示界面。在工具中选择“发送和接收”-〉“全部发送/接收”。
(4)停止分组俘获
4、分析俘获的POP3分组
查看POP连接开始的分组,使用Follow Tcp Stream 我们能看到全部的数据交换。
由于客户端缺乏其他可能的授权机制的信息,因此它用USER和PASS命令以明文形式发送用户名和密码,服务器以用户名和密码作为响应都可接受。
UIDL、LIST为用户收集处于邮件接收队列中的邮件报文的相关信息。LIST命令返回列表中报文的大小(八进制),UIDL命令返回一个带标识号的报文列表。POP协议RFC 文档没有规定服务器是如何分配这些标识号,只是简单规定统一标识号用于标识会话中的同一报文,并且在该用户邮箱中是唯一的。
LIST 和UIDL命令允许客户端决定是否下载邮件队列中的报文。例如,客户端可以查看邮件的标识号来看它是否已有邮件报文的副本,或查看邮件报文的大小来决定是否下载这个邮件报文。对于低速网络连接,为避免下载大的或不必要的邮件报文。
电子邮件客户端接下来发送命令RETR1来请求在通道中传送报文1,报文1是上述SMTP传输的邮件报文。
四、实验报告
在实验报告中回答下面两个问题:
1、用户sendmemail的密码是什么?
2、在电子邮件报文上使用Date时间戳作为邮件投递的时间证据是否安全?例如,老师是否接受以Date时间戳作为作业按时完成的证明?