阿碼外傳-阿碼科技非官方中文 Blog: 08/01/2008 - 09/01/2008

2008年8月27日

Joomla Hack Analysis

Joomla 是一套使用 PHP 程式語言加上 MySQL 資料庫所開發的內容管理系統(CMS, Content Management System),可以在 Linux、Windows、Mac OS X 等各種不同的平台上執行。目前 Joomla 是由 Open Source Matters (www.opensourcematters.org) 這個開放源碼組織進行開發與支援,組織的核心成員約 150 人,來自全世界各地,其中包含了開發者、設計者、系統管理者、文件撰寫者,另外有超過 9 萬名(2007.3)的參與會員。更多相關資訊可參考Joomla 官方網站

此漏洞名為:「Remote Admin Password Change」(CVE-2008-3681MILW0RM:6234BID:30667)於2008年8月12日被公開之後,Joomla 的官方網站在當天就緊急發布了 1.5.6 的更新,也呼籲所有 1.5 版本要趕快升級到 1.5.6 ,不然管理者的密碼有可能會被入侵修改。但是大多數使用者,可能還不知道有這回事呢,導致大家如果有看到近期這幾天被淪陷網站紀錄,很多都是 Joomla,請參考新聞:大量 Joomla 系統網站遭入侵

Joomla 居然這麼容易就被打下讓我們非常的好奇,於是就分析了一下 Joomla 1.5.5 原始碼。這個弱點其實不是針對程式碼來做攻擊(例如 SQL Injection 或 XSS),而是針對 Joomla 本身 business logic 的漏洞,Joomla 原先重設密碼都是要求使用者輸入 email,程式將密碼直接寄到使用者的 email,但是在1.5版之後,Joomla 改成寄送一個 32 bytes 的 token 到使用者的信箱,使用者在 Joomla 上再使用這個 token 來設定密碼。

以下是重設的 function:

function confirmReset($token)
{
global $mainframe;

$db = &JFactory::getDBO();
$db->setQuery('SELECT id FROM #__users WHERE block = 0 AND activation = '.$db->Quote($token));

// Verify the token
if (!($id = $db->loadResult()))
{
$this->setError(JText::_('INVALID_TOKEN'));
return false;
}

// Push the token and user id into the session
$mainframe->setUserState($this->_namespace.'token', $token);
$mainframe->setUserState($this->_namespace.'id', $id);

return true;
}

一般常見的入侵方式是偽造一個密碼重設的要求,再預測 token 的值。Joomla 使用 GUID 作為 token,被預測的可能性相當低。然而,Joomla 卻犯了一個邏輯上的錯誤。一般類似的密碼重設功能,都會在資料庫中紀錄使用者是否有要求重設密碼,如果有要求,才會比對 token。但是 Joomla 卻是直接比對 token,在資料庫中,沒有要求重設密碼的使用者的 token 當然是一個空字串,因此,只要在 token 欄位的值是一個空字串即可,Joomla 的重設網頁是使用 JavaScript 來檢查 TextBox 是否為空,因此只要將 JavaScript 關閉,按下 Submit,即可重設ID最小的使用者的密碼,而 ID 最小的使用者通常都是 admin。

另外,由於 Joomla 在將 token 送進資料庫前,會將 token 中的符號過濾掉,因此,我們也可以不用關閉 JavaScript,直接在 TextBox 中隨便輸入幾個符號,進入資料庫比對的 token 一樣是空字串。

Joomla 1.5.6修補了這個弱點,修補的方法是在 confirmReset 中加入了下面的程式碼:

if(strlen($token) != 32)
{
$this->setError(JText::_('INVALID_TOKEN'));
return false;
}

強制與資料庫比對的 token 長度一定要是32 bytes,因此空字串都會輸出 IVALID_TOKEN 錯誤。

正確的修補方式應該是在資料庫中加上一個型態為 bit 的欄位,紀錄使用者是否有要求重設密碼。但是這樣的修補方式必須要更動到資料庫,而 Joomla 1.5.6 的修補方式只需要覆蓋一個檔案即可。我們認為 Joomla 這算是一個救火的修補方式,也期待在 Joomla 的下一個 major release 中,能夠以加上 bit 欄位的方式來修補這個問題。

目前我們已通知許多使用 Joomla 1.5 - 1.55 還存有安全漏洞的使用者以免更多的無辜使用者被攻擊。


作者 Sun 與 Jim 為 阿碼科技 資安顧問

繼續閱讀全文...

2008年8月24日

利用「關鍵字廣告」的詐騙--也在google出現

先來看看一些消息:
iThome online:小心關鍵字廣告連結惡意網頁
ZDNet Taiwan:關鍵字廣告成網路釣魚工具
資安人:Yahoo!奇摩關鍵字洩個資!
Sunbelt Blog:The continuing problem of malware being advertised in Google Adwords
刑事警察局:兩岸駭客設置變種網路釣魚網站竊取網路銀行等企業大量個人資料
資安之我見:偽裝成防毒軟體網站

去年「關鍵字廣告」的詐騙在我們這就已經相當夯了,鬧得沸沸揚揚,所以google上也是一定會有的事;最近國外開始利用了,畢竟,這類手法得花些成本的,所以沒有計畫就做,很容易賠老本哩...XD。既然人家都花錢做了,我們也應該欣賞一下囉!順便中英手法比較一下有啥不同呢?

我們這是「利用yahoo關鍵字」的手法,先來恢復一下記憶:

上面這圖已經有很多網站或部落格用過,大家可能比較有印象點,來源好像是自由電子報的。

這手法在2006年底就出現了...到2007年二月才爆發出來。

這是哪家銀行咧,看得出來嗎?都跟正牌銀行差一個字母喔?正牌銀行也是受害者的。

前面兩張圖是分類廣告不用錢的,這張圖是「贊助網站」要錢的哩!

上面這些廣告連結都是餌,會連結到駭客「控制」的網站,利用網頁掛馬的方式,使瀏覽者的電腦植入惡意程式,再利用植入系統的木馬,竊取個人金融資料,盜領帳戶金額。
簡單的說就是在大型搜尋網站買下「關鍵字廣告」行銷,蒐尋「網路銀行」、「航空公司」、「旅行社」、「電腦科技公司」、「人力銀行」等關鍵字會有五十多個假網頁,誤點連結的就可能被植入木馬程式,竊取個人信用資料和帳號密碼,進行盜轉存款、預借現金、小額付費、網路購物等盜領洗錢犯罪。

國外是「利用google adware」的手法,來看看幾張圖:

#Sponsored Links(贊助商連結)

#Sponsored Link(贊助廠商廣告)

#Ads by Google(Google提供的廣告),一般網站有提供google廣告的
以上三張圖出自Sunbelt Blog的這裡還有這裡

看出端倪了嗎?知道上面連結或廣告的差異嗎?「Sponsored Links(贊助商連結)」、「Ads by Google(Google提供的廣告)」及google搜尋的結果,都是可以利用的,搜尋出來的網站可能就是釣魚網站。
我想十之八九都是很難分辨的,所以才會有一堆所謂的「網站信譽評等軟體」來幫你挑出已知有問題的網站;要特別注意的是有列出來的九成九是有問題,沒列出來的也有可能是有問題的,可以參考最後一段。

連上網站,看起來就像是一個防毒軟體的網站,如果下載安裝,結果安裝的會是惡意程式。網站的樣子可以參考這

結論:
1.必須強調,兩手法都是有計畫的行動,註冊網域及贊助廣告...都是要花錢的。
2.以細膩度而言,「利用yahoo關鍵字」手法勝出,因為它一開始就是短期大量,利用相似字眼,所以設計的手法較細膩。
3.以延續性而言,「利用google adware」手法勝出,因為它有釣魚網站的基礎,所以可以打持久戰。
4.「利用yahoo關鍵字」手法利用的都是"別人"的網站,且利用瀏覽器漏洞植入惡意程式,再偷取個人資料的攻擊主軸。
5.「利用google adware」手法完全使用騙術,簡單的說就是騙你是防毒軟體,要你下載檔案安裝,但實際安裝的是惡意程式。
6.是否夾帶其他手法,我想一定有的,至少釣魚郵件就是很好的利用管道。

這裡也整理一下有哪些「網站信譽評等軟體」:
*McAfee SiteAdvisor
http://www.siteadvisor.com/analysis/
*Trend TrendProtect:TrendProtect is a FREE browser plug-in that helps you avoid Web pages with unwanted content and hidden threats.
http://www.trendsecure.com/portal/en-US/tools/security_tools/trendprotect
*Firetrust Sitehound: prevents visits to malicious websites, phishing, spyware, exploits, scams, fraud and more.
http://www.firetrust.com/
http://www.firetrust.com/en/products/sitehound
*Haute Secure: free software to protect your computer from malware
http://hautesecure.com/
*Scandoo: based on ScanSafe's web security technology
http://www.scandoo.com/
*Web Security Guard: Lets you review a website's content, threat level and brief description before you enter it.
http://www.websecurityguard.com/
*WOT, short for "Web of Trust," is a community whose members exchange knowledge of websites: Can they be trusted?
http://www.mywot.com/
*Finjan SecureBrowsing provides you with safety ratings of URLs showing in your browser.
http://securebrowsing.finjan.com/
*Norton Safe Web is a new reputation service from Symantec. Our servers analyze Web sites to see how they will affect you and your computer.
http://safeweb.norton.com/

作者 Crane 為 阿碼科技 資安顧問


繼續閱讀全文...

2008年8月23日

電腦犯罪之數字搜查線(一) : 掛馬集團奧運也休兵

之前有看過一部影片,叫做「數字搜查線(Numb3rs)」 裡面就是有很誇張的數學模型,利用數學統計方式可以找到兇手、預測下一波的犯罪地點、對象甚至時間,不過我們沒那麼神奇,只是發現一些有趣的現象跟大家分享一下。

