免责声明:仅供学术研究使用。对于违反相关法律、造成危害的滥用行为,开发者不负任何责任。
前言
来源于我五六年前的一个项目:【居正】垃圾邮件轰炸机。
最开始只是挂在网站上玩玩,然后就好几年都没管它了。最近一年来发现总有人以「邮件轰炸机」的验证消息加我QQ好友,还问怎么卖之类的。我感到很疑惑,我这个小破站什么时候盈利过了。。
后来在谷歌上一搜,直接震惊了。只要以「邮件轰炸」之类的关键词搜索,我这个小网页居然基本都是排第一名的。谷歌后台的数据也是如此:
这个小网页实现的原理,主要是内置一些GET就能调用的mailman接口,在执行时用document.write写iframe,给目标邮箱发送subscribe的确认邮件。GNU Mailman是一款很多国外网站有部署的Newsletter邮件套件,在默认配置中,没有CSRF和captcha验证,所以很容易被滥用。从网络上可以搜到很多这种接口。
由于年代久远,旧的邮件轰炸机里面的接口基本都不能用了,我本来也无心维护。但是就在不久前,有位旅居欧洲的老哥发邮件联系我,说自己被邮件诈骗了,发件人地址是一个美国的IP,投诉无果,只能轰炸对方邮箱解气???
看了下随信附带的证据,被坑了两千多欧,好吧,确实挺惨的。所以我决定尽一点绵薄之力吧,虽然可能也没什么实质效果就是了。
于是我用PHP翻新了这个项目,项目地址:https://github.com/juzeon/fast-mail-bomber/ 项目中配有中文文档,使用起来很简单的。
2020/12/18更新了十分新手向的一个教程:传送门
实现
具体实现如下。
首先调用Shodan(一个渗透时候用的信息搜集引擎)api获取提供者(provider)列表,或者从本地文件导入。一个提供者一般来说会附带一个listinfo页面,这个页面里会包括很多接口节点(node),而接口节点是可以直接调用来发邮件的。比如这个是centos官网的listinfo:
随便点一个接口节点进去:
是一个表单。填写这个表单提交后会发送一份确认邮件到目标邮箱,那么这种确认邮件就可以用来实行邮箱轰炸了。
虽然有些mailman服务器会增加CSRF验证或者验证码(比如centos官网上这个),但大部分都是毫无验证,直接打一个GET请求过去都能发邮件。
搜集一大堆这种listinfo后,再通过脚本依次访问,把里面的接口节点整合起来就能用了。
程序使用了guzzle这个php的http类库来实现多线程访问接口。
我抓取了一下,有效的provider大概快200,能抓取到的node大概快3000了吧。如果全部循环一遍的话,确实是够呛的。更不用说循环多遍了。其实旧版的那个网页,接口也就100多个,声称能发500封是因为把接口循环了好几遍。。。
需要特别注意的是,发送邮件时,请求接口的这个IP地址会被暴露:
这就有点坑了。。所以用的时候,请一定要挂代理。
网页版
将原来那个网页版翻新了一下,提供给大家测试:https://www.skyju.cc/mailhzj.html
不建议用网页版,理由有以下:
- 浏览器跨源政策限制,只能通过iframe调用接口节点,且无法查看成功与否,也无法查看进度。
- 现代浏览器已经禁止了证书错误、TLS 1.0、TLS 1.1等不安全的HTTPS连接。经测试发现很多provider明明证书配置错误还要强制HTTPS,用网页版的话就完全没法用。PHP本地版的就没这个限制。
所以我只在网页版中提供了refined_nodes.json
,就是每个provider只精炼一个node的版本,为的是鼓励大家去用PHP本地版。
测试
请54df群里面的小伙伴帮忙用自己的邮箱测了下,已经把几家邮箱的测试结果都放到github上了。其中zoho mail的表现是最好的,在一般反垃圾配置下,轰炸500封几乎都有收到,大部分被拦截,小部分进了Newsletter归档。yandex邮箱效果看起来更好,轰炸了300封只收到60封还全进了垃圾箱,但据说这家本身就很会漏邮件。。。
对于大部分邮箱来说,由于mailman默认配置中发送邮件的模板都是一样的,所以简单地添加以下字符串到邮件正文过滤列表中就可以防止这类轰炸:
|
|
但是QQ邮箱居然没有正文过滤的功能,真的服。于是我用这种匹配规则勉强替代一下:
计划
未来开发中会加入更多获取provider的方式,除了Shodan,还可以用国内的ZoomEye(已经加上了!),也有提供免费调用api的限额。
另外可能会发布一个打包好的release,可以让小白用户直接在windows上打开就能跑。或者重新写一个纯前端的页面,内置新的接口地址。(已经写出来了!)
本项目永远不会以任何形式盈利或接受捐赠。
免责声明:仅供学术研究使用。对于违反相关法律、造成危害的滥用行为,开发者不负任何责任。