# CEH 第十一章、Session Hijacking ###### tags: `CEH` v11課本(P.1387) 考三題 ## 什麼是Session Hijacking ![什麼是Session Hijacking](https://i.imgur.com/Q7nIgf9.png) Session Hijacking是指攻擊者接管兩個台電腦中有效的TCP Session。 1. TCP、有效的Session被偷。 2. 身分驗證通常僅在工作階段一開始時(三次的握手就代表通訊成立),所以很好抓到。 3. 攻擊者可以sniff TCP的傳輸,並偽冒身分、竊取資訊或詐騙等,甚至進行中間人攻擊MITM或DoS。 4. 攻擊者可過有效Session ID或使用他人身分訪問伺服器。 言下之意:身分遭竊,遭假造、Session掉了 ## 為何Session Hijacking會成功? ![為何Session Hijacking會成功?](https://i.imgur.com/TOgEMxw.png) 1. 沒有禁止無效IP的Session,驗證是try有效的session 攻擊者可以透過Try很多次,直到Try成功為止(暴力攻擊),而伺服器並未阻止或提除警告。 2. 生成Session的演算法太weak 大部分網站使用當下時間、IP等資訊來生成Session ID。 3. 不安全的處理Session ID,使攻擊者可以輕易存取 攻擊者可以通過誤導用戶的瀏覽器訪問另一個網站來偷取Session ID,如:XSS。 ``` <SCRIPT> alert(document.cookie); </SCRIPT> ``` 4. Session沒有設定time-out 5. 使用TCP協定都容易受到攻擊 6. Session沒有加密 補充影片:https://www.youtube.com/watch?v=I_4OsxJwAFM&ab_channel=AwaisMalik ## Session Hijacking Process ![Session Hijacking Process](https://i.imgur.com/EC5gVgx.jpg) 發生在網路層、工作階段的劫持,通常分成三個階段: 1. 跟蹤與連線: * 可能利用Nmap進行確認TCP連線 * 偷取用戶的確認號與序列號(sequence number or acknowledgment number) 2. 同步取消連結 * 中斷使用者與Server間的連線 * 攻擊者使用竊取的Session ID與主機連線 3. 進行注入攻擊 * 對目標主機下攻擊指令 ## Local Session Hijack ![Local Session Hijack](https://i.imgur.com/qqOjqxG.png) * 用戶與Server進行TCP連線時的三向交握中,Server會在SYN+ACK同意使用者開始與Server連線,並夾帶含有序列號的ACK旗標。如圖: ACK 1201 * 用戶傳送Data+Server初配發的序列號進行資料傳輸,如圖DATA=128 SEQ 1201。 * Server收到後回覆ACK並夾帶下一個序列號,也就是用戶端DATA長度(128)+前一個請求的序列號(1201),下一次用戶將從1329序列號開始傳輸。 * 由於攻擊者可以猜測下一個序列號。故搶在使用者之前發送有效序列號的封包,與Server連線。 * 最後,攻擊者取得與Server的連線,並中斷用戶與Server的連線。 ## 補充:防範的方式 確認來源IP,與該Session ID是否匹配。若在同一個Session中,來源IP有更改,則自動將此Session登出。 ## 補充:各類XSS 1. Stored XSS (儲存型) 2. Reflected XSS (反射型) (通常會搭配URL encoding+釣魚郵件,來欺騙使用者) 3. DOM-Based XSS 參考網址:https://ithelp.ithome.com.tw/articles/10218476 ## Types of Session Hijacking ![Types of Session Hijacking](https://i.imgur.com/WTdP9UF.png) 1. 主動攻擊:進行MITM攻擊,故攻擊者必須在用戶之前傳送猜測的序列號。 2. 被動攻擊:僅監聽,並從封包中解析有用資訊。 ## Spoofing vs Hijacking ![Spoofing vs Hijacking](https://i.imgur.com/YK7uLrc.png) * Spoofing: 帳戶掉了,credentials掉了 * Hijacking: 在既有的連線上,有效的Session ## Predict a session token 產生的Session太Weak ## Compromising session * XSS: document.cookie,偷Session * Javascript code * Trojans ## (考!)TCP/IP Hijecking ## IP Spoofing 假造封包,主機還沒收到之前攻擊端先收到 ### RST Hijacking 做DoS,不讓你用那個服務器 ex: 工具-網路剪刀手 ## Blind and UDP Hijecking * Blind: 攻擊者不再中間,盲測,閉著眼睛瞎掰 * UDP: DNS怕這種攻擊 ### MiTM Attack Using Forged ICMP and ARP Spoofing ## Method to Prevent Session Hijecking: To be followed by web developers HTTPOnly: 只給HTTP讀,JavaScript不行,給開發人員 ## (重要但沒考!)Approaches to Prevent Session * HSTS: 不能走HTTP,強制改走HTTPS * Token Binding: * HPKP: 第一次走HTTPS公鑰時就記起來 ## (考!)IPSec * Components of IPSec * IPSec Driver * Internet Key Exchange(IKE): 網際網路金鑰交換協定 * 金鑰管控協定 * Benefits of IPSec: (特色) * Network-level: IP跟IP的驗證,主機要驗證(驗Pre-share Key、憑證certificate) * Data origin authentication: 真實性 * Data integrity: 完整性檢查 * Data confidentiality: 私密性 * Replay protection: 防Replay攻擊,用過不能再用 * Modes of IPSec * Transport Mode: 標頭不做加密 * Tunnel Mode: 包含標頭做加密 * IPSec Architecture 補充: | IPSec Protocol | protocol IP | C | I | Auth | | -------- | -------- | -------- | -------- | -------- | | AH | 51 | | V | V | | ESP | 50 | V | V | V | ==(考!)補充:IPSec不可阻擋DoS!==