草庐IT

MACOS系统中最容易被窃取的七种数据

安全牛 2023-03-28 原文
一直以来,macOS系统的最大特点之一就是较少受到恶意软件的困扰。研究数据显示:在过去5年中,严重困扰Windows终端用户的勒索软件攻击并未在Mac设备上大量重现,锁定Mac设备或数据并向其所有者勒索赎金的攻击模式目前还难以实现。

然而,窃取有价值的数据并以恶意的方式将其货币化,这种攻击策略在各个操作系统上都很常见。在macOS系统上,非法攻击者也同样在窃取会话cookie、Keychain(密钥串)、SSH密钥等信息,并通过广告软件或间谍软件等恶意进程违规收集数据。这些数据可以在各种地下论坛和暗网市场中销售,或者直接应用于各种网络攻击活动。

本文梳理总结了macOS系统中最容易被窃取的7种数据资产类型,以帮助安全运营人员更好地保护企业,并识别潜在的风险迹象。

01会话cookie数据

macOS恶意软件的最常见攻击目标就是存储在用户设备上的会话cookie。为了方便和提高用户的使用效率,macOS系统上的浏览器和许多企业级应用程序通常都会允许用户保持登录状态,直到他们明确退出。这是通过在设备上存储会话cookie来实现的。如果攻击者窃取了这些cookie,他们就可以在不同的MAC设备上使用这些cookie来登录,而无需身份验证。

在近期发生的CircleCI入侵事件中,Mac电脑的会话cookie就被违规窃取。根据CirlceCI的公开声明显示:“我们已经了解到,一个未经授权的第三方利用部署到CircleCI工程师笔记本电脑上的恶意软件,窃取了一个有效的SSO会话。该设备于2022年12月16日被入侵。现有的杀毒软件没有检测到恶意软件。调查表明,该恶意软件能够执行会话cookie盗窃,并在远程位置模拟目标员工,然后实现对公司业务系统的访问。”

在macOS系统中,会话cookie通常位于用户或进程可以访问的位置,尽管这些位置(例如用户库cookie文件夹)通常会受到“透明、同意和控制”(TCC)框架的限制,但是研究人员发现,TCC虽然对正常使用者来说是一种管控措施,但对攻击活动来说很难构成有效的限制。

以下是在macOS上存储会话cookie的位置的一些常见示例:

此外,与应用系统相关的数据库也是犯罪分子的攻击目标。弱加密的数据库可以通过一些用户密码知识就能轻松解密,且通常被恶意软件安装程序在最初的攻击中获取到。例如,Zoom的加密数据库就是Pureland infostealer的目标。

【pureland Infostealer搜索Zoom加密数据库】

02用户的密码管理文件

在用户的Mac电脑上,最重要的数据可能是用户的密钥管理文件,这是一个用于存储密码、身份验证令牌和加密密钥的加密数据库。密钥管理文件使用了强大的加密技术,不能简单地通过窃取数据库甚至访问计算机来破解。然而,密钥管理文件的弱点是,如果攻击者掌握了用户的登录密码,其中存储的隐私信息就可以全部被解锁。如果该密码很弱,很容易被猜到,或者由于使用者的疏忽而错误提供给恶意进程,那么密钥管理文件的加密强度将完全起不到作用。

研究数据显示,密钥管理文件已经成为非法攻击者的目标。最近的例子包括DazzleSpy和一种被称为“KeySteal”的威胁,这种威胁最初是由趋势科技的研究人员于2022年11月份发现。苹果公司在今年3月发布的XProtect v2166和XProtectRemediator中才添加了KeySteal检测功能。

KeySteal的目标文件与.keychain和keychain-db文件扩展名存在以下位置:

【枚举macOS密钥管理文件的恶意函数】

当密钥管理文件被查询后,就会被base64编码,并通过名为JKEncrypt的开源中文加密库进行加密,JKEncrypt是一种“自制”加密函数,使用传统的3DES算法。

03用户登录密码信息

如上所述,用户的密钥管理文件对未经授权的一方用处不大,除非他们也拥有登录用户的密码,而且由于登录密码对于Mac设备上的几乎所有操作都是必要的身份验证,因此它们受到恶意攻击者的高度追捧。

用户登录密码窃取可以通过多种方式实现:通过欺骗、通过键盘记录或者一些简单的任务请求授权,然后将该授权用于非法的攻击活动。

恶意软件通常会要求受害者提升权限,这样它就可以安装一个特权可执行文件,随后以高级用户身份来运行,完成攻击者想要完成的各种任务。CloudMensis/BadRAT间谍软件就是一个很好的例子。

【CloudMensis/BadRAT会向用户发出权限升级的请求】

04 浏览器中的密码及相关数据