熱鬧的奧運即將閉幕,奧運期間在運動場上有運動選手的廝殺,網路上的你來我往更是場還沒有中止的競賽,現在的運動比賽講究的是資訊情報的蒐集,搞資訊安全也是,要能夠掌握威脅與攻擊的來源和手法,才能及早發現問題發布警訊和防禦措施。說也很巧,這陣子奧運期間,網路上的惡意網站與釣魚有一波搭著奧運順風車的主題,像是奧運門票、奧運照片還有各大新聞媒體的仿真惡意信件、攻擊奧運選手和奧委會的惡意信件。

但是都沒有下面我要談的這個有趣,奧運在8月8日晚上8點舉行開幕式的前後,惡意程式下載點(landing site)幾乎在瞬間都脫鉤(在此指:把domain name對應到其他連結不到的IP位址,或者停止活動),時間點就是晚上的八點多,大概和筆者一樣跑去看開幕轉播,還是跑去現場看鳥巢飛人,這就不得而知了。(註: 也有可能跑去吃飯、上廁所…不過按照以往的歷史資料顯示比較不合乎行為模式)

在這張圖可以看出來,8/8~8/14 奧運熱潮期間惡意網站活動量大量地減少(甚至停止活動),到了8/15(星期五)也是中元節(拜好兄弟的),竟然飆出破紀錄的活動量,看來是要弭補一下這一週的怠惰,還是碰上甚麼超自然現象(汗|||…)。



因為這次奧運在北京舉辦的關係,秉持著同一個世界同一個夢想的製藥理念(註:棒球比賽最常看到的廣告詞),再進一步分析下載點(惡意程式下載IP分布位於中國者)的位置分佈,冠軍是….北京市,之前有聽說北京這次奧運要封網,不過根據這次的資料統計結果,我們還是要把金牌頒給辛苦舉辦奧運的北京市。
(註: 下載點位置以美國地區最多,中國其次,台灣太小,排不上。)



同時在 Mass SQL Injection 的比賽項目中,也是有配合奧運開幕休兵的現象,8/7~8/8幾乎是全線休兵,至17日為止總計69個攻擊來源(來信索取 info_at>armorize.com),包含烏克蘭、土耳其、中國、臺灣、南韓、越南、澳大利亞、巴西、印度,基本上就像是一場小型的奧運會。這回第一名還是留給中國,第二名: 南韓,第三名: 台灣 (靠…又是銅牌)。記者來自北京現場的烤鴨報導~

註: SmartWAF 收到的攻擊來源,感謝 SmartWAF Team 的支援

作者 Jack 為阿碼科技 資安顧問

繼續閱讀全文...

2008年8月20日

駭客年會Black Hat / DEFCON 2008 心得一:地下犯罪經濟成熟,影響會議品質?

(此篇續「美國駭客年會 Black Hat 2008 觀察--第一天」與「美國駭客年會 Black Hat 2008 觀察--第二天」)

其實阿碼科技一年要去很多會議,但是大部分是參展,不單純是參加。可是我發現參展時我就比較不能專心聽演講,因為總是有 VIP 客戶會來 booth,那我就必須要在攤位「站台」。自己當講師的時候就更慘了,通常我都最後一分鐘還在做投影片。Black Hat / DEFCON 我們明年才會擺攤位,所以我今年就比較輕鬆些,可以享受專心聽演講的樂趣!不過這些會議跑多了,有經驗的講師一年中講的都大同小異,沒有經驗的講師,講的我又聽不太下去,有時也會覺得浪費時間。

Jeff Moss
(aka Dark Tangent)是 Black Hat / DEFCON 駭客年會的創辦人與主席,每年的會上,他都會接受媒體的採訪。他今年的採訪,主要談到了地下經濟的成熟,對於駭客年會的影響。以下是訪問的影片:



在影片中 Jeff 談到,其實這幾年他的會議收到的投稿,品質有逐年下滑的趨勢。去年他覺得可能是現在資安會議多了,大家很多地方可以投,但是後來研究其他會議的內容發現,也並沒有,那究竟原因是為什麼呢?

今年他找到答案了:地下犯罪

「其實我這一兩年都發現,我的會議收到的投稿,品質有下滑的趨勢。一開始我想,可能資安不會一直那麼紅吧,大家有其他事情做,或者,現在會議多了,大家不一定都選擇把東西投到我的會議來。可是我詳細研究其他會議的陣仗,發現他們也沒有收到好的研究!」

「於是我找了一些朋友談,發現這一兩年,因為地下犯罪經濟的起飛,造成研究員在公布弱點時,開始有了策略性的選擇。」

「以前大家發現弱點,都會來投稿,這會使他們出名,在朋友前面很屌。但是現在這些弱點價值不斐,所以很多人變成藉此獲利,而非投稿出名。」

「他們變成會這樣思考:好,我找到了一個 0day,公開可以讓我出名...可是我已經很有名了,賣錢大概可以賣五萬美金。那我真的要去 Black Hat 公開嗎?公開什麼錢也拿不到,大不了讓我找到一份顧問的工作。」

「所以不只我們,整個資安社群都正受到影響。」

「老一輩有經驗的不來投稿,後輩就沒有對象可以學習。我想這現象已經發生了好幾年了
但是就是今年特別明顯,所以今年,我終於知道投稿內容品質下滑的原因了。」

「因為今年這樣的市場達到了一個高峰,不論是商業上的市場,或地下犯罪市場都已經成熟。很重要的是,弱點的市價,大家也有了共識。例如如果 0day 可以讓你得以 ssh 到目標機器,市價大概是 10萬美金,如果是遠端能控制 Cisco 的弱點,市價約 15萬美金。小的弱點也有幾千塊。所以,市場已經成長成熟了。」

以前在我的文章中,演講中,我都有提到過這個問題。我從很小就接觸電腦,國小就會寫 x86 組語了,網路從 300 bps 的數據機開始玩。那時資訊不流通,但是至少有 BBS,很多技術很靠朋友間互相的分享流通。但是那時我們都很年輕,懂得技術之後,就像小孩拿了一把利刀,很多朋友因此迷失了,被 FBI 抓了,被 CIA 驅逐出境了,離開學校專門幫企業偷盜對手的機密,或為情治單位使用,以為有了強大的靠山,結果無法無天有了不可收拾的後果。

所以像是大專資安技能競賽金盾獎開辦時,我就寫過文章談到,一方面,不懂得攻擊,不可能懂防守,之前大家一直說,學校教的資安課程太理論,資安不是只有密碼學。結果終於有了大專資安技能競賽金盾獎出來,學校也開始開這方面的課程了。

技術的環境有了,可是相對應人格的培養呢?為何軍人與警察的道德要求要比一般高?因為他們受過訓練,他們擁有武功,一把劍有兩面刃,所以軍校或警察學校在培養這些能力時,都會特別加強人格的養成訓練。

想一想多少電影的故事背景,壞人都是曾經幫國家出生入死的軍人、特殊部隊、情治人員、警察,後來因為對國家腐敗失望,而有了價值觀的反轉?

資安技術目前很有用,年輕人有了好的技術,不但可以有好的前途,對國家一些特殊單位,也會很有幫助。可是在讓年輕人幫忙的同時,有誰注意到了人格的培養?

今年在 DEFCON,我還沒看到 Jeff Moss 上面這段影片,但是發生一件事,也喚起我很多回憶。我跟一群講師坐在一間休息室聊天,他們急著秀我一些東西,但是大家的 3G 卡訊號都很弱。

講師 A:「有誰犧牲一下,筆電拿來上這裡的 wifi 吧!我的不行,我這台就是我平常在用的,今年聽說有網卡的 0day,一連上可能就中 rootkit 了...」

講師 B:「哈哈!我來上啦!以前我會相信,這裡網路有這樣的 0day 正在掃瞄。但是現在,不用擔心啦!這種網卡的 0day,你知道現在值多少錢嗎?我不相信有人會甘願拿來 DEFCON 用,用了就被別人發現了。現在不像以前啦!現在這些東西很有價的...沒人還這麼笨啦!」

我:「原來世界的趨勢都一樣啊!」

當然,以前這些事也很多,但是沒像現在這麼公開,這麼普及。因為環境比較單純,所以大家研究多是純為興趣,不會夾雜其他的目的。

以下是一段中國玩資安技術的人在 2007 年底貼出來的文,恰好呼應了 Jeff Moss 所說的(我把文轉成繁體了,原文在這裡):




為什麽近幾年公開的技術交流越來越少
2007-12-08 11:54

這個問題很復雜,說是說不清楚的,只能扯一扯。先扯個大概吧。

首先,得明確一點:任何人都沒有義務公開自己的研究,任何人都沒有權利要求別人公開自己的研究——尤其是那些自己沒公開過什麽的人。不過似乎不少人都有自己的一套理論,能夠找出充分的理由來為此義憤填膺,就像七八歲的小男孩得不到想要的遊戲機一般義憤填膺。

從我這些年的經驗來看,在英語世界裏,北歐技術交流氣氛最好。其次是中歐,再次西歐,美國排最後。為什麽呢,因為像瑞士、瑞典、芬蘭這樣的披著資本主義狼皮的社會主義國家裏,在超市幹三年收銀員就可以買棟房子,人們永遠不擔心沒錢看病,不擔心失業。所以,人家搞技術的動力基本上都是馬斯洛四層以上,咱們這樣還得兼顧三層以下的,跟人家沒法比。

但是咱們畢竟也是社會主義國家,雖然是初級階段,但大家好歹都還不至於掙紮在一二層,所以貼點文章,聊點問題,也很合邏輯。但是這幾年情況有有些變化。

首先,一個根源問題是整個信息安全技術的基礎部分已經差不多都碼完了。各種理論和技術都很成熟,該有的文檔也都有了。再要搞點什麽東西,基本上都是建立在一堆參考資源之上的實際應用。而越接近實用的東西,越不會有人願意往外放。這個道理很容易理解:你隨便到哪個書店都能買到講E=MC²、原子裂變,甚至如何濃縮鈾等等這些高深理論的書,但是絕對買不到哪怕制造原子彈外殼的具體配方。

如果整個大環境還保持在2003年之前的狀態,可愛的Hacker們倒也不會太在乎實用不實用。但是世道畢竟變了。一部分人開始掙黑錢,他們當然就不會再跟別人分享發家致富的秘方。而另外一些沒去掙黑錢的,也不會願意把自己的東西白白送給別人拿去發家致富,寧可搞出來自娛自樂,然後爛在地裏。於是,最近幾年雖然國內搞這玩意的人多了,水平高的人也多了,但是真正高水平的公開交流卻少了。

