Wireshark对IMAP抓包分析

2021-03-10  本文已影响0人  tinychen
image

本文主要使用Wireshark对邮件客户端使用IMAP协议接收邮件的过程进行抓包分析并使用telnet命令进行简单操作。

1、IMAP简介

IMAP和POP3两个协议基本上是目前支持和使用最广泛的邮件接收协议,IMAP和POP3相比有着许多优点,参考wiki和后面的抓包结果进行分析,这里列出一些后面抓包的时候可以验证的优点:

2、抓包分析

MUA中的设置如下,同样不使用加密协议方便分析数据。

image

配置完成开始抓包之后发现邮箱大师有多线程并发收件的操作,这也算是利用了IMAP协议的能够允许多个客户端连接到同一个服务器的特点,但是显然不利于我们分析串行模式下单个连接收件的完整过程,不过也可以对比多个连接之间的差异。

由于建立IMAP通信连接必须要登录,所以我们只需要查看报文就可以知道一共并行发起了多少个连接,在这次的报文中一共发现了有三个LOGIN的请求报文,因此可以判断应该一共先后发起了三个连接,其中第三个连接是在第一个连接结束之后发起的,具体分析如下:

可以看到最开始几乎同时发起了两个IMAP连接:

image

2.1 第一个连接

我们先来对第一个连接进行分析:

image

首先我们可以确定IMAP的传输层协议也是使用的TCP协议,同样这里略去TCP三握四挥的分析,直接看IMAP相关部分的报文:

image image

2.2 第二个连接

第二次连接的数据包较长,我们截取部分客户端发送的请求:

image

对比第一次连接,主要有以下不同点:

2.3 第三个连接

从wireshark上对数据包标记的序号来看,第三个连接是在第一个连接结束之后才发起的。对应的客户端主要操作如下:

image

上面的内容重复操作较多,主要就是对每个文件夹都进行SELECT,然后获取里面的邮件具体内容,主要的核心操作有以下两个

上面两个请求命令中的1557156844就是在第一个连接中使用UID SEARCH命令查询到的邮件的UID,这里使用了UID FETCH命令来获取邮件的对应内容。由于前面我们提到邮件的格式是符合MIME标准的,而IMAP协议又是允许MUA下载符合MIME标准的部分邮件内容,因此这两条UID命令就是用于获取对应的邮件的特定部分的内容

2.4 小结

在换了另一个测试账号进行同样的抓包操作之后我发现两次的数据请求操作几乎是一模一样的,都是有三个连接,操作也和上面相同。由此可以分析IMAP协议的可操作性要比POP3强很多,因此在具体的功能实现上对于不同的MUA而言也有不同。

3、telnet操作

同样的我们也可以telnet到邮件服务器的143端口来进行命令操作:

[root@www coremail]# telnet localhost 143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK Coremail System IMap Server Ready(126com[c92b4e18679ada4069d0bde6e2528ad1])
C1 LOGIN "test02@coremail.cn" password
C1 OK LOGIN completed
C2 LIST "" ""
* LIST (\Noselect) "/" ""
C2 OK LIST Completed
C3 LIST "" "*"
* LIST () "/" "INBOX"
* LIST (\Drafts) "/" "Drafts"
* LIST (\Sent) "/" "Sent Items"
* LIST (\Trash) "/" "Trash"
* LIST (\Junk) "/" "Junk E-mail"
* LIST () "/" "Virus Items"
C3 OK LIST Completed
C4 SELECT INBOX
* 8 EXISTS
* 0 RECENT
* OK [UIDVALIDITY 1] UIDs valid
* FLAGS (\Answered \Seen \Deleted \Draft \Flagged)
* OK [PERMANENTFLAGS (\Answered \Seen \Deleted \Draft \Flagged)] Limited
C4 OK [READ-WRITE] SELECT completed
C5 UID SEARCH 1:*
* SEARCH 1557156839 1557156840 1557156841 1557156842 1557156843 1557156844 1557156845 1557156846
C5 OK SEARCH completed
C6 UID FETCH 1557156839
C6 BAD Parse command error
C7 UID FETCH 1557156839 FULL
* 1 FETCH (UID 1557156839 INTERNALDATE " 6-May-2019 23:33:59 +0800" FLAGS (\Seen) ENVELOPE ("Mon, 6 May 2019 23:33:59 +0800 (GMT+08:00)" "=?UTF-8?B?5qyi6L+O5L2/55SoQ29yZW1haWznlLXlrZDpgq7ku7bns7vnu58vV2VsY29tZSB0byB0aGUgQ29yZW1haWwgZS1tYWlsIHN5c3RlbQ==?=" ((NIL NIL "postmaster" "coremail.cn")) ((NIL NIL "postmaster" "coremail.cn")) ((NIL NIL "postmaster" "coremail.cn")) ((NIL NIL "test02" "coremail.cn")) NIL NIL NIL "<1106604853.1.1557156839490@www.example.com>") BODY (("text" "html" ("charset" "UTF-8") NIL NIL "quoted-printable" 7274 152) "related") RFC822.SIZE 7959)
C7 OK Fetch completed
C8 UID FETCH 1557156846 FULL
* 8 FETCH (UID 1557156846 INTERNALDATE " 8-May-2019 09:43:11 +0800" FLAGS (\Seen) ENVELOPE ("Wed, 8 May 2019 09:43:11 +0800 (CST)" "=?UTF-8?B?dGVsbmV0IHRlc3QgbWFpbCBBdXRoZW50aWNhdGVk?=" (("=?UTF-8?B?InRlc3QwMSI=?=" NIL "test01" "coremail.cn")) (("=?UTF-8?B?InRlc3QwMSI=?=" NIL "test01" "coremail.cn")) (("=?UTF-8?B?InRlc3QwMSI=?=" NIL "test01" "coremail.cn")) (("=?UTF-8?B?InRlc3QwMiI=?=" NIL "test02" "coremail.cn")) NIL NIL NIL "<5CD2342F.000006.02460@coremail.cn>") BODY ("TEXT" "PLAIN" NIL NIL NIL "7BIT" 0 0) RFC822.SIZE 656)
C8 OK Fetch completed
C9 UID FETCH 1557156844 FULL
* 6 FETCH (UID 1557156844 INTERNALDATE " 8-May-2019 16:59:38 +0800" FLAGS (\Seen) ENVELOPE ("Wed, 8 May 2019 16:59:38 +0800 (CST)" "=?UTF-8?B?dGVsbmV0IHRlc3QgbWFpbA==?=" (("=?UTF-8?B?InRlc3QwMSI=?=" NIL "test01" "coremail.cn")) (("=?UTF-8?B?InRlc3QwMSI=?=" NIL "test01" "coremail.cn")) (("=?UTF-8?B?InRlc3QwMSI=?=" NIL "test01" "coremail.cn")) (("=?UTF-8?B?InRlc3QwMiI=?=" NIL "test02" "coremail.cn")) NIL NIL NIL "<5CD29A7A.000004.02460@coremail.cn>") BODY ("TEXT" "PLAIN" NIL NIL NIL "7BIT" 0 0) RFC822.SIZE 642)
C9 OK Fetch completed
上一篇 下一篇

猜你喜欢

热点阅读