Contributors : [OSG·辛] team :afox、AliceForever、KoU2N、物以类聚
一、从App中提取木马并分析木马
(1)iOS Application File
最近一款在VirusTotal的应用程序引起了我们的注意。
从文件名可以看出这是一款使用了Clutch的破解软件。对ipa文件进行解压(实际是zip文件)。
jailbreak这个库看起来很可疑
nguyen tat hung 虽然是一个知名开发商,但不是MailTime Pro的开发商。
进一步,我们发现jailbreak动态注入到了二进制程序中。
大多数的库,在导入表中包含了他们的安装路径和真实名称
通过assert()宏,查看项目的关联信息
(2)Inject Library
通过符号表,快速的找到知名SDK和CocoaPods。
一个越狱软件包括如此多的广告是不常见的,这里有剩余的类头文件。
-[Config getConfig]方法从程序目录加载wrap.json文件。
经过几次循环等待,注入的代码会联系一个不安全的远程主机,部分的服务可以工作。
比如,coreapi服务似乎不能工作。
http://wrapper.laughworld.net/coreapi/active_device.php?pk=IPANAME&is_jb=1&udid=REDACTED&signature=MD5
http://wrapper.laughworld.net/coreapi/get_list_message.php?pk=IPANAME&is_jb=1&udid=REDACTED&libver=20160818&app_pk=IPANAME_AGAIN&app_ver=1.2.3&signature=MD5
当api服务启动后
http://wrapper.laughworld.net/api/com.mailtime.MailTimePro_ads.json
最有趣的是update请求
-[API getUpdate:withSelector:]方法会请求http://wrapper.laughworld.net/api/com.mailtime.MailTimePro_update.json
script_zip,script_file和md5_script没有被执行,script_zip的URL指向一个加密的ZIP,并且md5_script是无效的(最后一个字节错误)。
linkfw指向一个有效的Zip,一旦下载并解压, -[guiinject _loadPluginAtLocation:]将加载框架并发送一个run消息到principalClass。md5fw用于自我更新。
到目前为止,我们没有看到任何广告,他们可能隐藏在视图中。
(3)Downloaded Framework
开发者的标识发生了改变。
框架的header中有开发者和组织。
这是有Xcode自动生成的,经itviec工作网查询, GTT Media 和 T&B 是外包公司。
一旦加载完成,框架通过lib服务请求托管在DailyUploads和FileFactory站点上的文件列表。
http://wrapper.laughworld.net/lib/DailyUploadDownloadModule.conf
http://wrapper.laughworld.net/lib/FileFactoryDownloadModule.conf
框架也会使用DynDNS定期检查iOS设备的外部IP。
每当框架加载完毕或者IP变更,都会从DailyUploads和FileFactory下载一个随机文件。
dailyuploads也指向其他iOS应用,这些应用都是被nguyen tat hung签名并注入的(yara规则)。
(4)Abusing the Injected Adware Library
一个动态库使用不安全的协议来连接远程主机并执行代码。我们是否通过拦截和修改update的response,加载了自己的代码?能否移植到别的APP中?
二、在TIM App中注入jailbreak广告库
(1)砸壳ipa
(2)拷贝com.tencent.tim-iOS7.0-(Clutch-2.0.4).ipa至电脑并解压
(3)在TIM中注入jailbreak
(4)重新签名并打包为ipa文件,安装新程序至iOS
工具:iOS App Signner、codesign、AppResign、Cydia Impactor皆可以
(5)iOS配置局域网代理,并使用BurpSuite抓包,BurpSuite开启修改Intercept Client Resquests功能
(6)撰写新的动态链接库(文件见附件)用于劫持流程
压缩并计算md5。
三 、使用BurpSuite中间人劫持木马,成功任意代码执行
(7)启动本地httpd,并将DailyUploadDownloadLib.framework.zip放置在根目录
(8)启动App,使用burp修改以下请求回包
修改返回的response数据包
修改linkfw和md5fw的值
(9)弹出alert
结果会弹出我们写在DailyUploadDownloadLib中的弹框。
四、相关工具