客觀原因擺在這裏,所以抱怨毫無意義,絕對不會改變什麽。

不過我前面也已經說過了,其實這一塊兒的基礎文檔已經很齊備了,無論你想學什麽,都可以找到資料。除非你並不真的想學,只是給自己學不會找個理由而已。


作者 Wayne 為阿碼科技 CEO

(繼續閱讀:美國駭客年會 DEFCON 2008 觀察--第一天

繼續閱讀全文...

2008年8月19日

談源碼檢測: CodeSecure的架構與技術

源碼檢測在這幾年十分的火熱,難得的是這股源碼檢測熱潮不是資安廠商造勢呼口號或恐嚇取財的結果,而是來自用戶的迫切需求與怒吼。越來越多企業發現防火牆沒辦法以一擋百,入侵偵測系統在緊要關頭都不會叫,紮紮實實地買了一堆資安設備卻還是讓駭客輕鬆地從網站騙取網管權限、盜竊資料庫、網頁掛馬...,這才發現過去的資安防護重心過渡傾斜在建置資安"防堵"設備,想說當網站或應用程式出現安全漏洞時,要立即地提供防堵措施 (擋 IP、擋網址、擋關鍵字、擋 OOXX 等等),但這樣的實務經驗往往還是被駭得滿頭包,尤其有部分受駭者因而以為問題出在防堵規則不夠多、不夠細,那更慘了,又繼續買更多更高階的防堵設備,與駭客進行無止盡的軍備戰。

其實說穿了,就是網站的程式碼寫得不安全啊!駭客這幾年就專挑這些點來攻擊,而不再只是打伺服器的漏洞。從美國 CVE 常見漏洞列表就可觀察到近年所發現的漏洞幾乎都跟程式撰寫缺失有關,像是排名第一的跨網站入侵字串 ( XSS,亦稱跨站腳本攻擊),以及第二的資料隱碼 ( SQL Injection,亦稱 SQL 注入攻擊)。



撇開血拼資安設備以自保的衝動,及憂心受駭的焦慮,靜下心想想,假設今天擔心保險箱內的金銀財寶被偷,而偏偏這保險箱又擺在公共場所( Web 網站也是擺在單位的外網讓公眾存取),那麼當務之急是應該檢視保險箱的設計瑕疵,還是要檢討如何在方圓百里內加派更多警衛與加裝更高階保全設備?!我們很慶幸越來越多人發現要作 Web 網站的資安防護就該從源碼檢測著手,從 Web 應用程式揪出這些不安全的程式碼,在最源頭,亦即程式撰寫層次,便避開可能產生安全風險的疑慮,這才是正本清源地之道。美國國家標準局 ( NIST ) 開始在發展軟體開發生命週期中加入安全考量;繼 CVE 之後,美國國土安全部 ( DHS ) 也推出 CWE (常見軟體缺陷列表) 來提醒開發人員各種的不安全程式撰寫,我們的CodeSecure率先支持與支援CWE;在中國的「軟件產業 "十一五" 專項規劃」中指出應採用新的軟件工程方法開發可信的應用軟件,以提高軟件的安全性。台灣也在「政府資安作業共通規範」計畫中重點發展與示範導入的「 Web 應用程式安全參考指引」草案,正是推廣從源碼檢測著手的方向。全世界都動起來了!

當初我們很早就看到這個重大問題,攻擊方 (駭客) 越來越厲害 (自動化工具、大規模攻擊、僵屍網路),但 Web 應用程式卻無任何自動化工具來協助開發人員發現撰寫缺失,因此我們在2002年實作以自動靜態分析 ( Automated Static Analysis ) 技術為基礎的源碼檢測系統 (稱為 WebSSARI ),並在2003年對上百個知名開放源碼套件進行 XSS 與 SQL Injection 弱點的源碼檢測 (隔年 OWASP Top 10 2004 首次公布才將此二弱點列為十大Web撰寫缺失,而在2007年的 OWASP Top 10 2007 中此二弱點的排名更提升為第一位與第二位),在2003年寫完論文投稿,被 WWW 2004 接受並提名年度最佳論文,之後就成為阿碼科技的主力產品 CodeSecure 源碼檢測。下圖直接將當初論文中的架構圖剪下貼出:


在技術這方面,當時我們採取軟體工程領域中軟體驗證的作法,以自動靜態分析技術達到不影響程式之執行,於編譯期計算出程式在執行時所有可能的狀態。早期的軟體驗證為人所詬病的是執行效能始終無法提升,解析器的速度扮演關鍵的角色。由於程式語言的語法解析與諸多變數狀態,會消耗大量的運算成本與記憶體資源,如何有效降低解析成本便可大幅提昇解析器的執行速度。在過去此部分的實作常受限於狀態擴張 ( State Explosion ) 之問題,而無法有效驗證大量的程式碼。為避免此瓶頸,我們在分析源碼之前,首先將Web應用程式之弱點正規化為安全資料流之問題。我們先解析出程式碼中可疑的進入點,並標示所有惡意函示庫,以及可能的輸出點,這種作法讓我們將複雜的 Web 程式碼資安漏洞正規成一種自動狀態機,即 Latice 模型。正規化之後,我們配合所研究的語法暨設定弱點資料庫,發展出可利用靜態之分析來減少動態分析之需求;換言之,利用靜態分析,我們準確地標出程式中需要動態分析之部分 (也就是可能有弱點之部分),在程式尚未執行時,我們就能識別這些脆弱點需要特別處理,否則可輕易遭受外部惡意使用者的攻擊,譬如插入惡意腳本字串,含有 XSS 或 SQL Injection 等撰寫缺失。當時的源碼檢測系統 WebSSARI (即 CodeSecure 的前身) 日後被美國微軟專精源碼檢測的研究員 Ben Livshits 博士譽為此領域的開創者,爾後世界各國相繼投入的學術研究均引述我們的成果,迄今已超過上百篇

理論是如此,講這麼多我小結一下源碼檢測過程中幾個重要的分析步驟(有機會再分享這些步驟的技術細節...):
1. 進入點分析 (哪些是不可信任的資料?)
2. 語言語法分析 (哪些會影響安全參數?)
3. 輸出點分析 (資料會如何離開?)

源碼檢測的出現造福廣大網站建置案的承辦人員、驗收人員與開發人員,因為無論是在徵求建議書( RFP )要求應避免的資安風險,或在檢測報告中增列源碼安全性檢測,或在驗收階段中要求檢附源碼檢測報告,都因為有自動化源碼檢測工具的出現,才得以讓這些流程與控制措施得以落實與順利推動。

其實隨著 CodeSecure 在2007年初正式推出上市至今,堪稱是十國聯軍的在台研發團隊貢獻最多(吸引這麼多頂尖人才到台灣,還讓我們在2008年獲經濟部頒發金根獎! 這獎項的名稱還蠻 kuso 的 XD),或許美國總部將來會在其他地方成立研發中心,但目前的研發能量主要還是放在台灣的亞洲研發中心。這群人沒日沒夜地持續在精進研發,陸續開發出多個全球首創的源碼檢測功能,包括硬體式架構、純 Web 介面、弱點收斂分析、互動式弱點追蹤、弱點深度分析、受駭機率分析等等(這也讓我們獲頒 Red Herring 全球十大新創企業),我們就是要讓源碼檢測的操作非常容易使用,檢測結果非常容易瞭解,修補方針非常容易落實。同時,隨著客戶越來越多,我們為這個產品投入的技術支援與人員編制可說是一眠大一吋! 畢竟源碼檢測絕對不是產品的買賣而已,尤其是本地客戶可能會遇到的各種源碼檢測問題,都可經由我們本地的專業顧問直接參與及輔導,迎刃而解。

1. 硬體式架構 (免軟體安裝,所有人都連來這台作分析,不用麻煩地裝一堆有的沒的)
為了達成這個終極目標,每個要檢測的語言我們都得自行撰寫編譯器,這大幅增加我們的研發成本,但堅持這個路線也讓我們與其他競爭對手有所區隔,掌握編譯器攸關源碼檢測的涵蓋率與精確性。話說現在這個年代念資訊科系的學生聽到編譯程式都唯恐避之不及,所以我們的這個決定在競爭對手眼中肯定也是瘋了。

眼尖的人可能發現這只是個 CodeSecure 空殼 XD 沒錯,這個樣品第一天送到公司時大家激動地差點哭了,還鋼琴烤漆耶~ (後來的中高階 CodeSecure 機種則是用其他的機構設計)


這張圖巧妙地將CPU使用率停在2.0 :>



2. 純 Web 介面 (一個網址服務整個單位,所有同仁都可上網直接體驗源碼檢測,"節能省碳"!)


3. 弱點收斂分析 (開發人員需要去修補的弱點源頭是可收斂的,儘管駭客可攻擊的路徑是發散的)
過去的資安生態是作掃瞄的人很開心,「哇,一堆漏洞!」,但要負責修補的人很痛苦,因為有助益的資訊太少(弱點掃瞄、滲透測試最多只能點出結果卻沒有前因),不知為何要修,且漏洞都沒有進行系統化的收斂,也不知從何修補起,更甭談啥瞇幾百個 XSS 弱點的修補優先順序。源碼檢測搭起資訊安全與程式撰寫兩專業領域的橋梁,讓資安人員與程式人員更順利地共事與共識。


4. 互動式弱點追蹤 (直接在 Web 介面點選與追蹤弱點的來龍去脈和相關統計)



最末,CodeSecure 目前支援 PHP、ASP、J2EE(Java 全系列含 JSP) 及 .NET (C#, VB.NET, ASP.NET)。

作者 Dr. Benson Wu 為 阿碼科技 產品經理

繼續閱讀全文...

2008年8月18日

美國駭客年會 Black Hat 2008 觀察--第二天

此文續「美國駭客年會 Black Hat 2008 觀察--第一天」...

1. Rod Beckström: 國家安全
2. Arian Evans: Encoded, Layered, and Trancoded Syntax Attacks: Threading the Needle past Web Application Security Controls
3. Billy Hoffman: 擊敗 javascript 分析工具(Circumventing Automated JavaScript Analysis Tools)
4. Justin Clarke: SQL Injection 蠕蟲:為了興趣也為了利益(SQL Injection Worms for Fun and Profit)
5. Jeremiah Grossman: Get Rich or Die Trying - "Making Money on The Web, The Black Hat Way"
6. Matthieu Suiche: Windows Hibernation File for Fun and Profit

說真的如果不是要來 Black Hat / DEFCON,我是絕對不會想到這邊來的。我去過不少城市,但是了解我的人應該都知道,這邊除了駭客年會,還真沒有東西可以吸引我。

1. Rod Beckström: 國家安全(National Security)()

今天的 keynote 是美國政府資安界的當紅新人炸子雞 Rod Beckstrom,大家都來看他的風采。Rod 是我們營運長 Matt 的 Stanford MBA 學長,也是一位有名的創業家,他之前以 twiki 作者的身份,創辦了 TWIKI.NET。今年三月20日,他正式接受美國國土安全部(DHS、Department of Homeland Security)的邀請,擔任底下一個新成立的單位:「國家資安中心(National Cyber Security Center、NCSC)」的首席。NCSC 是一個新的跨部門單位,負責協調各資安部門之間情報的交換。

NCSC 的成立以及這項任命,是源自於布希於今年一月簽同的一項機密的指引,主要用以擴大情報界對於目前日益嚴重的針對美國的網路攻擊之掌握度,因為之前美國情報單位對於資安攻擊的掌握過渡零散,缺乏一個中央協調的組織。Rod Beckstrom 其實並沒有資安背景,但是他有創業家的經驗,對業界很熟,成功創辦 TWIKI.NET 幫助企業用 wiki 觀念協調資訊交換,以及著有很暢銷的「The Starfish and the Spider」一書,提出新的分散式企業管理概念,這些都是美國國土安全部(DHS)看中他的原因。



Rod 講了很多美國政府的歷史與政府在資安方面的歷史,基本上我覺得就是幫政府建立形象啦,表示美國政府從電報的年代就很懂資安與情報的重要。我對美國政府的歷史沒有興趣,我對駭客的歷史比較有興趣,但是我覺得 Rod 的加入對布希政府在形象上一定是一大加分,因為 Rod 感覺很有業界經驗,不會讓外界覺得政府都閉門造車。

Rod 講了他認為目前資安難做的原因,我非常的認同。他說,有些球類,進攻難,防守易,例如足球,所以分數都不高(幾比幾);有些球類,則是進攻容易,防守難,例如籃球,所以分數都很高(可以破百)。資安比較像籃球;事實上在資安裡面,防守比攻擊要難太多太多了,這也就是資安難做的原因。

這個我完全認同。是的,要有好的防守,必須很懂得敵人,很懂得敵人所用的攻擊方法。所以重要的駭客年會我們都會派人參加。但是這只是基本功而已。懂得攻擊之後,要設計防守,又更加困難。為什麼?因為攻擊成本低,防守成本高!就拿防毒軟體來說,其實測不到,不是防毒廠商沒有樣本,可是防毒軟體不能佔用系統太多資源,所以樣本不能無限制的長大,必須有所選擇,在盡量不影響到系統效能的前提下,達到最高的偵測率。

又像如果打生物戰,那麼一樣,設計病毒,只需能感染讓人致死就好,可是設計解藥,不但要殺死病毒,還要保存人體不被破壞。不論在網路空間或實際生活中,攻擊總比防守簡單太多,這是資安難做的原因。再加上攻擊處於主動,何時攻擊可以自行選擇,但是防守處於被動,何時被攻擊無法預期,所以無時無刻都需要檢查與防範,而這些無時無刻都需要做的檢查與防範,都是成本的增加,這也是資安難做的原因。

另外 Rod 探討了一些我們在業界常探討的資安的投資報酬率問題。感覺他有觀念,但是畢竟他之前不在資安產業,探討的東西都還太淺了些。以下是兩張投影片,基本上是說,如果 x 軸是資安的投資,y 軸是因為資安投資而減低的損失,那麼需要找到投資報酬率最高的點。但是 Rod 你說用一條 45 度的線跟曲線取交點,是這樣嗎?我高中畢業很久了,博班資格考也沒考微積分,但是我怎麼直覺覺得,要分析要看此曲線斜率,所以要做一下一次微分後分析...



這裡有他當天演講的一段錄影:



2. Arian Evans: Encoded, Layered, and Trancoded Syntax Attacks: Threading the Needle past Web Application Security Controls

聽完之後去幫 Jeremiah 捧場,聽他同事 Arian Evans(大會)講「Encoded, Layered, and Trancoded Syntax Attacks: Threading the Needle past Web Application Security Controls

這個題目就不翻譯了,基本上整個演講在說一件事:Web 上的攻擊,如果加上各種不同的編碼方式,那麼穿透率幾乎可以達 100%,沒有任何 Web 防火牆可以阻擋。這是指 Web 防火牆設定成利用黑名單的情況下,如果花時間設白名單的話,一樣可以阻擋,可是一般稍微有規模的站,我看到大部分都是用黑名單方式,因為設白名單是很繁瑣的事情,需要找到好的廠商才行。

講到這裡,其實我深深覺得資安業,找對公司比找對產品重要多了。不論是源碼檢測或 Web 防火牆,如果賣方只是想塞產品給您,那麼買了再好的,牌子在大的產品也沒有用,一樣會失敗,最後還是會發生資安事件。如果找對好的 partner,有心服務客戶,長期經營,技術能量也夠,那即使用免費的開放源碼 ModSecurity 做 Web 防火牆,一樣能設定到讓您高枕無憂。其實對方有沒有心做服務,還是只想塞產品,還有對方的技術團隊有沒有實力,通常很快就能看出來。


這張明天要去賣 Arian 了,拍得太好了 :)


投影片一拿出來就開始講今年初進行到現在的大規模 SQL Injection 加網頁掛馬攻擊(阿碼科技新聞稿PC World(IDG)ITHome)。Arian 拿當初 Neil Carpenter 蒐集到的攻擊字串做例子:


2008-03-08 13:37:13 /dir1/archive.asp id=z%27%20ANd%20char(124)%2Buser%2Bchar(124)=0%20and%20%27%25%27=%27

這是一行 web server 的 log。在這個例子裡,%XX(例如 %27、%20、%2B)是 URL encoding 的一部份,會被 web server decode,decode 完變成:


2008-03-08 13:37:13 /dir1/archive.asp id=z' ANd char(124)+user+char(124)=0 and '%'='


然後整個 SQL injection 字串,會被 SQL server 解碼成:

id=z ANd |user|=0 and '%'='

不要說多層編碼,即使只用一層的 URL 編碼,就可以因為 UTF-8,而使同一個字串幾乎有無限種編碼可能。譬如一個簡單的:


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())等混合使用。

