2018年9月25日星期二

macOS(二)文件扩展名隐藏方式

0x1 绕过Gatekeeper

Gatekeeper是macOS用于检测和防御未知应用,检测方式只是最基础的验证签名,Gatekeeper检测界面如下:
然而绕过方式也很简单,花钱买一个正式开发者证书即可。

0x2 构造

macOS里的应用其实都只是一个bundle结构的文件夹,使用“.app”扩展名,而在finder里显示时候默认会隐藏“.app”后缀:
构造测试app,首先修改app的图标文件,并将文件扩展改为“.docx.app”,但此时由于mac系统的安全措施,当文件有多个有效扩展时依然会显示出完整的文件扩展名称“.app”:
不过可以使用类似url钓鱼的相似字符来替代“docx”,仔细对比上图,二者的“o”和“c”有一定的差异,很难被直接看出,“docx”无效后会自动隐藏“app”扩展名

0x3 压缩

由于“.app”实际只是文件夹,而“.docx”文件实际为zip压缩包,所以在部分传递渠道里面容易暴露,如在通过浏览器访问,“.app”会显示文件夹内容,而“.docx”文件则会直接下载:
故可以将“.app”进行压缩,用户使用默认封存工具打开会直接解压出只显示“.docx”的“*.docx.app”文件:

0x4 缓解

不过在Finder的偏好设置里可以修改是否显示所有文件的扩展名:
设置之后就可以看到真实的文件扩展名了:


2018年9月12日星期三

macOS/Malware(一)趋势全家桶隐私窃取分析

(赚点零花钱,发在安全客趋势macOS全家桶隐私窃取分析的文章)

0x0 概述

2018.9.10,网络曝光趋势科技做的 Mac 解压缩软件会上传用户浏览器历史记录,相关资料参考:
Additional Mac App Store apps caught stealing and uploading browser history
Get rid of Open Any Files: RAR Support
A Deceitful ‘Doctor’ in the Mac App Store
注:2018.9.10,趋势随后在blog道歉及相关说明Answers to Your Questions on Our Apps in the Mac App Store
趋势全家桶所有app信息如下:
事件曝光之后,相关产品已经从appstore下架,只剩两个wifi相关app:
好在此前已经安装过部分相关应用,故借此对其分析验证

0x1 隐私&隐私政策

0x11 情况汇总

最终分析结果汇总如下:
程序名 Bundle id 版本号 更新时间 涉及隐私 Mach-O MD5
AppManager(App Unistall) com.trendmicro.appuninstaller 2.0.4 2016/8/25 dabf2ab3059de7eb1d862cdac62b74df
Dr.Cleaner com.trendmicro.DrCleaner 3.3.6 2018/8/20 Safari、Chrome、Firefox、AppStore历史记录、装机列表 3be5e97c0baf34956dd0bd0736272d65
Dr.Unarchiver com.trendmicro.DrUnzip 1.3.3 2018/4/20 Safari、Chrome、Firefox、AppStore历史记录、装机列表 7bfad99a2b0c72b104ffd896898dedcc
趋势安全大师(Dr. Antivirus) com.trendmicro.DrSafety 2.3.0 2018/8/27 Safari、Chrome、Firefox、AppStore历史记录、装机列表 c2578ba280b69149b374215676f55ae7
DrBattery com.trendmicro.DrBattery 1.1.1 2018/6/21 Chrome、Firefox、AppStore历史记录、装机列表 3ca9e88a4ab277c683ee03faf9460d94
测网速大师(Dr. WiFi) com.trendmicro.consumer.macos.ispeedtest 1.9.0 2018/7/31 31e4a9d2c4b467cc708ba9073ad2d388
家庭网络卫士(Network Scanner、HouseCallForHomeNetworks) com.trendmicro.drnmap 2.6.8 2018/8/15 24a334e6dbcbdf4fb514a1a362af43c8

0x12 部分隐私获取方式

趋势全家桶系列app在初次运行时都会显示相关隐私政策,并要求申请相关资源访问权限,当用户允许后即可通过sandbox相关接口来访问相关隐私数据,获取方式如下:
隐私 获取方式&路径
Safari历史记录 Library/Safari/History.db
Chrome历史记录 Library/Application Support/Google/Chrome
Firefox历史记录 Library/Application Support/Firefox/Profiles/%@/places.sqlite
AppStore历史记录 Library/Containers/com.apple.appstore/Data/Library/Caches/com.apple.appstore/WebKitCache/Version 11/Blobs
装机列表 /usr/sbin/system_profiler -xml SPApplicationsDataType

0x13 趋势产品隐私策略

以下为趋势的产品隐私策略
Privacy Policy for Trend Micro Products and Services (Effective March 2018)
激活产品时会获取的信息,都是比较常规数据
部分服务所需的数据,其实比较敏感的有访问过的URL、域名、IP等信息,和可疑邮件的收发件人及附件等,当然具体都需要看实际产品功能来判断

