时时勤拂拭,勿使惹尘埃

TOC

Categories

iOS/Malware(四)HackingTeam


一、HT里面iOS相关内容

1.1 ipa

文件名
md5
bundle id
签名
文件路径
可执行文件:md5
test-resign.ipa642B5C4A6AB80E87942C5B8DEFE1992Dcom.apple.testiPhone Distribution: HT srl./rcs-dev\share/HOME/ALoR/test-resign.ipatest:2c26afac4adc65d74bbffa493879217e
test-unsigned.ipa6ADC07DD29F26E60FFA3653922DDF1FAcom.apple.test./rcs-dev\share/HOME/ALoR/test-unsigned.ipatest:807109380b49fd73a34671b59ad3b69c
newsstand-app.ipa71C4A3F6DBA62826AA65353EA7C42371com.pub.newsstand-app.keyboardiPhone Distribution: HT srl./rcs-dev\share/HOME/Luca/newsstand-app.ipanewsstand-app:d7cf1ed3a8ab9aeea51de311e0618a13

1.2 source

1.2.1 \core-ios-master.zip

” core”文件夹中保存了RCS的主要代码。主要是利用dylib注入对用户输入,GPS,屏幕等信息进行监控。
”ios-newsstand-app”文件夹应该是另一个ios应用的源码。看代码大概是替换ios系统的输入法,然后进行键盘记录,大概是用来攻击没有越狱的机器吧。
”Keybreak”文件夹是用来破解手机锁屏密码的,里面有lockdownd remote exploit的源码。
”ios-install-win32”和” ios-install-osx”文件夹里是windows和mac os下来给iPhone或者iPad装应用的工具。

1.2.2 \vector-ipa-master.zip

另一个ios木马的源码,这个木马并不是应用,貌似是一个底层网络代理,可以用来监控或者控制系统的网络流量。

1.3 企业证书

./rcs-dev\share/HOME/ALoR/iosDistribuition_ent.p12
./rcs-dev\share/HOME/ALoR/iosDistrubution.p12
(无导出/导入密码)
该证书可加黑名单:
enpublic app: “UID=DE9J4B8GTF, CN=iPhone Distribution: HT srl, OU=DE9J4B8GTF, O=HT srl, C=IT”

1.4 Hacking Team军火库中大量运用iOS假面攻击

fireeye的blog中说有11个iOS app使用masque attack,但我们获取到的近400G资料中只有3个ipa、0个deb文件;
并且根据blog中关键词:WhatsApp, Twitter, Facebook, Facebook Messenger, WeChat, Google Chrome, Viber, Blackberry Messenger, Skype, Telegram, and VK.等搜索,并无相关iOS内容。

二、newsstand-app分析

样本:newsstand-app.ipa
该ipa即是源码:\core-ios-master\ios-newsstand-app\
其目录结构如下:
猎豹有一篇该源码的分析文章:
Hacking Team无需越狱即可监控iOS用户

2.1 样本信息

app名路径文件名文件类型md5
newsstand-app.ipa/newsstand-appbind7cf1ed3a8ab9aeea51de311e0618a13
/FrameworkslibswiftCore.dylibdylibb2d82a57370d1e86736a5063f8728baf
libswiftCoreGraphics.dylibf5bf06c83e919fc3a54f6e06d02312b6
libswiftCoreImage.dylibf235dfc523ead08fd46104da8ac0e3a9
libswiftDarwin.dylibce91b2156c83b46f6308b954665a64d5
libswiftDispatch.dylib6327289dc1a757a16239fb8b95d7e356
libswiftFoundation.dylib5a6aa84f72c5f42d1b32190442be9197
libswiftObjectiveC.dylibac9eba121c7e7e76c3bbb613ec029018
libswiftSecurity.dylib90fb52a5ae6d88b9d611026d611bafaa
libswiftUIKit.dylib0e76a97e8db131b06067eba478ffd145
/PlugIns/keyboard.appexkeyboardbin624a87835aa2339c6a6a1f55b28e2a6c

2.2 动态分析

一、安装空白报刊杂志应用:

安装过程实际是在设备上安装一个报刊杂志应用,该应用安装后显示为一个空白应用,也没有图标:
(newsstand中的每个杂志和报纸都是独立的 app)
但可以在设置中找到该app:

二、启动申请信任和权限