3. Billy Hoffman: 擊敗 javascript 分析工具(Circumventing Automated JavaScript Analysis Tools)
聽完後去聽好友 Billy Hoffman(大會wikipedia)的演講:「擊敗 javascript 分析工具(Circumventing Automated JavaScript Analysis Tools)」。Billy著有「Ajax Security」,上次在 RSA 2008 辦簽名會,我一口氣簽了很多本回來送朋友,讓他高興得不得了。既然是 Billy,當然要照帥一些囉!有沒有注意到左下方 Billy 的筆電?併購後筆電也該 HP 囉!



今年講網站掛馬的演講真是多,其實這個題目去年就很紅了,今年年初再加上兩點,使得這個議題紅到不行:

一、年初的大規模自動 SQL Injection 加 網頁掛馬(阿碼科技新聞稿PC World(IDG)ITHome

二、網路掛馬所使用的 javascript 語言,其編碼與變形太過容易(除了大家熟悉的 MPack 自動化犯罪工具包,現在線上的 javascript 編碼/變形服務也到處都是:看這裡這裡。)

Billy 在他的摘要裡就直接提到:「拜 MPack 所賜,大部分惡意 javascript 都編碼過
(Obfuscated JavaScript payloads are the norm thanks to malware frameworks like MPACK.)」

的確,根據「IBM X-Force 2008 年終趨勢報告(IBM X-Force 2008 Mid-Year Trend Statistics)」,2007年後半年,網頁掛馬中 javascript 編碼變形以達 100%:「A year later, in the second half of 2007, Web browser attack obfuscation approached 100
percent.」

在這個 talk 中,Billy 講了惡意程式變形技術與偵測技術間永無止境的鬥智遊戲。這是我很期待的一個 talk,因為跟我們 HackAlert 非常相關。

Billy 今年的研究延續去年 Ben Feinstein(網頁Blog)跟 Daniel Peck(blog-1blog-2) 講的 Caffeine Monkeypaper投影片程式碼)。

OKOK,繼續之前,我們先來看看這些人到底在講什麼。

現在的大規模自動網站掛馬(阿碼科技新聞稿PC World(IDG)ITHome)都是利用 SQL Injection 漏洞在網頁裡安插惡意的 javascript。這些 javascript 都經過變形(或稱編碼)。利用 MPack,甚至可以動態變形,也就是說,每一個訪客所下載到的網頁,裡頭的 javascript 都經過不同的變形。

變形的 javascript 到底長什麼樣子?我們就拿我之前寫的「神秘 Web 攻擊綁架剪貼簿」來看好了,其中用的一段範例 javascript:


function IE_ClipBoard()
{
if (window.clipboardData) {
window.clipboardData.setData("Text","Hello from Wayne!");
}
}

圖 1

好,現在我們用 malwareguru 上的線上編碼工具 Vanishing Point Packer(網頁malwareguru 上提供的線上 demo),把上面這一段 javascript 貼進去,按「pack」,原本的 javascript 就變成了以下這段了:


eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('4 3(){2(1.0){1.0.5("8","7 6 9!")}}',10,10,'clipboardData|window|if|IE_ClipBoard|function|setData|from|Hello|Text|Wayne'.split('|'),0,{}))

圖 2

