奥运会网球比分规则|雪缘网网球比分直播|
歡迎來到 黑吧安全網 聚焦網絡安全前沿資訊,精華內容,交流技術心得!

OceanLotus macOS惡意軟件更新

來源:本站整理 作者:佚名 時間:2019-04-15 TAG: 我要投稿

2019年3月初,有一款來自OceanLotus的攻擊macOS的惡意軟件被上傳到VirusTotal。研究人員分析發現該后門可執行文件與之前的macOS變種有相同的特征,但是其結構發生了變化,所以檢測起來更難。但因為找不到與該樣本相關的釋放器,所以也不知道初始感染向量。
因為之前Trend Micro也分析過OceanLotus使用的macOS惡意軟件,因此本文主要介紹與之前版本的變化。
分析
本文的分析過程使用的樣本SHA-1 哈希值為E615632C9998E4D3E5ACD8851864ED09B02C77D2,ESET產品檢測到該文件為OSX/OceanLotus.D。
反調試和反沙箱
與之前的OceanLotus macOS惡意軟件二進制文件一樣,該樣本是用UPX打包的,但是大多數的解壓識別工具無法識別。該特征使靜態檢測方法很難檢測。一旦解壓,就會發現程序執行的入口點(entry point)就位于.TEXT的__cfstring。該部分的flag屬性如圖1所示。
 

圖1 __cfstring section屬性
如圖2所示,__cfstring部分的代碼會欺騙解壓工具來將代碼顯示為字符串。
 

圖2 IDA將后門代碼識別為數據
運行時,二進制文件首先創建一個線程作為反調試監視進程,作用就是持續監測反調試器是否存在。該線程會:
· 用PT_DENY_ATTACH作為請求參數來調用ptrace以分離調試器;
· 調用函數task_get_exception_ports來檢查是否有意外的端口開放;
· 嚴重當前進程的P_TRACED flag來檢查是否有調試器,如圖3所示:

圖3  通過sysctl函數檢查是否有調試器
如果監視進程監測到有調試器,就調用exit退出函數。然后該樣本會通過發布以下命令來檢查環境因素:
ioreg -l | grep -e “Manufacturer” and sysctl hw.model
并檢查返回的值中是否有已知的虛擬化系統相關的字符串,包括oracle, vmware, virtualbox, parallel等。
最后執行下面的命令:
system_profiler SPHardwareDataType 2>/dev/null | awk ‘/Boot ROM Version/ {split($0, line, “:”);printf(“%s”, line[2]);}
執行這些命令是為了檢查機器是否是“MBP”, “MBA”, “MB”, “MM”, “IM”, “MP”或“XS”,這些代碼表示系統的型號,比如MBP代表MacBook Pro。
惡意軟件的更新部分
雖然新變種中后門命令沒有更新,研究人員發現還是有一些變化。樣本使用的C2服務器的創建日期為2018-10-22:
· daff.faybilodeau[.]com
· sarc.onteagleroad[.]com
· au.charlineopkesston[.]com
使用的URL資源被修改為/dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35。
發送給C2服務器的第一個包含有許多與主機相關的信息,所有命令收集的數據包括:

因為配置發生了變化,所以樣本也不再使用libcurl庫進行網絡竊取,而是使用了一個外部庫。為了定位,后門會使用AES-256-CBC模式和key gFjMXBgyXWULmVVVzyxy 來解密當前目錄中的每個文件。解密的文件會保存在/tmp/store中,并使用dlopen函數以庫的方式來加載。嘗試解密會調用dlopen,后門會提取導出函數Boriry和ChadylonV,這兩個函數是用來與服務器進行通信的。因為無法從原始樣本中找出釋放器或其他文件,因此無法分析庫文件。而且因為組件是加密的,基于這些字符串的YARA規則也無法找出對應的文件。
Trendmicro的分析中提到macOS后門創建了一個clientID,這是下面命令的返回值的MD5哈希值:
ioreg -rd1 -c IOPlatformExpertDevice | awk ‘/IOPlatformSerialNumber/ { split($0, line, “\””); printf(“%s”, line[4]); }’
ioreg -rd1 -c IOPlatformExpertDevice | awk ‘/IOPlatformUUID/ { split($0, line, “\””); printf(“%s”, line[4]); }’
ifconfig en0 | awk \’/ether /{print $2}\’ (獲取MAC地址)
未知命令(“\x1e\x72\x0a“)在之前的樣本中被用作uuidgen
在進行哈希計算之前,字符0或1會加到返回值中以表明root權限。如果代碼以root權限運行,ClientID就會保存在/Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex中,或保存在~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML中。該文件一般會通過_chflags函數隱藏,并且用touch -t命令和隨機值來修改時間戳。
字符串解密
與之前的變種類似,字符串是用AES-256-CBC和十六進制編碼的key 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92使用CCCrypt函數來加密的。使用的key發生了變化,但是該組織仍然使用相同的算法來加密字符串,因此解密可以自動進行。
在了解了decrypt函數的原型后,解密腳本首先會找出對該函數的所有交叉應用,找到所有的參數,解密數據并將明文數據放在交叉應用的地址的注釋處。為了讓解密腳本正確運行,base64解碼函數使用的定制的字母表必須在腳本中進行設置,并且要定義含有key長度的全局變量,如圖4所示:

[1] [2]  下一頁

【聲明】:黑吧安全網(http://www.nddver.tw)登載此文出于傳遞更多信息之目的,并不代表本站贊同其觀點和對其真實性負責,僅適于網絡安全技術愛好者學習研究使用,學習中請遵循國家相關法律法規。如有問題請聯系我們,聯系郵箱[email protected],我們會在最短的時間內進行處理。
  • 最新更新
    • 相關閱讀
      • 本類熱門
        • 最近下載
        奥运会网球比分规则
        通化大嘴棋牌 官网 湖北快3推荐号码一定牛 山东群英会中奖达人 4场进球彩开奖历史 AG捕鱼王3D反水时间 山东时时彩网站 彩票站双色球合买 奥运会网球比分规则 qq怎么赌博赚钱 模拟炒股网