日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
OSX那些事——惡意軟件是如何啟動(dòng)的?

0x00 背景

成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供溫泉網(wǎng)站建設(shè)、溫泉做網(wǎng)站、溫泉網(wǎng)站設(shè)計(jì)、溫泉網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、溫泉企業(yè)網(wǎng)站模板建站服務(wù),10多年溫泉做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

前幾日,看了一份報(bào)告,是美國網(wǎng)絡(luò)安全公司bit9發(fā)布的:《2015: The Most Prolific Year for OS X Malware》

報(bào)告主要的內(nèi)容就是說說2015年OS X平臺惡意軟件的情況。bit9的研究團(tuán)隊(duì)進(jìn)行了10周的分析研究,分析了1400個(gè)惡意軟件樣本。給出了下面這張圖,可見,2015年惡意軟件樣本數(shù)量是前5年惡意樣本數(shù)量之和的5倍。這估計(jì)要亮瞎蘋果公司的眼。Mac越來越火。也越來越不安全了。

 

 

報(bào)告指出的重點(diǎn)有:

現(xiàn)在惡意軟件的啟動(dòng)方式(Persistence Mechanisms)使用傳統(tǒng)Unix技術(shù)的越來越少,基本沒有了。大部分惡意軟件使用OS X提供的新的啟動(dòng)機(jī)制了。

感染持續(xù)增長,但是惡意軟件的復(fù)雜度卻不是太高。

主要的啟動(dòng)方式有7種。

由于OS X平臺上惡意軟件多樣性不如windows平臺,所有相對的檢測方法就簡單一些,因?yàn)樾枰枰獧z查的地方比windows平臺的要少。

0x01 啟動(dòng)

接下來就來談?wù)勥@啟動(dòng)的事,看看是哪7種武器是黑客所喜歡的:

 

 

如上7種武器你知道幾種(大神就自動(dòng)飄過)。

Launch daemons/agents

其實(shí)這兩種啟動(dòng)方式可以一起介紹。啟動(dòng)方式基本相同,只是有些區(qū)別而已。

這兩種方式都是蘋果官方提供的標(biāo)準(zhǔn)啟動(dòng)方式。在官方手冊里面可以查詢到更詳細(xì)的介紹[link]。daemons和agents都是由launchd進(jìn)程負(fù)責(zé)啟動(dòng)的后臺作業(yè)。launchd是OS X系統(tǒng)用戶態(tài)的***個(gè)進(jìn)程。對應(yīng)于其他UN*X系統(tǒng)中的init。負(fù)責(zé)直接或者間接的啟動(dòng)系統(tǒng)中的其他進(jìn)程。

 

 

從圖中可以看到daemons和agents都是由launchd進(jìn)程啟動(dòng)的。

daemons:守護(hù)程序,后臺服務(wù),通常與用戶沒有交互。由系統(tǒng)自動(dòng)啟動(dòng),不管是否有用戶登錄系統(tǒng)。

agent:代理程序,是一類特殊的守護(hù)程序,只有在用戶登錄的時(shí)候才啟動(dòng)。可以和用戶有交互,還可以有GUI。

創(chuàng)建一個(gè)daemons或agent是非常簡單的,就是創(chuàng)建一個(gè)普通的二進(jìn)制可執(zhí)行文件。然后將自己的屬性列表文件(.plist)放置到daemons或agent的配置目錄中:

目錄用途

/System/Library/LaunchDaemons系統(tǒng)本身的守護(hù)程序

/Library/LaunchDaemons第三方程序的守護(hù)程序

/System/Library/LaunchAgents系統(tǒng)本身的代理程序

/Library/LaunchAgents第三方程序的代理程序,這個(gè)目錄通常為空

~/Library/LaunchAgents用戶自有的launch代理程序,是有對應(yīng)的用戶才會(huì)執(zhí)行

plist文件的結(jié)構(gòu)可以查看手冊[link],下面給出了一個(gè)啟動(dòng)計(jì)算器的plist文件。擁有鍵值為true的RunAtLoad鍵。

 

 

將此.plist文件拷貝到/Library/LaunchAgents目錄(拷貝之后的文件擁有者為root),就可以在重啟后,自動(dòng)啟動(dòng)計(jì)算器。

可以使用

1sudo plutil -lint /path/to/com.test.plist

來檢測plist文件格式是否有問題。

plist中主要的字段和它的含義:

Label 用來在launchd中的一個(gè)***標(biāo)識,類似于每一個(gè)程序都有一個(gè)identifies一樣。