網路上隨便 Google 「javascript obfuscator」或「javascript packer」,可以找到一堆線上的服務,每一個變形出來都不太一樣。舉幾個例子:

Yellopipe source code encrypter:


document.write(unescape("function%20IE_ClipBoard%28%29%20%20%0D%0A%7B%20%20%0D%0A%20%20if%20%28window.clipboardData%29%20%7B%20%20%0D%0A%20%20%20%20window.clipboardData.setData%28%22Text%22%2C%22Hello%20from%20Wayne%21%22%29%3B%20%20%0D%0A%20%20%7D%20%20%0D%0A%7D%20%20"));

圖 3

Audit My PC HTML Encoder:


document.write('\u0066\u0075\u006E\u0063\u0074\u0069\u006F\u006E\u0020\u0049\u0045\u005F\u0043\u006C\u0069\u0070\u0042\u006F\u0061\u0072\u0064\u0028\u0029\u0020\u0020\u000D\u007B\u0020\u0020\u000D\u0020\u0020\u0069\u0066\u0020\u0028\u0077\u0069\u006E\u0064\u006F\u0077\u002E\u0063\u006C\u0069\u0070\u0062\u006F\u0061\u0072\u0064\u0044\u0061\u0074\u0061\u0029\u0020\u007B\u0020\u0020\u000D\u0020\u0020\u0020\u0020\u0077\u0069\u006E\u0064\u006F\u0077\u002E\u0063\u006C\u0069\u0070\u0062\u006F\u0061\u0072\u0064\u0044\u0061\u0074\u0061\u002E\u0073\u0065\u0074\u0044\u0061\u0074\u0061\u0028\u0022\u0054\u0065\u0078\u0074\u0022\u002C\u0022\u0048\u0065\u006C\u006C\u006F\u0020\u0066\u0072\u006F\u006D\u0020\u0057\u0061\u0079\u006E\u0065\u0021\u0022\u0029\u003B\u0020\u0020\u000D\u0020\u0020\u007D\u0020\u0020\u000D\u007D\u0020\u0020');

圖 4

中國的「网?免? 孤程?雪」線上服務:


t="97,108,101,114,116,40,39,72,101,108,108,111,32,102,114,111,109,32,87,97,121,110,101,32,111,102,32,65,114,109,111,114,105,122,101,33,39,41,59"

t=eval("String.fromCharCode("+t+")");

圖 5


嗯嗯,圖五很熟悉吧?各位 IT 應該都不陌生...是的,這種編碼方式很受到前一波掛馬駭客的喜愛,很多網站掛馬都長得很像圖 5...所以我們把這個「网?免? 孤程?雪」站的話面貼出來一下好了:


圖 6

編碼還可以分很多層,可以用不同的編碼器編過幾層。看到這些,我們想一想,現在很多 gateway 產品,都號稱他們可以及時偵測與阻擋惡意網頁...現在網路頻寬都很大,在這麼大的頻寬下,一個 gateway 裝置要 buffer 住所有的 HTTP response,然後即時的執行 javascript 解碼,然後識別惡意程式...您相信嗎?

看著圖 1-5,您也許會想,編碼過的 javascript 都有一些特徵,例如都是一堆的數字,偵測這些特徵,不就可以偵測到惡意的 javascript 了嗎?問題是這會有很多的誤判。因為原本這些 javascript 編碼器,都不是拿來做網站掛馬的,而是用來保護 javascript 的智慧財產權的。Javascript 必須要在瀏覽器上執行,所以不論你花多少時間寫 javascript,最後誰都可以拿到你的程式,因為 javascript 不會編譯成執行檔,而是直接以程式碼的方式傳到瀏覽器上,再由瀏覽器執行。所以為了要保護 javascript 程式不要輕易的被有心人研究,許許多多的程式設計師,都會將自己的 javascript 利用上述這些編碼器編碼或變形。也就是說,編碼過的 javascript 不見得都是惡意的,很多大型網站上,擁有非常多編碼過的 javascript,大部分商售的 javascript,也都經過編碼變形。究竟有多少 javascript 編碼器?很多,連 Yahoo! 都提供 Yahoo! 的 javascript 編碼器,也介紹其他好用的編碼器。

好吧,那到底該如何偵測呢?HackAlert用的是實際的瀏覽器環境,所以沒有問題,不論什麼樣的 javascript 變形方式,或者此 javascript 攻擊什麼樣的未知的 0day 弱點,反正只要試圖攻擊,就一定測得到。可是這樣的技術要對 windows 環境以及各 browser 的構造很熟才行。

這次在 Black Hat / DEFCON,在會後的一些 meeting 中,我發現一個很有趣的現象,就是在偵測網站掛馬方面,「使用者」(大銀行,大企業,軍方,情報單位)的功力,有時反而比廠商甚至講師更強。探討下來,因為網站掛馬太嚴重了,可是廠商都沒有好的解決方案,號稱可以測到的,其實都是用靜態分析或黑名單方式,沒有辦法即時,辨識率也偏低,所以這一年下來,「使用者」只好 DIY,自己利用 Caffeine Monkeypaper投影片程式碼)或 spidermonkey 來偵測(SANS最近也玩了一下),但是就如同 SANS 的 Daniel Wesemann 說的:「But SpiderMonkey is only a JavaScript engine - it doesn't emulate the browser and doesn't even have a "document" or "location" object...」。Caffeine Monkey就是建構在Spidermonkey 之上。SpiderMonkey 是 Mozilla 的 javascript 執行器,但是不是一個瀏覽器,還缺很多環境,Caffeine Monkey 一方面設法補足,一方面增加了一些自動偵測的技巧。

Billy 今年的 talk,則是針對諸多以 SpiderMonkey 為基礎的偵測方式做破解,列了一打以上的破解方式,不過基本上可以粗分為兩類:

一、偵測抓網頁的是否是真的人還是要偵測的機器人(執行 SpiderMonkey 之類的)

二、直接用一些方法,讓以SpiderMonkey 為基礎的的自動偵測失效。

對於(一),Billy 列了很多的方法,包含了 HTTP/browser fingerprinting、DOM testing and encrypting、Doman and Network testing、Execution environment testing、cross plugin communication testing 等等。Billy 的演講是針對 SpiderMonkey Caffeine Monkey 設計的,所以這次講的方法對以這些為基礎的技術或產品真的很有效。以這些為基礎的產品很多嗎?非常多,因為這些是開放源碼的程式,現在很多公司都是看到客戶有需要了,不做研究,不花功夫,拿一些開放源碼的程式整合一下,就把產品推出了。有的時候從客戶那邊聽到這些業務的語言,我真的不敢相信,怎麼大家都這麼敢虎!客戶又不是笨蛋,你說你功能都有,其實是那一些開放源碼堆起來的,客戶難道就不會測試嗎?我接觸的客戶技術水準都越來越高,這些說話不打草稿的業務,應該會越來越吃虧。

Billy 講的方法,基本上對 HackAlert 都無效,因為 HackAlert 後端基本上就是一套跟使用者一模一樣的環境,是我們自己開發的,不是拿開放源碼的程式湊的。

對於(二),則分兩方面。一方面,因為 SpiderMonkey 畢竟不是整個瀏覽器環境,所以很容易可以用一些方法偵測出,執行的環境是「人」在用的瀏覽器,還是偵測用的環境。如果次偵測用的環境,那就不發動攻擊,環境也就測不出來了。另一方面則是利用 SpiderMonkey 環境跟真正瀏覽器環境的不同,把 javascript 設計成,在 SpiderMonkey 環境下無法成功執行,那麼 SpiderMonkey 就測不到了。

一樣,對 SpiderMonkey 很有效,對 HackAlert 則無效。

但是看這兩種攻擊,其實用一句 Billy 最後講的話就可以總結了:「現在我碰到的網站掛馬越來越多是用 vbscript 而非 javascript。SpiderMonkey Caffeine Monkey 都只支援 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,是為了 CodeSecure 對 ASP 語言的支援,不是要偵測惡意程式。

至於我們的 vbscript parser,是否會用在 HackAlert 中,輔助偵測網站掛馬呢?目前看起來沒有必要。不論是 javascript 或 vbscript,這些都是 interpreted 語言,不是 compiled 語言。Interpreted 語言,動態可以產生新程式,語法也較不嚴謹,太多狀態需 runtime 時才能決定,非常不利於靜態分析技術。HackAlert 目前動態偵測方面,完全模擬使用者環境,偵測率很高,不需要再靠其他方式。

最後 Billy 你說我們的 vbscript grammar 可否開放源碼,這我們得思考看看了。

這裡可以看到 Daniel PeckCaffeine Monkey 作者之一)
blog 對於 Billy 這場演講的看法

Billy 的演講一向都很受歡迎,如果您想要聽,他有一場 2007 年底在 Google Toolkit Conference 上講的 Ajax Security:



4. Justin Clarke: SQL Injection 蠕蟲:為了興趣也為了利益(SQL Injection Worms for Fun and Profit)投影片下載

Ok,我必須承認,在 Billy 演講的中間,我落跑了 20 分鐘... 我去聽了 Justin Clarke (大會blog)的短演講:「SQL Injection 蠕蟲:為了興趣也為了利益(SQL Injection Worms for Fun and Profit)」。看這就知道今年網頁掛馬熱到什麼程度了,竟然同一時間有兩個演講,逼不得已只好跟 Billy 請個假了!

