2015年8月31日星期一

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注入部分不太了解,没有深入分析)

2015年8月27日星期四

iOS(八)iOS文件系统中的隐私信息


一、app数据(聊天记录明文存储)

iOS应用文件夹用hash命名,但是可以搜索
也许出于iOS沙箱管理比较严格的考虑,App的sqlite数据库几乎全是明文,反而Android通常都会处理,最少也会异或一下
QQ: QQ.db
find /var/mobile/Containers/Data -name "QQ.db" 

微信:MM.sqlite
find /var/mobile/Containers/Data -name "MM.sqlite"

二、输入法缓存

系统输入法自动更正的字符串输入记录
缓存文件的地址是:/private/var/mobile/Library/Keyboard/dynamic-text.dat
该文件以十六进制的00 xx 00 作为字符分割符
由于密码键盘不开启自动补全一类功能,此处只能找一些用户使用过的比较特殊的词语。如果用户患有严重手癌,想必能留下不少东西。

三、浏览器敏感信息

Cookie: 
safari:/var/mobile/Library/Cookies/
不只是浏览器,很多应用都用http做网络编程,或者内嵌浏览器进行内容显示,自然保存了好多cookie 
find /var/mobile/Containers/Data -name "*.binarycookies" 
cookie储存成二进制了,需要使用工具 BinaryCookieReader
历史记录,书签,和打开的页面截图:
 find /var/mobile/Containers/Data -name "History.db"
/var/mobile/Library/Safari/Bookmarks.db 

四、隐私汇总

隐私
位置
cookie
/var/mobile/Library/Cookies/
各app文件夹内*.binarycookies文件

书签
/var/mobile/Library/Safari/Bookmarks.db 
邮件
/var/mobile/Library/Mail
照片
/private/var/mobile/Media/DCIM 
短信
/private/var/mobile/Library/SMS/*.db
通话记录
/private/var/mobile/Library/CallHistory/
联系人
/private/var/mobile/Library/AddressBook/*.sqlitedb 
定位信息
/var/root/Library/Caches/locationd/*.db 
截图
/private/var/mobile/Library/Caches/Snapshots
各个应用文件夹内的Snapshots 文件夹
wifi信息/var/preferences/SystemConfiguration/com.apple.wifi.plist

五、keychain


苹果的钥匙串里面包括wifi,邮件,苹果账户,vpn,和部分应用软件(比如百度云)的明文密码,还有ssl的密钥

工具:Keychain-Dumper
vpn:
 
苹果:
Generic Password
----------------
Service: com.apple.account.AppleIDAuthentication.password
Account: ********-0929-48F5-AF51-372003B9****
Entitlement Group: apple
Label: (null)
Generic Field: (null)
Keychain Data: **********

百度:
Generic Password
----------------
Service:
Account: **********
Entitlement Group: B83JBVZ6M5.com.baidu.netdisk-iPad
Label: **********yWHJsMVVmWEcwS0doaVZuQTU0SktxU25LYW1xVm4xQzZsTUdkfmRWQVFBQUFBJCQAAAAAAAAAAAEAAAB3I88aMTAwNTMwODc3NQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbqz1*******
Generic Field: bduser
Keychain Data: ********

other

CVE/CNVD list

报告记录&poc: 最近fuzz出了不少crash,提交记录git: https://github.com/gandalf4a/crash_report 其中CVE记录如下: (不定期持续更新) 2025 CVE-2025-22134:heap-buffer-o...