(轉貼)美國駭客年會 Black Hat 2008 觀察--第二天
轉貼自: [url]http://armorize-cht.blogspot.com/2008/08/black-hat-2008_18.html[/url]
此文續「[url=http://armorize-cht.blogspot.com/2008/08/black-hat-2008.html]美國駭客年會 Black Hat 2008 觀察--第一天[/url]」...
說真的如果不是要來 Black Hat / DEFCON,我是絕對不會想到這邊來的。我去過不少城市,但是了解我的人應該都知道,這邊除了駭客年會,還真沒有東西可以吸引我。
今天的 keynote 是美國政府資安界的當紅新人炸子雞 [url=http://en.wikipedia.org/wiki/Rod_Beckstrom]Rod Beckstrom[/url],大家都來看他的風采。Rod 是我們營運長 Matt 的 Stanford MBA 學長,也是一位有名的創業家,他之前以 twiki 作者的身份,創辦了 [url=http://www.twiki.net/]TWIKI.NET[/url]。今年三月20日,他正式接受美國國土安全部([url=http://www.dhs.gov/]DHS、Department of Homeland Security[/url])的邀請,擔任底下一個新成立的單位:「國家資安中心([url=http://en.wikipedia.org/wiki/National_Cyber_Security_Center]National Cyber Security Center、NCSC[/url])」的首席。NCSC 是一個新的跨部門單位,負責協調各資安部門之間情報的交換。
NCSC 的成立以及這項任命,是源自於[url=http://www.washingtonpost.com/wp-dyn/content/article/2008/01/25/AR2008012503261.html]布希於今年一月簽同的一項機密的指引[/url],主要用以擴大情報界對於目前日益嚴重的針對美國的網路攻擊之掌握度,因為之前美國情報單位對於資安攻擊的掌握過渡零散,缺乏一個中央協調的組織。[url=http://en.wikipedia.org/wiki/Rod_Beckstrom]Rod Beckstrom[/url] 其實並沒有資安背景,但是他有創業家的經驗,對業界很熟,成功創辦 [url=http://www.twiki.net/]TWIKI.NET[/url] 幫助企業用 wiki 觀念協調資訊交換,以及著有很暢銷的「[url=http://www.starfishandspider.com/]The Starfish and the Spider[/url]」一書,提出新的分散式企業管理概念,這些都是美國國土安全部([url=http://www.dhs.gov/]DHS[/url])看中他的原因。
[url=http://openwaves.net/images/chinese_blog/BlackHat_2days_2008/IMG_1971_filtered_cropped_WB_730.jpg][img]http://openwaves.net/images/chinese_blog/BlackHat_2days_2008/IMG_1971_filtered_cropped_WB_730.jpg[/img][/url]
Rod 講了很多美國政府的歷史與政府在資安方面的歷史,基本上我覺得就是幫政府建立形象啦,表示美國政府從電報的年代就很懂資安與情報的重要。我對美國政府的歷史沒有興趣,我對駭客的歷史比較有興趣,但是我覺得 Rod 的加入對布希政府在形象上一定是一大加分,因為 Rod 感覺很有業界經驗,不會讓外界覺得政府都閉門造車。
Rod 講了他認為目前資安難做的原因,我非常的認同。他說,有些球類,進攻難,防守易,例如足球,所以分數都不高(幾比幾);有些球類,則是進攻容易,防守難,例如籃球,所以分數都很高(可以破百)。資安比較像籃球;事實上在資安裡面,防守比攻擊要難太多太多了,這也就是資安難做的原因。
這個我完全認同。是的,要有好的防守,必須很懂得敵人,很懂得敵人所用的攻擊方法。所以重要的駭客年會我們都會派人參加。但是這只是基本功而已。懂得攻擊之後,要設計防守,又更加困難。為什麼?因為攻擊成本低,防守成本高!就拿防毒軟體來說,其實測不到,不是防毒廠商沒有樣本,可是防毒軟體不能佔用系統太多資源,所以樣本不能無限制的長大,必須有所選擇,在盡量不影響到系統效能的前提下,達到最高的偵測率。
又像如果打生物戰,那麼一樣,設計病毒,只需能感染讓人致死就好,可是設計解藥,不但要殺死病毒,還要保存人體不被破壞。不論在網路空間或實際生活中,攻擊總比防守簡單太多,這是資安難做的原因。再加上攻擊處於主動,何時攻擊可以自行選擇,但是防守處於被動,何時被攻擊無法預期,所以無時無刻都需要檢查與防範,而這些無時無刻都需要做的檢查與防範,都是成本的增加,這也是資安難做的原因。
另外 Rod 探討了一些我們在業界常探討的資安的投資報酬率問題。感覺他有觀念,但是畢竟他之前不在資安產業,探討的東西都還太淺了些。以下是兩張投影片,基本上是說,如果 x 軸是資安的投資,y 軸是因為資安投資而減低的損失,那麼需要找到投資報酬率最高的點。但是 Rod 你說用一條 45 度的線跟曲線取交點,是這樣嗎?我高中畢業很久了,博班資格考也沒考微積分,但是我怎麼直覺覺得,要分析要看此曲線斜率,所以要做一下一次微分後分析...
[url=http://openwaves.net/images/chinese_blog/BlackHat_2days_2008/rod_slides_730.jpg][img]http://openwaves.net/images/chinese_blog/BlackHat_2days_2008/rod_slides_730.jpg[/img][/url]
這裡有他當天演講的一段錄影:
[url]http://tw.youtube.com/watch?v=SQnIsW4sINQ&eurl=http://armorize-cht.blogspot.com/2008/08/black-hat-2008_18.html[/url]
聽完之後去幫 [url=http://jeremiahgrossman.blogspot.com/]Jeremiah[/url]捧場,聽他同事 Arian Evans([url=http://www.blackhat.com/html/bh-usa-08/bh-usa-08-speakers.html#Evans]大會[/url])講「[url=http://www.blackhat.com/html/bh-usa-08/bh-usa-08-speakers.html#Evans]Encoded, Layered, and Trancoded Syntax Attacks: Threading the Needle past Web Application Security Controls[/url]」
這個題目就不翻譯了,基本上整個演講在說一件事:Web 上的攻擊,如果加上各種不同的編碼方式,那麼穿透率幾乎可以達 100%,沒有任何 Web 防火牆可以阻擋。這是指 Web 防火牆設定成利用黑名單的情況下,如果花時間設白名單的話,一樣可以阻擋,可是一般稍微有規模的站,我看到大部分都是用黑名單方式,因為設白名單是很繁瑣的事情,需要找到好的廠商才行。
講到這裡,其實我深深覺得資安業,找對公司比找對產品重要多了。不論是源碼檢測或 Web 防火牆,如果賣方只是想塞產品給您,那麼買了再好的,牌子在大的產品也沒有用,一樣會失敗,最後還是會發生資安事件。如果找對好的 partner,有心服務客戶,長期經營,技術能量也夠,那即使用免費的開放源碼 [url=http://www.modsecurity.org/]ModSecurity[/url]做 Web 防火牆,一樣能設定到讓您高枕無憂。其實對方有沒有心做服務,還是只想塞產品,還有對方的技術團隊有沒有實力,通常很快就能看出來。
[url=http://openwaves.net/images/chinese_blog/BlackHat_2days_2008/IMG_2122_filtered_cropped_WB_730.jpg][img]http://openwaves.net/images/chinese_blog/BlackHat_2days_2008/IMG_2122_filtered_cropped_WB_730.jpg[/img][/url]
[b]這張明天要去賣 Arian 了,拍得太好了 :)[/b]
投影片一拿出來就開始講今年初進行到現在的大規模 SQL Injection 加網頁掛馬攻擊([url=http://www.armorize.com.tw/news/shownews.php?news=23]阿碼新聞稿[/url],[url=http://www.pcworld.com/businesscenter/article/146048/mass_sql_injection_attack_targets_chinese_web_sites.html]PC World(IDG)[/url],[url=http://www.ithome.com.tw/itadm/article.php?c=49121]ITHome[/url])。Arian 拿[url=http://blogs.technet.com/neilcar/archive/2008/03/15/anatomy-of-a-sql-injection-incident-part-2-meat.aspx]當初 Neil Carpenter 蒐集到的攻擊字串[/url]做例子:
[url=http://www.openwaves.net/armorize_blog/clipboardhijack/sql_penetrate.html][img]http://openwaves.net/images/chinese_blog/BlackHat_2days_2008/sql_penetrate.png[/img][/url]
這是一行 web server 的 log。在這個例子裡,%XX(例如 %27、%20、%2B)是 URL encoding 的一部份,會被 web server decode,decode 完變成:
[url=http://www.openwaves.net/armorize_blog/clipboardhijack/sql_penetrate2.html][img]http://openwaves.net/images/chinese_blog/BlackHat_2days_2008/sql_penetrate2.png[/img][/url]
然後整個 SQL injection 字串,會被 SQL server 解碼成:
[url=http://www.openwaves.net/armorize_blog/clipboardhijack/sql_penetrate3.html][img]http://openwaves.net/images/chinese_blog/BlackHat_2days_2008/sql_penetrate3.png[/img][/url]
不要說多層編碼,即使只用一層的 URL 編碼,[url=http://wikisecure.net/articles/uri-encoding-to-bypass-idsips/]就可以因為 UTF-8,而使同一個字串幾乎有無限種編碼可能[/url]。譬如一個簡單的:
GET / indexA.html HTTP/1.1
就可以被編碼成:
GET /index%41.html HTTP/1.1
GET /index%2541.html HTTP/1.1 (double percent)
GET /index%%34%31.html HTTP/1.1 (double nibble)
GET /index%%341.html HTTP/1.1 (first nibble)
GET /index%4%31.html HTTP/1.1 (second nibble)
然後如果再利用 2-byte or 3-byte UTF-8 編碼的話,變化又更多了。
但是這整個演講的內容其實對我來說一點都不新,這些編碼來穿透 Web 防火牆的方式大概四五年前很多書還有 paper 都已經介紹得很完整了。整理起來,整個演講的重點就兩個:
一、由於 UTF-8,攻擊字串幾乎有無限種編碼方式。
二、攻擊可以分層的編碼,像上述例子,一層給 web server 解,一層給 SQL server 解。或穿插 URI % encoding 或 UTF-8 encoding、HTML decimal entity encoding、SQL server encoding(char())等混合使用。
聽完後去聽好友 Billy Hoffman([url=http://www.blackhat.com/html/bh-usa-08/bh-usa-08-speakers.html#Hoffman]大會[/url]、[url=http://en.wikipedia.org/wiki/Billy_Hoffman]wikipedia[/url])的演講:「[url=http://www.blackhat.com/html/bh-usa-08/bh-usa-08-speakers.html#Hoffman]擊敗 javascript 分析工具(Circumventing Automated JavaScript Analysis Tools)[/url]」。Billy著有「[url=http://www.amazon.com/Ajax-Security-Billy-Hoffman/dp/0321491939]Ajax Security[/url]」,上次在 [url=http://www.rsaconference.com/2008/US/Home.aspx]RSA 2008[/url] 辦簽名會,我一口氣簽了很多本回來送朋友,讓他高興得不得了。既然是 Billy,當然要照帥一些囉!有沒有注意到左下方 Billy 的筆電?併購後筆電也該 HP 囉!
[url=http://openwaves.net/images/chinese_blog/BlackHat_2days_2008/IMG_2171_filtered_cropped_730.png][img]http://openwaves.net/images/chinese_blog/BlackHat_2days_2008/IMG_2171_filtered_cropped_730.png[/img][/url]
今年講網站掛馬的演講真是多,其實這個題目去年就很紅了,今年年初再加上兩點,使得這個議題紅到不行:
一、年初的大規模自動 SQL Injection 加 網頁掛馬([url=http://www.armorize.com.tw/news/shownews.php?news=23]阿碼新聞稿[/url],[url=http://www.pcworld.com/businesscenter/article/146048/mass_sql_injection_attack_targets_chinese_web_sites.html]PC World(IDG)[/url],[url=http://www.ithome.com.tw/itadm/article.php?c=49121]ITHome[/url])
二、網路掛馬所使用的 javascript 語言,其編碼與變形太過容易(除了大家熟悉的 [url=http://en.wikipedia.org/wiki/MPack_%28software%29]MPack[/url]自動化犯罪工具包,現在線上的 javascript 編碼/變形服務也到處都是:看[url=http://www.cha88.cn/]這裡[/url]和[url=http://www.malwareguru.org/mediawiki/index.php/Collection_of_tools_for_javascript_encryption_%28javascript_packers%29]這裡[/url]。)
Billy 在他的[url=http://www.blackhat.com/html/bh-usa-08/bh-usa-08-speakers.html#Hoffman]摘要[/url]裡就直接提到:「拜 [url=http://en.wikipedia.org/wiki/MPack_%28software%29]MPack[/url]所賜,大部分惡意 javascript 都編碼過
(Obfuscated JavaScript payloads are the norm thanks to malware frameworks like MPACK.)」
的確,根據「[url=http://www-935.ibm.com/services/us/iss/xforce/midyearreport/]IBM X-Force 2008 年終趨勢報告(IBM X-Force 2008 Mid-Year Trend Statistics)[/url]」,2007年後半年,網頁掛馬中 javascript 編碼變形以達 100%:「A year later,
in the second half of 2007, Web browser attack obfuscation approached 100
percent.」
在這個 talk 中,Billy 講了惡意程式變形技術與偵測技術間永無止境的鬥智遊戲。這是我很期待的一個 talk,因為跟我們 [url=http://hackalert.armorize.com/]HackAlert[/url]非常相關。
Billy 今年的研究延續去年 Ben Feinstein([url=http://benfeinstein.net/]網頁[/url]、[url=http://www.secureworks.com/research/blog/index.php/author/ben/]Blog[/url])跟 Daniel Peck([url=http://www.secureworks.com/research/blog/index.php/author/dpeck/]blog-1[/url],[url=http://www.digitalbond.com/index.php/author/daniel-peck/]blog-2[/url]) 講的 [url=http://www.secureworks.com/research/tools/caffeinemonkey.html]Caffeine Monkey[/url] ([url=http://www.secureworks.com/research/blog/wp-content/uploads/bh-usa-07-feinstein_and_peck-WP.pdf]paper[/url]、[url=http://www.secureworks.com/research/blog/wp-content/uploads/CaffeineMonkey.pdf]投影片[/url]、[url=http://www.secureworks.com/research/tools/caffeinemonkey.html]程式碼[/url])。
OKOK,繼續之前,我們先來看看這些人到底在講什麼。
現在的大規模自動網站掛馬([url=http://www.armorize.com.tw/news/shownews.php?news=23]阿碼新聞稿[/url],[url=http://www.pcworld.com/businesscenter/article/146048/mass_sql_injection_attack_targets_chinese_web_sites.html]PC World(IDG)[/url],[url=http://www.ithome.com.tw/itadm/article.php?c=49121]ITHome[/url])都是利用 SQL Injection 漏洞在網頁裡安插惡意的 javascript。這些 javascript 都經過變形(或稱編碼)。利用 MPack,甚至可以動態變形,也就是說,每一個訪客所下載到的網頁,裡頭的 javascript 都經過不同的變形。
變形的 javascript 到底長什麼樣子?我們就拿我之前寫的「[url=http://armorize-cht.blogspot.com/2008/08/registerweb.html]神秘 Web 攻擊綁架剪貼簿[/url]」來看好了,其中用的一段範例 javascript:
[url=http://www.openwaves.net/armorize_blog/clipboardhijack/clipboard_original.html][img]http://openwaves.net/images/chinese_blog/BlackHat_2days_2008/clipboard_original.png[/img][/url]
[b]圖 1[/b]
好,現在我們用 [url=http://www.malwareguru.org/]malwareguru[/url] 上的[url=http://www.malwareguru.org/mediawiki/index.php/Collection_of_tools_for_javascript_encryption_%28javascript_packers%29]線上編碼工具[/url] Vanishing Point Packer([url=http://code.google.com/p/vanishingpoint/]網頁[/url]、[url=http://malwareguru.com/JSPacker/JavaScriptPacker.php]malwareguru 上提供的線上 demo[/url]),把上面這一段 javascript 貼進去,按「pack」,原本的 javascript 就變成了以下這段了:
[url=http://www.openwaves.net/armorize_blog/clipboardhijack/clipboard_packed.html][img]http://openwaves.net/images/chinese_blog/BlackHat_2days_2008/clipboard_packed.png[/img][/url]
[b]圖 2[/b]
網路上隨便 Google 「javascript obfuscator」或「javascript packer」,可以找到一堆線上的服務,每一個變形出來都不太一樣。舉幾個例子:
[url=http://www.yellowpipe.com/yis/tools/source-encrypter/index.php]Yellopipe source code encrypter[/url]:
[url=http://www.openwaves.net/armorize_blog/clipboardhijack/wayne_hello_yp.html][img]http://openwaves.net/images/chinese_blog/BlackHat_2days_2008/wayne_hello_yp.png[/img][/url]
[b]圖 3[/b]
[url=http://www.auditmypc.com/html-encoder.asp]Audit My PC HTML Encoder:[/url]
[url=http://www.openwaves.net/armorize_blog/clipboardhijack/wayne_hello_amypc.html][img]http://openwaves.net/images/chinese_blog/BlackHat_2days_2008/wayne_hello_amypc.png[/img][/url]
[b]圖 4[/b]
中國的「[url=http://www.cha88.cn/safe/jsvbscode.php]网?免? 孤程?雪[/url]」線上服務:
[url=http://www.openwaves.net/armorize_blog/clipboardhijack/wayne_hello_cn.html][img]http://openwaves.net/images/chinese_blog/BlackHat_2days_2008/wayne_hello_cn.png[/img][/url]
[b]圖 5[/b]
嗯嗯,圖五很熟悉吧?各位 IT 應該都不陌生...是的,這種編碼方式很受到前一波掛馬駭客的喜愛,很多網站掛馬都長得很像圖 5...所以我們把這個「[url=http://www.cha88.cn/safe/jsvbscode.php]网?免? 孤程?雪[/url]」站的話面貼出來一下好了:
[url=http://openwaves.net/images/chinese_blog/BlackHat_2days_2008/cha88.png][img]http://openwaves.net/images/chinese_blog/BlackHat_2days_2008/cha88.png[/img][/url]
[b]圖 6[/b]
編碼還可以分很多層,可以用不同的編碼器編過幾層。看到這些,我們想一想,現在很多 gateway 產品,都號稱他們可以及時偵測與阻擋惡意網頁...現在網路頻寬都很大,在這麼大的頻寬下,一個 gateway 裝置要 buffer 住所有的 HTTP response,然後即時的執行 javascript 解碼,然後識別惡意程式...您相信嗎?
看著圖 1-5,您也許會想,編碼過的 javascript 都有一些特徵,例如都是一堆的數字,偵測這些特徵,不就可以偵測到惡意的 javascript 了嗎?問題是這會有很多的誤判。因為原本這些 javascript 編碼器,都不是拿來做網站掛馬的,而是用來保護 javascript 的智慧財產權的。Javascript 必須要在瀏覽器上執行,所以不論你花多少時間寫 javascript,最後誰都可以拿到你的程式,因為 javascript 不會編譯成執行檔,而是直接以程式碼的方式傳到瀏覽器上,再由瀏覽器執行。所以為了要保護 javascript 程式不要輕易的被有心人研究,許許多多的程式設計師,都會將自己的 javascript 利用上述這些編碼器編碼或變形。也就是說,[b]編碼過的 javascript 不見得都是惡意的,很多大型網站上,擁有非常多編碼過的 javascript,大部分商售的 javascript,也都經過編碼變形[/b]。究竟有多少 javascript 編碼器?很多,連 Yahoo! 都提供 [url=http://developer.yahoo.com/yui/compressor/]Yahoo! 的 javascript 編碼器[/url],也介紹其他好用的編碼器。
好吧,那到底該如何偵測呢?[url=http://hackalert.armorize.com/]HackAlert[/url]用的是實際的瀏覽器環境,所以沒有問題,不論什麼樣的 javascript 變形方式,或者此 javascript 攻擊什麼樣的未知的 0day 弱點,反正只要試圖攻擊,就一定測得到。可是這樣的技術要對 windows 環境以及各 browser 的構造很熟才行。
這次在 Black Hat / DEFCON,在會後的一些 meeting 中,我發現一個很有去的現象,就是在偵測網站掛馬方面,「使用者」(大銀行,大企業,軍方,情報單位)的功力,有時反而比廠商甚至講師更強。探討下來,因為網站掛馬太嚴重了,可是廠商都沒有好的解決方案,號稱可以測到的,其實都是用靜態分析或黑名單方式,沒有辦法即時,辨識率也偏低,所以這一年下來,「使用者」只好 DIY,自己利用 [url=http://www.secureworks.com/research/tools/caffeinemonkey.html]Caffeine Monkey[/url]([url=http://www.secureworks.com/research/blog/wp-content/uploads/bh-usa-07-feinstein_and_peck-WP.pdf]paper[/url]、[url=http://www.secureworks.com/research/blog/wp-content/uploads/CaffeineMonkey.pdf]投影片[/url]、[url=http://www.secureworks.com/research/tools/caffeinemonkey.html]程式碼[/url])或 [url=http://www.mozilla.org/js/spidermonkey/]spidermonkey[/url]來偵測([url=http://isc.sans.org/diary.html?storyid=4724]SANS最近也玩了一下[/url]),但是就如同 [url=http://isc.sans.org/diary.html?storyid=4724]SANS 的 Daniel Wesemann 說的[/url]:「But SpiderMonkey is only a JavaScript engine - it doesn't emulate the browser and doesn't even have a "document" or "location" object...」。[url=http://www.secureworks.com/research/tools/caffeinemonkey.html]Caffeine Monkey[/url]就是建構在[url=http://www.mozilla.org/js/spidermonkey/]Spidermonkey[/url]之上。SpiderMonkey 是 Mozilla 的 javascript 執行器,但是不是一個瀏覽器,還缺很多環境,Caffeine Monkey 一方面設法補足,一方面增加了一些自動偵測的技巧。
Billy 今年的 talk,則是針對諸多以 [url=http://www.mozilla.org/js/spidermonkey/]SpiderMonkey[/url]為基礎的偵測方式做破解,列了一打以上的破解方式,不過基本上可以粗分為兩類:
一、偵測抓網頁的是否是真的人還是要偵測的機器人(執行 [url=http://www.mozilla.org/js/spidermonkey/]SpiderMonkey[/url]之類的)
二、直接用一些方法,讓以[url=http://www.mozilla.org/js/spidermonkey/]SpiderMonkey[/url]為基礎的的自動偵測失效。
對於(一),Billy 列了很多的方法,包含了 HTTP/browser fingerprinting、DOM testing and encrypting、Doman and Network testing、Execution environment testing、cross plugin communication testing 等等。Billy 的演講是針對 [url=http://www.mozilla.org/js/spidermonkey/]SpiderMonkey[/url]和 [url=http://www.secureworks.com/research/tools/caffeinemonkey.html]Caffeine Monkey[/url] 設計的,所以這次講的方法對以這些為基礎的技術或產品真的很有效。以這些為基礎的產品很多嗎?非常多,因為這些是開放源碼的程式,現在很多公司都是看到客戶有需要了,不做研究,不花功夫,拿一些開放源碼的程式整合一下,就把產品推出了。有的時候從客戶那邊聽到這些業務的語言,我真的不敢相信,怎麼大家都這麼敢虎!客戶又不是笨蛋,你說你功能都有,其實是那一些開放源碼堆起來的,客戶難道就不會測試嗎?我接觸的客戶技術水準都越來越高,這些說話不打草稿的業務,應該會越來越吃虧。
Billy 講的方法,基本上對 HackAlert 都無效,因為 [url=http://hackalert.armorize.com/]HackAlert[/url]後端基本上就是一套跟使用者一模一樣的環境,是我們自己開發的,不是拿開放源碼的程式湊的。
對於(二),則分兩方面。一方面,因為 SpiderMonkey 畢竟不是整個瀏覽器環境,所以很容易可以用一些方法偵測出,執行的環境是「人」在用的瀏覽器,還是偵測用的環境。如果次偵測用的環境,那就不發動攻擊,環境也就測不出來了。另一方面則是利用 SpiderMonkey 環境跟真正瀏覽器環境的不同,把 javascript 設計成,在 SpiderMonkey 環境下無法成功執行,那麼 SpiderMonkey 就測不到了。
一樣,對 SpiderMonkey 很有效,對 [url=http://hackalert.armorize.com/]HackAlert[/url] 則無效。
但是看這兩種攻擊,其實用一句 Billy 最後講的話就可以總結了:「現在我碰到的網站掛馬越來越多是用 vbscript 而非 javascript。[url=http://www.mozilla.org/js/spidermonkey/]SpiderMonkey[/url]和 [url=http://www.secureworks.com/research/tools/caffeinemonkey.html]Caffeine Monkey[/url] 都只支援 javascript,所以一旦惡意程式用 vbscript,所有這些偵測方法都完蛋了。」
寫到這邊,如果您回去看 圖 6,左上角的第二個和第三個按鈕:「VB 網頁加密」、「VBS 腳本加密」,也就說明了一切--在必要的情況下,駭客用 vbscript。
於是 Billy 在演講中強調又強調,目前沒有開放源碼的 vbscript parser,造成他研究的瓶頸。我會後跟他說,vbscript 雖然是很爛的語言,但是文法還是能表示出來,我們約花一個月時間就做出 vbscript 的 parser 了。所有語言裡面,vbscript 的語法最模擬兩可,最難用 lalr 表示出來,但是解譯不只需要 parser,還需要處理如 scoping 等等,幾乎等於需要一個 compiler,所以即使他弄出了 parser,後面的功夫還很大。他問我們為何這麼快可以完成 vbscript parser。問題是...我們本來就是源碼檢測的公司,parser 跟 grammar 對於源碼檢測或 compiler 的公司來說,是基本功。我們原本做 vbscript parser,是為了 [url=http://www.armorize.com/corpweb/en/products/codesecure]CodeSecure[/url]對 ASP 語言的支援,不是要偵測惡意程式。
至於我們的 vbscript parser,是否會用在 [url=http://hackalert.armorize.com/]HackAlert[/url] 中,輔助偵測網站掛馬呢?目前看起來沒有必要。不論是 javascript 或 vbscript,這些都是 interpreted 語言,不是 compiled 語言。Interpreted 語言,動態可以產生新程式,語法也較不嚴謹,太多狀態需 runtime 時才能決定,非常不利於靜態分析技術。[url=http://hackalert.armorize.com/]HackAlert[/url] 目前動態偵測方面,完全模擬使用者環境,偵測率很高,不需要再靠其他方式。
最後 Billy 你說我們的 vbscript grammar 可否開放源碼,這我們得思考看看了。
[url=http://www.digitalbond.com/index.php/2008/08/08/blogging-blackhat-day-two/]這裡[/url]可以看到 [url=http://www.secureworks.com/research/blog/index.php/author/dpeck/]Daniel Peck[/url] ([url=http://www.secureworks.com/research/tools/caffeinemonkey.html]Caffeine Monkey[/url] 作者之一)
[url=http://www.digitalbond.com/index.php/2008/08/08/blogging-blackhat-day-two/]blog 對於 Billy 這場演講的看法[/url]。
Billy 的演講一向都很受歡迎,如果您想要聽,他有一場 2007 年底在 Google Toolkit Conference 上講的 Ajax Security:
[url]http://tw.youtube.com/watch?v=hKrvY42dw1A&eurl=http://armorize-cht.blogspot.com/2008/08/black-hat-2008_18.html[/url]
Ok,我必須承認,在 Billy 演講的中間,我落跑了 20 分鐘... 我去聽了 Justin Clarke ([url=http://www.blackhat.com/html/bh-usa-08/bh-usa-08-speakers.html#Clarke]大會[/url]、[url=http://www.justinclarke.com/]blog[/url])的短演講:「[url=http://www.blackhat.com/html/bh-usa-08/bh-usa-08-speakers.html#Clarke]SQL Injection 蠕蟲:為了興趣也為了利益(SQL Injection Worms for Fun and Profit)[/url]」。看這就知道今年網頁掛馬熱到什麼程度了,竟然同一時間有兩個演講,逼不得已只好跟 Billy 請個假了!
Justin Clarke ([url=http://www.blackhat.com/html/bh-usa-08/bh-usa-08-speakers.html#Clarke]大會[/url]、[url=http://www.justinclarke.com/]blog[/url])是 [url=http://oreilly.com/catalog/9780596007942/]Network Security Tools[/url] (O'Reilly)的作者,也是 [url=http://www.gdssecurity.com/l/t.php]SQL Brute[/url] 工具的作者。
[url=http://openwaves.net/images/chinese_blog/BlackHat_2days_2008/IMG_2214_filtered_cropped_WB_730.png][img]http://openwaves.net/images/chinese_blog/BlackHat_2days_2008/IMG_2214_filtered_cropped_WB_730.png[/img][/url]
Justin 主要就是講今年年初開始的大規模 SQL injection 加網站掛馬攻擊,但是我發現,我們對這些攻擊的掌握度似乎更快。基本上他所有講的,我們在之前都公開過了:[url=http://www.armorize.com.tw/news/shownews.php?news=23]阿碼新聞稿[/url],[url=http://www.pcworld.com/businesscenter/article/146048/mass_sql_injection_attack_targets_chinese_web_sites.html]PC World(IDG)[/url],[url=http://www.ithome.com.tw/itadm/article.php?c=49121]ITHome[/url]
整理重點:大規模攻擊,SQL Injection 指令設計得很好,針對微軟的平台,利用 Google (?q=)找尋攻擊點,SQL Injection 的目的是為了要掛馬...等等。這邊重點是,雖然 [url=http://hackalert.armorize.com/]HackAlert[/url]可以偵測掛馬,但是為何會被入侵掛馬?都是因為有 SQL Injection 漏洞,故需把程式改好,才是徹底解決之道。今天聽到現在已經第三場講大規模 SQL 加掛馬了,大家的 SQL 漏洞快修修吧!
聽完又回去捧場 [url=http://jeremiahgrossman.blogspot.com/]Jeremiah[/url]了,這回他帶同事一起講:「[url=http://www.blackhat.com/html/bh-usa-08/bh-usa-08-speakers.html#Grossman]Get Rich or Die Trying - "Making Money on The Web, The Black Hat Way"[/url]」。
[url=http://openwaves.net/images/chinese_blog/BlackHat_2days_2008/IMG_2410_filtered_cropped_730.png][img]http://openwaves.net/images/chinese_blog/BlackHat_2days_2008/IMG_2410_filtered_cropped_730.png[/img][/url]
Jeremiah 這次講的,跟我上次安排他來台北(他blog的[url=http://jeremiahgrossman.blogspot.com/search?q=owasp+asia]遊記1[/url]、遊記1,值得看)講的「商業邏輯錯誤(Business Logic Flaws)([url=http://jeremiahgrossman.blogspot.com/2007/09/business-logic-flaws-freshly-minted.html]他的 blog[/url]、[url=http://www.whitehatsec.com/home/assets/WP_bizlogic092407.pdf]paper[/url])」其實是一樣的,只是多花了一些時間整理出更有去的內容:怎樣可以利用這些邏輯錯誤來賺錢(其實也就是會造成什麼損失啦!)。但是所介紹的邏輯錯誤本身,跟在台北講的那場差不多。他帶著年輕的同事 Trey 一起講,感覺是要訓練後輩,而 Trey 以這麼輕的年紀,這麼滿的一間,台風算很好了,應該沒讓 Jeremiah 失望啦!
他們這次的投影片可以在[url=http://www.whitehatsec.com/home/assets/presentations/PPT_BlackHat080708.pdf]這裡下載[/url],也可以直接看線上的版本:
View SlideShare [url=http://www.slideshare.net/jeremiahgrossman/black-hat-08072008?src=embed]presentation[/url] or [url=http://www.slideshare.net/upload?src=embed]Upload[/url] your own. (tags: [url=http://slideshare.net/tag/flaws]flaws[/url] [url=http://slideshare.net/tag/logic]logic[/url])
講完後他們接受的訪問在這裡:
[url]http://tw.youtube.com/watch?v=6Y8cU4kVqHg&eurl=http://armorize-cht.blogspot.com/2008/08/black-hat-2008_18.html[/url]
最後去了 Matthieu Suiche ([url=http://www.msuiche.net/]blog[/url]、[url=http://www.blackhat.com/html/bh-usa-08/bh-usa-08-speakers.html#Suiche]大會[/url])的演講:「[url=http://www.blackhat.com/html/bh-usa-08/bh-usa-08-speakers.html#Suiche]Windows Hibernation File for Fun and Profit[/url]」。Matthieu 是專門分析 Windows 休眠檔工具 [url=http://sandman.msuiche.net/]Sandman[/url]的作者。
[url=http://openwaves.net/images/chinese_blog/BlackHat_2days_2008/IMG_2607_filtered_730.png][img]http://openwaves.net/images/chinese_blog/BlackHat_2days_2008/IMG_2607_filtered_730.png[/img][/url]
他對於這次演講的[url=http://www.msuiche.net/2008/08/11/black-hat-usa-2008-slides-and-demos/]在這裡[/url],投影片在這裡:[url=http://msuiche.net/con/bhusa2008/Windows_hibernation_file_for_fun_%27n%27_profit-0.6.pdf]PDF[/url]、[url=http://msuiche.net/con/bhusa2008/Windows_hibernation_file_for_fun_%27n%27_profit-0.6.pptx]PPTX[/url],[url=http://msuiche.net/con/bhusa2008/SandMan-BHUSA2008-Demos.zip]demo]環境在這裡[/url]。其實內容跟我們在台北辦的 [url=http://syscantaiwan.blogspot.com/]SySCAN Taipei 2008[/url]裡 PK 講的「犯罪現場: Windows 記憶體內容擷取與鑑識」差不多,基本上就是 demo 從分析記憶體或休眠檔,可以取出非常多的資訊。PK 那場講得非常好,我很感謝他。PK 的許多內容應該都是參考 [url=http://www.msuiche.net/]Matthieu Suiche[/url]的,因為 Matthieu 是這方面的先驅,修眠檔的資安問題方面研究,他算是祖師,他的 [url=http://sandman.msuiche.net/]Sandman[/url]也是現在這方面最領先的工具之一。
好啦!終於寫完啦!感謝各位花時間看完。這些資安會議多跑幾個,攻擊的趨勢,技術的進步,產業的趨勢就都很容易掌握了。沒有時間去的就看我的 blog 囉。另外我們在台灣辦的會議,品質也都很好,有空可以多來。
之後我會寫 DEFCON 以及綜合起來這次我的心得。此篇是詳細報導,已經太長了,沒法寫心得啦!
Thanks for reading!
轉貼自: [url]http://armorize-cht.blogspot.com/2008/08/black-hat-2008_18.html[/url]