Justin Clarke (大會blog)是 Network Security Tools (O'Reilly)的作者,也是 SQL Brute 工具的作者。



Justin 主要就是講今年年初開始的大規模 SQL injection 加網站掛馬攻擊,但是我發現,我們對這些攻擊的掌握度似乎更快。基本上他所有講的,我們在之前都公開過了:阿碼科技新聞稿PC World(IDG)ITHome

整理重點:大規模攻擊,SQL Injection 指令設計得很好,針對微軟的平台,利用 Google (?q=)找尋攻擊點,SQL Injection 的目的是為了要掛馬...等等。這邊重點是,雖然 HackAlert 可以偵測掛馬,但是為何會被入侵掛馬?都是因為有 SQL Injection 漏洞,故需把程式改好,才是徹底解決之道。今天聽到現在已經第三場講大規模 SQL 加掛馬了,大家的 SQL 漏洞快修修吧!

5. Jeremiah Grossman: Get Rich or Die Trying - "Making Money on The Web, The Black Hat Way"投影片

聽完又回去捧場 Jeremiah 了,這回他帶同事一起講:「Get Rich or Die Trying - "Making Money on The Web, The Black Hat Way"」。



Jeremiah 這次講的,跟我上次安排他來台北(他blog的遊記1遊記2,值得看)講的「商業邏輯錯誤(Business Logic Flaws)(他的 blogpaper)」其實是一樣的,只是多花了一些時間整理出更有去的內容:怎樣可以利用這些邏輯錯誤來賺錢(其實也就是會造成什麼損失啦!)。但是所介紹的邏輯錯誤本身,跟在台北講的那場差不多。他帶著年輕的同事 Trey 一起講,感覺是要訓練後輩,而 Trey 以這麼輕的年紀,這麼滿的一間,台風算很好了,應該沒讓 Jeremiah 失望啦!

他們這次的投影片可以在這裡下載。講完後他們接受的訪問在這裡:



6. Matthieu Suiche: Windows Hibernation File for Fun and Profit投影片下載

最後去了 Matthieu Suiche (blog大會)的演講:「Windows Hibernation File for Fun and Profit」。Matthieu 是專門分析 Windows 休眠檔工具 Sandman 的作者。


他對於這次演講的 blog 在這裡,投影片在這裡:PDFPPTXdemo 環境在這裡。其實內容跟我們在台北辦的 SySCAN Taipei 2008 裡 PK 講的「犯罪現場: Windows 記憶體內容擷取與鑑識」差不多,基本上就是 demo 從分析記憶體或休眠檔,可以取出非常多的資訊。PK 那場講得非常好,我很感謝他。PK 的許多內容應該都是參考 Matthieu Suiche的,因為 Matthieu 是這方面的先驅,修眠檔的資安問題方面研究,他算是祖師,他的 Sandman也是現在這方面最領先的工具之一。

好啦!終於寫完啦!感謝各位花時間看完。這些資安會議多跑幾個,攻擊的趨勢,技術的進步,產業的趨勢就都很容易掌握了。沒有時間去的就看我的 blog 囉。另外我們在台灣辦的會議,品質也都很好,有空可以多來。

之後我會寫 DEFCON 以及綜合起來這次我的心得。此篇是詳細報導,已經太長了,沒法寫心得啦!

Thanks for reading!
(前文:美國駭客年會 Black Hat 2008 觀察--第一天
(繼續閱讀:駭客年會Black Hat / DEFCON 2008 心得一:地下犯罪經濟成熟,影響會議品質?
(繼續閱讀:美國駭客年會 DEFCON 2008 觀察--第一天

作者 Wayne 為 阿碼科技 CEO



繼續閱讀全文...

2008年8月17日

The Register:神秘Web攻擊綁架剪貼簿!

本來要睡午覺了,看到 The Register 八月十五號這篇,突然好奇起來:

The Register: Mystery web attack hijacks your clipboard(神秘 Web 攻擊綁架剪貼簿)

要讓我一腳已經踏到床上又起來,當然要有很好的原因。這篇引起我興趣的原因有:

一、歐洲最大 IT 媒體之一的 The Register 報的
二、「神秘」這兩個字--最近資安界已經很久沒有「神秘」的攻擊了...
三、「Web 攻擊」--我對 Web 安全的議題特別有興趣,而 The Register 也還蠻專業的,沒有寫成「Web 病毒」。沒錯,Web 上的威脅大部分不是病毒,所以用攻擊(attack)來形容通常比較貼切,所以似乎記者還算專業。

好,爬起來看看寫些什麼。小標題:「No, MACs are not immune(抱歉,MAC 並不免疫)」。

OK,文章基本上在講,最近有一種 Web 上的攻擊,綁架使用者的剪貼簿,不論你貼上什麼東西,等到貼出來,都會變成一個惡意的連結。報導中:

一、列舉了一堆受害者上網的留言(這裡 這裡 這裡 這裡

二、報導說這些受害的使用者有用 Windows 系統的也有用 MAC OS X 系統的,雖然以上四篇都是用 Firefox,但是不排除其他瀏覽器也可能受攻擊。

三、報導建議使用 Firefox 的 noscript 外掛

OK,福爾韋恩小偵探出現了...根據上述證據,福爾韋恩的推論:

一、記者厲害,沒寫成病毒,而寫成 Web 攻擊。可能因為他引述的那四篇求救文,有人是跑 MAC OS 2 而有人跑 Windows,所以他從中知道,大概不是病毒,而是一種對瀏覽器的攻擊。

二、報導說惡意的網址是 xp-vista-update.net(點下去自行負責,我剛才用 HackAlert 掃過沒有問題,但是現在沒有問題不代表你點的時候沒有問題,這種惡意網頁隨時在改內容)。做一下 whois,這個網域電話是南斯拉夫的、DNS 是惡名昭彰的 estboxes.com、IP 為 83.229.251.28 是俄羅斯的 IP。福爾韋恩:有目的、組織性攻擊之可能提升!

三、福爾韋恩依稀記得,IE 才是笨到會讓 javascript 存取剪貼簿的瀏覽器(CVE-2002-1671),而且 2002 年被報有問題,到 2006 年底出IE 7 才把問題修掉。可是記者說受害者都是用 Firefox... 聰明的 Firefox 預設是不讓 javascript 存取剪貼簿的... 所以兇手...一定是最近 PDP RSnake 都一直在講的--Adobe Flash!其實福爾韋恩也依稀記得,Flash 可以存取剪貼簿...

四、報導說受害者是在瀏覽 MSNBC.COM 時被攻擊綁架剪貼簿的。福爾韋恩:很有可能是駭客組織向 MSNBC.COM 買了廣告 banner,並在廣告中利用 Flash 來達成攻擊。以 MSNBC.COM 的流量,影響人數應該不少。

是否真的是這樣呢?

再確定技術細節以前,我們先來看看,這種攻擊的效果是什麼?如果只是單純能寫入剪貼簿,這樣的一個網頁(或廣告頁)能造成什麼威脅?因為其時還有第五點:

五、即使這種攻擊可以做到,還真的有人受害出來求救,表示技術面如何達到先不管,但這種攻擊確實有其威脅性。但是如果只是寫入剪貼簿,那威脅性在哪?

Google 了一下,發現威脅自七月中開始,並蠻多人抱怨的:

七月12日,有人被攻擊,無法解除狀況,貼文出來,並用趨勢掃瞄未發現病毒。

八月08日,有人貼文對美國大選發表意見,卻遭攻擊,直接把惡意連結貼出來。該使用者「Old Owl333」在貼文的時候一定是先 CTRL-C 複製然後再 CTRL-V 貼出,沒想到剪貼簿遭綁架,貼出了惡意的連結:




八月07日,有人快瘋了,剪貼簿一直被植入惡意連結

惡意連結到底連到哪裡?做什麼?

八月10日,Kayrac 做了分析:



惡意連結「http://xp-vista-update.net/?id=xx」根據後面參數「id=xx」之不同,轉址到不同的網站,但是大部分都是到某網站騙使用者下載一個偽掃毒軟體「Internet Scanner 2009」或「AV 2009」。根據 八月10日,Kayrac 貼的文,把此程式放到 virustotal 測試,沒有幾家會偵測出它是偽的。

其實如果 Google 「xp-vista-update」,可以發覺中獎而跑出來貼文的還真不少。但是這邊就顯示了 The Register 記者的功力:大部分受害者貼文,都用了「病毒(virus)」一辭來形容此攻擊,但是記者卻正確的用了 「Web 攻擊」來形容。

調查到此,福爾韋恩已經確定,此為有組織性,有目的性之 Web 攻擊行為,其攻擊手法的確會造成威脅,並確實可以達到攻擊者的目的。

好了,現在來調查技術上到底如何達成的。我先寫一段可以寫剪貼簿,但是只在 IE 中有效的 javascript。為了此 javascript 顯示出來好看,我用 syntaxhighligher 來顯示。syntaxhighlighter 是很流行的一套 javascript,可以顯示很漂亮的程式碼。以下是一段在 IE 執行時可以寫入剪貼簿的 javascript:


<textarea name="prettyprint" class="javascript">
<button onClick="IE_ClipBoard();">Copy to Clipboard</button>
<script>
function IE_ClipBoard()
{
if (window.clipboardData) {
window.clipboardData.setData("Text","Hello from Wayne!");
}
}
</script>

(Code 1)


執行起來如以下,如果您正在用 IE 可以按下按鈕看看,然後再找地方 CTRL-V 貼上,就會發現剪貼簿被改了。但是如果是 IE 7 以上,會發現 IE 會問你是否允許存取剪貼簿。

(Test 1)


既然 IE 7 已經修正此安全性漏洞,firefox 上則預設不允許,除非你修改設定,不然連問都不會問,反正就是不行... 那麼,唯一的兇手就是... flash 了。

其實上方用來顯示漂亮程式碼的 syntaxhighligher,早就透露了破案線索了。仔細觀察,程式碼視窗上面有一個灰色的小字:「copy to clipboard」。試試看按下去,你會發現程式碼已經貼到您的剪貼簿了,但是 IE 沒有問你是否允許,firefox 也直接 work... :)

為何?都是 Adobe flash 的漏洞... 但是這種東西比漏洞嚴重,漏洞會被修改,這種算是「功能」,短期內不太可能改。為何?因為一旦功能公開,就會有很多人使用,一旦大家用了一個功能,要將此功能取消,就很不容易了。如果您 Google 「_clipboard.swf」或「clipboard.swf」或「flash copier」就會發現有多少程式都用了這個偉大的功能了。

這個手法主要是利用Flash ActionScript:System.setClipboard 這個含式來寫入剪貼簿。

程式碼分兩部分,一部分是一小段 Flash ActionScript,編譯成一個 flash SWF 檔(這裡可以下載),另一部分則是一小段 javascript。

Flash action script 的程式碼如下(這裡可以下載編譯好的 SWF 檔):


if (clipboard.length) System.setClipboard(clipboard);

(Code 2)


Javascript 程式碼則如下:


var flashcopier = 'flashcopier';
if(!document.getElementById(flashcopier)) {
var divholder = document.createElement('div');
divholder.id = flashcopier;
document.body.appendChild(divholder);
}
document.getElementById(flashcopier).innerHTML = '';
var divinfo = '&lt;embed src="http://www.openwaves.net/armorize_blog/dp.SyntaxHighlighter/'+
'Scripts/clipboard.swf" FlashVars="clipboard='+
encodeURIComponent("Hello from Wayne!") +
'" width="0" height="0" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;';
document.getElementById(flashcopier).innerHTML = divinfo;

(Code 3)


好了,現在您是否想被「駭」一下呢?以下是我猜測這次攻擊的程式碼:


<button onClick="Trigger_Attack();">Hijack my clipboard!</button>

<script>
var flashcopier = 'flashcopier';
if(!document.getElementById(flashcopier)) {
var divholder = document.createElement('div');
divholder.id = flashcopier;
document.body.appendChild(divholder);
}

function Trigger_Attack()
{
setInterval("ClipBoard_Attack();",500);

}

function ClipBoard_Attack() {
document.getElementById(flashcopier).innerHTML = '';
var divinfo = '<embed src="http://www.openwaves.net/armorize_blog/dp.SyntaxHighlighter/'+
'Scripts/clipboard.swf" FlashVars="clipboard='+
encodeURIComponent("Hello from Wayne!") +
'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
document.getElementById(flashcopier).innerHTML = divinfo;
}
</script>

(Code 4)


跑起來就像下面這樣,按下按鈕就綁架你的剪貼簿:

(Test 2)


原來元兇就是 Adobe Flash 啊!您猜到了嗎?

於是福爾韋恩調查成功,回去寫報告曰:
一、此次 The Register 報導之「神秘 Web 攻擊綁架剪貼簿」事件,元兇再次為 Adobe Flash。

二、此為 Flash 存在已久之功能,許多網站皆運用此功能,故短期內 Adobe 不容易取消此功能,威脅將持續一段時間。

三、了解此類攻擊甚為重要,此類即今年與去年各大資安會議,Jeremiah、PDP RSnake 三位研究員一直在提的 client-side 攻擊。由於這些攻擊大部分利用第三方外掛之漏洞甚至「功能」,問題短時間不易改善。試想如果攻擊 IE 漏洞,則攻擊對 firefox 就無效;然針對各瀏覽器皆有普遍安裝之第三方外掛,如 Adobe Flash、PDF 等攻擊,則可以跨瀏覽器。本事件便是一例。

四、此類為 Web 攻擊,其中 Javascript 又可以經過各種方式加殼與變形,防毒軟體幾乎沒有可能偵測到。

五、從兩方面觀察:A) 散播 Web 攻擊之伺服器所屬地區 以及 B) 諸多使用者確實被攻擊之案例,此為有組織性,有目的性之 Web 攻擊行為,其攻擊手法的確會造成威脅,並確實可以達到攻擊者的目的。

六、防禦的方法:可以選擇使用 firefox 外掛 noscriptFlashBlock

看了上述事實陳列,您認為福爾韋恩這次的調查分析正確嗎?

;-)

作者 Wayne 為阿碼科技 CEO

後續:BBC 過了幾天也報導了這個剪貼簿綁架事件

繼續閱讀全文...

2008年8月16日

實戰模擬之釣魚網站(Challenge to Phishing Website)

最近釣魚郵件多到不行,可以參考這篇新聞,看來 Mass SQL Injection 之後,再結合釣魚郵件搭配釣魚網站的手法交互運用,可以參考之前 POST 的一篇文,只能說「有心人士」用盡心思,推出的嘔心瀝血之作啊。
所以,我們當然要用欣賞的角度來看囉!面對創意的人,我們當然要投以藝術眼光的啦...

下面有兩個實作釣魚網站經常利用的「概念」與「創意」:(此兩網站並無惡意程式)
1.實戰釣魚網站(A):主要運用騙術。
2.實戰釣魚網站(B):除了騙術,還有些玩弄小程式,你能脫身嗎?
解答在後面...

實戰釣魚網站(A):
劇本就是"你需要看影片的程式,要你下載安裝",就這簡單。
下載檔案後的樣子...
有發現異狀嗎?這可是絕妙的陷阱耶,偽裝成資料夾的圖示。點兩下開啟資料夾就變成執行程式喔。

注意它實際上還是執行檔的喔。所以檔案圖示是可以唬人的,有些會偽裝成壓縮檔或播放程式的圖示,像是 rar, zip, flash 的檔案,賊吧。

實戰釣魚網站(B):
這個劇本就比較狠的,會有訊息告訴你說你需要安裝元件,且訊息就跟真的一樣;另外,會不會發現畫面關不掉,讓你一直在循環中,就是要你下載程式。
下載檔案後的樣子...
也是一個美輪美奐的檔案,會不會忍不住執行、安裝它咧...

如果測試過程中,看到下面畫面就表示你失敗了,因為你執行了惡意程式囉!當然啦,這兩個網站是讓你測試的,它不是真的惡意程式。


這兩個測驗你通過了嗎?因為已經告訴你這是個測驗了,所以你已經有準備了,如果在夾在釣魚郵件中的網站連結,你能不被騙嗎?
基本上,對付釣魚郵件還是需要靠個人使用電子郵件的警覺性的,有時還是有可能不小心連線到釣魚網站,如果釣魚網站夾帶惡意攻擊碼,需要靠你的瀏覽環境去應付,可以到這來挑戰你的上網環境;如果使用的是單純騙術,哪就考驗你的智慧啦;但也可能結合兩者喔...

作者 Crane 為阿碼科技 資安顧問

本文同步張貼於「資安之我見(What I see)」:模擬實戰釣魚網站

繼續閱讀全文...

2008年8月15日

「msnbc.com - BREAKING NEWS」釣魚郵件

繼「CNN.com Daily Top 10」、「CNN Alerts: My Custom Alert」一系列釣魚郵件之後,詐騙份子又一精心策劃之作。

看看郵件長的樣吧!
主旨:msnbc.com - BREAKING NEWS: COP: FAMILY LIVING IN FEAR

主旨:msnbc.com - BREAKING NEWS: Star Trek star dies at age 79


發現有哪不同嗎?手法又進步了喔...有發現嗎?
主旨都不一樣喔!先前手法的主旨都是一個樣的。

看一下郵件標頭(Mail Header)好了...
主旨:msnbc.com - BREAKING NEWS: COP: FAMILY LIVING IN FEAR

主旨:msnbc.com - BREAKING NEWS: Star Trek star dies at age 79

如果不會看郵件標頭(Mail Header)的可以參考這網站,把郵件標頭複製貼上即可。哦...不知郵件標頭在哪呀...哪就參考這囉

預計這種手法將會變成常態,Anti-Spam將會面臨這類釣魚郵件手法的嚴重考驗,你的Anti-Spam擋得住嗎?哪你的使用者又會辨別嗎?

作者 Crane 為阿碼科技 資安顧問

本文同步張貼於「資安之我見(What I see)」:「msnbc.com - BREAKING NEWS」釣魚郵件

繼續閱讀全文...

2008年8月14日

談掛馬偵測: HackAlert 的架構與技術

看到我們技術長 Walter 貼了一篇自動爬行功能正式啟動的文,讓我想到許多往事,回家之前,貼一篇好了!

全網監控,說穿了就是爬行(Web crawling)的功能。其實整個 HackAlert 系統,我們早在 2001 年就實做過一遍,並在 2002 年大量掃瞄美國前五百大企業的網站掛馬情形,在 2002 年寫完論文投稿,被 WWW 2003 接受並提名年度最佳論文。雖然現在的系統是 Walter 帶領 X-Solve 團隊開發的,加上德籍 Web 2.0 介面設計團隊的火力,成品跟我們當年幾隻小貓的研究雛形當然不可同日而語,然而整個 HackAlert 系統,基本上還是分成兩個主要部分:A. 爬行器(crawler)的設計 與 B. Sandbox 的設計。(A) 是阿碼科技本來擅長的,而 (B) 則是生力軍 X-Solve 吃飯的本行。我先講 (A) 吧!

我們在 2001 年開始設計爬行器(crawler)時,就發現爬行器不容易設計:許多連結要填了表單(form)才能看到(還要填得對才算!),許多則要執行 javascript 或 flash 才會出現。除了這些,如何將各式各樣 encoding 的 URL 正規化(canonicalize),如何避免無窮回圈(recursive crawling),在網站不吐標準 error 404 的請況下如何判斷有效 URL... 都是爬行器設計時的挑戰。

如果現在回去看我們的 WWW 2003 論文,整篇有一半在講爬行器(crawler)的設計!爬行器的基本原理很簡單:給一個開始的連結(URL),然後利用這個 URL 找出其他的 URL,根據條件停止(例如其他 URL 都要在開始的 URL 之下等等)。

這篇論文是 2002 年寫完投稿的,那時我們把一個網頁中,會告訴我們新的連結(URL)的方法有(直接將論文畫面捕捉貼出):


最後自動填表單(form)指的不是亂填,而是要懂得意義的填,例如要名字填名字,要 email 填 email,要住址填住址,要郵遞區號填郵遞區號...

論文中我們說:「我們建立了一個測試網站,然後請用很多開放源碼或商用的爬行器(crawler)來爬行,也請 Google 來爬。我們測了:GoogleTeleport Pro(六年級的還記得吧?)、WebSphinxHarvestLarbinWebGlimpse,發現除了 Teleport,沒有其他爬行器可以處理第四種以上的 URL 產生方式,所以我們把我們的爬行器跟 Teleport 來做比較」。

比較的結果如下(直接將論文畫面捕捉貼出):


我自己看了一下,哇!當年原來我們有把趨勢科技的網站當測試資料ㄝ!根據我們這篇論文,當年趨勢的網站一共有70個表單,我們爬了5,781頁而 Teleport 只爬了 2,939 頁,差不多是我們的一半,嘿嘿,研究做得不錯喔!

嗯嗯,平均來說,我們的系統 WAVES 比 Teleport 多爬了 28% 的網頁。

這是怎麼達到的?簡單的來說,我們做了以下幾點是其他爬行器所沒有的:

1. 那時我們透過 COM 的 IWebBrowser2 直接使用 IE 的引擎,所以我們不但可以執行網頁裡所有的 javascript / flash / Java applet,還可以虛擬使用者的滑鼠擊點(click)。碰到 flash 的時候我們就每隔幾個畫素就按一次,碰到 javascript 的選單的時候也是一樣。

2. 因為我們直接掌握了 IE 的引擎,所以我們可以知道整個 DOM(document object model)最後被畫出來(render)的樣子,也就是說,我們知道每個字以及每個物件的位置。所以當我們看到一個要填字的空格(textbox)時,我們就水平地去找這個 textbox 左邊的字,然後我們有一整個智慧庫(knowledgebase),可以根據這個 textbox 周圍的文字描述,以及他本身的 HTML 名字與變數,綜合起來決定,這個欄位要的是什麼值(姓名、電話、email、住址?)。

為什麼我們花這麼多時間做爬行器(crawler)?因為對於黑箱的技術來說,不論是偵測網站掛馬,或是做自動的黑箱滲透測試,都需要好的爬行器。今天的網站,動不動上千頁,沒有好的自動爬行技術,連攻擊點(attack surface)都會蒐集不完全,更何況其他。自動滲透測試的話,如果一個表單十個欄位,你想自動 SQL inject 其中一個欄位,那你最好把其他九個欄位填對。只要有一個欄位你沒填對,例如要郵遞區號結果你填 email,那在伺服器端的程式(server-side script),會還沒做到資料庫指令(SQL command)就先停了,因為你有欄位沒填好。當然如果他每個欄位都有檢查,那就沒有漏洞,那沒話說,但是通常不是這樣,很多人都只檢查特定幾個欄位,那麼其他欄位就會有 SQL injection 漏洞了。阿...我說得太亂了嗎?簡單的說,填對越多,越有機會 pass 過前端的 validation procedure 啦!

所以說,爬行器很難做;喔,應該說,「好的」爬行器很難做,爛的滿街都是。事實上我覺得,爬行器會是一個黑箱技術好壞的關鍵。

當初這篇論文 WAVES ,為了要投上 WWW,我們把自動黑箱滲透測試與自動掛馬偵測兩個技術都寫入其內。很多人問我們為何將網頁掛馬自動偵測技術產品化,而自動黑箱滲透測試卻沒有?答案其實很簡單,當初的 WAVES 系統整個都沒有商品化。現在的 HackAlert,是 X-Solve 與我們結合後他們團隊做出來的,跟我們原本的 WAVES 系統沒有關係;HackAlert 在各種方面,也複雜,成熟許多(當然啦!經過了六年了!)。至於原本 WAVES 的自動黑箱滲透測試部分,則由於我們後來做了白箱源碼檢測 WebSSARI 技術,重新商品化成 CodeSecure 之後,就沒有必要再做黑箱的了。

好,講完(A)爬行器的技術,來談談(B)sandbox 的技術吧!

Web 測惡意程式都經過層層的加殼與變形,要偵測 Web 惡意程式,無法用靜態的分析來達成,必須用動態的 sandboxing 技術。事實上,Web 的惡意程式已經對防毒產業造成的相當的困擾。底下這個圖是擷取於賽門鐵克 2007 後半年威脅報告(Symantec Internet Threat Report 2007):



這個圖是每半年,新的惡意程式出現的數量。賽門鐵克的報告中將 2007 年惡意程式在數量上的驚人成長,歸咎於 Web 惡意程式的氾濫。事實上也是如此。

Web 惡意程式,大都經過加殼,不論是 javascript 掛馬,或後續再下載回來的惡意程式,都會經過加殼變形。這其中尤其又以 javascript 為最難,DEFCON 我聽到一場演講,講師(現在是我好朋友了)展示了一種新的 javascript 變形觀念,非常具有創意,也不容易偵測(我之後會寫)。

其實即使一般 javascript 編碼/變形,就不容易偵測了。除了大家熟悉的 MPack 商用加殼軟體外,現在線上的 javascript 編碼/變形服務也到處都是:看這裡這裡

要解出這些加殼或變形的惡意程式,靠防毒軟體沒有太大效果,必須要靠動態的 sandbox (沙盒)。

不止要有 sandbox,還需要有整個 DOM(Document Object Model);或乾脆說,要有整個瀏覽器的環境。很多人想偷懶,用 spidermonkey 來做(SANS最近也玩了一下),但是就如同 SANS 的 Daniel Wesemann 說的:「But SpiderMonkey is only a JavaScript engine - it doesn't emulate the browser and doesn't even have a "document" or "location" object...」。

Spidermonkey 是一個 javascript 執行器,但是不是一個瀏覽器,還缺很多環境,雖然可以用它貼貼補補來做惡意程式偵測,我們當初還是決定打正規戰--建立完整的沙盒(sandbox)環境。

當年我們的 WAVES 論文,是利用 detours 這個含式庫,來建立自己的 sandbox,一共攔截了以下的含式(直接將論文畫面捕捉貼出):



當時關於沙盒的建立,資訊還不太多,大部分靠社群朋友的分享。

現在好的 sandbox 很多了,我前幾天貼的文--Black Hat 2008 第一天觀察中就有提到,像是 Paul Royal,講的就是他利用 Intel VT 建立的一個 sandbox 環境,並且有跟其他 sandboxing 技術比較。

Sandboxing 大致上可以說有四個目的: 1) 限制惡意程式不能讓其逃離 sandbox,2) 要讓惡意程式正常執行,包含正常脫殼與攻擊等,3) 不可以讓惡意程式發現它正被放在 sandbox 中執行, 4) 需要讓惡意程式展現行為。很多 sandboxing 技術做到了 1-3,但是無法做到(4)。