UserName 指定運(yùn)行啟動(dòng)項(xiàng)的用戶,只有當(dāng)Launchd 作為 root 用戶運(yùn)行時(shí),此項(xiàng)才適用。

GroupName 指定運(yùn)行啟動(dòng)項(xiàng)的組,只有當(dāng)Launchd 作為 root 用戶運(yùn)行時(shí),此項(xiàng)才適用。

KeepAlive 這個(gè)key值是用來控制可執(zhí)行文件是持續(xù)運(yùn)行呢,還是滿足具體條件之后再啟動(dòng)。默認(rèn)值為false,也就是說滿足具體條件之后才啟動(dòng)。當(dāng)設(shè)置值為ture時(shí),表明無條件的開啟可執(zhí)行文件,并使之保持在整個(gè)系統(tǒng)運(yùn)行周期內(nèi)。

RunAtLoad 標(biāo)識launchd在加載完該項(xiàng)服務(wù)之后立即啟動(dòng)路徑指定的可執(zhí)行文件。默認(rèn)值為false。

Program 這個(gè)值用來指定進(jìn)程的可執(zhí)行文件的路徑。

ProgramArguments 如果未指定Program時(shí)就必須指定該項(xiàng),包括可執(zhí)行文件文件和運(yùn)行的參數(shù)。

Cron job

Cron job是一個(gè)隨Unix而來的啟動(dòng)機(jī)制。在OS X中已經(jīng)不被推薦使用。蘋果公司推薦使用launchd命令來完成計(jì)劃任務(wù)。但是OS X仍然支持Cron。那黑客們當(dāng)然不會(huì)嫌棄。

Cron可以用來在設(shè)定的時(shí)刻執(zhí)行一個(gè)命令或是腳本。如果惡意軟件是python編寫的,可以直接運(yùn)行python命令。

Cron服務(wù)使用crontab命令來控制。在目錄/usr/lib/cron/tabs目錄下會(huì)有對應(yīng)的用戶名的配置文件。當(dāng)然可以直接通過命令來進(jìn)行配置。具體的可以查詢手冊[link]。

crontab可以直接讀取文件作為輸入來配置:

 

如圖 用crontab加載文本persist

 

保存文本內(nèi)容為:

*****open /Applications/Calculator.app

該配置為每分鐘執(zhí)行open命令打開計(jì)算器。

 

 

上圖為文件格式,多個(gè)任務(wù)可以分多行給出,可以用#進(jìn)行注釋。

還可以使用@reboot等配置來設(shè)置開機(jī)啟動(dòng)。但是本人在OS X 10.10上測試開機(jī)啟動(dòng)計(jì)算器沒有成功!用時(shí)間間隔來啟動(dòng)時(shí)可以的。

可以用crontab參數(shù)

-l 查看當(dāng)前的crontab配置。

-r 移除所有配置

-e 編輯配置

login items

login items是蘋果公司對需要開機(jī)運(yùn)行的應(yīng)用程序推薦的啟動(dòng)方式。

有兩種使用login item的方式:

使用shard file list。

使用Service Management framework。針對sandbox性能的程序[link]。

***種方式:

使用***種方式啟動(dòng)的login items在系統(tǒng)偏好設(shè)置->用戶和群組>登錄項(xiàng)里面可以查看并設(shè)置

 

 

在這個(gè)界面可以添加,刪除登錄項(xiàng)。

這些登錄項(xiàng)的信息都保存在~/Library/Preferences/com.apple.loginitems.plist配置文件中,每一個(gè)啟動(dòng)項(xiàng)對應(yīng)一個(gè)字典,有Alias,Name等,其中Name是NSString類型,其它是Data類型,進(jìn)行了base64,所以目前可以刪除。(手工添加有文章說可以,在OS X 10.10.x中筆者暫時(shí)沒有找到方法)。

另外就是通過程序來添加:

12345LSSharedFileListRef loginItems = LSSharedFileListCreate(NULL, kLSSharedFileListSessionLoginItems, NULL); //url為app所在的目錄

CFURLRef url = (CFURLRef)[NSURL fileURLWithPath:appPath];

LSSharedFileListItemRef item = LSSharedFileListInsertItemURL(loginItems, kLSSharedFileListItemLast, NULL, NULL, url, NULL, NULL);

CFRelease(item);

CFRelease(loginItems);

有的惡意軟件就是利用代碼添加login item的方式來實(shí)現(xiàn)自啟動(dòng)的。

第二種方式:

