搜尋此網誌

顯示具有 Social engineering 標籤的文章。 顯示所有文章
顯示具有 Social engineering 標籤的文章。 顯示所有文章

2009年6月11日 星期四

網路也有假警察

不知道你是否曾經在上網的時候跳出一個視窗,視窗的內容只有幾個大字(有時還加上一個大大的警示圖示),內容是告訴你你的電腦被惡意程式感染了。如果你曾看過,不知道你當下的反應是甚麼?如果你選擇直接關掉這個視窗,有兩個可能性,一個是你已經練就處變不驚的能力,另外一個就是你有看沒有懂(因為這種視窗的訊息通常是英文)。記得我第一次看到這類訊息的時候,心裡還真緊張了那麼一下。不過我當下的選擇當然不是點選上面的連結,而是開啟我安裝於我電腦內的防毒軟體進行掃描。是的,那個年代還是一套防毒軟體就可以應付大多數情況的年代。掃描的結果當然是沒有發現異常,心裡也因此總覺得怪怪的。只是在幾次之後,就真的也就見怪不怪了。但是,如果你選擇了相信它,進而點選了上面的連結,通常下場就是引狼入室。也就是本來沒有惡意程式的存在,但是因為下載了所謂的移除軟體,而此移除軟體本身才是惡意程式。

上述的方式其實跟現在很流行的假冒成警察或檢調單位的詐騙行為很類似,都是利用威脅的手段促使受害者失去判斷能力,進而達到後續的欺騙目的。而這樣的威脅跟拿刀子架在你脖子上的威脅完全不一樣,因為如果你看到刀子,就知道這一定是不懷好意。雖然通常你也會加以屈服,但是那只是表面上的,心裡面可還是會想辦法逃脫。就算無法逃脫,也會在事後馬上報警處理。但是前者的威脅,卻有可能讓受害者信以為真,所以一時之間沒有採取任何防範措施。其結果就是造成更大的損害,或是讓詐騙分子有更多的時間加以脫身。而以網路而言,大部分問題屬於前者,也就是讓損害持續加以擴大。

這類的軟體有人將之稱為威脅軟體 (ScareWare),利用的正是社交工程的一種手段。嚴格來說,威脅軟體本身並不一定會造成真正的危害,通常造成危害的可能是後續下載的程式。而這類只威脅、卻沒有後續危害動作的程式又稱之為惡作劇軟體 (Prank Software)。當然,有些威脅軟體並不需要額外下載另一個程式,本身在威脅過後就可以馬上”提供”惡意的服務。像前幾天微軟公布了一個叫做Win32/InternetAntivirus的惡意程式,不但冒充成防毒軟體,還製造出假的掃描結果,試圖引導使用者購買另外一個完全沒作用的軟體來解決”問題”。除了騙人之外,這個軟體當然也會順道偷走一些資料,例如帳號/密碼。

面對這類社交工程手段的攻擊方式,最基本也是最重要的就是小心謹慎。對於任何不正常的狀況(上網兼做電腦掃描?),都應該保持警戒。當然,不要任意下載軟體也是必要的防範措施。尤其在發生問題的時候,可別病急亂投醫。如果你已經有習慣使用的安全軟體,請記得向它求助。如果沒有,就求助於知名的產品(但是千萬要確保取得來源的可靠性),而不是Google上不小心搜尋到的軟體。因為這年頭除了有假警察,也有假醫生的存在,不可不慎。

2009年6月9日 星期二

百密可別一疏 - 如何做好全面的Input Validation