例如,如果惡意程式就是硬等個三十分鐘,才觸發攻擊,那麼如果 sandbox 只有三分鐘觀察時間(HackAlert 總不能掃一個網頁要三十分鐘吧?),就無法觀測出惡意的行為,而會提早收工而誤判了。

這就是當初我們 WAVES 論文中所提的「Behavior Stimulation(行為觸發)」的概念。在這方面,X-Solve 的加入是超級的生力軍,他們帶來了 Archon 引擎,也催生了 HackAlert

HackAlert 是免費的服務,歡迎各位註冊使用;如果想很快看看它的介面,可以看一下 Walter 貼的「自動爬行功能正式啟動」那篇。

如果要比較 HackAlert 偵測惡意程式的功力到底如何,可以找一些厲害的惡意程式試看看,如果手上沒有,MalwareGuru裡有一些;MalwareGuru 是一個 wiki,歡迎您直接註冊帳號參與 :)

至於很多人問我,為何最近都談惡意程式沒有談我們的白箱工具 CodeSecure ?是的,CodeSecure 還是我們主力產品,原因很簡單,HackAlert 隨便一寫就花我兩三個小時去了,CodeSecure 的技術更難,大家更不熟(喔?你 advanced compiler / formal methods / model checking / programming language 都修過?okok...我是指正常人),我每次想寫就手軟(尤其 CodeSecure 的工程師都超忙,更不可能幫我)...不過既然大家這麼有興趣,我下次再寫好了,先讓我把 Black Hat 還有 DEFCON 寫完吧!