使用login item的程序如果是用了沙盒技術(shù)就會(huì)因?yàn)闄?quán)限問題無法使用***種方式了。必須使用Service Management Framework。要求有兩個(gè)程序:一個(gè)主程序一個(gè)helper程序。helper程序存放在主程序的Contents/Library/LoginItems目錄下。主程序在運(yùn)行時(shí)調(diào)用SMLoginItemSetEnabled()函數(shù)來設(shè)置helper程序?yàn)樽詥?dòng)程序。具體可以參考[link] [link]。

注意:你的主程序必須在Application的目錄下,開機(jī)啟動(dòng)的設(shè)置才會(huì)生效,否則會(huì)失敗

StartupItems

這是蘋果公司不推薦的啟動(dòng)方法。但是在現(xiàn)在版本中還沒有失效。

一個(gè)Startup Item是一個(gè)特殊的文件??梢栽谙到y(tǒng)boot進(jìn)程中得到執(zhí)行。

創(chuàng)建過程如下:

1,創(chuàng)建目錄

StartupItems存放在以下兩個(gè)路徑下:

/System/Library/StartupItems

/Library/StartupItems(默認(rèn)情況下是不存在的,需要自己手動(dòng)創(chuàng)建)

2,生成執(zhí)行程序或腳本

程序或腳本必須和目錄名一樣,可執(zhí)行文件需要獲得root權(quán)限。

一般使用shell script,因?yàn)槠鋭?chuàng)建和更新更為簡單。

下圖是一個(gè)例子:

 

 

開機(jī)啟動(dòng)后系統(tǒng)會(huì)自動(dòng)向腳本給出start作為參數(shù)?!?1” 表示傳給該腳本的***個(gè)參數(shù)

StartService(), StopService(), RestartService()

當(dāng)可執(zhí)行文件接收到的參數(shù)為start,stop或者restart時(shí),執(zhí)行相對應(yīng)的函數(shù)。

3,創(chuàng)建StartupParameters.plist

在目錄中創(chuàng)建該文件StartupParameters.plist是一個(gè)屬性列表。

 

 

關(guān)于plist中主要的字段

可以參考:

 

 

Binary infection

二進(jìn)制感染實(shí)現(xiàn)駐留。

原理和windows系統(tǒng)下的PE文件感染一樣。修改二進(jìn)制文件獲取執(zhí)行權(quán)限執(zhí)行自己的代碼。

因?yàn)镺S X允許未簽名的二進(jìn)制文件運(yùn)行。所以該方法依然有效。且感染的方式多種多樣。其中最簡單的就是修改入口點(diǎn)了。通過修改Mach-O文件的Load Commands。添加新的segment來實(shí)現(xiàn)代碼的注入感染。

0x02 檢測

針對啟動(dòng)項(xiàng)的檢測,bit9的報(bào)告針對企業(yè)和個(gè)人給出了建議。

這里給大家介紹下針對個(gè)人Mac的檢測方法。

除了手動(dòng)針對啟動(dòng)項(xiàng)的位置進(jìn)行檢測外,你當(dāng)然還可以用用腳本。不過推薦一個(gè)不錯(cuò)的工具

https://objective-see.com/products/knockknock.html

該工具自動(dòng)掃描9中啟動(dòng)方式。

 

 

讀者可以利用此工具來進(jìn)行一個(gè)快速的檢測。

該工具的作者還開發(fā)了一款啟動(dòng)項(xiàng)動(dòng)態(tài)監(jiān)控軟件

https://objective-see.com/products/blockblock.html

可以動(dòng)態(tài)的攔截啟動(dòng)項(xiàng)的添加。大家不妨試試。

0x03 參考

2015: The Most Prolific Year for OS X Malware

https://www.bit9.com/resources/research-reports/2015-the-most-prolific-year-for-os-x-malware/

VB2014 paper: Methods of malware persistence on Mac OS Xhttps://www.virusbtn.com/virusbulletin/archive/2014/10/vb201410-malware-persistence-MacOSX

Levin, J. Mac OS X and iOS Internals: To the Apple’s Core. Wrox. 2012

Mac OSX的開機(jī)啟動(dòng)配置 http://www.tanhao.me/talk/1287.html/

在SandBox沙盒下實(shí)現(xiàn)程序的開機(jī)啟動(dòng) http://www.tanhao.me/pieces/590.html/

蘋果手冊https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/Introduction.html


當(dāng)前文章:OSX那些事——惡意軟件是如何啟動(dòng)的?
本文URL:http://www.dlmjj.cn/article/dpidgdi.html