日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
如何使用命令行對(duì)無(wú)文件惡意軟件進(jìn)行取證

 前言

在最近的幾年,Linux面臨的一個(gè)日益嚴(yán)重的威脅—-基于無(wú)文件落地型的惡意軟件。無(wú)文件惡意軟件是指將自身注入到正在運(yùn)行的Linux系統(tǒng)中,并且不會(huì)在磁盤(pán)上留下任何痕跡?,F(xiàn)在已經(jīng)有多種手法可以實(shí)現(xiàn)無(wú)文件攻擊:

1.執(zhí)行二進(jìn)制文件后從磁盤(pán)刪除自身。

2.在不寫(xiě)入磁盤(pán)的情況下直接將代碼注入正在運(yùn)行的服務(wù)器(例如,在PHP服務(wù)器通過(guò)易受攻擊的輸入來(lái)運(yùn)行PHP代碼)。

3.使用諸如ptrace()之類(lèi)的系統(tǒng)調(diào)用附加到正在運(yùn)行的進(jìn)程,并將代碼插入內(nèi)存空間執(zhí)行。

4.使用諸如memfd_create()之類(lèi)的方法在RAM中創(chuàng)建一個(gè)可以運(yùn)行的匿名文件。

在本篇文章中,我們將討論如何檢測(cè)最后一個(gè)攻擊向量。

memfd_create()無(wú)文件攻擊

首先,向大家介紹一個(gè)linux系統(tǒng)的底層調(diào)用函數(shù)memfd_create()。該函數(shù)允許您在RAM中創(chuàng)建駐留文件,將文件保存到RAM而不是文件系統(tǒng)本身。調(diào)用成功后,您就可以引用這個(gè)內(nèi)存駐留文件,就像您操作磁盤(pán)目錄中的文件一樣。 在man中的描述:

memfd_create()創(chuàng)建一個(gè)匿名文件并返回引一個(gè)文件描述符。該文件的行為類(lèi)似于常規(guī)文件,并可以進(jìn)行修改,截?cái)啵瑑?nèi)存映射等。但是,與常規(guī)文件不同,它位于RAM中并且具有易失性。

您可以將其理解為并不是在Linux主機(jī)上直接調(diào)用/bin/ls,而是將ls加載到RAM中,可以將其稱(chēng)為 /ls。就如許多系統(tǒng)調(diào)用一樣,出于性能等原因,它可以被合法使用,但這也給攻擊者帶來(lái)了可乘之機(jī)。更重要的是,如果系統(tǒng)重新啟動(dòng)或被關(guān)閉,惡意軟件會(huì)立即被清除,這對(duì)于隱藏入侵者行為來(lái)說(shuō)是很有價(jià)值的。

發(fā)動(dòng)進(jìn)攻

關(guān)于memfd_create()的利用方式有很多種,它們都有相似的檢測(cè)模式,所以使用哪種并不重要,在本文我們使用的是:In Only Memory ELF Execution。

我們可以直接通過(guò)SSH傳輸二進(jìn)制文件,這樣就沒(méi)有任何內(nèi)容寫(xiě)入磁盤(pán),也沒(méi)有產(chǎn)生任何交互式shell,這樣做可以大大降低攻擊被檢測(cè)的可能。

攻擊通過(guò)SSH將bindshell后門(mén)發(fā)送到目標(biāo)靶機(jī)并進(jìn)行執(zhí)行。運(yùn)行后代碼將在靶機(jī)上駐留并打開(kāi)一個(gè)偵聽(tīng)端口等待連接,入侵者可以在遠(yuǎn)程主機(jī)上執(zhí)行的任意命令。

快速檢測(cè)無(wú)文件Linux攻擊