点击该杂志应用后,其所有的监控服务就会启动起来,越狱用户没有任何提示,而非越狱用户需要添加信任,开发者即是HT的企业证书:
非越狱环境下,服务启动会开始请求所有想获取的数据权限(实测ip6 ios8.1.3打开闪退)
1、地理位置:
2、日历安排
3、通讯录

三、新增键盘窃取输入信息

该app会增加一个新的键盘,键盘界面和内置键盘相同,可以将用户所有的输入信息发送到远程服务器上(只能获取非密码等输入,iOS在涉及密码输入会强制使用系统or应用内置键盘)。
但该键盘需要手动设置启用。

2.3 静态分析

样本模块比较多:

一、Info.plist

”Server"为服务器ip:172.16.42.1,现已失活;
“Application presents content in Newsstand”值为YES,说明这个是newsstand杂志应用;
”MinimumOSVersion“限制了最低系统版本为8.0(已越狱测试机ip4为7.0,故无法安装跑动态);

、main

直接调用AppDelegate类模块启动应用
平台
代码
说明
源码
ipa程序的main函数都会调用UIApplicationMain
ida
ida对iOS入口解析比较乏力,main函数解析为sub_170c4;
确定main函数方式:可以在Improts中搜索_UIApplicationMain,再通过x跳转到调用地址
hopper
hopper对iOS各类函数、类解析比ida好,如解析main函数为EntryPoint;
但显示参数没有ida直观

三、AppDelegate

AppDelegate模块用来声明iOS应用程序状态切换相关控制,在UIApplication接收到系统事件和生命周期事件时,会把相应的事件传递给UIApplicationDelegate进行处理;
这里主要功能是任务的派发以及后台刷新,包括后台获取访问权限,不断刷新获取用户日历,联系人以及照片任务,键盘任务等。
启动即初始化键盘、日历、通讯录、图片等监控
AppDelegate/AppDelegate/didFinishLaunchingWithOptions:
从info.plist获取部分参数信息:
AppDelegate/AppDelegate/initAppKeys:
获取日历权限、本地日历内容:
AppDelegate/EventManager:
监听键盘信息:
AppDelegate/AppDelegate/startBackgroundKeyboard
启动ViewController获取通讯录、日历、图片
AppDelegate/AppDelegate/startBackgroundSynch、startBackgroundPhotos

四、ViewController:

ViewController为页面控制器,通过加载页面来实现界面等功能,但在这里为空页面nil(AppDelegate中配置),即无界面:
viewDidLoad为入口,加载后开始获取日历,联系人,GPS位置信息以及用户的照片。
申请通讯录权限:
申请GPS权限:

五、keyboard

KeyboardReceiver

AppDelegate中调用KeyboardReceiver/receiveMessages获取键盘信息
信息来源:扩展app的三方键盘存储键盘记录,参考10.iOS 8 Extensions扩展app&自定义键盘
扩展app与自身共享db.sqlite数据需要位于同一APP Group,即图中:group.keyboard.app

扩展键盘app

样本中有一个扩展键盘app,完全由swift开发的一个三方键盘
主要用于将按键记录写入共享数据库db.sqlite文件中,便于样本获取键盘记录信息
CustomKeyboard.swift:
对应样本中的同一APP Group,以及共享的db.sqlite文件:

六、RCS模块

rcs模块主要用于远控、行为记录、执行指令等
AES key、后门标记信息、代码版本等:
读取SpirngBoard、itunes系统应用信息;md0000、mdworker应该为更新安装的应用:
记录行为类型:下载、文件操作、电话操作、地理位置等
行为标记:短信、电话、联系人、网络、地理位置、电池等
写bin文件,test.bin文件应该是第二部分的test

七、NS加解密模块

对数据加解密

八、Network通信模块

上传信息、下载文件、获取指令等

九、疑似提权部分

样本有疑似提权的行为,以及root权限执行的行为
  • RCS模块:
注入dylib(/usr/lib下的dylib只有少量属于mobile,但依然有沙盒限制)
  • Network模块
执行ldid,ldid的作用是模拟给iPhone签名的流程,使得你能够在真实的设备上安装越狱的apps/hacks。

2.4 小结

该样本伪装为无图标杂志应用以隐藏自身
可以在非越狱情况下,通过申请权限获取日历、通讯录、图片等隐私信息
另外内置了一个扩展三方键盘,用来监控键盘记录
(联网模块比较庞大,没有深入分析;dylib注入部分不太了解,没有深入分析)

0 评论:

发表评论