0x2 详细分析

0x21 Dr.Unarchiver

Dr.Unarchiver产品信息如下:
通过抓包分析实际并未发现上传隐私:
然而程序代码中却明确出现Firefox、Chrome、Safari等浏览器记录数据库文件目录字符串:
通过字符串跳入代码,即读取浏览器隐私的部分代码,以下为读取chrome记录:
读取Safari历史记录:
Dr.Unarchiver里读取隐私部分主要位于-[DACollector *]模块中,从模块命名可以发现,除了3个浏览器记录,同时还读取了AppStore历史记录、设备装机列表、用户信息等。
获取设备装机列表方式通过执行“/usr/sbin/system_profiler -xml SPApplicationsDataType“指令来完成:
该指令执行后获取数据如下,包含了app的安装时间、路径、证书等信息:
另外比较有意思的地方为,程序中还有照片库的字符串及相关代码
获取隐私后上传地址如下:
趋势官网Dr. Unarchiver产品说明里明确说明会读取浏览器记录:
Dr. Unarchiver for Mac Data Collection Notice

0x22 Dr. Antivirus

下图为Dr. Antivirus界面:
Dr. Antivirus中获取信息模块与Dr. Unarchiver完全一样:
但相对的,多出了post回传模块,Dr. Antivirus作为反病毒软件,回传装机列表也属于正常行为:
通过动态抓包,可以确定Dr. Antivirus会回传设备装机列表:
另外会上传一个“file.zip“包,回传路径与Dr. Unarchiver分析一致:
从上传的数据包中提取出“file.zip”文件,发现已经加密:
分析该部分代码,发现使用密钥为“novirus”
解密后可以看见都是获取的浏览器记录和app列表等信息:
如下图为chrome浏览器记录:
其实甚至还单独筛出了google搜索记录:
下图为趋势官网Dr. Antivirus产品说明,里面明确申明会读取app安装历史记录、当前装机列表、浏览器记录等隐私,作为反病毒软件读取app列表能理解,但回传浏览器记录、搜索记录等隐私就过了。

0x23 DrCleaner

DrCleaner界面如下:
DrCleaner获取隐私信息模块名与之前二者有所不同,但获取的隐私、方法名、代码基本一样:
DrCleaner同样使用“novirus”作为zip包加密密钥:
下图为趋势官网Dr. Cleaner产品说明,里面明确申明会读取浏览器记录等隐私
[Dr. Cleaner Data Collection Disclosure]https://esupport.trendmicro.com/en-us/home/pages/technical-support/1119854.aspx

0x24 DrBattery

DrBattery初次运行会要求访问用户主目录(其他程序初次运行也都会申请相关访问权限):
DrBattery中有着与DrCleaner完全一样命名方式的隐私获取模块:
下图为趋势官网Dr. Battery产品说明,里面明确申明会读取浏览器记录等隐私
Dr. Battery Data Collection Notice

0x25 AppManager

AppManager即App Uninstall初次运行要求申请相关访问权限,该应用中未发现相关隐私获取代码:
下图为趋势官网App Uninstall产品说明,里面未申明会读取浏览器等相关隐私
App Uninstall Data Collection Notice

0x26 测网速大师Dr. WiFi

测网速大师Dr. WiFi运行界面,该app中未发现相关隐私获取代码:
下图为趋势官网Dr. WiFi产品说明,里面未申明会读取浏览器等相关隐私
Dr. WiFi Data Collection Disclosure

0x27 家庭网络卫士Network Scanner

家庭网络卫士Network Scanner初次运行显示的隐私政策及要求申请相关访问权限,该应用中未发现相关隐私获取代码:
下图为趋势官网Network Scanner产品说明,里面未申明会读取浏览器等相关隐私
HouseCall for Home Networks (for Windows & Mac) v1.1.7 Data Collection Notice

0x3 小结

趋势全家桶还有少数几个app并未获取到,但从以上内容基本可以确定其确实有窃取用户浏览器记录、搜索记录、装机列表等隐私的行为,虽然其在隐私政策申明了相关信息(但真有用户会去仔细阅读么)
而在A Deceitful ‘Doctor’ in the Mac App Store一文中,分析的应用为“Adware Doctor”,与本文趋势全家桶并非同一证书:
但二者却有诸多相同点,如获取隐私的方法名及相关代码:
通过sandbox接口访问数据部分模块,其类名、方法名、相关代码也基本一致,故推断二者可能为同一开发者(趋势的临时工?)
在溯源过程中通常会参考绝对路径里的username,但这些app中均只有“autobuild”和“jenkinsbuld”两个id,开发者对自我有一定的隐藏意识:
Jenkins更有可能为开发者使用下图中的集成工具时所取的id

CVE/CNVD list

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