一次入侵Linux服務器的事件記錄
針對此PHP漏洞的嘗試,ColdFusion,內(nèi)容管理系統(tǒng)存在此漏洞是很常見的。在某些情況下,特定的攻擊可能會成功,對高價值的服務器,會導致非常顯著的數(shù)據(jù)泄漏。在其他情況下,攻擊者將會大規(guī)模的操控被感染的主機。
最近,我注意到多個IP地址試圖利用一個PHP漏洞攻擊,所以我利用蜜罐記錄了結果,此次活動讓人想起早期僵尸網(wǎng)絡瘋狂的日子,用IRC命令控制,以及利用被入侵的主機作為掃描工具。 這是很有趣的,因為它表明它是一個成功針對Linux服務器的PHP漏洞,它能做什么呢,我將演示如何做一些基本的內(nèi)存取證,可以使用Volatilit這種類型的事件進行總結。
以下是攻擊者嘗試的攻擊:
這是針對一個老漏洞(CVE-2012-1823)的,它允許遠程攻擊者通過命令行選項HTTP查詢字符串內(nèi)注入任意代碼。
攻擊代碼解碼后為:
如果利用成功,將在HTTP POST的剩余部分顯示。
以下是在被入侵的服務器上執(zhí)行的操作:
·改變工作目錄到/var/tmp中 ·從該目錄刪除文件名為“a.pdf”的文件。 ·從攻擊者那里下載“a.pdf”文件并保存在/var/tmp目錄。pdf文件實際上是一個per腳本。 ·執(zhí)行per腳本,也就是“a.pdf”文件。 ·最后刪除“a.pdf”文件。
此攻擊者為了確保能成功下載遠程腳本,他重復使用“curl”、“fetch”、“lwp-get”指令。
捕獲的數(shù)據(jù)包顯示了注入腳本的整體活動,在執(zhí)行腳本后,休眠了一段時間,猜測可能是避開管理員的耳目。然后連接到vafel.pexit.cu的IRC C2,端口45129。
一段時間后,攻擊者指示從m1.pexit.cu.cc獲取另一個腳本“ins_h.sh”。
在“ins_h.sh”腳本的內(nèi)容顯示除其他事項外,攻擊者在Linux服務器上創(chuàng)建隱藏目錄,獲取另一個工具(HC)的源代碼,并編譯它,然后修改保存到定時任務中。 在這之后不久,大量的各種文件將被下載到被感染的主機,這其中包括挖掘軟件,開發(fā)庫和編譯工具,還下載了大量的linux本地權限提升利用程序。之后,攻擊者將使用他想要的方式,開始比特幣和質數(shù)幣的挖掘,特別值得注意的它使用Stratum Mining協(xié)議連接到服務器37.251.139.161上:
大多數(shù)服務器都被注射了這些不同的腳本然后用于各種任務,包括DDoS、漏洞掃描和利用?;ヂ?lián)網(wǎng)風暴中心最近發(fā)布了條新聞,“邁納德的情況”,探討了被破壞的服務器被用于開采虛擬貨幣。
現(xiàn)在,讓我們做一些內(nèi)存取證這一特定被攻陷主機的內(nèi)存圖像。我們將使用2.3.1版本分析Linux映像,為了做到這一點,你必須提供適當?shù)腖inux配置文件,創(chuàng)建一個配置文件是非常容易的,但它需要做適當?shù)姆植己蛢?nèi)核。我推薦Ken Pryor的Github網(wǎng)站,Ken Pryor在那里建立了一個Linux配置文件存儲庫。 根據(jù)分析,該系統(tǒng)是一個Ubuntu 10.04的服務器,內(nèi)核版本2.6.32-33,我們先來看看系統(tǒng)上的活動進程,通過“linux_pslist”插件。
注意PID1517(httpds)和PID27157(rsyslogd)的時間戳,遠遠晚于它上面列出的這些進程。由于早期過程及其相對時間戳類似于Linux的啟動程序,另請注意,這些進程顯示一個用戶ID和組ID1002,其中的Ubuntu分配給一個用戶帳戶。
波動插件“linux_psaux”的行為類似于Linux命令ps,所以它能夠顯示在流程調(diào)用使用的命令行參數(shù):
所以進程名命名為“httpds”,PID為1517,目錄/usr/bin/httpd,另外一個進程“rsyslogd”,PID為27157,并調(diào)用命令行參數(shù)“-b -c”。如果我們獲得一個破壞服務器的磁盤映像,我們會注意檢查/usr/bin的“httpd”。通過研究“rsyslogd”,我們得知“- b”不是一個有效的選項,所以這個進程仍然是可疑的。當通過pslist命令列出的進程列表,找到運行的進程,“linux_pidhashtable”可以幫我們找到隱藏的進程。
在這種情況下,它是一個很好的做法,檢查服務器的網(wǎng)絡信息,一些網(wǎng)絡插件,這將有助于確定遠程連接和啟動這些進程。例如“linux_netstat”插件的行為就像Linux的“netstat”命令,并列出活動的網(wǎng)絡連接,以及監(jiān)聽套接字。在這種情況下,我們看到可疑的進程,PID1517和PID27157與建立的網(wǎng)絡連接的遠程IP地址相關聯(lián)的進程。
執(zhí)行“linux_route_cache”插件,可以顯示路由表的緩存。這可能表明,可以不通過“linux_netstat”插件看到任何舊的連接。
現(xiàn)在,我們已經(jīng)建立的PID1517和27157的可疑進程,讓我們所有的相關的每一個打開的文件和路徑的列表。類似于在linux系統(tǒng)使用“lsof”的,我們將在這里使用插件“linux_lsof”。
注意,這兩個進程,PID1517和27157有兩個共同打開的文件。一個是[7916],另一個是在隱藏目錄“/tmp/.ICE-unix/-log/”中的httpd.pid文件。
另一個插件是“linux_proc_maps”,這個插件將顯示進程內(nèi)存的細節(jié),包括共享庫。細節(jié)包括開始和結束的位置,每個部分的節(jié)點和標記。這事從內(nèi)存中調(diào)查處的很有價值的信息。例如,在PID1517,我們得到以下內(nèi)容:
我們看到前面所提到的相同的隱藏目錄,但現(xiàn)在指的是文件名“httpds”。該文件被看作是405961,在“linux_proc_maps”插件上有一個輸出開關,允許以段列出。然而,為了恢復完整,完好的文件,我們需要從頁面緩存,它保存在內(nèi)存中的所有有關文件的頁面。我們可以通過“linux_find_file”插件做到這一點,這個插件會找到地址,然后讓你從內(nèi)存轉儲緩存的文件內(nèi)容,所以“httpds”文件在節(jié)點405961:
python vol.py -f /home/abc/pexit.vmem --profile=LinuxUbuntu1004_pae32-33x86 linux_find_file -F "/tmp/.ICE-unix/-log/httpds"
然后,我們使用“linux_find_file”插件使用“- o”選項,通過索引節(jié)點的地址,以提取文件。提取后,我們可以運行“strings”,查看內(nèi)容:
這些例子只是協(xié)助你如何分析被破壞主機。我希望這篇文章成功的揭示了PHP漏洞和由此產(chǎn)生的腳本注入的例子的一些情況,除了確保面向Internet的服務器使用正確的修補和硬化,還要知道如何快速跟蹤這樣的攻擊。在我的蜜罐,我每天會看到數(shù)十個,包括linux ELF,perlbots和老式炮彈攻擊。這些注入perl和shell腳本是非常讓人討厭的,而且還會給我們帶來最嚴重的破壞。
[原文地址,譯/FreeBuf 實習小編Rem1x]