2014年6月

2014.11.15 更新

不愧是上市公司,动作就是快


2014.11.06 更新

木马已由 PANWClaud Xiao 确认并命名为 WireLurker (aka MacHook),
大家现在可下载其推出的排查脚本来源)来检查系统了。
然而清除工作目前仍需要手工完成,可参看文末。


2014.11.05 更新

网友 littledew 已找到了木马作者嫌疑人,
群众与他正在 V2EX 论战中(已被删帖,点此查看备份);
后续情况详情见 Livid 的声明(请关注声明中提到的某个域名)。


2014.06.01 发布

最近我所有未越狱的 iOS 设备都出现了一个怪现象:
与 Mac 同步之后会莫名出现若干企业应用。
第一次是 5 月 21 日出现的“PP助手正版”(下图),
接着一周后出现了“乱世之刃2”。

PP助手正版

第二次出现奇怪的应用之时引起了我的注意。(头一次被我手快直接删除了)
首先在“描述文件”中皆出现了开发商证书(下图);
其次首次启动该应用会弹出确认。

PP助手正版证书

于是我决定花一点时间研究一下其源头。<!--more-->
起初考虑了很多方向,均被证明“不可能”,这里不再冗述。
后来受这篇文章的启发,
我决定从系统内多处 LaunchAgentsLaunchDaemons 目录排查起。

由于我记得 App 被安装的确切时间,
所以根据文件修改时间排序,
/Library/LaunchDaemons/ 下找到如下若干符合目标时间区间的配置文件:

  • /Library/LaunchDaemons/com.apple.globalupdate.plist
  • /Library/LaunchDaemons/com.apple.itunesupdate.plist
  • /Library/LaunchDaemons/com.apple.machook_damon.plist
  • /Library/LaunchDaemons/com.apple.watchproc.plist

看 Vendor 还以为是系统自带的吧?(这也侧面揭示了其恶意目的)

顺着上面的配置文件找到了如下可执行文件或目录:

  • /usr/bin/globalupdate
  • /usr/bin/itunesupdate
  • /usr/local/machook/
  • /usr/bin/WatchProc

其中 /usr/local/machook/ 是一个包含其主要程序的目录,
由于我并不知道这套恶意程序叫什么名字,
所以下面咱们姑且将它称为 MacHook

然后根据时间区间还找到一个可疑目录:

  • /usr/local/ipcc/

后来证明里面存放的就是被程序偷偷下载下来的 .ipa 文件(下图)。

PPAppInstall_qudaobao.app 包内容

另外,
在刚才找到的 /usr/local/machook/ 目录下,
我们找到了一个名为 foundation 的 Sqlite DB 文件(下图)。

machook 目录内容

用工具打开后你会看到四张表,
分别用于存放——

  • .ipa 文件下载地址(下图);
  • 安装过上述应用的设备 UDID 及安装时间;
  • 这套恶意程序的执行文件及其版本;
  • 设备 UDID ;

machook 目录内容

所以它们记录 UDID 是想做什么呢?
Interesting.

当然大家可能更好奇的是:
这些程序是如何被安装到我的电脑的呢?

排查工作更是费尽周折——
由于我知道恶意程序需要通过守护进程来工作,
而将 Plist 文件写入 LaunchDaemons 目录又是需要管理员权限的,
所以我那几天特别留意了一下异常的授权请求,
终于被我发现在启动某应用时会要求授权。
(由于它是个与开发相关应用,所以头一次询问我并未在意)

经回忆发现这个宿主应用下载自“麦芽地”,
解开这个被恶意修改过的宿主应用,
在其 Resource 目录下发现如下两个“可疑文件”,
(后确认原版应用中没有)

  • /Resource/FontMap1.cfg
  • /Resource/start.sh

其中 FontMap1.cfg 是个压缩包,
解压后你会发现就是初始状态的 /usr/local/machook/ 目录(下图)!
start.sh 则显而易见是用来部署恶意程序并清除安装文件的。

machook 目录内容

至此我们大致了解了整个排查过程。
目前我只知道恶意程序可能是通过 Xcode 的命令行工具实现静默安装应用的,(设备需开启开发模式)

2017-01-01 更新——
有位网名雪山飛狐的朋友询问应用安装的细节。
实际上它应该是通过 USB 使用 itms-services 协议直接将企业签名的应用安装到设备的,
并未使用什么高深技术。
我之前的描述有误,特此更新。也谢谢这位朋友。

希望有逆向实力的朋友帮忙看看其中还有什么猫腻。

点此下载恶意程序压缩档。

P.S.
目前还不知道这个恶意程序是哪一方建立的。
但包含恶意程序的宿主应用下载自“麦芽地”,
(据我在微博上联系到另外两例用户得知:
出现问题的宿主应用全都从“麦芽地”下载而来)
但首个被“推送”下来的应用是“PP助手正版”;
所以具体是哪一方建立了这个通道,
还请大家自行判断。


如下是我写的卸载脚本 machook_removal.sh点此下载),
“卸载”后会把文件全部备份到 ~/ppappinstaller/ 供你继续研究。
有一点需要提醒的是——
如果你不找出包含恶意程序的宿主应用,
那么有可能清除后它还会回来!
判断宿主文件的方法是执行特定操作时(如启动)会询问管理员权限
假如遇到莫名索取权限被授权后恶意程序又“复原”了,
那它必是宿主文件无疑!
请从麦芽地下载的应用排查起!
也可以通过如下命令进行检查(但不一定适用于所有情况):

#!/bin/bash
mkdir -p ~/ppappinstaller/Library/LaunchDaemons ~/ppappinstaller/usr/bin ~/ppappinstaller/usr/local

sudo launchctl unload /Library/LaunchDaemons/com.apple.globalupdate.plist
sudo mv /Library/LaunchDaemons/com.apple.globalupdate.plist ~/ppappinstaller/Library/LaunchDaemons
sudo mv /usr/bin/globalupdate ~/ppappinstaller/usr/bin

sudo launchctl unload /Library/LaunchDaemons/com.apple.itunesupdate.plist
sudo mv /Library/LaunchDaemons/com.apple.itunesupdate.plist ~/ppappinstaller/Library/LaunchDaemons
sudo mv /usr/bin/itunesupdate ~/ppappinstaller/usr/bin

sudo launchctl unload /Library/LaunchDaemons/com.apple.machook_damon.plist
sudo mv /Library/LaunchDaemons/com.apple.machook_damon.plist ~/ppappinstaller/Library/LaunchDaemons
sudo mv /usr/local/machook ~/ppappinstaller/usr/local/machook

sudo launchctl unload /Library/LaunchDaemons/com.apple.watchproc.plist
sudo mv /Library/LaunchDaemons/com.apple.watchproc.plist ~/ppappinstaller/Library/LaunchDaemons
sudo mv /usr/bin/WatchProc ~/ppappinstaller/usr/bin

sudo mv /usr/local/ipcc ~/ppappinstaller/usr/local/ipcc

echo -e "Done!"




















































- 阅读剩余部分 -