Social Web這兩三年很紅,紅的不只是其受一般使用者歡迎的程度,而且也絕對是駭客的新寵。我個人雖然不常使用Social Web,但是或多或少還是無法避免,Facebook是我使用的其中之一。Facebook除了官方的功能,還提供了許多第三方開發的應用程式,這也是Facebook這麼熱絡的原因之一。話說這天我收到一個朋友發出的應用程式使用邀請,接受邀請想加入後不得了,出現了惡名昭彰的SQL錯誤訊息。雖然直接秀出SQL是不被接受的行為,但是我可也沒放棄這個機會。我稍微看了一下,原來就是’這個符號沒有處理好,而’這個符號剛好對SQL語法而言有重大意義。但是我再仔細想了一下,Facbook因為是全球性的網站,個人資料有’這個符號應該也不是完全不可能,至少我就看過人名是有’這個符號的。而我個人資料有’這個符號是出現在家鄉的省份(T'ai-pei),難道這個欄位有免受檢查的特權?所以,為了測試我的想法,我又申請了一個帳號測試這個問題。我這次申請的帳號除了所在地區同樣帶有’外,連姓名也加上了’,測試結果顯示姓名的’被移除了。雖然移除不是一個好的選項(因為這樣姓名就變了),但是至少不會造成程式執行的錯誤。所以應用程式的開發者的確知道該檢查使用者輸入的資料,但是卻沒有檢查到所有該檢查的資料。所以,就有了今天的主題。

Facebook應用程式的錯誤訊息

farmgame_001

如果你從事過軟體開發的工作,或接觸過軟體開發的工作,不管有沒有實際的經驗,至少都聽過一個很重要的建議,那就是要記得檢查使用者輸入的資料。這個建議成為人人朗朗上口的推手,一個很重要的因素就是Web的流行。因為Web的特色就是使用者的輸入來源各式各樣,而且都是不可控制的。也因此有許多的攻擊方法,基本上都是利用忘了針對使用者輸入的資料做檢查而產生的漏洞。像是鼎鼎大名的SQL Injection、Command Injection、XSS、CSRF等,都跟這個問題有或多或少的關連。

這句話聽起來很簡單,而且很也容易懂,但是有兩個很重要的問題需要釐清。第一個問題是甚麼叫做好的檢查方式,或者說是足夠安全的檢查方式。第二個問題則是有哪些資料應該檢查。在這篇文章中,我想針對的是第二個問題加以討論。

所以,有哪些資料需要加以檢查?使用者輸入的資料,以Web的系統來說,大家通常最先想到的就是URL 參數(Get 方式)與Form Data(Get/Post 方式)。因為這是主要用來接收使用者資料的兩種方式。在Form Data有一個特別需要注意的地方,就是隱藏欄位也同樣需要檢查。雖然一般使用者在正常的使用中無法看到與修改隱藏欄位的存在與內容,但是駭客既不是一般的使用者,通常也不會用正常的使用方式,所以隱不隱藏對有心份子來說是沒有任何差別的。

除了這些顯而易見的資料外,其實還有一個地方也是在使用者的完全掌握之中,那就是Cookie。雖然Cookie一般存在檔案中、有時甚至存在記憶體中,所以不方便或不可能直接修改其數值。但是HTTP協定的問題就是在於傳送Cookie時是不做任何加密的動作,所以任何人都可以攔截Cookie的內容,甚至是修改Cookie的內容。說任何人當然是誇張了點,但是在技術上並沒有甚麼特別困難之處,只消一個Intercepting Proxy (如WebScarab)就夠了。

Okay,Cookie我們也檢查了,可以放心了嗎?還不夠!HTTP協定中還有一種資料也是在使用者的掌握中,那就是HTTP Header。雖然我們在大部分的情況下不會使用HTTP Header的資訊,也不會直接利用它來處理使用者的資料,但是這類問題的嚴重依舊不可忽視。

使用者可以直接控制的資料都檢查過了,天下應該太平了。是的,只不過這已經是過去的美好時光。在現在的Web環境下,Web應用程式已經不再是一個單一的系統,而是由各式各樣的Widgets、Mashups等小元件所共同組成。這些小元件的特色就是由不同的人所開發,開發的語言甚至可能不同,種種得不同都代表了這些元件不受主要網路服務提供者的管理與潛在的安全問題。此外,分享的內容也由原先單純的文字,演化到圖片、網誌、影片等各種形式,而這些分享的方式與內容,也可能造成安全的危害。所以,光檢查使用者輸入的資料已經不再足夠,而是要檢查所有透過不是由你(的程式)所直接控制的資料來源所取得的資料。這些資料包括(但不侷限於)從其他網站所獲取的資料、檔案(尤其是使用者上傳的檔案)、資料庫的資料(這是一個特例,即使資料庫是”自己的程式”所維護,也需要加以檢查)、E-mail等。

回到Facebook應用程式的例子,我們發現其實T’ai-pei那串文字並不是使用者自行輸入的。我原先輸入的是Taipei,但是系統對應出來的選項卻是T’ai-pei。也或許因為這個字串是由系統產生的,所以應用程式的開發者就假設這個資料是安全的,所以也就認為不需要檢查。很可惜的是,這樣的假設是不成立的,所以就出現了這樣的錯誤。

有問題資料的乃是系統產生的字串

farmgame_002

2009 CWE/SANS Top 25 Most Dangerous Programming Errors中所公布的第一個錯誤正是不適當的輸入驗證(Improper Input Validation),而其對於哪些資料需要加以驗證有下列文字加以說明

“Understand all the potential areas where untrusted inputs can enter your software: parameters or arguments, cookies, anything read from the network, environment variables, request headers as well as content, URL components, e-mail, files, databases, and any external systems that provide data to the application. Perform input validation at well-defined interfaces.”

在SANS公布的內容中,針對如何加以檢查也有完整的說明,有興趣的讀者就請自行參考了。

相關連結:

2009年2月7日 星期六

駭客的新工具,罰單

根據外電的報導,駭客已經開始利用假造的違規停車罰單導引受害者前往特定的網站。而這個假冒的網站,除了會下載病毒外,也會要求使用者安裝假冒的防毒軟體。報導中並沒有說明受害者受到的損害程度,但是我想那個並不是最重要的問題。因為當病毒已經下載完成,甚至連假的防毒軟體都已經安裝,能夠達到甚麼程度的危害,就端看駭客的”良心”與技術了。

其實台灣的詐欺犯也常利用假冒的法院公文或其他政府文件來達到詐欺的目的。但是這個方法,實際上並不是要你作轉帳出去這類”很可疑”"的行為。而是只要當你想要確認這張罰單的真實性與是否確為自己所擁有的車輛時,就已經遭受了攻擊。更何況,假造一個網站比假冒一個單位更加容易,也更不容易被識破(現在不少詐騙集團的電話人員很容易被套出來)。所以這類結合實體的線上詐欺行為,可以達到不錯的功效,其變形應該也會陸續出現。

這類攻擊帶來的,不只是新創意的展現,也讓一般民眾對於更多的事物必須保持警覺性。今天,連罰單都不可以相信,或許哪天連警察都不可以相信了(或是現在早已經不能相信?)。對於這類線上詐欺的行為,保持良好的網路使用習慣才是目前最佳的保護方法。

相關連結:

2008年5月28日 星期三

老生常談的重要性 - Patch管理基本功不可省

這幾天看了一篇文章,有個老兄 (Chris Goggans) 利用6小時的時間,成功進入了FBI的犯罪紀錄資料庫。這個問題是這個老兄在進行所謂的Pen-Testing (入侵測試,Penetration Testing)時所發現的,而所謂的Pen-Testing簡單來說就是請第三者模擬駭客攻擊自己的系統。Pen-Testing有很多方式,可分為從組織內部或是從外部發動,另外也可以根據組織主動提供資訊的詳細程度與組織人員對測試計畫的被告知程度加以區分。為了達到最真實的情形,組織不應該提供任何非公開的資訊給進行測試的人員,而且組織內所有的人員不應該被告知測試的進行。但是為了達到比較嚴格的測試,有時候組織會提供較多的資訊給測試人員,以期望他們能夠發現更多的問題。另外組織內的部分人員也會被告知測試的進行,以便進行監視,甚至同時測試其他安全機制。

Goggans指出這次主要是因為安全架構設計不良以及Patch的管理不完整,才讓他有可趁之機。Patch的管理,我想對很多安全人員或IT人員都是聽到不想再聽的觀念,也通常已經包含在日常的工作之中。但是或許也就是因為太過熟悉,所以讓大家對於這件事漸漸麻痺?又或許是因為大部分的系統(尤其是作業系統)強調具備自動更新的機制,使得管理者不再關心Patch這件事?又或是因為需要Patch的東西太多,所以管理者被許許多多的Patch所掩埋了。還是因為現在廠商與市場的主流產品不是Patch管理,所以無法吸引組織的注意(資源)。這些老生常談的問題依舊存在,或許原因真的僅是管理者一時的疏失。但是對於組織而言,把資訊系統交由專家(有些人甚至可能不是專家)處理後,是不是就可以高枕無憂?當然不是,所以才會有所謂的稽核機制的出現。但是稽核機制通常比較像是抽查的方式,運氣夠"好"的話,問題好多年不被發現也是很有可能。

另外現在也很流行ISMS或是一些資訊安全相關的法規。但是符合這些規範,就確保資訊能夠永保安康了嗎?這些規範通常在制定時,就已經有些妥協,其中最主要的原因是確保實施的可行性與彈性。所以符合規範,只不過表示組織通過這些規範要求的稽核項目,同樣並不保證真的毫無問題。當然,規範與及對應的稽核有其效果,不過在目前日益複雜的環境下,需要更全面、更即時且有效率的作法。可以採用的方式就是Pen-Testing,利用第三者的入侵測試找出環境內的安全風險,並利用自動化的工具進行資訊系統安全的平日"維護"工作。這兩者的費用都不低,以長期來說,自動化的工具當然是比較划算的作法,不過需要具備設定軟體與解讀報告的人力,同樣也是一件困難且花費寶貴資源的事情。

雖然Pen-Testing可以找出環境中存在的安全問題以便組織去解決,但是Pen-Testing同樣不是萬靈丹。Pen-Testing主要針對資訊系統的漏洞進行攻擊(尤其是自動化的工具),對於組織運作流程安全、實體安全等其他議題,是沒有太大幫助的。另外,對於組織人員在資訊安全的角色與義務的規範與執行,也通常是無能為力的。不過有些入侵測試會搭配社交工程的方式進行,對於組織人員的安全落實與否倒也算是包含在內。

總結來說,以資訊安全市場而言,每過一陣子就會有新的議題與新的產品。這些新的玩意兒吸引了媒體、廠商與使用者的眼光,也吸引了企業資源的投入。的確,因為環境的不斷變遷,會有許多新的安全議題引爆。但是這並不表示原先的安全議題已經不重要,或是所有組織都已經有了相對應的機制去防範。更不能因為某些議題已經被大家所熟悉,就假設組織有足夠的機制與能力去防護(例如病毒的問題)。資訊安全是全面性的議題,而不是趕流行。所以,組織如何找出自己最需要的安全需求並據此建立制度,然後落實監測機制以確保制度被正確地執行,才是獲得保障的方法。

原文出處:
Six hours to hack the FBI (and other pen-testing adventures)

About