热门标签 | 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/


推荐阅读
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • node.jsurlsearchparamsAPI哎哎哎 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 1.直接在cmd窗口运行pipinstalljieba2.使用conda自带的安装工具condainstalljieba3.有一些模块是无法使用以上两种方式安装上ÿ ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
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社区 版权所有