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

我们发现很多Mac用户对自身的安全并不是很重视,针对用户的恶意软件逐渐增多,窃取用户的隐私, 监控用户的日常行为, 恶意推广广告, etc。因此,我们应该提高自身的安全意识, 警钟长鸣。

0×01 前言

  • 小夏是一名普通Mac用户,某天,他打算试试思维导图来记录工作学习。
  • 他问同事小芳:“Mac下有啥好用的思维导图软件?”
  • 小芳:“XMind呀,很实用的思维导图软件。”
  • 小夏:“那到哪里下载,要钱吗?”
  • 小芳:“哎,你百度XMind破解版呀! 不需要花钱的,直接安装!”
  • 小夏:“这么方便!我试试!”

0×02 样本概述

Xmind是一款实用的思维导图软件,正版官网售价高达99刀, 这个价格当然对普通用户无法承受, 通过搜索,很多站点都提供了破解版下载

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


  1. ​dab95dbad19995aeb88cc5d1bb0a7912 XMind_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打包的动态库).

直接对比正版和破解版的包目录,在包中我们发现了多出来的2个dylib文件


  1. libC.JFishPoolHook.dylib  
  2. libXMindHook.dylib 

下面对这2个dylib进行详细分析

0×04 dylib分析

对于Mac/iOS中使用到的dylib,可以使用class-dump和hoppper结合进行反汇编分析。class-dump又是一款开源解析MachO利器,与MachOView相似的是,他可按照MachO偏移量,找寻符号表(Symbol
Table),从而导出类名和方法名,但是他提供了诸多参数用于导出不同架构的MachO链接符号表。使用如下命令导出类名方法名到文件中:


  1. libC.JFishPoolHook.dylib  
  2. libXMindHook.dylib 

从导出结果来看,很可疑的是CJFishPoolHook类,该类有多达16个成员,
写该动态库的程序员非常老实,没有进行任何加密、混淆类名、方法名的操作,因此从字面上也不难猜出其含义为qq号、微信号、手机号、邮箱号、操作系统、CPU类型、内存、MAC地址、内网IP、公网IP、用户名、应用列表、设备ID,是否上传信息、开启应用和关闭应用的时间。

第二个动态库的类方法较少,很明显能猜出,hook了程序的函数,修改程序运行逻辑。

主要方法为:

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

最后还使用了一个加密方法方法,该方法传入第一个参数(明文),第二个参数key用于加密内容。


  1. @interface NSString (AES) 
  2. + (id)AESDecrypt:(id)arg1 password:(id)arg2; 
  3. + (id)AESEncrypt:(id)arg1 password:(id)arg2; 
  4. @end 
  5. @interface NSString (Number) 
  6. - (BOOL)isPureFloat; 
  7. - (BOOL)isPureLongLong; 
  8. - (BOOL)isPureInt; 
  9. @end 

0×05 抓包分析

通过上面的简单分析不难猜测, 他把采集的信息发送到服务端了, 通过抓包分析该样本与服务端通信的过程如下:

第一次向服务端发送了checklocked, 返回值为0, 说明可以传输设备信息

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

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

结合上述过程,了解到加密算法的第一个参数为kCCEncrypt,第二个为kCCAlgorithmAES128,第三个为加密的填充模式kCCOptionECBMode。 依据此我们写出的AES解密方法应该为:


  1. CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt,kCCAlgorithmAES128,kCCOptionECBMode, //ECB Mode keyPtr,kCCKeySizeAES128,iv,[self bytes],dataLength, /* input */buffer,bufferSize, /* output */numBytesEncrypted); 

key为:iMdpgSr642Ck:[email protected]

解开的密文为

下面我们看看该样本是如何获取这些用户隐私的。

0×06 静态分析

用户隐私收集

CJFishPoolHook.dylib中会获取用户的隐私信息, 其流程如下

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

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

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

恶意收集QQ信息, 电话, 微信号,应用列表

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

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

恶意推广

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

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

0×07 小结

本次的逆向分析过程清晰,单从网络传输和静态分析上就能了解到该重打包应用运行状态的全部过程。对此公司搜集用户信息的这种行为,不想做过多评价。

主要还是从两个方面进行总结,对于开发者而言,要了解一些基本的防御手段,注重网络传输安全、存储安全,在开发过程中,尽量不要把key明文编码于程序中,哪怕是将二次编码后的key放到应用内也好。我们无法得知软件是否会被破解,key是否会泄露,而一旦暴露出来,则很容易被利用从而解开密文信息。更有甚者,直接使用base编码内容、数据位亦或运算编码,这种更容易被分析。同时我们可以混淆加密、反调试等手段增加软件破解的难度。另一方面,站在用户的角度,下载安装未经验证的软件,是一件很危险的事情,例如著名的XcodeGhost事件,其实就是开发者安装了非官方验证的开发软件,导致开发的程序带有后门,窃取和上传大量用户信息。

本文所述的只是个人信息安全的一角,但却不能忽视他的存在。就同本文中libCJFishPoolHook命名一样,真正的含义是鱼塘,软件使用者是鱼,养在破解者的鱼塘中,等鱼养大了,也该收网了。

过去六年间,Mac销量越来越高,也意味着苹果用户越来越多。而用户一多,生态圈内的软件产出势必增长, 同时也会出现更多恶意软件浑水摸鱼

Mac恶意软件发展历史

本文作者:佚名

来源:51CTO

时间: 2017-11-03
Tags: 加密, 安全, mac, 算法

Mac下的破解软件真的安全吗?的相关文章