许多macOS用户会利用浏览器来存储网站登录凭据和密码,以及其他有用的数据,如用户填写的登录凭证、浏览器历史、搜索历史和下载历史,这也是非法攻击者非常感兴趣的信息。

以Pureland infostealer的恶意攻击活动为例,Pureland执行以下命令作为getChromeSSPass函数的一部分:

security 2>&1 > /dev/null find-generic-password -ga 'Chrome' | awk '{print $2}' > /Users/

【Pureland Infostealer上与Chrome数据盗窃相关的字符串】

不过,该恶意进程需要具备更高的权限,并绕过通常的TCC控制才能成功,否则用户将会收到有关该尝试的安全警告。

05SSH密钥信息

攻击者一旦拥有macOS用户的SSH密钥,就可以在受害者的系统上验证自己的身份。SSH文件夹还会允许攻击者访问同一系统上的其他帐户或同一网络上的其他系统配置文件。除了窃取SSH密钥之外,如果攻击者能够获得SSH文件夹的读写访问权,他们还可以通过分发自己的授权密钥以实现后门远程访问。

2022年5月,macOS Rust开发人员就沦为了CrateDepression SSH密钥窃取攻击的目标,本次攻击活动影响了在其MAC设备上设置了GITLAB_CI环境变量的用户,这也表明攻击者对用于软件开发的持续集成(CI)管道感兴趣。一旦攻击成功入侵主机设备,就会触发Poseidon有效载荷,其中包括搜索和窃取SSH密钥。

【Poseidon代理搜索妥协设备上的SSH和AWS密钥】

同样值得注意的是,除了硬编码SSH数据盗窃的恶意软件外,任何能够将文件上传到远程服务器的后门RAT都可以搜索SSH密钥。

06macOS系统环境信息

许多macOS恶意软件的一个常见行为是从设备中查询和窃取各种环境信息数据。出于各种原因,这可以用于伪造设备的特征指纹,包括选择性地发送恶意软件和执行恶意软件。例如,C2可以自动交付特定平台、特定版本的恶意软件。类似地,威胁行为者还可能会向各种受害者分发特定的(其环境与攻击者的兴趣相匹配)攻击载荷。

如果攻击者对目标环境有深入了解,则可以创建针对该信息的散列,仅在受感染设备的信息匹配时才执行。这种有选择性的传递和执行,可以使得攻击者更高效的实施攻击活动,同时更难以被发现。DazzleSpy就是这种恶意攻击的一个真实事例,该恶意软件会轮询(poll)其环境以获取大量的环境数据。

【DazzleSpy非常详细地监视它的主机环境】

07粘贴板中的内容信息

当用户通过快捷键“Cmd-C”执行复制功能时,粘贴板或剪贴板就会在内存中存储文本、图像和其他数据。

对于恶意软件开发者来说,粘贴板很有吸引力,因为它是密码、加密货币地址和其他数据窃取的有效途径。例如,一些加密货币窃贼会监视用户将钱包地址复制到粘贴板上,然后将其替换为属于攻击者的地址。

获取并写入粘贴板相对容易,因为苹果提供了Foundation框架NSPasteboard api,以及Unix命令行实用程序pbcopy和pbpaste。

EggShell RAT就是一个很好的例子。这个自定义版本被用于XcodeSpy恶意软件。

【getPasteBoard函数被用于XcodeSpy恶意软件】

防护建议

随着Mac电脑设备在企业生产和开发团队中越来越受欢迎,存储在Mac电脑上的数据对攻击者来说正变得越来越重要。企业要缓解各种类型的数据窃取攻击,首先需要部署一个完善的端点安全解决方案,它既可以快速识别并阻止恶意软件,也可以让安全团队看到设备上正在发生的事情。

此外,安全运营人员还应该定期监控试图访问密钥链、SSH和上面讨论的其他文件路径的进程。

最后,尽管macOS系统的TCC机制还有很多不完善的地方,但保持macOS系统的及时更新仍然至关重要,因为苹果公司会定期升级TCC框架,并修补研究人员报告的其他安全漏洞,降低MAC设备的使用风险。

