导语:恶意软件开发者一直在寻找新的方法来避免被检测到,以此来攫取更高的利润。最近,我们仔细研究了SPI恶意广告软件,它利用开源mitmproxy拦截流量并注入广告, mitmproxy是一款http代理工具,即可用于中间人攻击,也可用于html抓包调试。
恶意软件开发者一直在寻找新的方法来避免被检测到,以此来攫取更高的利润,下面我们将介绍一个最近发现的案例。
最近,我们仔细研究了SPI恶意广告软件,它利用开源mitmproxy拦截流量并注入广告, mitmproxy是一款http代理工具,即可用于中间人攻击,也可用于html抓包调试。
SearchPageInstaller广告软件
SearchPageInstaller(SPI)是一个至少从2017年以来,就开始活跃的广告软件。根据我们的研究,它也是第一次使用mitmproxy的。不过,早在2017年12月mac360.com上的一个帖子中,就有人注意到这种联系了,并且通过对一些代码组件的分析表明,这种恶意软件可能是在几个月前开发的,可能是在2017年8月左右开发的。
恶意软件采用了一种新颖的方法来从广告中获得收入, SPI不是简单的将浏览器重定向到不需要的页面,而是在用户搜索返回的html文档顶部插入广告。为了实现这个意图,SPI会首先在受感染的计算机上启用HTTP和HTTPS代理,可以在“系统偏好设置”的的proxy选项卡中看到这一点。
在命令行上,通过 system_profiler SPNetworkDataType | grep 'Proxy Enabled'.
对一个被SearchPageInstaller截获的网页进行检查,我们会发现插入的SPI自己选择的添加到搜索结果顶部的脚本,这样它就可以替换任何其他广告:
该脚本来自chaumonttechnology.com,这是一个仅被VirusTotal上的两个检测引擎识别为恶意的脚本。
实施中间人攻击
对于web代理,SPI使用一个开源的HTTPS代理mitmproxy,用这个inject.py脚本将恶意脚本注入到网页中。
之所以能够这样做,是因为mitmproxy本质上充当服务器和客户机之间的“中间人”,“动态地”创建虚拟证书,以使服务器相信它是客户端,而客户端则认为它是服务器。
这是在SPI二进制文件的帮助下实现的,一旦用户的登录密码被恶意脚本获取,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连接时,忽略与给定正则表达式模式匹配的某些域,这可能是为了避免在使用证书绑定保护流量时出错。
然后,mitmdump进程会继续生成一个shell进程,该进程会调用uname实用程序,来获取有关设备结构的信息。使用SentinelOne EDR功能,我们可以检查每个进程的所有网络流量,无论它是加密的还是纯http。
一旦我们看清了恶意软件的功能,我们就可以使用管理控制台将计算机回滚到感染前的状态。
总结
虽然观察到的SPI行为似乎表明它只不过是一个风险相对较低的广告软件活动,但它却有着能够操纵普通的http和加密流量的功能。传统的杀毒软件可能会将像mitmproxy这样的进程列入白名单,因为它是一个具有合法用途的开发工具,目前只有少数的网络安全方案能够将其识别为具有真正威胁的子进程。