基于电子邮件标头的电子邮件客户端的被动指纹识别

信息安全 电子邮件 指纹识别
2021-08-26 07:54:13

有没有办法根据发件人的电子邮件标头被动地指纹(推断)电子邮件发件人正在使用的操作系统或邮件客户端?

我熟悉像 p0f 这样的被动网络指纹识别工具:给定从特定机器发送的一些数据包的踪迹,它们会尝试推断该机器正在使用的操作系统。是否有技术或工具可以用电子邮件做类似的事情?

我可以想到一些在某些情况下获得部分信息的技术,但如果这已经存在或已经被研究过,我不想重新发明轮子。例如,我知道X-Mailer:标头,如果存在通常会显示发件人正在使用的邮件客户端。但是是否有技术可以推断邮件客户端(如果X-Mailer:不存在)或推断操作系统?

1个回答

有没有办法根据发件人的电子邮件标头被动地指纹(推断)电子邮件发件人正在使用的操作系统或邮件客户端?

是的,但是它们非常容易出错并且很容易被有意或无意地欺骗(例如,一些高端防火墙系统会在删除/清理附件、修改某些信息后“重新打包”消息)。

除了 X-Mailer 标头之外,您还可以从其他字段中收集一些信息,例如消息 ID 和多部分边界(如果存在)。两者都应该包含一个独特的序列,不同的系统以不同的方式生成它。一些 MUA 会生成自己的 message-id,而另一些则将琐事留给服务器;因此,您看到“DE9E2BFC.12345@gmail.com”,您就知道它是 GMail 客户,仅此而已,而o8xp315ahi3207wv6gbl5tfiedsaelntas@4ax.comID 是由仅在 Microsoft Windows 上运行的软件 Forté Agent 生成的。

高达 6.1 的旧 Eudora 有一个 X-Sender 标头,它还显示了用于发送电子邮件的“角色”。

我认为,Microsoft Outlook 使用 _NextPart_XXX_0000_HHHHHHHH.HHHHHHHH 形式的边界,其中 H 是十六进制数字,XXX 表示内部序列号(从 000 开始),而 Mozilla Thunderbird(还添加了 User-Agent 标头)使用“ ------------0x0x0x0x0x0x0x0x0x0x0x0x" 其中 x 是 0-9 位。

在某些情况下,您会看到 uniqueid 的一部分实际上是时间戳,它也可以兼作日期标头的验证。

所以,有一些信息——但你需要建立一个指纹数据库。另外,正如我所说,修改单个标头甚至可能全部都相对容易;您必须考虑到这一点,看看该策略是否仍然符合您的目的。