编写电子邮件嗅探器

4

我希望写一个电子邮件嗅探器,将所有通过基于Web的客户端发送的电子邮件保存到硬盘,但我不知道如何实现。我该如何在加密之前捕获HTTPS邮件?

我真的很需要一些有用的信息。我在网上找不到任何相关信息。有一个叫做HTTP Analyzer V5的程序可以实现我想要的功能。

我应该从哪里开始呢?

如果我制作一个数据包嗅探器,它是无用的,因为所有数据都是加密的。

还有其他选择吗?


3
如果这是他自己的电子邮件,那么@Andrey不需要吗? - Oskar Kjellin
2
只要您在私人网络上使用它,就不需要担心。 - mtvec
4
只有在你用它做违法的事情时,才算是非法的。有很多合法的用途。 - djdd87
@Oskar Kjellin,@Job,@GenericTypeTea,在我的国家,这样的事情是明确非法的,不知道你们的国家怎么样。我无法想象任何合法的使用方式。这显然不是一个功能。对于我来说,黑客攻击https看起来太可疑了。 - Andrey
这就是像PGP这样的工具用来签名和/或加密您的电子邮件的方式。已经加密的电子邮件不会被处理。 - GvS
显示剩余3条评论
8个回答

3
你无法做到。数据在通过HTTP发送之前会在浏览器程序内部进行加密。
由于你似乎只能访问HTTP,所以为时已晚。
你可以考虑使用键盘记录器拦截文本输入到浏览器表单中的过程(键盘记录器需要能够捕获粘贴的文本)。
当然,大多数良好的病毒检查器都会检测到键盘记录器。
硬件键盘记录器?
如果你能解释更多关于你想要做什么以及你有哪些访问权限的信息,那么这可能会帮助我们更好地帮助你。

或者他可以尝试中间人攻击,那么https就无效了。 - helle
1
嗨,谢谢回答。我真正想做的是捕获自己的电子邮件。当我在Gmail上写邮件并发送时,我的程序应该捕获它并保存到本地硬盘。我发布了一个示例程序(HTTP Analyzer V5)来实现这个功能。当我测试它并从我的HTTPS邮箱发送邮件时,它捕获了我写入此邮件的所有数据,包括主题、发件人、收件人和正文,就像重建了HTTP POST请求一样。我想要做完全相同的事情。问题是我不知道这是如何工作的。至于访问权限,我不知道你具体指的是什么,但我有管理员权限。 - Rampage

2

无法解密HTTPS,但是可以使用中间人程序在创建HTTPS连接之前捕获它,并更改网站的证书为您自己的证书,然后您就可以解密了。搜索ettercap和中间人攻击。


我的目标是编写程序,而不是使用现有的。 - Rampage
这些通常是开源的,所以你可以看看它们是如何做的。 :) 例如:http://ettercap.sourceforge.net/download.php - John M.

0

如果您在当地有硬件联系的话,这将相对容易,但现在你很难进行嗅探。当集线器被交换机取代时,分析仪在此方面是无用的。 但是http是通过tcp传输的(附带其他后端协议),因此您可以捕获TCP帧并将直接流式传输到您的PC上(或使用uC的专用设备,因为现代系统和编程平台阻止低级操作)。


我只需要从本地计算机嗅探电子邮件,而不是整个网络。 - Rampage
在这种情况下,我看到两个选择:编写代理服务器并在每个客户端上执行代理,第二个选择(更好但更难实现)是使用原始套接字编写您的应用程序(允许绕过代理)。 - user334596
你能否更具体地说明如何编写自己的应用程序?是的,我真的想在原始套接字上编写自己的应用程序。但我的问题是如何简单地获取特定数据?当我尝试使用本地主机访问数据时,它们不是加密的吗? - Rampage
无法工作。HTTPS数据从Web浏览器的套接字离开时就已经加密了。即使通过代理,它也只知道将加密的字节转发到哪个服务器。 - MSalters
我错过了那个,但如果我们有私钥(在本地主机上),它确实是可能的 - 我没有尝试过。 - user334596

0

你能控制你打算进行这项工作的机器吗?

我以前使用 "The Grinder" 来捕获用于性能测试目的的HTTP请求,它附带了一个TCP代理组件,可以记录所有通过它路由的HTTP请求。

这包括被POST的表单字段的纯文本内容,我认为这应该涵盖了网页邮件的“发送”按钮。

这可能是一个有点复杂的解决方案,但从理论上讲,你可以将TCP代理作为一个服务运行在客户端机器上,并将连接指向本地主机上的适当端口。

我只是把这个方法用来捕获我登录网页邮件网站时的用户名和密码(它有效),但我立即想不到什么会阻止它在整个电子邮件消息上起作用。


是的,我对机器拥有完全控制权,我想这样做。 - Rampage

0

像HTTP Analyzer这样的程序可以捕获HTTPS数据,因为它们插入了HTTPS堆栈。因此,它们在生成数据后但加密并放入IP数据包之前获取数据。这是非常不容易的。

另一种选择可能是“构建自己的浏览器”。这比你想象的要容易。FireFox是开源的,而Internet Explorer只是一个围绕MSHTML Web组件的小图形外壳。如果您仅使用浏览器与例如Gmail,则不需要地址栏、收藏夹、查看源代码等,因此您可以在MSHTML周围编写一个更小的外壳。只需硬编码GMail等。


我对这些问题非常感兴趣,如果您知道如何解决它们,或者至少有一些有趣的文章可以解决这个问题,请告诉我。我并不指望这是一个琐碎的问题。 - Rampage
我希望它能在每个浏览器上运行。请问您是否了解HTTP分析器的工作原理以及我应该如何继续? - Rampage

0
你可以编写一个浏览器扩展程序,在浏览器实际发送 HTTP 请求之前拦截它(并对其进行加密)。具体细节取决于您使用的浏览器(例如 Firefox、Explorer 等)。

0
你能否制作一个特殊的网页来显示GMail,同时可以加载你自己的JavaScript文件,比如在隐藏的框架或DIV中等?
然后你就可以在电子邮件离开浏览器的HTTP端口之前拦截它的字符串内容,并将其记录到本地文本文件中?
这是假设GMail不使用动态ID标签来处理他们的电子邮件表单。

我需要创建一个程序,可以为每个基于Web的客户端执行此操作,而不仅仅是Gmail。 - Rampage
理论上,您可以编写一个脚本,可以期望特定的域,并使用每个电子邮件服务的开关相应地准备变量。 - Alex

0

你可以通过挂钩电子邮件应用程序使用的加密函数来捕获HTTPS流量。这就是Zeus和SpyEye恶意软件的工作原理。

电子邮件应用程序可能正在使用几个加密函数,例如CryptEncrypt或其中一个openssl加密函数。

在Windows上,您可以使用MadCodeHookDetours或其他API挂钩方法来挂钩所需的函数。当拦截加密函数时,您可以记录明文,然后调用原始函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接