邮件钓鱼作为一种攻击成本小,技术门槛低,却往往能收获奇效的攻击方式,常为攻击者所喜闻乐见。有攻亦须防,安全宣贯长篇大论的说教,不如一次实际的钓鱼演练效果来的立竿见影。
1. 场景设计
演练场景为:冒充公司某部门(运维、行政等)人员,给演练目标小白鼠发送钓鱼邮件【邮件实例见图1),邮件内容中包含自建钓鱼网站链接,钓鱼网站可仿冒公司OA、企业邮箱等系统搭建【示例见图2),引诱小白鼠们点击链接并输入敏感信息。
图 1 钓鱼邮件
图 2 钓鱼网站
此时还不知情的小白鼠猪油蒙了心,输入了用户名密码并尝试登录时,哦豁……..
图 3 跳转提示页
登录后将会跳转到演练提示页,此时小白鼠才恍然大悟,明白自己已经上了钓鱼网站的套了。
与此同时,演练系统后台已经默默记录下了小白鼠查看钓鱼邮件、访问钓鱼链接、输入敏感信息的全过程。
图 4 成果展示界面
2. 邮件钓鱼第一计——瞒天过海
邮件钓鱼演练最重要的一步,是如何瞒天过海,批量发送一封不会被邮件网关丢进垃圾箱的邮件。
邮件发送可以通过写脚本,连接SMTP服务器进行批量邮件发送,在SMTP服务器的选择上,可以自建邮件服务器,也可以使用邮件服务提供商的SMTP服务。经过实际测试,自建邮件服务器发出的邮件由于公信力较低,通常会被目标邮件网关丢进垃圾箱。
所以为了能让小白鼠们正常接收到“诈骗“邮件,可以选择阿里云”邮件推送“服务作为发送跳板。邮件推送服务配合一个特定的域名,可设置具有迷惑性的发件人邮箱,增加钓鱼邮件的可信度。(当然阿里云邮件推送,每日可免费发送200封邮件才是选择他的最主要原因!)
图 5 邮件批量发送脚本
3. 邮件钓鱼第二计——知己知彼
既然是演练,组织者必然希望了解小白鼠们的中招情况,如何知己知彼,知悉目标是否查看了钓鱼邮件呢?
图片定位法便是一个高效的获知邮件是否被阅读的有效方法。
设计钓鱼邮件时,在邮件正文中插入一个透明的网络图片,该图片存储在自建的web服务器上,每当目标查看插入了定位图片的邮件时,web服务器的访问日志中将会生成一条访问记录。如果在批量发送邮件时,自动生成并插入具有标识性名称的网络图片,便可以通过分析web服务器日志来知悉某一封邮件是否被查看。
图 6 定位图片
当发往[email protected]地址的邮件被查看时,web服务器中将产生如下日志:
223.104.210.235- – [13/Jul/2021:08:14:52 +0000] “GET /mail/[email protected]_SNWSOA.png HTTP/2.0” 200 176 “-” “Mozilla/5.0 (Linux; Android 10; LIO-AL00 Build/HUAWEILIO-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Mobile Safari/537.36 mailapp/6.2.1” “-“
表示在“SNWSOA“这次演练中发给[email protected]的邮件被查看,日志中记录了查看时间和来源IP,以及查看邮件时使用的设备类型。
在搭建图片定位的web服务器时,建议在阿里云平台上购买域名,申请免费的SSL证书并绑定,并且通过https的方式发布定位图片,因为在实际测试过程中发现,QQ邮箱、网易邮箱中查看邮件时,会自动将正文中的网络图片链接替换为https://url/picture_path,故使用http协议的图片资源将会导致图片定位失效。
此外web服务器的监听端口不建议使用80和443端口,因为云服务器的80和443端口资源必须进行ICP备案方可访问,为了方便可监听其他大端口避免备案流程。
4. 邮件钓鱼第三计——偷梁换柱
邮件钓鱼的最终目的是为了获取信息,在本次演练场景中,偷梁换柱,通过设计钓鱼网站来钓取信息。
钓鱼网站可以选择公司常用的内部管理平台(OA或邮件系统)作为克隆目标,可以使用WinHTTrack工具克隆目标网站。修改网页前端代码,将用户名密码的提交请求发送到自建服务器上【见图7中1】。
此外为了辨别用户名密码是哪个邮箱跳转过来并输入的,在设计邮件正文时,插入钓鱼链接也将拼接成http://url/index.html?id=email_address。通过id参数来识别敏感信息的输入来源。
图 7 钓鱼网站源码参考
自然在设计钓鱼网站时就要考虑读取当前页面的id值,并作为标识参数,与用户名密码一起POST到系统后台【见图7中的2】。
接收数据的后台使用了Flask框架,接收到敏感数据直接打印到日志文件中留存。
图 8 数据接收后台
5. 邮件钓鱼第四计——关门捉”贼”
小白鼠们在我们的坑蒙拐骗下不断中招,而他们一步又一步落入我们陷阱的证据都留存在了web服务器日志和Flask输出的日志中。下一步便是关门捉“贼“,从日志中筛选出小白鼠们中招的记录。
日志数据的采集、分析和展示过程是通过ELK框架来实现。过滤出关键日志,绘制可视化图表,帮助演练组织者可以快速的输出演练成功报表。详细的成果展示界面可见上文图4。
图 9 邮件钓鱼成果展示
6. 快速开展邮件钓鱼演练
综上所述,一计又一计,别说小白鼠,观众老爷都绕晕了!难道真的要我自己急头白咧去搭建数据分析平台,编写邮件发送脚本嚒?
of couse NOT!
为了方便快速部署邮件钓鱼演练系统,已经将邮件发送脚本、图片定位服务器、数据分析、演练结果展示等一众组件通通打包在了docker中,只需要简单配置便可快速开展邮件钓鱼演练。
No.1 资源准备
在正式开始邮件钓鱼演练前,需要准备一台拥有公网IP的服务器;另外需要购买一个和目标用户邮箱域名相似的域名,比如目标邮箱为[email protected],可注册一个相似域名如:huawei.fun(.fun的域名相对比较便宜);接下来再在阿里云上申请一张免费的SSL证书,生成Nginx服务器下的证书文件(.key和.pem);最后开通阿里云邮件推送服务(免费),并根据阿里云官方文档完成配置。
No.2 镜像下载
本机安装完成docker后,联网下载镜像包:
# docker pull haspen/phishing_sys
镜像包含:
邮件发送脚本和配置文件
nginx服务器(图片定位和钓鱼网站)
ELK组件(数据采集、分析和展示)
Flask框架和后端数据接收程序
镜像下载完成后,启动docker容器:
# docker run -d –privileged=true -p 5601:5601 -p 8843:8843 -p 9891:9891 haspen/phishing_sys /usr/sbin/init
No.3 SSL证书上传
将No.1步骤中保存的证书文件(.key和.pem)上传到容器中的/etc/nginx/cert/路径下。
修改/etc/nginx/nginx.conf文件的67、68行,将xxxxx.key和xxxxx.pem分别修改为上述文件名称;
修改/opt/mailspoof/http_data.py文件的49行,将xxxxx.key和xxxxx.pem分别修改为上述文件名称;
No.4 基本配置
邮件钓鱼演练相关脚本的存放路径为/opt/mailspoof,其中存放的文件分别为:
py:接收敏感信息的后端Flask程序;
json:批量发送邮件程序的配置文件;
txt:钓鱼邮件正文(html格式)
txt:接收邮件的目标邮箱
sendmail:批量发送邮件程序,当前目录下./sendmail直接执行
图 10 文件目录结构
需要配置的文件主要是mailspoof.json、mail.txt和resseeList.txt。
mail.txt中是要发送的邮件内容(html格式),在QQ邮箱的编辑邮件-A格式-</>中便可自动生成对应格式的html源码。
图 11 邮件正文
图 12 邮件html源码
将邮件html源码复制进mai.txt中即可。
resseeList.txt中输入发送的目标邮箱地址。
图 13 目标列表
mailspoof.json是批量发送邮件程序的配置文件,具体的配置内容可参加下图:
图 14 邮件发送程序配置文件
No.5 程序启动
执行命令启动相关组件:
# systemctl start elasticsearch # systemctl start kibana # systemctl start nginx # /usr/share/logstash/bin/logstash -f /etc/logstash/001-nginx-access/001-logstash.conf --path.data /etc/logstash/001-nginx-access/run & # /usr/share/logstash/bin/logstash -f /etc/logstash/002-auth-info/002-logstash.conf --path.data /etc/logstash/002-auth-info/run & # python3 /opt/mailspoof/http_data.py &
No.6 开始钓鱼
完成基本配置,正常启动程序后,在/opt/mailspoof/路径下执行./sendmail命令开始批量发送钓鱼邮件。
图 15 邮件发送成功
浏览器访问http://域名or IP:5601点击侧边栏-Analytics-Dashboard即可查看“邮件钓鱼演练成果展示“图表。
图 16 查看演练成果
如需查看某一次演练的成果,在图表中的筛选栏中,输入演练标识(即mailspoof.json配置文件中的tag字段的值),即可获取相关数据。
图 17 筛选某一次演练
至此,一次完整的邮件钓鱼演练正式完成,信息安全最大的安全风险往往并不是技术的缺陷,而是由于人的疏忽带来的,一次优质的邮件钓鱼演练,可以帮助企业员工有效的树立起良好的信息安全防范意识。
不仅仅是邮件,短信、微信、QQ、电话等通信方式发来的信息,一旦涉及金钱交易、敏感信息获取,务必提高警惕,不听不信、不转账不泄密!
太可怕了,现在连钉钉都有诈骗了!冒充领导要我加班?我安全意识很强的!
批量发送邮件的脚本使用golang编写,代码也比较简单,在docker环境中已经编译成了可直接执行的sendmail,如有需要脚本源码的同学,可扫描关注微信公众号“白杨木”回复“sendmail“,即可获取脚本源码。
来源:freebuf.com 2021-07-15 11:02:15 by: 平平无奇小天才
请登录后发表评论
注册