Mac系统的Proton恶意软件:卷!土!重!来!
Mac恶意软件OSX.Proton强势回归,这次他们的袭击目标是Eliteima官网上发布的Elmedia Player应用程序副本。到目前为止,没有人知道这个APP是什么时候受到感染的。
事件原委
Proton早在今年3月份就悄悄潜入Apple XProtect中,但当时知道的人不多,大家也没在意。5月份,噩梦来临。主要负责发布十分受欢迎的Handbrake软件的其中一台服务器遭到攻击,一个受Proton感染的Handbrake连续蔓延4天。
时至今日,Eltima软件公司再次遭到了类似的攻击。
上周四上午,ESET的研究人员发现了Elmedia Player中的木马,当天下午Eltima Software的工作人员即作出木马删除的响应。但是,已经有一定未知数量的用户下载了这个恶意程序,受到了Proton的感染。
受感染的Elmedia Player应用程序看起来和真实的没什么不同。因为这个木马程序实际上是一只披着羊皮的狼,用正常的恶意程序作外壳,让用户信服。下面的截图左侧是“干净”的Elmedia Player,右侧则是乔装的恶意程序。
这一点与之前Handbrake感染事件所用的技术存在差异。Handbrake事件中,由于该软件是开源的,所以黑客实际上能够编译一个Handbrake的恶意副本,携带Proton恶意程序,但其它方面表现均无异样。
但在这个案例中,Elmedia Player并非开源,因此黑客们转变策略,打开了真实程序一个未经修改的副本。为了避免Dock(Mac任务栏)上同时出现两个Elmedia Player的APP,该恶意程序在其Info.plist文件中进行了如下设置:
<key>LSUIElement</key><true/>
这就把该恶意程序变成了一个后台进程,实现了表面的隐身,能够暂时避免引起受害者的怀疑。
这次攻击事件中的恶意程序与真实程序唯一的不同点是启动程序时的密码请求。见下图。
恶意程序研究员@noarfromspace发现Eltima Software的Folx程序也受到了感染。因为之前Eltima Software已经作了系统清理,所以无法追踪还有哪些恶意程序也惨遭毒手。
被恶意修改的Eltima程序使用的是“Clifton Grimm”苹果开发人员证书进行的签名。目前该证书已被撤销,这些恶意程序也就无法使用了。
恶意行为
和Handbrake被黑副本留下来的变体Porton.B一样,这个新的变体(Porton.C)也尝试获取含用户密码及其它敏感信息的钥匙串(苹果公司Mac OS中的密码管理系统)和1Password(苹果设备管理网站登录账户等敏感信息的应用),以及含登录凭据的浏览器信息(依赖浏览器记住登录密码的亲们要着实小心)。
相比之下,Proton.C还会收集其它数据。它能够渗透多种加密货币钱包,从中窃取用户的数字货币。另外还能抓取用户访问某些在线敏感资源的信息。
作为感染过程的一部分,Proton.C还会在sudoers文件中添加一行,获取全部的root访问权限:
Defaults !tty_tickets
通常情况下,如果用户获得了终端root权限,该权限只在单个终端窗口中生效,不会影响其它终端系统。但是如果在sudoers文件末尾添加了上面这个命令行,恶意程序只需进行一次认证,root权限就能在所有终端上生效。
我被感染了吗?
我们到现在还不知道Eltima Software系统是什么时候被入侵的。但如果你最近从Eltima Software下载了软件,就要检查一下自己的系统了。本文发布者Malwarebytes LABS有一款能够免费检测并删除Proton.C的产品:Malwarebytes for Mac。
虽说免费,但如果不想以后被强制消费,我们还有一种办法。
在Finder中的“Go(转到)”菜单选择“Go to Folder(转到文件夹)”然后输入以下路径:
/Library/LaunchAgents/com.Eltima.UpdaterAgent.plist
点击Go按钮。如果Finder显示“The folder can’t be found(找不到文件夹)”,这就说明你没有受到该恶意程序的感染,当然这个结论基于你完全没有输错的情况下。这个方法还是会有人为错误的风险存在。
如果你被感染了,首要动作当然是删除系统中Eltima Software的程序。即使装在你电脑上的反病毒软件没有检测出来,你也应该自己清理干净,以防万一。
我该怎么办?
发现自己被感染后,第一件事当然是清理系统。
完成后,你就要开启信息泄露风险修复的漫漫长路了。我们需要修改所有账户的密码。1Password这样的密码管理器能够很大程度地减轻工作量。另外,千万不要在macOS的钥匙串中存储密码管理器的密码!这个主密码的沦陷会让所有的努力功亏一篑。
如果你有电子钱包,马上冻结!如果你的信用卡或其它银行账户信息存储在钥匙串或1Password中,立即联系银行,冻结账户,进行账户流水的监控或密码更改。
如果该恶意软件感染了涉及公司业务的设备,一定要及时通知IT管理人员。黑客会通过这个程序获取部分或全部公司内部的资源,不但会导致该公司关键信息的泄露,如果刚好是一家做软件的企业,还有可能产生新的变体,随着新软件或新版本的发布,殃及更多无辜群众。
- 微信小程序开发:设置消息推送
- Mysql备份系列(1)--备份方案总结性梳理
- ASP.NET中常用的优化性能的方法(转贴,Icyer收集整理)
- 顶象全场景IoT安全方案解决物联网两大难题
- 诡异的【session丢失】和【<img src="">标签】
- TensorFlow核心使用要点
- “搜一搜”直达生活服务 微信连接移动消费新场景
- Linux服务器安全登录设置记录
- Linux系统下的ssh使用(依据个人经验总结)
- 从MapX到MapXtreme2004[4]-标注AutoLabel
- Linux下锁定账号,禁止登录系统的设置总结
- 深度解析 TypeConverter & TypeConverterAttribute (一)
- 从MapX到MapXtreme2004[7]-对Table、Feature等的理解
- 互联网赋能传统装企 “科技撬动力巨大”
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- RecyclerView实现纵向和横向滚动
- Android ListView列表视图的使用方法
- 滴滴自动化运维平台夜莺实战部署
- Android UI使用HorizontalListView实现水平滑动
- python操作yaml说明
- python由已知数组快速生成新数组的方法
- Git 修改已提交 commit 的信息
- 解决windows下python3使用multiprocessing.Pool出现的问题
- 解决pyqt5异常退出无提示信息的问题
- TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
- 来来来,让咱重新认识一下算法的复杂度!
- 带你通过字节跳动面试---操作系统复习
- Java 8 中的接口和抽象类到底有啥区别?
- Android自定义View实现简单炫酷的球体进度球实例代码
- 详解android 中文字体向上偏移解决方案