有关MACOS系统中最容易被窃取的七种数据的更多相关文章

  1. 电脑0x0000001A蓝屏错误怎么U盘重装系统教学 - 2

      电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。  准备工作:  1、U盘一个(尽量使用8G以上的U盘)。  2、一台正常联网可使用的电脑。  3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。  4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。  U盘启动盘制作步骤:  注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注

  2. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  3. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  4. ruby - 在没有基准或时间的情况下用 Ruby 测量用户时间或系统时间 - 2

    因为我现在正在做一些时间测量,我想知道是否可以在不使用Benchmark类或命令行实用程序time的情况下测量用户时间或系统时间。使用Time类只显示挂钟时间,而不显示系统和用户时间,但是我正在寻找具有相同灵active的解决方案,例如time=TimeUtility.now#somecodeuser,system,real=TimeUtility.now-time原因是我有点不喜欢Benchmark,因为它不能只返回数字(编辑:我错了-它可以。请参阅下面的答案。)。当然,我可以解析输出,但感觉不对。*NIX系统的time实用程序也应该可以解决我的问题,但我想知道是否已经在Ruby中实

  5. ruby - 以毫秒为单位获取当前系统时间 - 2

    在Ruby中,以毫秒为单位获取自纪元(1970)以来的当前系统时间的正确方法是什么?我试过了Time.now.to_i,好像不是我想要的结果。我需要结果显示毫秒并且使用long类型,而不是float或double。 最佳答案 (Time.now.to_f*1000).to_iTime.now.to_f显示包含十进制数字的时间。要获得毫秒数,只需将时间乘以1000。 关于ruby-以毫秒为单位获取当前系统时间,我们在StackOverflow上找到一个类似的问题:

  6. ruby-on-rails - 如何构建复杂的 Rails 系统 - 2

    关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭8年前。Improvethisquestion我们有以下(以及更多)系统,我们将数据从一个应用推送/拉取到另一个:托管CRM(InsideSales.com)Asterisk电话系统(内部)横幅广告系统(openx,我们托管)潜在客户生成系统(自行开发)电子商务商店(spree,我们托管)工作板(本土)一些工作网站抓取+入站工作提要电子邮件传送系统(如Mailchimp,自主开发)事件管理系统(如eventbrite,自主开发)仪表板系统(大量图表和

  7. ruby-on-rails - Rails 3,在RAILS_ROOT上方显示来自本地文件系统的jpg图片 - 2

    我正在尝试找出一种方法来显示来自不在RAILS_ROOT下(在RedHat或Ubuntu环境中)的已安装文件系统的图像。我不想使用符号链接(symboliclink),因为这个应用程序实际上是通过Tomcat部署的,而当我关闭Tomcat时,Tomcat会尝试跟随符号链接(symboliclink)并删除挂载中的所有图像。由于这些文件的数量和大小,将图像放在public/images下也不是一种选择。我查看了send_file,但它只会显示一张图片。我需要在一个格式良好的页面中显示6个请求的图像。由于膨胀,我宁愿不使用Base64编码,但我不知道如何将图像数据与呈现的页面一起传递下去。

  8. ruby - 我可以从 Ruby 中的系统调用中获得连续输出吗? - 2

    当您在Ruby脚本中使用系统调用时,您可以像这样获得该命令的输出:output=`ls`putsoutput这就是thisquestion是关于。但是有没有办法显示系统调用的连续输出?例如,如果您运行此安全复制命令,以通过SSH从服务器获取文件:scpuser@someserver:remoteFile/some/local/folder/...它显示随着下载进度的连续输出。但是这个:output=`scpuser@someserver:remoteFile/some/local/folder/`putsoutput...不捕获该输出。如何从我的Ruby脚本中显示正在进行的下载进度?

  9. u盘安装系统(win10为例) - 2

    下载微PE工具箱进入官网下载微PE工具箱-下载 安装好后,打开微PE工具箱客户端,选择安装PE到U盘 PE壁纸可选择自己喜欢的壁纸,勾选上包含DOS工具箱,个性化盘符图标 下载原版系统进入网站下载镜像NEXT,ITELLYOU如果没有账号,注册一下就好进入选择开始使用选择win10 这里我们选择消费者版,用迅雷把BT种子下载下来 下面的两个盘符,是PE工具箱安装进U盘后,分成的盘符,注意EFI的盘符,这里面不能删东西,也不能添东西,另一个盘符可以当做正常的U盘空间使用,我们现在需要把下载下来的景象文件复制到正常的U盘空间中去 这个时候我们的系统U盘就只做好了 安装系统我们将U盘插入电脑,开机,

  10. Ubuntu20.04系统WineHQ7.0安装微信 - 2

    提供3种Ubuntu系统安装微信的方法,在Ubuntu20.04上验证都ok。1.WineHQ7.0安装微信:ubuntu20.04安装最新版微信--可以支持微信最新版,但是适配的不是特别好;比如WeChartOCR.exe报错。2.原生微信安装:linux系统下的微信安装(ubuntu20.04)--微信适配的最好,反应最快,但是微信版本只到2.1.1,版本太老,很多功能都没有。3.深度deepin-wine6安装微信:ubuntu20.04+系统deepin-wine6安装新版微信--综合比较好,当前个人使用此种方法1个月,微信版本3.4;没什么大问题,尚可。一、WineHQ7.0安装微信

随机推荐