首页 安全防御正文

Mac下的破解软件真的安全吗?

我们发现了很多Mac用户不太重视自己的安全。恶意软件逐渐增多,窃取用户隐私,监控用户日常行为,恶意推广广告, etc。所以要提高自己的安全意识,警钟长鸣。

0×01 前言

                   
  • 小夏是个普通人Mac用户,有一天,他计划尝试思维导图来记录工作和学习。
  •                
  • 他问同事小芳:“Mac思维导图软件有哪些好用?”
  •                
  • 小芳:“XMind啊,非常实用的思维导图软件。”
  •                
  • 小夏:“在哪里下载,要钱吗?”
  •                
  • 小芳:“哎,你百度XMind破解版! 不需要花钱,直接安装!”
  •                
  • 小夏:“这么方便!我试试!”

0×02 样本概述

Xmind这是一个实用的思维导图软件。官方网站的合法价格高达99美元。当然,这个价格对普通用户来说是负担不起的。通过搜索,许多网站提供破解版本的下载

对比相同版本号的正版和破解版,hash如下:

  • ​dab95dbad19995aeb88cc5d1bb0a7912XMind_orig//正版v3.7.1
  • 我们发现样本收集了用户的大量隐私信息,并上传到第三方服务器,如下图所示

    目的:1、非法销售用户信息、泄露用户隐私2、广告推广、盈利3、钓鱼执法、发送侵权律师函4、etc

    下面详细分析一下样本

    0×03 基本信息

    在Mac应用中,OSX系统下的Mach-O可执行文件格式,程序运行分析Mach-O,然后链接系统的库文件和第三方动态库。

    我们使用MachOView进行解析

    可执行文件Load Commands 程序的加载指令记录在字段中,LC_LOAD_DYLIB是程序加载的动态库,其中Name该字段记录了动态库的路径,通常程序启动会根据该字段加载动态库。这里发现它加载了两个新的动态库文件libcJFishPoolHook.dylib、libXMindHook.dylib。除此之外,XMind使用Java编写,移植到Mac平台,可执行文件也不值得重点分析。

    综上所述,我们主要做了以下事情:

                     
    • 初始化程序启动,获取资源文件。
    •                
    • 加载.ini配置文件,获得启动参数键对。
    •                
    • 分析参数,然后加载运行Library(Java包装动态库).

    直接对比正版和破解版的包目录,我们在包里发现了两个额外的包dylib文件

  • libC.JFishPoolHook.dylib
  • libXMindHook.dylib
  • 下面对这2个dylib详细分析

    0×04 dylib分析

    对于Mac/iOS中使用到的dylib,可以使用class-dump和hoppper结合反汇编分析。class-dump又是一款开源解析MachO利器,与MachOView类似地,他可以遵循MachO偏移量,找符号表(Symbol Table),导出类名和 *** 名,但他为导出不同架构提供了许多参数MachO链接符号表。在文件中使用以下命令导出类名的 *** 名:

  • libC.JFishPoolHook.dylib
  • libXMindHook.dylib
  • 从导出结果来看,很可疑的是CJFishPoolHook这一类有多达16名成员。 写动态库的程序员非常诚实,没有加密、混淆类名和 *** 名。因此,不难从字面上猜出它的意思qq微信号、手机号、邮箱号、操作系统CPU类型、内存、MAC地址、内网IP、公网IP、用户名、应用列表、设备ID,是否上传信息、打开和关闭应用程序。

    动态库的第二种 *** 很少,很明显,hook修改程序运行逻辑的程序函数。

    主要 *** 如下:

                     
    • init初始化 ***
    •                
    • ExChangeImp,Method Swizzling动态交换函数指针hook
    •                
    • BuyHook
    •                
    • CheckUpdatesHook
    •                
    • HelpHook
    •                
    • TitleHook
    •                
    • OpenURLHook
    •                
    • DateMenuItemHook

    ***该 *** 还采用加密 *** 进入***第二个参数(明文)key用于加密内容。

  • @interfaceNSString(AES)
  •    (id)AESDecrypt:(id)arg1password:(id)arg2;
  •    (id)AESEncrypt:(id)arg1password:(id)arg2;
  • @end
  • @interfaceNSString(Number)
  • -(BOOL)isPureFloat;
  • -(BOOL)isPureLongLong;
  • -(BOOL)isPureInt;
  • @end
  • 0×05 抓包分析

    通过以上简单的分析,不难猜测他将收集到的信息发送到了服务端。样本和服务端通信的过程如下:

    ***二次发送到服务端checklocked,返回值为0,表示设备信息可以传输

    接下的data是用来上传用户信息的。Body是经过AES加密后base既然编码,既然key已经有了,可以试着解开要求密文

    通过静态分析,我们知道他使用了它AES而加密算法key代码中有硬编码

    结合上述过程,了解加密算法***个参数为kCCEncrypt,第二个为kCCAlgorithmAES128,第三种是加密填充模式kCCOptionECBMode。 我们根据此写的AES解密 *** 应为:

  • CCCryptorStatuscryptStatus=CCCrypt(kCCDecrypt,kCCAlgorithmAES128,kCCOptionECBMode,//ECBModekeyPtr,kCCKeySizeAES128,iv,[selfbytes],dataLength,buffer,bufferSize,numBytesEncrypted);
  • key为:iMdpgSr642Ck:7!@

    解开的密文是

    让我们来看看样本是如何获得这些用户隐私的。

    0×06 静态分析

    收集用户隐私

    CJFishPoolHook.dylib获取用户的隐私信息的过程如下

    单例类在应用初始化过程中CJFishPoolHook执行初始化Init,随后,在Init包含上述16条信息的初始成员操作 *** 。

    初始化后,开始捕获用户信息startCapture。这包括获取用户联系方式(getContact),获取设备信息(getDevice),判断设备是否需要上传信息(checkLocked),获取应用ID(getProduct),获取设备上的应用列表(getFeature),获取地理位置(getLocation),获取启动时间(getHabitStart)。

    ***一步,将所有数据上传到服务器并使用AES加密算法加密httpbody。

    恶意收集 *** 信息、 *** 、微信号、应用列表

    应用从Library/Containers/com.tencent.qq/Data/Library/Application Support/ *** 获取个人目录 *** 信息。保存用户的临时聊天记录、截图等信息。

    从/Applications遍历本机安装的应用,形成应用列表。

    恶意推广

    libCJFishPoolHook.dylib修改了更新xmind官方网站,推广自己的广告网站

    注入过程后使用Method Swizzling挂钩MenuItem、Button等待按钮,使其无效或重定向跳转到其他网站,屏蔽注册,激活检查和更新功能 。难怪激活按钮在启动应用程序后无法更新版本,但在购买激活产品时跳转到另一个网站。

    0×07 小结

    本次反向分析过程清晰,可以从 *** 传输和静态分析中了解重包装应用运行状态的整个过程。我不想对公司收集用户信息的行为做太多的评论。

    主要从两个方面进行总结。对于开发者来说,我们应该了解一些基本的防御手段,注意 *** 传输和存储的安全。在开发过程中,尽量不要key在程序中编码明文,即使是二次编码后key在应用程序中。我们不知道软件是否会被破解,key是否会泄露,一旦暴露,就很容易使用来解决密文信息。更重要的是,直接使用base编码内容、数据位容、数据位或操作编码。同时,我们可以混淆加密、反调试等手段,增加软件破解的难度。另一方面,从用户的角度来看,下载和安装未经验证的软件是非常危险的,比如名称XcodeGhost事件,其实就是开发者安装了非官方验证的开发软件,导致开发的程序带有后门,窃取和上传大量用户信息。

    这篇文章只描述了个人信息安全的一个角落,但他的存在不容忽视。就像这篇文章一样libCJFishPoolHook命名是一样的意思是鱼塘,软件用户是鱼,养在破解者的鱼塘里,等鱼养大了,也该关网了。

    在过去的六年里,Mac销量越来越高,也意味着苹果用户越来越多。用户越多,生态系统中的软件输出必然会增加,更恶意的软件会浑水摸鱼

    Mac恶意软件的发展历史

       
    版权声明

    本文仅代表作者观点,不代表本站立场。
    本文系作者授权发表,未经许可,不得转载。