0x01 前言
小夏是一個普通的mac用戶。有一天,他計劃嘗試使用思維導(dǎo)圖來記錄他的工作和學(xué)習(xí)。
他問同事小芳:“mac有哪些有用的思維導(dǎo)圖軟件?”
小芳:“XMind,很實用的思維導(dǎo)圖軟件。”
小夏:“你要去哪里下載,要錢嗎?”
小芳:“喂,你百度XMind破解版!不用花錢,安裝就行!”
小夏:“好方便!我試試!”
這些所謂的破解版真的安全嗎?
0x02 樣本概覽
Xmind是一個實用的思維導(dǎo)圖軟件,官網(wǎng)價格高達(dá)99刀,這個價格對于普通用戶來說當(dāng)然是買不起的,通過搜索,很多網(wǎng)站都提供了破解版下載▼
對比相同版本號的正版和破解版,hash如下:
dab95dbad19995aeb88cc5d1bb0a7912
XMind_orig //正版 [v3.7.1] [306.2M]
094b3a161b7d041d217f6c61624ed388 XMind_new //破解版 [v3.7.1]
[327.9M]
我們發(fā)現(xiàn)樣本收集了大量用戶的隱私信息并上傳到第三方服務(wù)器。收集到的信息如下▼
目的:
黑產(chǎn)品非法出售用戶信息、泄露用戶隱私進(jìn)行廣告宣傳、獲取利潤釣魚執(zhí)法、發(fā)送侵權(quán)律師函等。
下面我們詳細(xì)分析樣品
0x03 基本信息
在mac應(yīng)用中,OSX系統(tǒng)下的machO是可執(zhí)行文件格式,程序運行解析machO,然后鏈接系統(tǒng)庫文件和第三方動態(tài)庫。
我們用于解析
在可執(zhí)行文件的Load字段中記錄了程序的加載指令,即程序加載的動態(tài)庫,Name字段記錄了動態(tài)庫的路徑。通常,程序會根據(jù)該字段開始加載動態(tài)庫。這里發(fā)現(xiàn)加載了兩個新的動態(tài)庫文件.dylib和.dylib。另外XMind是Java寫的,移植到mac平臺,可執(zhí)行文件不值得分析。
總結(jié)起來,主要有以下幾點:
1、程序開始初始化,獲取資源文件。
2、加載.ini配置文件獲取啟動參數(shù)鍵值對。
3、解析參數(shù),然后運行加載(Java打包動態(tài)庫)。
直接對比正版和破解版的包目錄,發(fā)現(xiàn)包里多了兩個dylib文件
libC..dylib
.dylib
下面對這兩個dylib進(jìn)行詳細(xì)分析
0x04 dylib分析
對于 mac/iOS 中使用的 dylib,可以使用 class-dump 和組合進(jìn)行反匯編分析。class-dump 是 machO 的另一個開源解析工具。同理,可以根據(jù)machO(
Table),從而導(dǎo)出類名和方法名,但是它提供了很多參數(shù)用于導(dǎo)出不同架構(gòu)的machO鏈接符號表。使用以下命令將類名和方法名導(dǎo)出到文件:
$class-dump --arch x86_64 libCJFishPoolHook.dylib > header.txt
$ cat header.txt
從導(dǎo)出結(jié)果來看,這個班級多達(dá)16名成員非??梢伞憚討B(tài)庫的程序員很老實,沒有對類名、方法名進(jìn)行任何加密、混淆處理。QQ號、微信號、手機號、郵箱號、操作系統(tǒng)、CPU類型、內(nèi)存、mac地址、內(nèi)網(wǎng)IP、公網(wǎng)IP、用戶名、應(yīng)用列表、設(shè)備的含義不難猜IDMac電腦識別不了惡意軟件不能下載嗎,是否上傳信息,打開和關(guān)閉應(yīng)用的時間。
第二個動態(tài)庫的類方法比較少,很明顯可以猜到它鉤住了程序的功能,修改了程序的操作邏輯。
主要方法有:
1、init 初始化方法
2、,
動態(tài)交換鉤子的函數(shù)指針
3、
4、
5、
6、
7、
8、
最后采用了一種加密方式,傳入第一個參數(shù)(明文),第二個參數(shù)key用于對內(nèi)容進(jìn)行加密。
@
(AES)
+ (id):(id)arg1:(id)arg2;
+ (id):(id)arg1:(id)arg2;
@結(jié)尾
@()
- (布爾);
- (布爾);
- (布爾);
@結(jié)尾
0x05 抓包分析
通過上面的簡單分析,不難猜出他將采集到的信息發(fā)送給了服務(wù)器,通過抓包分析樣本與服務(wù)器的通信過程如下:
第一次發(fā)送到服務(wù)器,
返回值為0,表示可以傳輸設(shè)備信息
下一個數(shù)據(jù)用于上傳用戶信息。Body是AES加密后的base-密文。現(xiàn)在密鑰已經(jīng)存在,您可以嘗試解鎖請求密文
通過靜態(tài)分析,我們知道他使用的是AES加密算法,并且密鑰是硬編碼在代碼中的
結(jié)合以上過程可知,加密算法的第一個參數(shù)是,第二個是,第三個是加密填充模式。據(jù)此,我們寫的AES解密方法應(yīng)該是:
= (,,, //歐洲央行
模式 ,,iv,[self bytes],, /* 輸入
*/,, /* */);
關(guān)鍵是::7!@
解密后的密文是▼
我們來看看這個樣本是如何獲得這些用戶隱私的。
0x06 靜態(tài)分析
用戶隱私收集
用戶的隱私信息會在.dylib中獲取Mac電腦識別不了惡意軟件不能下載嗎,流程如下▼
在應(yīng)用初始化過程中,執(zhí)行單例類初始化Init,然后在Init方法中進(jìn)行初始化成員操作,包括以上16條信息。
初始化后,啟用捕獲用戶信息。這包括獲取用戶聯(lián)系信息()、獲取設(shè)備信息()、判斷設(shè)備是否需要上傳信息()、獲取應(yīng)用ID()、獲取設(shè)備上的應(yīng)用列表()、獲取地理位置()、獲取啟動時間( )。
最后一步是將所有數(shù)據(jù)上傳到服務(wù)器并使用 AES 加密算法對其進(jìn)行加密。
惡意收集QQ信息、電話、微信、應(yīng)用列表
來自 //com..qq/Data// 的申請
/QQ目錄獲取個人QQ信息。在該目錄中保存了用戶的臨時聊天記錄、截圖等信息。
從/遍歷本地安裝的應(yīng)用程序以形成應(yīng)用程序列表。
惡意宣傳
.dylib修改更新xmind官網(wǎng),推廣自己的廣告網(wǎng)站
進(jìn)程注入后,使用
鉤子等按鈕,使其無效或重定向到其他網(wǎng)站,阻止注冊,激活檢查更新功能。難怪啟動應(yīng)用后發(fā)現(xiàn)激活按鈕無效,無法進(jìn)行版本更新,但是購買激活產(chǎn)品卻跳轉(zhuǎn)到另一個網(wǎng)站。
0x07 總結(jié)
這次的逆向分析過程就很清楚了,單從網(wǎng)絡(luò)傳輸和靜態(tài)分析就可以了解重新打包應(yīng)用運行狀態(tài)的整個過程。對于公司收集用戶信息的行為,我不想過多評論。
主要從兩個方面來概括。對于開發(fā)者來說,有必要了解一些基本的防御方法,注意網(wǎng)絡(luò)傳輸安全和存儲安全。在開發(fā)過程中,盡量不要在程序中對密鑰進(jìn)行明文編碼,即使是二次編碼的密鑰放在應(yīng)用程序中也是不錯的。我們無法知道軟件是否會被破解,密鑰是否會泄露。一旦暴露,它就可以很容易地被利用來解密密文信息。更重要的是,直接使用基本編碼內(nèi)容、數(shù)據(jù)位或操作編碼更容易分析。同時我們可以混淆加密、反調(diào)試等手段,增加軟件破解的難度。另一方面,從用戶的角度來看,下載
本文所描述的只是個人信息安全的一個角落,但它的存在是不容忽視的。就像這篇文章的名字一樣,真正的意思是魚塘。軟件用戶是一條魚,在餅干的魚池里養(yǎng)的。魚長大了,就該收網(wǎng)了。
在過去的六年里,mac 的銷量一直在增長,這意味著越來越多的蘋果用戶。當(dāng)用戶多了,生態(tài)中軟件的產(chǎn)出勢必會增加,同時也會出現(xiàn)更多的惡意軟件渾水摸魚。
mac惡意軟件發(fā)展歷程
我們發(fā)現(xiàn)很多mac用戶對自身安全不太重視,惡意軟件目標(biāo)用戶逐漸增多,竊取用戶隱私、監(jiān)控用戶日常行為、惡意宣傳廣告等。因此,我們應(yīng)該提高自身的安全意識,警鐘正在敲響。