邮件追踪

黑客一般喜欢采用在邮件附件中附带恶意代码的方式来进行攻击, TAC可以有效的检测这种攻击方式并产生告警。但是我们多次发现在邮件类的告警中出现收、发件人为空的情况,这对攻击溯源产生了很大的迷惑性,于是我们对这种情况的邮件进行了追踪分析。

一、邮件内容层面追踪

一般邮件解析会从邮件的头部获取收件人、发件人、主题等信息,如‘from’对应发件人,‘To’对应收件人,但是我们捕获到的恶意邮件中有可能存在‘To’字段为空的情况,或者‘To’字段为“To: undisclosed-recipients:;”的情况,如图 1所示:

图 1 收件人异常邮件

收件人异常邮件

]1 收件人异常邮件

图 2 收件人异常邮件文本格式

收件人异常邮件文本格式

]2 收件人异常邮件文本格式

我们分析了一下“undisclosed-recipients”的来源,原来这保密的收件人是指当发件人群发邮件时,不希望收件人知道其他收件人的情况下,把发件人留空,然后把所有的收件人放到密送栏中,这时outlook等客户端会默认把‘To’字段填充为个“undisclosed-recipients”。

用Foxmail测试了一下,当把收件人置空,仅在密送栏里添加收件人时,发现邮件头并没有‘To’字段,可见上面的“To:undisclosed-recipients”只是不同客户端的不同实现。

另外对比可见,用来获取密送人的“Bcc”字段只在SMTP的发件人端才可以获取,如图 3所示,但是在收件人一端并没有“Bcc”字段,如图 4:

图 3 发送密送邮件的邮件头

发送密送邮件的邮件头

]3 发送密送邮件的邮件头

图 4 接收密送邮件的邮件头

接收密送邮件的邮件头

]4 接收密送邮件的邮件头

虽然收件端没有“Bcc”字段,通过分析可以发现,收件端的邮件可以通过“Delivered-To”字段来获取收件人的地址,邮件服务器内部会根据该字段进行投递。

图 1截获的邮件中也可以发现“Delivered-To”字段,在获取不到‘To’的时候可以采用该字段作为收件人。当然也有发件人为空的情况,此时可以使用“Return-Path”字段作为识别发件人的备用字段。

二、邮件传输协议层面追踪

因为邮件头中的字段(如发件人、收件人)等大部分由发件人端来生成,所以被伪造的可能性比较大。即使“Received”、“Return-Path”、“Delived-To”等这类由邮件服务器增加的字段,也存在网络传输过程中被篡改的风险,那么通过其他手段来对收发件人进行确认变得十分重要,从SMTP、POP3等邮件协议层面上来校验就是其中的一种途径。

例如发送邮件时通过对SMTP流量进行解析,从“MAIL FROM”、“RCPT TO”等字段便可以获取邮件的收发件人,如图 5所示:

图 5 流量中SMTP的命令

流量中SMTP的命令

]5 流量中SMTP的命令

在收信端可以从POP3协议的登录过程中“USER字段”获取收件人的地址,如图 6所示:

图 6流量中POP3协议登录截图

流量中POP3协议登录截图

]6 流量中POP3协议登录截图

三、总结

通过以上分析,我们可以知道对邮件中收发件人的获取的步骤:

1) 常规的从邮件头获取“to”、“from”、“cc”、“Bcc”字段;

2) 获取邮件头中“Received”、“Return-Path”、“Delived-To”等由邮件服务器增加的字段;

3) SMTP、POP3、IMAP协议层面提取“USER“、”MAIL FROM”、”RCPT TO”等命令信息。

如果您需要了解更多内容,可以
加入QQ群:486207500、570982169
直接询问:010-68438880-8669

Spread the word. Share this post!

Meet The Author

Leave Comment