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