# CEH 第十一章、Session Hijacking
###### tags: `CEH`
v11課本(P.1387)
考三題
## 什麼是Session Hijacking

Session Hijacking是指攻擊者接管兩個台電腦中有效的TCP Session。
1. TCP、有效的Session被偷。
2. 身分驗證通常僅在工作階段一開始時(三次的握手就代表通訊成立),所以很好抓到。
3. 攻擊者可以sniff TCP的傳輸,並偽冒身分、竊取資訊或詐騙等,甚至進行中間人攻擊MITM或DoS。
4. 攻擊者可過有效Session ID或使用他人身分訪問伺服器。
言下之意:身分遭竊,遭假造、Session掉了
## 為何Session Hijacking會成功?

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

發生在網路層、工作階段的劫持,通常分成三個階段:
1. 跟蹤與連線:
* 可能利用Nmap進行確認TCP連線
* 偷取用戶的確認號與序列號(sequence number or acknowledgment number)
2. 同步取消連結
* 中斷使用者與Server間的連線
* 攻擊者使用竊取的Session ID與主機連線
3. 進行注入攻擊
* 對目標主機下攻擊指令
## Local Session Hijack

* 用戶與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

1. 主動攻擊:進行MITM攻擊,故攻擊者必須在用戶之前傳送猜測的序列號。
2. 被動攻擊:僅監聽,並從封包中解析有用資訊。
## Spoofing vs Hijacking

* 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!==