.NET 安全應用程式開發 – 概觀
.NET Security Application Development –
Part I
Blackie Tsai
blackie1019@gmail.com
August 2018
課程大綱
• 網際網路安全概觀
• 常見安全漏洞與攻擊
網際網路安全概觀
14
70%
66%
從 S&P 500 看世界趨勢
預計到2026年,企業的平均壽命將從1990年的20年縮
減至14年
IT預算:運行商業為70%,商業成長為20%,商業轉型
僅為10%
66%企業計畫提升資訊安全預算作為對此風險的直接回
應
這些數字背後的隱含….
傳統的企業模式缺乏敏捷性,無法與新進企業保持競
爭速度
缺乏滿足新業務需求的資源以確保競爭優勢
安全性,合規性和缺乏可用性降低了競爭力並使其面
臨風險。
2018 Global Risk Report
Web應用程式成為攻擊的門戶
•根據 Gartner 的調查,資訊安全攻擊有 75% 都是
發生在 Web 應用程式層而非網路層面上,2/3的
Web 站點都相當脆弱,易受攻擊
資安對企業的影響
我們所面對的現況…
2017年普遍安全威脅趨勢
智聯網時代資安面臨的挑戰
•入侵點的增加,防禦邊界擴大
•軟體/韌體 更新與管理
•資安防護設備 『間』不合作
• 新世代防火牆(Next Generation Firewall,NGFW)
• 新世代入侵防禦系統 (Next Generation Intrusion Prevention System ,NGIPS)
• 網頁應用程式防火牆(Web Application Firewall,WAF)
• 應用程式本身(End-Point)
•看不到防護狀況 無法安排優先順序
法律與規章
Information Resilience
•組織必須因應數位化所帶來的風險及機會並採取
必要的行動
新世代資安防護思維
•資安已是「商務風險」的議題
• 營業秘密遭竊取
• 重要業務系統癱瘓/失效
•資安不在只是 IT (MIS) 的問題
• 有更多是系統開發上的問題
• 引入軟硬體防護治標、注入自身軟體開發流程治本
•資安造成的商務風險
• 營收X競爭力X商譽 =>損失
駭客與其分類
• 駭客(Hacker)
• 白帽(White Hat)
• 也稱為道德駭客,去試探和入侵他們的電腦系統以確認這些系統的安全
性,並提出建議以提高安全程度
• 黑帽(Black Hat)
是犯罪分子,他們的出發點是惡意的。在未經邀請下,他們就侵入受害
者的電腦系統只為了獲取自己的利益
• 網路犯罪份子(Cybercriminal)
• Cracker(破壞者)
• 灰帽(Grey Hat)
• 他們有些行為與非法行動有關,但某些行動也是好的
• 另一則說法: 上班時間在資安社群工作,但是下班後又從事黑帽駭客的人
• 激進駭客(Hacktivist)
道德入侵(Ethical Hacking)
•Ethical Hacker是指行為合乎道德倫理規範的駭客,
又稱為白帽駭客
•道德入侵(Ethical Hacking)則是透過白帽駭客進行
一系列的滲透測試,進而對系統有更全面的了解
網頁應用程式概觀
網路安全的本質
• 資料安全
• 應用程式安全
• 網路安全
• 資料訪問(Data access)
• HTTP 協定(HTTP Protocol)
• 資料庫(Database)
• Session
• Cookie
• 認證(Authentication)
網頁應用程式安全要點
• 不要相信任何來自客戶端的輸入資料
• 重要驗證必定從伺服器後段進行
• 必用白名單過濾
• 可再透過黑名單進行過濾
• 資料消毒,過濾不安全資料
• 避免將輸入反饋給用戶
• 所有應用程式輸出之資料必定編碼
資料訪問(Data access)
• 全面採用 HTTPS
• SSL
• TLS
• 啟用強制安全傳輸技術(HSTS)
• 使用適合的 HTTP Method
• 透過 HTTP Header 加強安全性
• Content-Security-Policy
• X-XSS-Protection
• X-Frame-Options
• X-Content-Type-Options
HTTP 協定(HTTP Protocol)
• 資料消毒,過濾不安全資料
• 避免從用戶輸入直接串接SQL語法
• 透過 Parameters 將查詢需要用到的資料帶入
資料庫(Database)
• 永遠不要公開 session 標識
• 使用屬性保護 session 與 cookie
• 設置適當的到期日期與時間
• 當有以下情境時,必定創建一個新的 session
• 經過身份驗證
• 當用戶更改權限時
Session
• 安全
• 啟用 httpOnly
• Cookie只限被伺服端存取,無法在用戶端讀取
• 啟用 secure flag:
• Cookie只能透過https的方式傳輸
• 必定設定過期
• 透過網域/路徑分散管理
Cookie
• 密碼複雜度、長度與曝光度
• 弱加密算法
• 雜湊與加密
• 避免將密碼存於外部服務
• 使用SSO作整合登入
• 啟用二階段流程認證
• 隱蔽已存在(已知)的資訊
認證(Authentication)
常見安全漏洞與攻擊
攻擊與漏洞知識分類
• Hacking Web Application(入侵網站程式)
• Hacking Wireless Network(入侵無線網路)
• Hacking Mobile Platforms(入侵行動平台)
• System Hacking(入侵電腦系統)
• Evading IDS, Firewalls and Honeypots(規避
入侵偵測/防火牆與誘捕系統)
• Cloud Computing(雲端運算)
• Scanning Networks(網路服務與弱點掃描)
• Social Engineering(社交工程)
• Enumeration(列舉系統資訊)
• SQL Injection(資料隱碼攻擊)
• Malware Threats(惡意程式威脅)
• Sniffers(網路監聽與攻擊)
• Denial-of-Service(阻斷服務攻擊與傀儡
網路)
• Session Hijacking(連線劫持)
• Cryptography(密碼學)
• Hacking Webservers(入侵網站)
弱點與漏洞發佈單位
WASC Threat
Classification
CWE/SANS
Top 25
OWASP Top 10
Web Application
Security
Consortium
WASC Threat Classification
• 由Web Application Security
Consortium所發佈的網路安全威
脅分類
• 由許多資訊安全的專業人員及公司
所組成的專門研究網站安全的聯盟,
其將網站的安全威脅進行分類
• 最新版停留在V2
• 認證
• 認證不足、弱密碼驗證
• 授權
• Session 過期、授權不足
• 客戶端攻擊
• 跨腳本攻擊
• 指令執行
• SQL Injection
• 資訊暴露
• 個資外洩
• 邏輯攻擊
• 服務阻斷
CWE/SANS Top 25
• CWE/SANS Top 25 是由 MITRE
和 SANS 合作所發布前25大網路安
全威脅
• SANS (SysAdmin, Audit,
Networking, and Security) 則是
個專門進行資訊安全教育、研究的
組織,由US-CERT 所資助的
MITRE組織所發布有關網頁應用程
式安全弱點的類別
OWASP Top 10
• OWASP (Open Web Application
Security Project) 為一開放社群,
其主要的目的在於解決網頁應用程
式的安全問題、發展安全相關的工
具及技術
• OWASP Top 10為其中的一項計畫,
每隔一段時間就會發布對於網頁應
用程式最具威脅性或最常見的十大
弱點
常見漏洞與攻擊
• 分散式阻斷服務攻擊(distributed denial-of-service, DDoS)
• 跨站腳本攻擊(Cross-Site Scripting, XSS)
• 跨網站偽造請求(Cross-Site Request Forgery)
• 參數竄改(Parameter Manipulation)
• 重新導向攻擊(Open Redirect)
• 未驗證的轉發攻擊(Unvalidated Forwards)
• SQL注入攻擊(SQL Injection)
• 指令注入攻擊(Command Injection)
• Session 攻擊(Session Attacks)
• 網頁偽裝(Clickjacking)
• 不安全的加密方式(Insecure Cryptographic Storage)
• 中間人攻擊(MiTM)
• 阻斷服務攻擊(Denial of Service attack, DoS),其目的為透過特殊的攻
擊方式來耗盡提供服務伺服器的資源或是頻寬,以達到讓其他的使用者無
法使用到服務
• 當這項攻擊是透過兩台以上的電腦或是殭屍網路來執行時則稱為 分散式
阻斷服務攻擊(distributed denial-of-service attack, DDoS ),其中又
分為針對網路頻寬以及針對系統資源兩種不同類型的攻擊方式
分散式阻斷服務攻擊(DDoS)
分散式阻斷服務攻擊(DDoS)-攻擊網路頻寬
•直接攻擊
• ICMP / IGMP 洪水攻擊
• 這種攻擊是發送大量的這兩種協定的封包來消耗目標的頻寬資源。
• UDP 洪水攻擊
• UDP 攻擊中又分為小封包跟大封包兩種類方式:
• 小封包(64 位元組)是要利用網路設備需要對每一個封包進行檢查的行為下增加設備的負擔
• 大封包(1500 位元組以上)是要迫使攻擊目標在接收到封包後要進行重組,來達到網路壅塞的目
的
•反射攻擊
• 比直接攻擊來的有效率且隱密性較高
•主要由外部硬體設備與第三方軟體設計阻擋邏輯
分散式阻斷服務攻擊(DDoS) – 直接攻擊
分散式阻斷服務攻擊(DDoS) – 反射攻擊
Botnet Reflector Victim
分散式阻斷服務攻擊(DDoS)-系統資源
•目標為伺服器的CPU, Memory, Connection 與 應
用程式負載量
•包含:
• TCP 連接洪水攻擊
• SYN 洪水攻擊
• RST 洪水攻擊
• THC SSL DoS 攻擊
• LAND 攻擊
•主要由應用程式開發端設計阻擋邏輯
真實案例
https://www.ithome.com.tw/news/121588
• XSS通常是透過HTML/JavaScript這類不在伺服器端執行、而在使
用者端的瀏覽器執行。
• 可用來竊取用戶的cookie,甚至於冒用使用者的身份。
• 早期XSS攻擊如網路銀行、電子郵件、部落格或其他需要有帳號才能進入
的網站。近年攻擊則已可以完整的控制瀏覽器,就像木馬程式一樣。
• XSS攻擊分類:
• Reflected XSS (AKA Non-Persistent or Type II)
• Stored XSS (AKA Persistent or Type I)
• DOM Based XSS (AKA Type-0)
• 根據語言分類:
• Client XSS
• Server XSS
跨站腳本攻擊(XSS)
跨站腳本攻擊(XSS)
真實案例
https://zeroday.hitcon.org/vulnerability/ZD-2018-00550
• 主要的攻擊行為就是利用當使用者合法取得網站使用認證後,透過
某些方式偽造網站合法使用者的身份進行非法的存取動作,合法使
用者即可能在不自覺的情況下被引導到駭客的攻擊網頁。
跨網站偽造請求(Cross-Site Request Forgery)
跨網站偽造請求(Cross-Site Request Forgery)
使用者被引進入 B 非法誘餌網站
產生合法 Cookie 於瀏覽器上
使用者瀏覽並登入 A 合法網站
B非法誘餌網站要求訪問 A 合法網站
(包含攻擊代碼)
使用者帶著攻擊碼與合法cookie訪問 A 合法網站
真實案例
http://www.freebuf.com/articles/6295.html
• 駭客通常會透過竄改Web應用程式的Client端與Server端的所傳遞
參數,來對應用程式進行攻擊。這些所傳遞的參數通常包含了
• URL Query String
• 表單資料(Form field values)
• Cookies
• HTTP Headers。
參數竄改(Parameter Manipulation)
參數竄改(Parameter Manipulation)
• Web 應用程式經常將使用者重新導向至登入頁面存取需要驗證的
資源時。 包含重新導向 typlically returnUrl querystring 參數,以
便使用者可以傳回至原本要求的 URL 之後使用者成功登入。 使用
者驗證之後,它們是重新導向至其原先要求的 URL。 因為要求的
querystring 中指定的目的地 URL,惡意的使用者無法修改查詢字
串。 遭竄改的查詢字串可能會允許將使用者重新導向至外部,惡意
的站台的站台。
• 又被稱為未驗證的轉址攻擊(Unvalidated Redirect)
重新導向攻擊(Open Redirect)
重新導向攻擊(Open Redirect)
真實案例
https://zeroday.hitcon.org/vulnerability/ZD-2017-00188
• 運用 HTTP 302 (Redirect) 的漏洞,因為 HTTP 302 會將使用者的
瀏覽器轉到指定的網址,而若目標網址又有惡意程式的話,等於讓
使用者直接被導向惡意網頁。
• 很類似重新導向攻擊(Open Redirect)但不一樣
未驗證的轉發攻擊(Unvalidated Forwards)
未驗證的轉發攻擊(Unvalidated Forwards)
• 又稱SQL隱碼攻擊,是發生於應用程式之資料庫層的安全漏洞。簡
而言之,是在輸入的字串之中夾帶SQL指令,在設計不良的程式當
中忽略了檢查,那麼這些夾帶進去的指令就會被資料庫伺服器誤認
為是正常的SQL指令而執行,因此遭到破壞或是入侵
• SQL注入攻擊高風險情況:
• 在程式中使用字串聯結方式組合SQL指令
• 在程式連結資料庫時使用權限過大的帳戶
• 在資料庫中開啟並授權了不必要但權力過大的功能
• 太過於信任使用者所輸入的資料,未限制輸入的字元數,以及未對使用者
輸入的資料做潛在指令的檢查與過濾
SQL注入攻擊(SQL Injection)
SQL注入攻擊(SQL Injection)
http://students.com?student
Code=A123 or 1=1;--
SELECT * FROM students
WERE studentCode=A123 or 1=1;--
Return data for all studentsGet all students data
SQL注入(SQL Injection)
真實案例
https://zeroday.hitcon.org/vulnerability/ZD-2016-00336
• 是一種常見的網頁注入攻擊行為,若管理者未在網站的輸入表單中
正確過濾敏感字元,攻擊者有則可能透過這些進入點,將指令傳送
至Server本機中執行後,再將執行結果透過動態網頁語言輸出,藉
此獲取機敏資訊或執行未經授權的任意指令。
指令注入攻擊(Command Injection)
指令注入(Command Injection)
指令注入(Command Injection)
http://students.com?student
Code=shutdown
主機/服務被關閉
exec shutdown
真實案例
https://eslint.org/blog/2018/07/postmortem-for-malicious-package-publishes
真實案例
https://zeroday.hitcon.org/vulnerability/ZD-2018-00636
• Cookie 是網站在瀏覽器中存放的資料,內容包括使用者在網站上
的偏好設定、或者是登入的 Session ID。網站利用 Session ID 來
辨認訪客的身份。
• Cookie 可透過跨站腳本攻擊(Cross-Site Scripting, XSS)取得
• 取得 Session 的三種手法:
• 猜測Session ID (Session Prediction)
• 竊取Session ID (Session Hijacking)
• 固定Session ID (Session Fixation)
Session 攻擊(Session Attacks)
Session 攻擊(Session Attacks)
•猜測Session ID (Session Prediction)
• Session ID 的長度、複雜度、雜亂度不夠,就能夠被攻擊者猜測。
• 根據目標使用者的習慣與背景
Session 攻擊(Session Attacks)
•竊取Session ID (Session Hijacking)
• 跨站腳本攻擊 (Cross-Site Scripting (XSS)):利用 XSS 漏洞竊取使用者 Cookie
• 網路竊聽:使用 ARP Spoofing 等手法竊聽網路封包獲取 Cookie
• 透過 Referer 取得:若網站允許 Session ID 使用 URL 傳遞,便可能從 Referer
取得 Session ID
Session 攻擊(Session Attacks)
•固定Session ID (Session Fixation)
• 攻擊者誘使受害者使用特定的 Session ID 登入網站,而攻擊者就能取得受害者
的身分。
真實案例
https://zeroday.hitcon.org/vulnerability/ZD-2017-00088
• 透過偽裝仿製的方式,要讓受害者在假的網站上執行真實的操作,
藉以綁架受害者的輸入與點擊,取得受害者關鍵資訊與敏感資料。
• 主要是透過取得使用者授權(Authenticated Actions)進行正常操
作,所以能取得的資料敏感度極高。
網頁偽裝(Clickjacking)
網頁偽裝(Clickjacking)
使用者瀏覽並登入偽裝網站
取得使用者的敏感資料
駭客仿作的網站
將真正的網站透過iFrame放
在背景,並透過CSS美化融合
真實案例
http://www.digitechengine.com/update-google-chrome-immediately-to-patch-a-high-severity-vulnerability/
• 不安全的密碼儲存器 (Insecure Cryptographic Storage):Web應用程
式沒有對敏感性資料使用加密、使用較弱的加密演算法或將金鑰儲存於容
易被取得之處。
• 密碼或敏感資料加密原則太低或沒有設定
• 加密方式不夠強
• 不對的雜湊使用方式
不安全的加密方式(Insecure Cryptographic Storage)
真實案例
https://www.ithome.com.tw/news/93457
• 中間人攻擊 (Man-in-the-Middle Attack, MiTM) 是一種從中「竊
聽」兩端通訊內容的攻擊手法,可能對企業造成重大威脅。由於駭
客不僅能從中接收資料,還能從中插入自己的資料,因此企業所傳
輸的資料不僅可能外流,更可能遭到竄改。有鑑於企業網路很可能
會傳輸一些關鍵的資料,因此 MiTM 攻擊是 IT 人員必須正視的重
大真實威脅。
• 「以HTTPS連上網站進行交易十分安全」 SSL它只保證傳輸期間的
安全,不保證端點安全
• 網路資安實作-wireshark擷取封包
中間人攻擊(MiTM)
中間人攻擊(MITM)
用戶A發出請求匯款信
仿
造
匯
款
信
寄
給
受
害
人
攔截並刪除信件
詐騙受害者資訊與金錢
真實案例
https://www.bnext.com.tw/article/33961/BN-ARTICLE-33961
任何資安事件都不是單一失誤
• 而是一連串的錯誤
• 查詢各版本漏洞
• https://www.exploit-db.com
• 測試者工具
• https://portswigger.net/burp
• 資安漏洞通報
• https://zeroday.hitcon.org
Demo