Information Security Fundamentals and Practices 資訊安全概論與實務 潘天佑博士 主編 版權聲明:本教學投影片僅供教師授課講解使用,投影片內之圖片、文字及其相關內容, 未經著作權人許可,不得以任何形式或方法轉載使用。
第一篇 第4章 駭客手法研究
攻擊者的類型 貪圖小利的傳統破壞者 惡作劇的年輕人 心有不滿的員工 專業駭客 他們尋找方法盜接有線電視或竊取密碼使用免費資源等。 通常不具備技術能力,只會使用工具進行攻擊。 惡作劇的年輕人 未必有高明的技術,但因為身在組織內部,經常造成極大的傷害。 心有不滿的員工 具備高級的技術能力,經常為經濟利益、意識形態、或自我炫耀而發起攻擊。 專業駭客
駭客分類 黑帽駭客 blackhat hackers 白帽駭客 whitehat or ethical hackers 灰帽駭客 指一些資訊安全專家,以類似駭客的手法檢驗系統與網路,協助公司或組織找到資訊安全漏洞。 白帽駭客 whitehat or ethical hackers 指大多不違法,但又遊走法律邊緣常以類似駭客之手法便宜行事者。 灰帽駭客 grayhat hackers 指願意協助資訊安全人員瞭解駭客手法的駭客。 改革的黑帽駭客 reformed blackhat hackers
認識網站結構 瀏覽器 (browsers):例如 Internet Explorer 或 FireFox 等 通訊協定 (transport protocols):HTTP 或有加密功能之 SSL 網站伺服器 (web servers):最常見的為以微軟為主的 IIS 和開放原始碼 的 Apache 網站應用 (applications):有 PHP 與 ASP 較常見。 資料庫 通訊協定 網站應用 瀏覽器 網頁伺服器
網站攻擊步驟 掃描網站伺服器 瞭解網站及其弱點 攻擊網頁伺服器 攻擊網站應用程式 攻擊身分驗證 利用資料庫
掃描網站伺服器 駭客常使用合法而免費的工具 (如 Nmap 或 Amap) 來尋找開放的電腦 連接埠,或瞭解作業系統等。 www.netcraft.com 是一個功能極強而不需安裝的工具,在它的 “What‘s that site running?...” 欄打上欲查詢之網站名,即可看到很詳細的網站資 訊。 駭客也會使用簡單的通訊協定 (如 Ping 或 Telnet) 來測試網路結構,例 如 Telnet 一個隨意網址,便能收集到以下資訊: C:\>telnet www.anysite.com 80 HTTP/1.1 400 Bad Request Server: Microsoft-IIS/5.0
瞭解網站與弱點 攻擊者查出網站伺服器的廠牌、型號後,便能進一步尋找該伺服器的 已知弱點。 舉例說明,如果工具 (例如 Netcraft) 指出伺服器為 Microsoft IIS 6.0, 則該系統使用 Windows 2003;若為 Microsoft IIS 5.0 則是 Windows 2000。 攻擊者可以在 www.securityfocus.com 或 http://nvd.nist.gov 等公開網站 找出該系統的已知弱點。 例如在 SecurityFocus 網頁的 vulnerabilities 輸入 “Microsoft IIS 5.0” 就 能找到包括 “.printer ISAPI Extension Buffer Overflow” 等弱點,從2000 年到2007年共累計76項。微軟公司針對每一項弱點都已發行補丁, 但若沒有依指示及時安裝補丁,就易成為受攻擊的標的。
攻擊網頁伺服器 網站伺服器偶而會被找出弱點,以下是 IIS 5.0 曾遭受攻擊的兩個弱點: 緩衝區溢位 (buffer overflow):2001年IIS 5.0 被發現有 .printer 檔案的 緩衝區溢位,若連續被塞入420 個以上的字元,緩衝區即滿溢。此 時伺服器有可能會回覆給攻擊者一個 prompt,讓他有機會對主機直 接下達指令。 檔案系統橫越 (Unicode directory traversal):IIS 5.0 對 Unicode 的檢查 不夠嚴謹,若直接在URL欄填入長Unicode,就可以騙過網站檢查。 例如將 ’/’ 這個符號輸入URL欄應該受到檢查,但若輸入這個符號的 長 Unicode ‘%c0%af’ 就能不被檢查而直接接受。這讓 ‘../../../’ (移往根 目錄) 這種不該被接受的語句能被插入URL欄,造成安全問題。2001 年的 Nimda 蠕蟲就是使用這個 IIS 弱點。
攻擊應用程式 混淆 URL (URL Obfuscation) URL 可以填入IP位址,例如 http://192.168.13.10。 將這四個數字個別展開成8位的二進位數,再接成32位就成為: 11000000101010000000110100001010,亦為十進制 3232238858。 因此,http://3232238858 也會指向同一個網站,但以這種混淆的 URL輸入法有時可以騙過網站檢查,讀取一些不被允許的IP。 XSS 是駭客針對網站應用程式漏洞之攻擊手法,將 HTML 或Script插入 網頁中,造成其他人看網頁時受到影響。 例如某位惡意的使用者,在一個網站填寫個人資料頁面時包含了以 下這段文字:<script>alert(‘This is a pop!’);</script>。當別的使用者瀏 覽此人的個人資料,就有一個討厭的視窗彈出。
資料隱碼攻擊 部分網站程式將使用者輸入的資料直接交給資料庫處理,而未事先過 濾可能有害的字元。讓駭客有機會在輸入的資料中夾帶 SQL 語言,進 行資料隱碼攻擊 (SQL injection)。 此攻擊法並非透過病毒等手段,而是經由標準程序操作;因此為防火 牆或防毒軟體所無法防範。唯有加強安全控管並建立良好的程式開發 習慣。 資料隱碼攻擊有以下幾種方法,將在下幾頁中介紹。 迴避授權查驗 使用 SELECT 指令 使用 INSERT 指令 使用 SQL Server 程序
迴避授權認證 最簡單的資料隱碼攻擊是迴避掉網站的登入首頁。當使用者輸入使用 者名稱與密碼後,假設網頁程式用以下SQL將它們與資料庫中 Users 表 格做逐行比對,以確定使用者身分。 這時如果駭客做這樣的輸入: 則前述之 SQLQuery 將被給予以下之值,由於 ‘’ = ‘’ 永遠為真,所以不 需輸入使用者名稱與密碼,仍能通過認證。 SQLQuery = “SELECT Username FROM Users WHERE Username = ‘ ” & strUsername & “ ’ AND Password = ‘ ” & strPassword & “ ’ ” Login: ‘ OR ‘ ‘ = ‘ Password: ‘ OR ‘ ‘ = ‘ SELECT Username FROM Users WHERE Username = ‘ ’ OR ‘ ‘=‘ ’ AND Password = ‘ ’ OR ‘ ’ = ‘ ’
使用SELECT指令 SELECT 查詢用來從資料庫讀出資料。網站應用程式若提供動態內容, 則很可能是直接使用 SELECT 的查詢結果。一種攻擊方法是在 WHERE 子句加上 UNION SELECT。假設網站程式使用以下 SQL: 這時如果駭客做這樣的輸入: 則前述之 SQLQuery 將被給予以下之值,讓 City = ‘’,所以沒有動作; 反而是駭客刻意插入在 UNION 後面的查詢被執行了。 SQLQuery = “SELECT FirstName, LastName, Title FROM Employees WHERE City = ‘ “ & strCity & “ ‘ “ Login: ‘ UNION ALL SELECT OtherField FROM OtherTable WHERE ‘ ‘ = ‘ SELECT FirstName, LastName, Title FROM Employees WHERE City = ‘ ‘ UNION ALL SELECT OtherField FROM OtherTable WHERE ‘ ‘ = ‘ ‘
使用INSERT指令 INSERT 指令將資料加入資料庫內。部分網站會將使用者輸入的資料重 新顯示做為確認,這就成為攻擊的機會。假設網站程式要使用者註冊 時,使用以下 SQL: 這時如果駭客做這樣的輸入: 因此 SQLString 不再是一個新輸入的名字,而是在資料庫裡的第一筆資 料。當網站將使用者輸入的資料重新顯示,反而洩漏了資料。 SQLString = “ INSERT INTO TableName VALUES (‘ “ & strValueOne & “ ‘, ‘ “ & strValueTwo & “ ‘) “ Name: ‘ + (SELECT TOP 1 FieldName FROM TableName) + ‘ Email: xyz@xyz.com INSERT INTO TableName VALUES (‘ ‘ + (SELECT TOP 1 FieldName FROM TableName) + ‘ ‘, ‘xyz@xyz.com‘)
資料隱碼攻擊之防禦方法 對於字串的輸入加以過濾,並限制長度。例如單、雙引號都應排除。這種過濾應該被用在所有的應用軟體中,不光是網站。 加強資料庫權限管理,讓網站或軟體不以系統管理員的帳號連結資料庫。 勿讓使用者直接看到資料庫傳回的錯誤訊息,以免駭客由錯誤訊息中獲取過多資訊,來判斷下一筆的資料隱碼。
Google Hacking 搜尋網站 (例如 Google) 的搜尋能力極為強大,往往會把敏感資訊公諸 於世。Google hacking 是指使用搜尋引擎的連結侵入他人系統。 Johnny Long 所著:“Google Hacking for Penetration Testers” 介紹許多 Google 駭客手法,也可上網站了解:http://johnny.ihackstuff.com。 如果在 Google 打入關鍵字 “Index of /admin” 可讓你連結到一些粗心網 站的系統目錄內,而不需經過身分認證。 打入“Index of /password” 或 “Index of /mail” 會有類似的結果。 請注意:不可侵入他人系統,以免觸法。
認識通關密碼 使用者名稱 (username) 與通關密碼 (password) 是時下電腦、系統、與 網路身分認證最常用的方法。 破解通關密碼的手法不外以下幾種: 以電腦重複去試各種可能的密碼,相關做法將於下幾頁詳細說明。 以社交工程、網路釣魚、或使用中間監看工具來騙取密碼。 由於許多使用者不願費心記憶密碼,所以用直覺或觀察法也甚為有 效,例如: 可以先試 “1111”, “1234”, “abcd”, “password” 之類的懶人密碼;或是輸入使 用者名稱,許多人將這兩者設為相同。 若有其私人資料,則試其配偶、子女之姓名拼音或生日,或以上合併。 觀察當下環境裡是否有適合作密碼的字,例如網址、網名、廣告詞等。
窮舉攻擊法 假設通關密碼每個字元有 n 種選擇,而窮舉的密碼長度從 1 算到 i,那 麼可能的密碼共有 Sum(n1, n2, …, ni ) 種。 舊式 ATM 規定的 PIN 為四位數字 (n=10, i=4),共有 11,110 種選擇;現 改為八位數之後,選擇增加了一萬倍。 電腦使用標準鍵盤,可以增加 n,例如數字 (n=10),字母 (n=26),大小 寫分開 (n=26),鍵盤符號 (n=33)。若以上都用,則 n=95。假設窮舉所 有的八個位數的密碼,則有 6,704,780,954,517,120 種。 經過這樣的分析,我們得到兩點結論: 由於運算時間過長,窮舉攻擊並不適合用來攻擊電腦的通關密碼。 設計通關密碼時,較長的 n 和 i 可以有效的遏阻密碼攻擊。
字典攻擊法 字典攻擊乃基於一個假設:一般人設定的密碼大多可以在字典裡找到, 或是可以用其他方法猜測與分類。這個假設甚為合理,因為幾乎沒有 人能記得 (或願意去記) 一個隨機產生的八位元密碼。 網路上有許多字典攻擊工具,其中以 Cain & Abel 與 John the Ripper 較 具知名度。這類工具是把兩刃劍:一方面可能幫助駭客攻擊別人的密 碼;另一方面,若整合進身分認證系統,可幫助使用者挑選高強度之 密碼。 通關密碼的選擇具有語言及地區性。英語系國家的使用者常選用英文 單字;但華人使用者可能使用中文拼音。例如「小明」的拼音與四聲 為:Shiao3Ming2,從英文看這個密碼很強,在台灣則未必。 許多人在研究密碼的規律性;而使用者設密碼時,應避免規律性。
彩虹表攻擊法 一般而言,密碼不會儲存在純文字檔案中,而是用雜湊 (hash) 函數的 輸出值來儲存密碼。雜湊是不可逆運算,即使攻擊者能夠讀取密碼的 雜湊表,也不能從雜湊表來重建密碼。 「彩虹表」是針對各種可能的字母組合,預先計算好其雜湊值並列成 表格,可以用來攻擊前述的密碼雜湊表。雖然攻擊者也可以即時計算 雜湊值,但是利用這個預先算好的龐大雜湊表,能讓攻擊速度變得極 快。 Ophcrack 是彩虹表攻擊發明人Philippe Oechslin 所提供的工具,可有效 攻擊 Windows 之通關密碼。
通關密碼之政策 CISSP 建議以下的通關密碼政策: 至少六個字元長度,應包含數字、大小寫及特殊符號,不應為字典 中的單字或與使用者名稱有關連。通關密碼需經常更換,並勿重複 使用。應訓練使用者如何挑選及保護密碼,包括:不可與人分享密 碼,避免易被猜中之密碼,並不可將密碼放置於未受保護之處。 每當幾次密碼輸入錯誤,系統可以暫時鎖住該帳戶數分鐘,可有效減 低窮舉或字典等攻擊之速度。 在系統計算每個密碼的雜湊函數時,可以額外加入一個密值,讓駭客 事先計算或下載的彩虹表失靈。這個作法稱為加鹽 (salted)。 可以在使用者設定新密碼時做簡單的檢查,例如要求輸入的密碼應含 有數字、大寫、小寫、與特數符號四者中至少三種。
認識無線通訊技術與弱點 家用無線電話:早期(十數年前)家用無線電話沒有安全措施,若與 鄰居使用同型機具,就能彼此聽到通話。目前的無線電話已安全許多, 但若有適當的工具,仍然可以空中竊聽。 衛星電視:衛星電視節目經常遭到未付費戶的非法接收。2001年美國 衛星電視業者DirectTV使用動態碼結合智慧晶片,讓十萬台偽造的機上 盒一夕之間變成為廢物,情況方得控制。 行動電話:第二代數位電話開始具備加解密功能後,空中竊聽就非常 困難;但在電信業者機房依然可以側錄。 藍芽 (Bluetooth):藍芽有許多安全弱點;Bluejacking攻擊能將資料塞進 使用藍芽的機具;Bluesnarfing攻擊能從機具中盜取資料。
認識無線區域網路 無線區域網路 (wireless LAN or WLAN) 的標準為802.11系列,由IEEE在 1997年制定。 802.11 技術持續在演進中,較常使用的 2.4GHz 標準包括過去的 802.11b (11Mbps) 和現在的 802.11g (54Mbps)。802.11n 預計在2009年 通過標準,傳輸速率可達數百 Mbps,距離也較遠。 802.11 使用以前軍方的 spread spectrum 技術,可以降低雜訊干擾並且 可隨訊號品質調整傳輸速率 (訊號品質好就能提高速率)。 802.11b/g/n 將頻寬切分為14個互有重疊的通道 (channels),每個通道 距離 5MHz。但每個國家有不同的頻寬限制,台灣與北美相同只能用 11個通道,大部份歐洲國家可以用13個。
WLAN 的安全問題 – WEP 無線網路比有線網路更難保障傳輸安全,有鑑於此,一種加密傳輸方 法 Wired Equivalent Privacy (WEP) 被設計並廣為應用,然而此法已被完 全被攻破。 WEP 使用 RC4 對稱式加密法,但裝置的方式有漏洞。 WEP 的初始值 (initialization vector, IV) 會被重複使用,收集夠多的封 包後,就可以解開密鑰。 此外,WEP 沒有將整個傳輸加密,表頭和表尾皆為明碼。 Wi-Fi Protected Access (WPA) 被提出以修補 WEP的問題。 WPA 使用修正的 RC4 (TKIP) 並增加金鑰長度,IV 由 24 bit 增至 48 bit; 進階的 WPA2 更使用 AES 加密。
無線網路攻擊 開放身分認證 (open authentication) 竊聽 (eavesdropping) 欺騙 (spoofing) 拒絕服務 (denial of service, DoS)
無線網路的竊聽攻擊 竊聽攻擊是無線網路的基本問題,任何在射頻範圍內的機具都可以接 收到訊號。 將無線 NIC 卡設定在隨意模式 (promiscuous mode),就可以接收所有 的封包,而不僅限於自己的IP位址。 使用強化天線,可以接收更遠的訊號。一個簡易的 cantenna 有機會 收到三百公尺外的 WLAN 訊號。 相當多的無線網路沒有啟動最基本的安全設定,因此被竊聽的資料 是以明碼傳輸。而FTP與SMTP等協定在傳輸使用者名稱與通關密碼 時,也都是使用明碼。 如前所述,即使以 WEP 加密傳輸,仍可輕易的以工具破解。 相關資訊及工具可參考 www.wardriving.com。
開放身分認證 大部分的無線網路設備 (如基地台) 在出廠時的設定都是 open systems authentication,也就是不論任何人或系統,都可以不經身分認證地自 由使用。許多旅館、咖啡館、餐廳提供的無線網路都處於開放身分認 證的狀態。 惡意使用者可以經由這個網路的連結做不法的事,卻隱藏自己的IP。 開放身分認證的狀態讓連結上來的使用者都冒著遭人竊聽的風險。 大部分使用者上網後的第一件事就是查電子郵件,開放身分認證這 個狀態讓使用者與郵件伺服器間的ID與密碼被暴露在公共場合。 這種狀態也讓連結上來的主機有被安裝後門的風險。一旦這些被侵 入的主機遭受駭客挾持,就可能在未來被用作攻擊別人的傀儡機器 (zombies)。
欺騙的無線基地台 在無線網路世界裡,駭客未必扮演中間攻擊者,也可能是一個基地台, 稱做欺騙基地台 (rogue access point) 或孿生惡魔 (evil twin)。 若你在公共場合急著上網,可能會隨意選擇任何能夠上網的無線網 路,卻連結到了一個駭客所設置的基地台。 駭客基地台可能取了一個足以亂真的名字,例如 WiFi-Service,假裝 成收費網路服務,向使用者要信用卡號及驗證碼。 基地台的角色也讓駭客可以攔截機密資料,如網路銀行密碼等。 有時駭客會在公司附近安裝無線基地台,如果一台公司內的電腦同 時連結公司內部有線網路 (intranet),又連結了駭客基地台,那麼駭 客就有機會經此路徑侵入公司內部網路。 有的WLAN卡會自動連結訊號最強的無線網路,而未徵詢使用者。
無線網路的拒絕服務攻擊 身分認證洪水攻擊 (authentication flood attack) 是指駭客對基地台不斷 發出身分認證的要求,讓認證伺服器無法回應其他使用者的正常要求。 解除授權洪水攻擊 (deauthentication flood attack) 是相反的,由駭客偽 裝伺服器,不斷的向某個使用端電腦發出解除授權信號,該電腦意欲 重新連線,則繼續用解除授權來阻斷。 無線干擾攻擊 (network jamming attack) 是使用高能量的電波發送機對 預干擾的區域發射,一台1000瓦的發送機可以在一百公尺外干擾一個 小型辦公室的無線網路。 更高功率的電波發送機若以天線對準基地台發射脈衝波,有機會永久 性損毀基地台的電子元件。
無線網路的安全措施 將資料加密,所以未經授權的人無法取得機密。 設定存取權限,沒有必要之人就不應享有權限。 徹底保護硬體設施如門禁、主機、與基地台等。 使用高強度的身分認證,確保進入網路者是合法使用者。 在各個防禦層次設定安全控制;萬一某層被攻破,仍能控制損害。
案例研究 在2005年七月十日,一家位於加拿大蒙特婁的公司發現在週末遭人 侵入。經過仔細盤點,公司竟然沒有重要財務損失,真是不幸中的 大幸,大家很快的就忘了這件事。 數個月後,一位資訊安全專家到該公司進行相關工作,他在開機時 發現有一個訊號很強的不安全無線網路。他提醒該公司系統管理員 不該設置不安全的無線網路,但系統管理員表示並沒有裝置任何的 無線網路基地台。 經過一番搜查,一個無線網路基地台被藏在電腦機房的線路箱裡, 與公司的 LAN接在一起。這才是幾個月前有人侵入公司的原因,不 是為了竊取任何實體財務,而是為了竊取該公司正在進行中的研究 計畫! (取材自 CEH Exam Prep by Michael Gregg)