MAC下快速卸载软件的两种方法

  MAC用户想要卸载应用程序,除了之前小编给大家说的,使用Finder选择Move To Trash之外,还有其他的方法,现在小编就为大家再介绍两种其他的卸载软件的方法吧.   第一种方法: 选中要删除的应用,按住键盘上的COMMAND + DELETE 键,即可将它删除.(这个是针对哪些无耻的无法删除的Mac App的,比如 Mac Keeper) 第二种方法: 用鼠标选中"要删除的引用",直接将它拖到废纸篓里面. 如果不想选择使用Finder中的Move To Trash,那么这

vifi 破解 软件-什么电脑vifi破解软件比较好?成功率比较高

问题描述 什么电脑vifi破解软件比较好?成功率比较高 一起来讨论下什么vifi破解软件比较,最好能提供下载地址,真心想知道下什么破解软件比较好. 解决方案 奶瓶(BT3)和水滴软件,但是一般只能破解WPA加密方式网络SSID 解决方案二: 现在的wifi破解软件大都不能破解wifi.

Mac下3款词典翻译工具软件横评

近日,在windows平台上占有率最高的翻译软件有道词典推出了Mac版本,给久已波澜不惊的Mac翻译软件市场注入了一股新的活力,值得关注.相对于 windows平台的大众化,Mac平台由于其用户群体高端.整体风格简洁清爽.开发系统封闭等特点,用户选择软件的关注点也不同于windows平台,软件品牌份额及市场格局与windows平台下大相径庭.那么,众多Mac平台的翻译软件品牌中,哪款的表现更出色?哪款更适合Mac平台下的使用?作为资深的Mac用户,小编特地挑选了两款目前比较流行的Mac端词典软件

苹果mac系统下的办公软件

Osx 系统下的办公软件 苹果平台下的办公软件的制作公司可谓阵容强大.大名鼎鼎的微软,除了为自己的Windows平台制作office系列以外,只有为苹果的osx 系统上量身定作office.而且一而再再二三的更新,从最初的officeX到最新的office2008.无论在功能还是界面上,无论是兼容性和流畅度,无一不个大家带来惊喜.苹果公司自己制作的iWork系列,虽然只历经两代,可是表现不俗,隐约有超越office的趋势,无论是界面的简洁性,还是制作的高效性,都是胜人一筹,更可喜的是在最新的iW

同IP下,某软件只允许运行一个。这是如何实现的,求解决方案

问题描述 同IP下,某软件只允许运行一个.这是如何实现的,求解决方案 解决方案 解决方案二:服务器判断限制下解决方案三:没有服务器,可以用socket广播,看同一个地址有没有程序在运行解决方案四:版主说的对,有通信吧,由服务器控制解决方案五:把楼上的细化一下就是:A.每几分钟,向你控制下的服务器端发一个请求.服务器端记录请求的IP和MAC地址.当发现数据库中有相同IP,并且登录时间过段,而MAC地址不同,则认为同一局域网有其它程序运行.B.程序开启一个特定非常见端口,新启动时扫描局域网中是否有其

Mac版OBS直播软件怎么设置

Mac版OBS直播软件怎么设置   怎样使用OBS? 1.下载安装 然后你会看到如下界面: 2.这个时候点击设置,进入如下界面: 通用中可以设置OBS的语言,点击串流会看到如下界面: 串流类型选择自定义流媒体服务器,下面的URL和流密钥需要根据直播间中的直播信息进行填写,登陆斗鱼账号,点击用户名--->个人中心--->主播相关--->直播设置--->进入直播房间,然后可以看到下图: 3.这个时候点击获取推流码,即可看到rtmp地址和直播码,将其填入OBS中串流的设置中. 4.这个时

MAC下的SLICY切图神器怎么用

  MAC下的SLICY切图神器怎么用 切图方便,简单的拖放即可,傻瓜式操作2. 培养为图片资源合理命名的好习惯 自动生成@2x两套图片,极大方便IOS开发者 二.软件使用 1.PSD文件的预处理 这一步可以由设计师来处理,不过个人推荐程序员亲自完成这一步骤,因为这里涉及到图片的命名,我们自己来对图片进行命名可以更好的使之符合整个项目的命名规则,方便在项目中对对应图片资源进行调用和管理. 首先用PhotoShop打开设计师给你的PSD文件,如下图: 图中的绿色状态图标即为本次需要切出的素材图片

mac如何完全卸载软件

  一.使用cleanmymac来卸载 leanmymac是一款专业的mac清理软件,它不仅可以清理mac垃圾,还附带了其它很多的实用功能,卸载软件就是其中之一,也是非常受网友欢迎的一项功能. 优势 操作简单快速,只要两步就可以快速卸载,并不需要特别的技术,即使是mac新手可以操作完成. 劣势 cleanmymac是一款收费的软件,虽然有免费版,但是它的部分功能会受到限制,而且只能清理500MB垃圾. 使用cleanmymac卸载mac上的软件方法 1.启动cleanmymac,在左侧找到"卸载

Mac下安装win7系统的策略

  Mac 下用U盘装Win7系统的详细步骤: 在网上仔细查看了boot camp的帮助,开始着手: 下图是boot camp助理工具图标: 点击进入程序后,点击继续,接下来别忘记把两个可以格式化的优盘(注意资料备份)插在苹果电脑上.此时boot camp界面上有3个可选框,全部打钩. 继续,载入win7 iso镜像,选择目标U盘,这是制作安装win7 U盘;另外软件还会提示将下载的苹果驱动和boot camp放在那里,这时就要用到另外一个U盘.当win7 U盘制作结束,驱动也下载结束后,会让你