在Mac Linux上如何快速判斷一個(gè)文件是否是惡意程序?
熟悉Mac/Linux的用戶經(jīng)常會(huì)使用命令行,如果遇到系統(tǒng)異常,如CPU使用率暴漲等,經(jīng)常會(huì)使用top命令去定位到底是哪個(gè)程序出現(xiàn)了異常。找到相關(guān)程序后,由于許多用戶自身沒有安全背景或者不大懂得逆向,便無法去分析程序到底做了什么,不敢枉然kill掉程序。又如果文件夾下面無故多了非自己創(chuàng)建的程序,這時(shí)也不敢枉然刪除。針對(duì)這一情況,本文介紹幾種小技巧,讓你快速判斷一個(gè)程序是否是惡意樣本。
1.使用file命令快速識(shí)別文件類型
如圖使用file命令識(shí)別名為bashd的文件,從結(jié)果中可以看出這個(gè)文件為ELF 64位可執(zhí)行文件,Linux 2.6.18內(nèi)核平臺(tái)下。以上信息邊可判斷這個(gè)文件是一個(gè)可執(zhí)行文件,而從文件名bashd中可能***個(gè)閃過腦中的概念即這個(gè)程序是bash的守護(hù)進(jìn)程,那么到底是不是呢?我們接著分析。
2. 使用xxd命令查看文件十六進(jìn)制內(nèi)容
如圖使用xxd命令可以顯示文件的十六進(jìn)制格式,從文件頭的前幾個(gè)字節(jié)可以看出這個(gè)文件是ELF格式的可執(zhí)行文件。當(dāng)然為了避免滿屏的十六進(jìn)制這里使用head命令值顯示了頭部十六進(jìn)制。
如果你對(duì)這個(gè)可執(zhí)行文件其他行為感興趣,也可以入上圖通過grep+字段來搜索你感興趣的內(nèi)容。如圖,我們找到了socket.h和curl_socket,可以猜測(cè)這個(gè)程序可能有網(wǎng)絡(luò)行為,而且使用用curl。
3.使用strings命令快速識(shí)別文件大體功能
strings命令,熟悉Mac/Linux的用戶都知道該命令是在對(duì)象或二進(jìn)制文件中查找可打印的字符串。字符串是4個(gè)或者更多可打印字符的任意序列,以換行符或空字符結(jié)束。惡意文件中經(jīng)常包含可以顯示這個(gè)程序行為的字符串,通過該命令,即可快速顯示其文件可能包含的行為。
如圖,我們可以看見其字符串包含了curl幾個(gè)API,說明程序由使用curl接口,也印證了我們上小節(jié)的判斷。
當(dāng)屏幕繼續(xù)往下拉的時(shí)候,我們發(fā)現(xiàn)了其程序的幫助命令,從以上信息可以看出這個(gè)程序是一個(gè)挖礦程序,其版本號(hào)為cpuminer 2.3.3,編譯時(shí)間為2017年7月12日。截止到這里我們基本可以判定這個(gè)程序是個(gè)惡意程序,主要功能是用來挖礦。如果你想繼續(xù)深挖信息,可以通過Baidu等搜索平臺(tái)搜索關(guān)鍵字cpuminer,可以找到該程序的源代碼,這里貼出源碼地址 https://github.com/pooler/cpuminer ,請(qǐng)大家不要作非法用途。
4.使用readelf或greadelf命令繼續(xù)深入挖掘文件信息
當(dāng)判斷這個(gè)文件為ELF文件格式之后,我們便可以通過readelf或greadelf命令來查看文件更加詳細(xì)的信息。這里以Mac平臺(tái)的greadelf為例子。
如圖通過greadelf -a bashd命令顯示了該文件更加詳細(xì)的信息,通過這些信息可以更加全面的認(rèn)識(shí)該程序的功能。
通過以上簡簡單單的四個(gè)Mac/Linux下的命令我們迅速判斷一個(gè)文件的是否為惡意樣本,并且還找到該惡意樣本的源代碼,成功將其kill掉。期間我們沒有使用太多高級(jí)的技巧,也沒使用逆向的相關(guān)知識(shí),但卻快速解決問題。當(dāng)然如果程序使用了更多高級(jí)的技巧,以上命令并不能得到很多信息,還是需要更加深入的分析,其分析方法我們會(huì)在以后的文章介紹到。
*本文作者:GeekOnline,本文屬 FreeBuf 原創(chuàng)獎(jiǎng)勵(lì)計(jì)劃,未經(jīng)許可禁止轉(zhuǎn)載。