針對(duì)文章中演示的示例可以通過(guò)一個(gè)簡(jiǎn)單的ls和grep命令進(jìn)行檢測(cè):ls -alR /proc/*/exe 2> /dev/null | grep memfd:.*(deleted)

此命令將遍歷/proc目錄中所有正在運(yùn)行的進(jìn)程,并檢查它們是否具有格式為memfd:(deleted)的可執(zhí)行路徑。這個(gè)條目非常可疑,并且在無(wú)文件攻擊中很常見(jiàn)。

運(yùn)行此命令后,正常情況下不應(yīng)有任何回響。如果您看到有任何結(jié)果返回,則應(yīng)立即調(diào)查該過(guò)程。當(dāng)然有時(shí)會(huì)有誤報(bào)的風(fēng)險(xiǎn),但是對(duì)于這種類(lèi)型的攻擊,很少見(jiàn)到(如果有示例,請(qǐng)與我們聯(lián)系)。

執(zhí)行命令后顯示了以下目錄條目:lrwxrwxrwx 1 root root 0 Jul 8 23:37 /proc/14667/exe -> /memfd: (deleted)在路徑中,進(jìn)程的ID(PID)為14667,這是我們需要重點(diǎn)關(guān)注的對(duì)象。

如果攻擊者已經(jīng)使用了完備的方案實(shí)現(xiàn)了對(duì)二進(jìn)制文件的隱藏,那么以下的策略可能會(huì)失效。但是對(duì)于常見(jiàn)的攻擊,使用這種方法是快速有效的。

使用命令行進(jìn)行攻擊取證

在本例中,bindshell啟動(dòng)后會(huì)立即綁定到TCP 31337端口,執(zhí)行反彈shell操作,開(kāi)始發(fā)送盜取的敏感數(shù)據(jù)等。我們可以先使用netstat和ps命令收集攻擊信息。

通過(guò)netstat命令,我們注意到了一個(gè)反常的tcp端口,該端口的進(jìn)程名也很奇怪:netstat -nalp

如上圖所示,該進(jìn)程的PID為14667。下一步通過(guò)PS命令查看該進(jìn)程一些具體信息:ps -auxw

我們?cè)谶M(jìn)程列表中,看到它的進(jìn)程名為[kwerker/0:sandfly],這將幫助它隱藏在具有相似名稱(chēng)的合法進(jìn)程中。您可以在上面的列表中看到,如果不使用sandfly標(biāo)識(shí)符進(jìn)行命名,我們真的很難發(fā)現(xiàn)它。

現(xiàn)在我們已經(jīng)找到了可疑進(jìn)程,下一步就要想辦法獲取該進(jìn)程的具體信息。由于接下來(lái)大多數(shù)操作將在/proc目錄中進(jìn)行,讓我們先轉(zhuǎn)到/proc/ 目錄,其中PID是我們的可疑進(jìn)程ID。您可以使用以下命令進(jìn)入該目錄:cd / proc / 14667

進(jìn)程目錄列表

在進(jìn)程目錄中,我們可以使用ls命令列出文件夾中的內(nèi)容。Linux內(nèi)核將實(shí)時(shí)構(gòu)建目錄,并向我們顯示許多有價(jià)值的信息。ls -al

通過(guò)簡(jiǎn)單的ls命令我們可以獲知:1.進(jìn)程啟動(dòng)時(shí)的日期戳。2.當(dāng)前的工作目錄(用戶(hù)最有可能在/root下啟動(dòng)進(jìn)程)。3.EXE鏈接指向一個(gè)已刪除的二進(jìn)制文件的位置。

最重要的一點(diǎn)是,在Linux上,除了少數(shù)用例外,具有deleted標(biāo)記的二進(jìn)制文件的進(jìn)程通常是惡意的。而且,該進(jìn)程不僅被刪除,還指向一個(gè)非常不尋常的位置了/memfd:這是攻擊所使用的內(nèi)存文件描述符。

使用Comm和Cmdline參數(shù)查找隱藏的Linux進(jìn)程

在/ proc目錄下的comm和cmdline文件會(huì)記錄進(jìn)程的命令名和進(jìn)程的完整命令行信息,這是一個(gè)很好的切入點(diǎn)。

當(dāng)啟動(dòng)進(jìn)程時(shí)含有參數(shù)時(shí),會(huì)在各個(gè)參數(shù)中使用字符’’進(jìn)行分割。所以當(dāng)我們使用cat命令查看cmdline文件內(nèi)容時(shí),只能打印出第一個(gè)參數(shù),即進(jìn)程名。所以我們可以使用cat命令查看comm文件,使用strings命令來(lái)查看cmdline文件。cat commstrings cmdline

comm和cmdline文件顯示以下內(nèi)容:

在在Linux中,大多數(shù)情況下,文件應(yīng)當(dāng)顯示一個(gè)基本上相互匹配的二進(jìn)制名稱(chēng)。例如,如果您在nginx這樣的web服務(wù)器上運(yùn)行此程序,您將在這兩個(gè)文件中的某個(gè)位置看到nginx名稱(chēng)。但是在這個(gè)示例中,comm文件中只是一個(gè)數(shù)字“3”,這是進(jìn)程偽裝的一種手段。同樣,cmdline文件夾中的內(nèi)容也很奇怪。這兩個(gè)文件并未正確記錄進(jìn)程名稱(chēng)。

通過(guò)進(jìn)程映射來(lái)驗(yàn)證二進(jìn)制名稱(chēng)

/proc/[pid]/maps文件可以顯示進(jìn)程的內(nèi)存區(qū)域映射信息。在這里也可以找到二進(jìn)制名稱(chēng),以及運(yùn)行時(shí)正在使用的其他庫(kù)文件。通常,該文件的第一部分包含對(duì)正在運(yùn)行的二進(jìn)制文件的引用(例如/usr/bin/vi)。但是在文件中,我們?cè)僖淮慰吹搅藢?duì)/memfd: (deleted)的奇怪引用。

cat maps

調(diào)查L(zhǎng)inux進(jìn)程環(huán)境

很多人可能會(huì)忽略在Linux上,當(dāng)你啟動(dòng)一個(gè)進(jìn)程時(shí),它通常會(huì)附加一系列環(huán)境變量。在大多數(shù)情況下,由用戶(hù)啟動(dòng)的任何進(jìn)程都會(huì)出現(xiàn)在這里。我們?cè)噲D通過(guò)查看/proc/ /environ文件夾獲取進(jìn)程信息。

同樣,出于格式化的原因,我們將使用strings命令,這樣更易于閱讀。strings environ

既然我們的惡意軟件是通過(guò)SSH傳入的,縱使攻擊者設(shè)法清理的有關(guān)IP地址的日志,但是啟動(dòng)進(jìn)程時(shí)還是會(huì)留下蛛絲馬跡。

抓取二進(jìn)制文件

即便二進(jìn)制文件沒(méi)有在磁盤(pán)上存在,但是我們?nèi)钥梢苑浅1憬莸幕謴?fù)注入的二進(jìn)制文件。具體的操作細(xì)節(jié)我已經(jīng)在關(guān)于恢復(fù)已刪除的二進(jìn)制文件的文章中進(jìn)行了全面介紹,在這里只進(jìn)行簡(jiǎn)述。

cp /proc/ /exe /destination_dir/filename在本示例中,命令如下:cp exe /tmp/malware.recovered

該文件被恢復(fù)到/tmp/malware.recovered下。您可以像往常一樣對(duì)惡意樣本進(jìn)行分析,還可以為二進(jìn)制文件生成hash值:sha1sum exesha1sum /tmp/malware.recovered

收集到的信息

到目前為止,我們收集到了如下信息:

1.可疑的可執(zhí)行文件的路徑。

2.進(jìn)程使用的端口號(hào)。

3.進(jìn)程名。

4.comm和cmdline文件中沒(méi)有引用相同的命令名。

5.comm文件內(nèi)容只有一個(gè)字符長(zhǎng)。

6.進(jìn)程當(dāng)前的工作目錄位于/ root下。

7.進(jìn)程試圖鏈接已被刪除的/memfd位置,而不是合法的二進(jìn)制路徑。

8.進(jìn)程映射文件顯示相同的已刪除位置。

9.惡意軟件是通過(guò)SSH傳入的

事實(shí)上,Linux并不會(huì)刻意隱藏任何信息。它們就像屋檐上的觀察者一樣,或者就像我們?cè)赟andfly上所說(shuō)的那樣:試圖隱藏正是一種入侵的特征。


網(wǎng)頁(yè)題目:如何使用命令行對(duì)無(wú)文件惡意軟件進(jìn)行取證
文章出自:http://www.5511xx.com/article/dhogceh.html