Wireshark抓包分析POP3和SMTP协议一、实验目的1.初步掌握Wireshark的使用方法,熟悉抓包流程;2.通过对Wireshark抓包实例进行分析,加强对POP3协议和SMTP协议的理解;3.培养动手实践能力和自主学习自主探究的精神。二、实验要求利用Wireshark软件抓包,得到邮箱登录的信息和发送邮件的信息,并根据所抓包对POP3协议和SMTP协议进行分析。三、实验环境1.系统环境:Windows8专业版2.邮件接收:Foxmail6正式版3.Wireshark:V1.4.9四、实验过程(一)邮箱登录及邮件接收过程(POP3协议)1.POP3协议简介[1]POP3(PostOfficeProtocol3)即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮箱服务器进行收发邮件的协议。它是因特网电子邮件的第一个离线协议标准,POP3协议允许用户从服务器上把邮件存储到本机主机上,同时根据客户端的操作删除或保存在邮箱服务器上的邮件。而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。POP3协议是TCP/IP协议族中的一员,由RFC1939定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。2.实验过程(1)准备工作申请一个126邮箱安装并配置Foxmail,将接收和发送邮件的服务器分别设置为POP3服务器和SMTP服务器在安装好的Foxmail上添加申请到的126邮箱账户添加后的邮箱信息(2)打开Wireshark软件,选择正在联网的网卡,开始抓包。(3)打开Foxmail,选择邮箱账号登录,点击左上角收取,邮箱开始连接服务器。(4)关闭Foxmail,Wireshark停止抓包,找到包的位置,可以发现账号和密码都被找出来了。3.分析过程通过查找资料可知,主机向POP3服务器发送的命令采用命令行形式,用ASCII码表示。服务器响应是由一个单独的命令行组成或多个命令行组成,响应第一行以ASCII文本+OK或-ERR(OK指成功,-ERR指失败)指出相应的操作状态是成功还是失败。由上述报文可以分析出如下过程:因为POP3协议默认的传输协议时TCP协议[2],因此连接服务器要先进行三次握手主机需要提供账号和密码,并等待服务器确认认证成功以后,开始进入处理阶段主机向服务器发送命令码STAT,服务器向主机发回邮箱的统计资料,包括邮件总数和总字节数(3个邮件,共17393个字节)主机向服务器发送命令码UIDL,服务器返回每个邮件的唯一标识符三个邮件的标识符主机向服务器发送命令码LIST,服务器返回邮件数量和每个邮件的大小三个邮件的大小分别是14417字节、882字节、2096字节主机向服务器发送命令码QUIT,终止会话。进一步分析可得到如下信息(以主机向服务器发送密码为例)本机的端口号为65500服务器端口号为110本机和服务器MAC地址POP协议是基于TCP/IP的协议4.过程总结由上述实验结果和实验分析可知,账户的登录过程为:当邮件发送到服务器后,账户登录时,电子邮件客户端会调用邮件客户端程序连接服务器,连接时先进行身份验证(账号和密码),验证成功以后通过向服务器发送一些命令码,从而获得所有未读的电子邮件信息到主机,完成登录过程和新邮件信息的获取。从抓包结果来看,客户端向服务器采用明码来发送用户名和密码,在认证状态下服务器等待客户端连接时,客户端发出连接请求,并把由命令构成的user/pass用户身份信息数据明文发送给服务器。所以在抓包时可以看到未加密的密码。(二)邮件发送过程(SMTP协议)1.SMTP协议简介SMTP(SimpleMailTransferProtocol)即简单邮局传输协议。用于电子邮件系统中发送邮件。它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方。SMTP协议使用客户端/服务器模型,发送邮件的进程是客户端,接收邮件的进程是服务器[3]。SMTP协议基于TCP协议,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。SMTP的默认端口是25.2.实验过程(1)准备阶段软件和客户端已安装配置完毕。(2)打开Foxmail客户端,点击撰写按钮填写收件人账号和主题,输入邮件内容(我填写的账号为1249677292@qq.com,内容为MerryChristmas!!!)(3)打开Wireshark软件,选择正在上网的网卡,开始抓包(4)点击Foxmail客户端,对于已编写好的邮件,点击左上角的发送按钮,邮件开始发送,发送成功以后,关闭界面,(5)Wireshark停止抓包,查找3.分析过程(1)过程描述和解释SMTP协议在发送SMTP和接收SMTP之间的会话是靠发送SMTP的SMTP命令和接收SMTP反馈的应答来完成的。在通讯链路建立后,发送SMTP发送MAIL命令指令邮件发送者,若接收SMTP此时可以接收邮件则作出OK的应答,然后发送SMTP继续发出RCPT命令以确认邮件是否收到,如果接收到就作出OK的应答,否则就发出拒绝接收应答,但这并不会对整个邮件操作造成影响。双方如此反复多次,直至邮件处理完毕[4]。具体过程如下:因为SMTP协议是基于TCP的,所以先进行三次握手,客户端与服务器建立TCP连接,服务器返回连接信息,表示是否连接成功客户端向服务器发送命令“HELO”,并加上本机的主机名(123shi),服务器响应并回复(250表示服务器可用)客户端向服务器发送用户登录命令“AUTHLOGIN”,服务器回复表示接受(“334”表示接受)客户端分别向服务器发送编码后的用户名和密码,服务器分别回复“334”“235”表示接受因为SMTP要求用户名和密码都通过64位编码后再发送,不接受明文的[5]客户端分别先后向服务器发送“MAILFROM”和“RCPTTO”命令,后面分别加上发件人的邮箱地址和收件人的邮箱地址,服务器分别回应“250MailOK”表示成功接受接下来客户端向服务器发送命令“DATA”,表示将要向服务器发送邮件正文,服务器回应“354EnddatawithCRLF.CRLF”表示同意接收然后客户端将邮件拆分为3个包发送给服务器(大小分别是356bytes、1460bytes,244bytes),服务器回应表示成功接收(250)邮件已成功发送到服务器,客户端向服务器发送命令“QUIT”,释放服务器连接,服务器返回“221”表示同意双方释放TCP连接,通信过程结束(2)邮件信息分析刚开始打开拆分成的三个包,并没有找到关于邮件内容的什么信息,因为已经被拆分成了三个包,因此找不到也是情有可原的了,但可以得到总的大小为2060。第一个包(包号39,大小356bytes)第二个包(包号40,大小1460bytes)第三个包(包号41,大小244bytes)但在第43个包IMF包里找到了邮件完整的信息由包内的内容可以得到很多的信息:邮件是通过由包39,40,41得来的,总大小为356+1460+244=2060邮件的发送日期,发件人名称和地址,收件人的名称和地址邮件主题(已编码)、客户端的信息、正文内容等以行为单位的文本数据:HTML文本,即文件格式(显然已加密)4.过程总结通过这次实验是我了解了很多,SMTP协议是基于TCP的协议,用于在网络上发送电子邮件。通过客户端与服务器的通信过程,每次向服务器发送不同的命令,得到服务器的回应可知是否成功,直到把邮件发送到服务器上。而后服务器由一条已经建立好的传输通道把邮件送到收件人所用的服务器上,收件人再根据POP协议从服务器上接收邮件,从而完成邮件的发送和接受过程。和POP3协议不同的是,SMTP协议中客户端向服务器发送用户名和密码时不是明文发送的,需要经过64位编码后再发送,所以通过抓包是看不到的。而且文本内容也是加密的。五、实验总结通过本次实验,使得我对邮件的发送和接收过程有了一定的了解,锻炼了我的工具使用和分析协议的能力,也加深了我对网络协议的兴趣,正如教员所说,分析协议是一件很好玩的事情,网络协议看似很复杂,但相互之间还是有很多的联系,认真的研究真的会产生很多的乐趣。因为没有系统的学习过网络协议分析,又没有做过协议分析,半路子出家,查找资料的过程中难免会存在一些理解上的偏差,有些地方的分析会显得很肤浅甚至是错误的,而且本次实验重点分析了协议的过程,而对每个包的详细分析还显得不够,还请教员多多指导!!六、参考文献[1]百度百科——POP3[2]百度文库——【论文】SMTP、POP3协议解析及实战[3]《网络协议分析》第一版寇晓蕤罗军勇蔡廷荣机械工业出版社[4]百度百科——SMPT[5]