浅谈macRansom

0x0

前一段时间Windows上出现了WannaCry,造成了很大影响,在我们刚呼了口气时,Mac平台也’不甘示弱’地出现了首款勒索比特币的恶意软件—macRansom。

这个勒索软件在6.9日就被FortiGuard实验室发现并给出详细介绍,本文主要记录自己的分析流程

0x1

首先在这里找到样本,下载后先在虚拟机运行看看,结果发现运行后没有任何反应

既然这样,我们先通过lldb来看看能不能找到一些原因。

QQ20170628-182541@2x.png

结果发现 运行失败。按理说比较通用的反调试就是ptrace了,不过我们还是先在hopper中看一看确认一下。

QQ20170627-151335@2x.png

从入口开始往下看,看看伪代码,图中标出来的东西有没有一丝熟悉?0x1f结合之前的有关ptrace的PT_DENY_ATTACH 31,我们可以确定作者使用了ptrace。那这样的话就好办了我们直接修改汇编把0x1F修改为0xa,保存成新的可执行文件后再到虚拟机中看一看

这次我们通过lldb连接macRansom后,r一下,可以看到进程又终止了,说明还有别的检测姿势。没关系,我们继续从hopper中寻求答案!

QQ20170629

QQ20170628-165605@2x.png

http://oh5mz2415.bkt.clouddn.com/QQ20170628-165541@2x.png

在hopper中我们看到有两处jne loc_100001b05,再来看看处理逻辑,我们会发现这里应该是有两处地方做出了某种检测导致进程加载失败。我们继续在lldb中,通过ni指令,一直到函数跳转之前,通过读取内存看看究竟有什么问题

QQ20170628-164513@2x.png

如图,我们看到了这里主要加载了一条指令sysctl hw.model,百度了下这个hw.model主要是来获得目标的硬件信息

QQ20170628

那既然这样,我们应该看看下一部分检测了什么,但是要怎么做呢?难道我们又要在hopper中修改,保存后生成新的可执行文件,继续lldb??,别急,看看反汇编,逻辑很清晰,我们只需要把rax的值改为0不就行了!

QQ20170628

继续,我们在下一个跳转处通过x/s $rdi,可以看到sysctl -n hw.logicalcpu/sysctl -n physicalcpu,这个主要就是检测你系统中逻辑cpu和物理cpu的个数了

QQ20170628
同样,我们通过之前的方法修改rax的值来绕过检测

继续运行,按理说这时候应该运行成功了

但是!这里还检测了系统时间,只有到了指定的时间才可以运行,否则它就待在你的电脑中什么事情都不做,这也是这个勒索软件的隐蔽之处

QQ20170629

QQ20170630

既然是勒索软件,那么它肯定会加密你的文件,那关于如何加密等信息我们还是从hopper来入手吧。

从函数入口往下看,一眼过去可以瞄到一个sub_100001f30,跳转到它的伪代码,大致浏览一遍,我们猜测这个函数应该是对勒索软件中的一些字符串做了加密

QQ20170703

代码逻辑比较简单,我们可以加载一个脚本,通过hopper来恢复它。

QQ20170703

这里要说明一下,hopper是可以加载自己的脚本的,具体做法是把自己的脚本放在目录~/Library/Application Support/Hopper/Scripts中,然后等hopper加载完可执行文件之后,点击菜单栏的scripts,选择自己的脚本就可以加载了

我们可以看到一些被加密的字符串显现了出来,这为我们更直观地分析它提供了很大的帮助

QQ20170703

继续往下看,我们可以看到,当它对系统中的文件进行加密时,是通过find /Volumes ~ ! -path "%s" -type f -size +8c -user 'whoami' -perm -u=r -exec这条命令对大于8字节且权限为r的文件进行枚举。平常的勒索软件一般是通过遍历文件然后通过文件后缀来筛选出要加密的文件,这种直接来枚举的也是清新脱俗哇~

QQ20170703

整个加密的大概流程如图,其中的十六进制数我们大概可以猜得出是对称加密中初始化的一些值,既然这样,难道我们可以通过寻找密钥来进行解密???

QQ20170703
QQ20170706
QQ20170706

其实不然,在sub_100002050中的arc4random()我们能看得出,加密的密钥实际上是被随机化了,而且也没有找到任何与勒索者服务器对接的痕迹。

照这样看来,即使最后交了钱,当了冤大头,自己的数据还是不会被解密。当然~暴力破解理论上是可以的,这要看你自己有多少精力了

好,言归正传,接下来,等勒索软件正式运行的时候,我们打开活动监视器,可以看到已经有一个叫做.FS_Store的进程

QQ20170627

然后想想,既然他要在系统启动后开始运行加密的进程,而在macOS 中LaunchAgents用来实现开机自启动,所以我们在目录~/Library/LaunchAgents下看看,有一个com.apple.finder文件,打开后可以看到pgrep -x .FS_Store&&~/Library/.FS_Store,原来我们活动监视器中的那个可疑进程是这样存在的,它还把名字设为.开头的,以至于我们表面上看不到它

QQ20170627
QQ20170627

不出一会,随着进程数越来越多,我们虚拟机越来越卡,然后重新启动后发现我们虚拟机中的文件被加密出现了很多的md文件,并出现了我们“期待”已久的小窗口!

QQ20170627
QQ20170627

至此,我们终于通过一些手段成功的运行并了解了这款恶意软件。

然而,在成功加密文件后,之前的启动文件com.apple.finder.plist和macRansom binary则会被删除
QQ20170706

0x2

关于在如何在hopper中一次性修改绕过所有的检查,其实也不难,回过头来看看汇编,我们只需要把两处jne xxxxx改成nop就可以了
QQ20170629
那么为了避免我们在真机上不小心运行了它(比如说我>_\\\<),幸好做了备份~这样也不至于造成多大的损失。

QQ20170706

0x3

随着恶意软件的肆意流行,越来越多的人渐渐把目光放在了macOS上,总的来说这款软件相比于之前Windows上的WannaCry还是差了好多,但随着Mac用户数量日渐增长,我们终究会在macOS上遇到更危险的勒索软件,万一勒索软件们伪装的很好,稍有不慎还是会中招,最好的办法还是勤备份,比如iCloud备份就不错,可以实时同步,而且50G一个月只要6块。当然像Time Machine等等都是很不错的选择~

0x4

参考:

https://blog.fortinet.com/2017/06/09/macransom-offered-as-ransomware-as-a-service

https://objective-see.com/blog/blog_0x1E.html

文章目录
  1. 1. 0x0
  2. 2. 0x1
  3. 3. 0x2
  4. 4. 0x3
  5. 5. 0x4
|