热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

拦截流量注入广告:macOSSearchPageInstaller恶意软件分析

 概述我们针对SPI广告恶意软件进行了深入分析,发现该软件利用开源的mitmproxy拦截流量,并注入广告。长期以来,恶意软件作者始终在寻找或创造新的方法,来避免检测,并产生收益。在上周,我们监测到m

 

概述

我们针对SPI广告恶意软件进行了深入分析,发现该软件利用开源的mitmproxy拦截流量,并注入广告。

长期以来,恶意软件作者始终在寻找或创造新的方法,来避免检测,并产生收益。在上周,我们监测到macOS中出现了一种新型恶意软件,使用了此前没有见过的技术。由此,我们启动虚拟机,开始对这一恶意软件进行详细分析。

本文是我们针对这一恶意软件得出的分析结论。

 

老瓶装新酒

SearchPageInstaller(SPI)是自2017年以来持续活跃的广告恶意软件,但最近我们首次发现,该恶意软件的新变种使用到了mitmproxy。事实上,我们根据2017年12月在mac360.com上发表的一个帖子以及其下方的讨论中,就已经注意到了这种联系。并且,根据我们对一些代码组件的分析,我们认为这一恶意软件可能是在几个月前开发的,大概是在2017年8月左右。原因在于,我们发现该文件中包含日期(以美国的日期格式书写):

恶意软件采取了一种新颖的方法,以从广告中获得收入。SPI并没有简单地将浏览器重定向到用户没有实际访问的页面,而是将广告注入到用户搜索返回的HTML文档的顶部。为此,它首先在被感染的计算机上启用HTTP和HTTPS代理,我们可以在“系统偏好设置”(System Preferences)-“网络”(Network)的“代理”(Proxies)选项卡中看到证据:

在命令行中,输入system_profiler SPNetworkDataType | grep ‘Proxy Enabled’,可以看到:

我们查看已经被SearchPageInstaller拦截的网页,可以发现SPI将攻击者自定义的脚本添加到搜索结果页面的顶部,从而替换其他的任何广告:

该脚本来自chaumonttechnology.com,这个域名仅被VirusTotal上的两个反恶意引擎识别为恶意:

 

中间人攻击

至于Web代理,SPI使用了mitmproxy,这是一个开源的HTTPS代理。具体来说,它使用inject.py脚本,将脚本注入到网页主体中:

之所以能做到这一点,是因为mitmproxy本质上充当了服务器和客户端之间的“中间人”,创建了“动态的”虚拟证书,从而让服务器认为它是客户端,让客户端认为它是服务器。

借助SPI二进制文件,就能够实现这一点,一旦系统请求用户输入密码,它就会手动安装mitmproxy CA证书。我们能够在macOS 10.14 Mojave上检测到此类攻击:

如果获得授权,那么恶意软件会将启动“中间人”攻击所需的mitmproxy CA证书和其他凭据写入位于~/.mitmproxy中的隐藏文件夹:

 

检测

正如我们所看到的那样,当启动SearchPageInstaller时,它首先会尝试获取安装新证书的权限。然后,立即对网络代理设置进行更改,这一更改操作实际上也需要管理员的批准,因此会弹出另一个身份验证请求。SPI的行为会立即触发SentinelOne代理的响应,我们这次以macOS 10.12.6 Sierra的安装过程为例:

但是,由于我们正在进行恶意软件的分析,因此我们决定不阻止威胁,而是使用SentinelOne管理控制台独有的EDR功能来观察其行为。

在允许恶意软件继续执行后,我们就能够看到整个攻击的全貌,能清晰看到每个恶意软件进程的创建过程,以及所有生成的事件:

右侧面板中的视图,展示了当前选定的事件。在这种情况下,我们执行mitmdump binary,这是一个带有mitmproxy的命令行工具。

Mitmdump工具可以查看、记录和程序化转换HTTP流量。我们可以借此看到调用inject.py脚本和提供的参数的进程。在这里,mitmproxy在通过HTTPS连接时,会忽略正则表达式模式匹配的某些域名,其原因可能是为了避免在使用证书锁定(Certificate Pinning)保护流量过程中出现错误。

随后,mitmdump进程会继续生成一个Shell进程,该进程调用uname实用程序,来获取有关主机架构的信息。

我们通过SentinelOne EDR功能(深度可见性,Deep Visibility),可以监测并查看每个进程的所有网络流量,无论其使用的是加密的HTTPS协议,还是不安全的HTTP协议。

在掌握了有关恶意软件的充足情报后,我们就可以使用管理控制台,将计算机回滚到其未感染的状态。

 

总结

尽管根据我们观察到的SPI行为,能看到它只是一个风险相对较低的广告恶意软件活动。但是,它居然能够同时操控普通HTTP流量和加密HTTPS流量,这是一个非常严重的问题。传统的反病毒软件可能会将mitmproxy这样的进程列入白名单,因为它是一个具有合法用途的开发者工具。但如果借助一些高级的工具,就可以识别出具有真正威胁的子进程,同时也能够查看恶意软件的网络流量。

原文链接:https://www.sentinelone.com/blog/inside-searchpageinstaller-macos-malware-deploys-mitm-attack/


推荐阅读
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • 本文介绍了在无法联网的情况下,通过下载rpm包离线安装zip和unzip的方法。详细介绍了如何搜索并下载合适的rpm包,以及如何使用rpm命令进行安装。 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 用友深耕烟草行业25年,提出数字化转型建议
    本文介绍了用友在烟草行业深耕25年的经验,提出了数字化转型的建议,包括总体要求、主要任务、发展阶段和六位一体推进举措。通过数字化转型,烟草行业将注入新动能,实现高质量发展。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • Windows 7 部署工具DISM学习(二)添加补丁的步骤详解
    本文详细介绍了在Windows 7系统中使用部署工具DISM添加补丁的步骤。首先需要将光驱中的安装文件复制到指定文件夹,并进行挂载。然后将需要的MSU补丁解压并集成到系统中。文章给出了具体的命令和操作步骤,帮助读者完成补丁的添加过程。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
author-avatar
mobiledu2502906927
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有