最後,看到今天的 HackAlert 做得這麼成熟,心裡真的很高興,把當初論文上登的 WAVES 畫面切下來貼一下好了。現在 Walter 帶著 X-Solve 團隊做,以前這東東幾乎我一個人寫的勒!雖然跟 HackAlert 沒太大關連,貼一下紀念紀念啦!



作者 Wayne 為阿碼科技 CEO

繼續閱讀全文...

網頁掛馬檢查服務--全網監控功能啟動!

去年,隨著掛馬手法在駭客集團中流行,客戶不但害怕被入侵,被掛馬,也害怕被 Google 點名。今年初我們釋出了 X-Solve 團隊加入後共同努力打造出的免費 HackAlert 服務。當時因為駭客掛馬大多只掛在首頁,HackAlert 的單一URL監控就足夠應付:



然而自今年年初,我們的團隊監控到了有種自動化的大規模 SQL Injection 加掛馬攻擊,在每週末準時報到 (阿碼新聞稿PC World(IDG)ITHome),讓不少人半夜接到關切電話,而 HackAlert 與 SmartWAF 也收了不少樣本下來...

但很多客戶的網站都很龐大,URL也常變動,單一 URL 監控要定期更改實在不方便,所以我們開始設計能夠定期自動監控全網並自動進行掃描的企業級監控功能,並在最近終於釋出正式的版本,我在這邊一步一步帶大家使用:


1. 首先,登入後的空白頁:


2. 點選「新增專案」,會出現設定精靈
我們指定要監控這個眾多阿宅常去的著名網站 (hxxp://waigua.tw)



3. 新增完畢,點「Scan Now」就會開始全站檢查:


下圖是爬完的結果:

全站檢查會開始 crawl 整個網站,目前的版本總共找到400頁,用Google查詢的話,會找到158筆左右:



4. 接著就可以到專案統計表去看全網掛馬偵測結果
(測試時間為2008年8月14號下午5點左右):


看來很多頁都很精彩,總共有98頁被掛,玩 game 練功順便開動物園。


5. 但是 HackAlert 不只告訴你哪個網頁已經被掛 (徵狀),還可告訴你木馬怎麼被下載的 (證據):

首先, 把滑鼠移過去就會看到點選提示:


反白後按下去,就會看到看到木馬下載被 HackAlert 記錄的過程:

再來一張:



6. 企業客戶可以啟動 syslog 通報以及查閱記錄功能:



有了全網監控功能之後,不論是掛在首頁或是藏在深處的馬,都能被更有效的發現,有興趣的話,,可以跟我們聯絡,透過 http://hackalert.armorize.com 首頁上的 Contact Us 就可以找到我們。

作者 Walter 為阿碼科技 CTO

繼續閱讀全文...