Darkleech木馬升級(jí):可能是最精良的apache后門
近日,Sucuri和ESET公司聯(lián)合研究,發(fā)現(xiàn)近期Blackhole在攻擊中使用了一種“精良”的apache后門—— Linux/Cdorked.A。
Linux/Cdorked.A后門除了修改了守護(hù)進(jìn)程“httpd”外,不會(huì)在硬盤中留下任何線索,所有有關(guān)后門的信息都存放在服務(wù)器的共享內(nèi)存中。攻擊者會(huì)通過(guò)HTTP請(qǐng)求來(lái)發(fā)送后門的配置信息,不但會(huì)經(jīng)過(guò)混淆處理,而且不會(huì)被常規(guī)的apache日志記錄,從而減少被傳統(tǒng)監(jiān)控工具發(fā)現(xiàn)的可能。而配置文件信息也是存放在內(nèi)存中,這意味著后門的C&C服務(wù)器信息不可見(jiàn),使得取證分析更加復(fù)雜。
當(dāng)訪問(wèn)被攻陷的的web服務(wù)器時(shí),它不是簡(jiǎn)單的就被重定向到惡意網(wǎng)站,還會(huì)設(shè)置一個(gè)cookie,從而第二次訪問(wèn)的時(shí)候不會(huì)再重定向到惡意網(wǎng)站。以此減少被懷疑的風(fēng)險(xiǎn)。而且cookie對(duì)管理頁(yè)面進(jìn)行特別設(shè)置,不感染管理頁(yè)面,后門會(huì)檢查訪問(wèn)者的referrer字段,這個(gè)技術(shù)手段跟Darkleech apache后門很類似,而事實(shí)上正是Sucuri和ESET持續(xù)跟蹤Darkleech木馬時(shí)發(fā)現(xiàn)了它有了新的這個(gè)變化。
兩個(gè)安全公司在最近幾個(gè)月里,發(fā)現(xiàn)了一些基于cPanel的受感染服務(wù)器上,惡意軟件手法不再是增加模塊,或者修改apache配置文件,而是開(kāi)始替換Apache的守護(hù)進(jìn)程文件httpd,此前安全公司Sucuri曾經(jīng)建議使用“rpm -Va”、“rpm -qf”或“dpkg -S”來(lái)檢查Apache的模塊是否被修改了。然而cPanel把a(bǔ)pache安裝在/usr/local/apache上,不可以用上面提到的包管理工具命令來(lái)進(jìn)行檢查Apache二進(jìn)制文件httpd是否被修改了。Sucuri公司跟蹤到此類型攻擊,把被修改的httpd提交給了ESET進(jìn)行分析。下面請(qǐng)看詳細(xì)的分析。
共享內(nèi)存存儲(chǔ)木馬有關(guān)信息:
分析被修改的httpd發(fā)現(xiàn),它會(huì)創(chuàng)建大約6M的共享內(nèi)存,以此來(lái)存放配置信息,這個(gè)共享內(nèi)存不但可以被所有Apache的子進(jìn)程使用,而且設(shè)計(jì)者沒(méi)有做限制,任何其他進(jìn)程都可以訪問(wèn)到。如下圖所示:
通過(guò)HTTP請(qǐng)求控制木馬:
攻擊者有兩種方法控制被植入后門的服務(wù)器。一個(gè)是通過(guò)反向連接的shell,一個(gè)是通過(guò)特殊的命令。兩個(gè)方法都是通過(guò)HTTP請(qǐng)求來(lái)觸發(fā)。
通過(guò)特殊的HTTP GET請(qǐng)求,就可以觸發(fā)部署了反向連接后門的http服務(wù)器。請(qǐng)求是一個(gè)特制的地址,包括查詢特定格式的字符串,包括hostname和端口。而請(qǐng)求者的ip是用于解密請(qǐng)求字符串的key(一個(gè)4byte的XOR key)。另外,在http頭信息里X-Real-IP或X-Forwarded-For字段內(nèi)的ip地址會(huì)覆蓋作為異或key(XOR key)的客戶端IP地址。因此研究人員可以偽造一個(gè) X-Real-IP頭信息,作為解密的key如 “\x00\x00\x00\x00” key 。最后,所有請(qǐng)求查詢的字符串都會(huì)經(jīng)過(guò)hex編碼才發(fā)送給感染木馬的web服務(wù)器。
而由于httpd被hook了,所以這個(gè)被修改過(guò)的apache是不會(huì)把這種請(qǐng)求記錄到log文件中。
重定向:
當(dāng)用戶訪問(wèn)受感染的web服務(wù)器,被重定向的時(shí)候,服務(wù)器的惡意軟件會(huì)在返回的重定向內(nèi)容中加入經(jīng)過(guò)base64編碼的信息,比如原始訪問(wèn)的URL,原始請(qǐng)求是否來(lái)自javascript等,服務(wù)器(正在存放惡意內(nèi)容的服務(wù)器)以此判斷可提供相應(yīng)的payload。例如:
Location: hxxp://dcb84fc82e1f7b01. xxxxxxgsm.be/index.php?j=anM9MSZudmNiaW11Zj1jY3
Zja3FqdSZ0aW1lPTEzMDQxNjE4MjctMzYwNDUzNjUwJnNyYz0yMzImc3VybD13d3cuaW5mZWN0ZWRzZXJ2
ZXIuY29tJnNwb3J0PTgwJmtleT0xM0Q5MDk1MCZzdXJpPS9mb3J1bS93Y2YvanMvM3JkUGFydHkvcHJvdG
9hY3Vsb3VzLjEuOC4yLm1pbi5qcw==
經(jīng)過(guò)解碼后:
js=1&nvcbimuf=ccvckqju&time=1304161827-360453650&src=232&surl=www.infectedserver
.com&sport=80&key=13D90950&suri=/forum/wcf/js/3rdParty/protoaculous.1.8.2.min.js
其中surl參數(shù)顯示來(lái)自哪個(gè)受感染的主機(jī)。suri顯示原始的請(qǐng)求來(lái)源。
Sucuri公司的分析發(fā)現(xiàn)會(huì)被重定向到一些色情網(wǎng)站,有一些則重定向到Blackhole Exploit Kit。
設(shè)置cookie:
當(dāng)重定向后,就會(huì)給來(lái)訪的客戶端設(shè)置一個(gè)cookie,以保證不會(huì)再被重定向。而疑似為管理頁(yè)面的請(qǐng)求也會(huì)設(shè)置cookie,不會(huì)被重定向。木馬會(huì)檢查URL,server name,referer,如果有關(guān)管理的字符串,就不會(huì)發(fā)送惡意內(nèi)容到管理者的website。這些字符串包括:‘*adm*’, ‘*webmaster*’, ‘*submit*’, ‘*stat*’, ‘*mrtg*’, ‘*webmin*’, ‘*cpanel*’, ‘*memb*’, ‘*bucks*’, ‘*bill*’, ‘*host*’, ‘*secur*’, ‘*support*’。如下圖所示:
應(yīng)對(duì):
ESET寫了個(gè)腳本,讓系統(tǒng)管理員可以檢查共享內(nèi)存的內(nèi)容,以及把內(nèi)容導(dǎo)出到一個(gè)文件中。因?yàn)椴《咀髡邲](méi)有限制共享內(nèi)存的訪問(wèn),任何進(jìn)程都可對(duì)木馬創(chuàng)建的那段共享內(nèi)存進(jìn)行訪問(wèn)。
Sucuri則建議檢查httpd的所在目錄是否存在“open_tty”。
# grep -r open_tty /usr/local/apache/
如果在apache二進(jìn)制文件中發(fā)現(xiàn)了open_tty則很可能已經(jīng)收感染,因?yàn)樵嫉腶pache二進(jìn)制文件不會(huì)調(diào)用open_tty。
目前調(diào)查仍未能清楚這些web服務(wù)器是如何被入侵的。有可能是SSH暴力破解。