Session hijacking cho phép hacker chiếm quyền điều khiển phiên đang hoạt động bằng cách vượt qua quá trình xác thực. Sau đó, chúng có thể thực hiện bất kỳ hành động nào trên hệ thống bị chiếm đoạt. Phần này mình sẽ giải thích session hijacking là gì cũng như các lý do tại sao session hijacking lại hiệu quả, quy trình session hijacking, phân tích gói tin của một cuộc tấn công, các loại session hijacking, session hijacking trong mô hình OSI và sự khác biệt giữa spoofing và hijacking.
Session Hijacking là gì?
Session hijacking, hay còn được gọi là tấn công cướp phiên truy cập, là một hình thức tấn công trong đó hacker chiếm quyền điều khiển một phiên truyền thông TCP hợp lệ giữa hai máy tính. Do hầu hết các hình thức xác thực chỉ được thực hiện ở đầu phiên TCP, hacker có thể truy cập vào một máy tính khi phiên đó đang diễn ra. Hacker có thể nghe lén toàn bộ lưu lượng từ các phiên TCP đã được thiết lập và thực hiện đánh cắp danh tính, đánh cắp thông tin, gian lận, tấn công man-in-the-middle (MITM) và tấn công từ chối dịch vụ (DoS)… Một cuộc tấn công session hijacking khai thác cơ chế session-token generation hoặc các token security controls để hacker có thể thiết lập kết nối trái phép với mục tiêu.
![[CEH] Module 11 - Phần 1: Session Hijacking là gì? 2 [CEH] Module 11 - Phần 1: Session Hijacking là gì? 1](https://sinhviencntt.net/wp-content/uploads/2023/07/image-120.png)
Session hijacking thành công do những yếu tố sau đây:
- Thiếu chức năng khóa tài khoản cho session ID không hợp lệ: Nếu một trang web không áp dụng chức năng khóa tài khoản, hacker có thể thử nhiều lần để kết nối với các session ID khác nhau được nhúng trong URL. Hacker có thể tiếp tục thử cho đến khi tìm ra session ID chính xác.
- Thuật toán tạo session ID yếu hoặc session ID quá ngắn: Hầu hết các trang web sử dụng thuật toán tuyến tính để dự đoán các biến như thời gian hoặc IP để tạo session ID. Bằng cách nghiên cứu các mẫu tuần tự và tạo nhiều yêu cầu, hacker có thể dễ dàng thu hẹp không gian tìm kiếm cần thiết để tạo ra một session ID. Ngay cả khi sử dụng thuật toán tạo session ID mạnh, hacker có thể dễ dàng xác định session ID hiện tại nếu chuỗi quá ngắn.
- Xử lý không an toàn của session ID: Hacker có thể lấy thông tin session ID đã lưu trữ bằng cách đánh lừa trình duyệt của người dùng để truy cập vào một trang web khác. Trước khi phiên hết hạn, hacker có thể khai thác thông tin này theo nhiều cách như tấn công DNS poisoning, khai thác cross-site scripting và khai thác lỗi trong trình duyệt.
- Thời gian phiên không giới hạn: Session ID với thời gian không giới hạn giúp cho hacker có một khoảng thời gian không giới hạn để đoán một session ID hợp lệ. Ví dụ, tùy chọn “remember me” trên nhiều trang web. Hacker có thể sử dụng các session ID tĩnh để truy cập vào tài khoản web của người dùng sau khi bắt được file cookie.
![[CEH] Module 11 - Phần 1: Session Hijacking là gì? 4 [CEH] Module 11 - Phần 1: Session Hijacking là gì? 3](https://sinhviencntt.net/wp-content/uploads/2023/07/image-121.png)
Quy trình tấn công Session Hijacking
Session hijacking có thể chia thành ba giai đoạn chính:
Theo dõi kết nối
Hacker sử dụng công cụ theo dõi mạng (network sniffer) để theo dõi và server hoặc sử dụng các công cụ như Nmap để quét mạng và tìm mục tiêu có chuỗi TCP dễ dự đoán. Sau khi xác định nạn nhân, hacker bắt các số thứ tự (sequence numbers) và số ACK (acknowledgment numbers) của nạn nhân vì giao thức TCP kiểm tra các số này. Hacker sau đó sử dụng các số này để xây dựng các gói tin.
![[CEH] Module 11 - Phần 1: Session Hijacking là gì? 6 [CEH] Module 11 - Phần 1: Session Hijacking là gì? 5](https://sinhviencntt.net/wp-content/uploads/2023/07/image-122.png)
Mất đồng bộ kết nối
Trạng thái mất đồng bộ xảy ra khi một kết nối giữa mục tiêu và máy chủ được thiết lập hoặc ổn định mà không có truyền dữ liệu hoặc sequence number của server không bằng với số ACK của client hoặc ngược lại.
Để mất đồng bộ kết nối giữa mục tiêu và server, hacker phải thay đổi sequence number hoặc số SEQ/ACK của server. Hacker sẽ gửi dữ liệu rỗng (null data) tới server; do đó, sequence number/ACK của server tăng trong khi máy mục tiêu không ghi nhận sự tăng này. Ví dụ trước khi mất đồng bộ, hacker giám sát phiên sau đó gửi một lượng lớn dữ liệu rỗng tới server. Những dữ liệu này thay đổi số ACK trên server từ đó gây mất đồng bộ giữa server và mục tiêu.
Một cách tiếp cận khác là gửi một tín hiệu reset (reset flag) tới server để ngắt kết nối từ phía server. Mục tiêu của hacker là phá vỡ kết nối từ phía server và tạo ra một kết nối mới với một số sequence khác nhau.
Hacker đợi nhận một gói SYN/ACK từ server đến client. Khi phát hiện một gói tin, hacker ngay lập tức gửi một gói tin RST và một gói SYN với các tham số giống nhau, ví dụ như một số port với một số sequence khác nhau, tới server. Khi nhận được gói RST, server đóng kết nối với mục tiêu và khởi tạo một kết nối mới dựa trên gói tin SYN nhưng với một số sequence khác nhau trên cùng một port. Sau khi mở một kết nối mới, server gửi gói tin SYN/ACK tới mục tiêu để được xác nhận. Hacker phát hiện (nhưng không chặn) gói tin này và gửi một gói ACK tới server. Bây giờ, server đang ở trạng thái đã thiết lập (established state). Mục tiêu là giữ cho client tiếp tục truyền thông và đảm bảo rằng nó chuyển sang trạng thái đã thiết lập khi nhận được gói tin SYN/ACK đầu tiên từ server. Do đó, cả server và mục tiêu đều bị mất đồng bộ nhưng trong trạng thái đã thiết lập (established state).
Hacker cũng có thể sử dụng cờ FIN, nhưng điều này sẽ làm server phản hồi bằng một gói ACK, từ đó sẽ xảy ra bão ACK (ACK storm) làm lộ cuộc tấn công. Lý do là trong quá trình nhận một gói tin không chấp nhận được, client gửi lại số sequence dự kiến để xác nhận nó. Gói tin không chấp nhận được này tạo ra một gói ACK, từ đó tạo ra một vòng lặp vô hạn cho mỗi gói dữ liệu. Sự không khớp trong các số SEQ/ACK dẫn đến lưu lượng mạng quá tải với cả server và mục tiêu khi cố gắng xác minh sequence đúng. Vì các gói tin này không chứa dữ liệu, không có việc truyền lại nếu gói tin bị mất, tuy nhiên vì TCP sử dụng giao thức IP, việc mất một gói tin duy nhất sẽ kết thúc giao tiếp một cách không mong muốn giữa server và mục tiêu.
Chèn dữ liệu
Sau khi làm gián đoạn kết nối giữa server và mục tiêu, hacker có thể chèn dữ liệu vào mạng hoặc tham gia chủ động như một người đứng trung gian (man in the middle), truyền dữ liệu từ mục tiêu tới server và ngược lại mà vẫn có thể đọc và chèn dữ liệu theo ý muốn.
Phân tích gói tin của Local Session Hijack
Session hijacking là một hình thức tấn công cấp cao, ảnh hưởng đến nhiều hệ thống. Giao thức TCP được sử dụng để truyền dữ liệu bởi nhiều hệ thống thiết lập kết nối LAN hoặc Internet. Để thiết lập một kết nối giữa hai hệ thống và để truyền dữ liệu, hai hệ thống này cần thực hiện một quá trình bắt tay ba bước (three-way handshake). Session hijacking liên quan đến việc khai thác phương pháp bắt tay ba bước này để chiếm quyền kiểm soát trên phiên làm việc.
Để tiến hành một cuộc tấn công session hijacking, hacker thực hiện ba hoạt động sau:
- Theo dõi một phiên làm việc (session)
- Mất đồng bộ hóa phiên làm việc
- Chèn dữ liệu (lệnh) vào trong phiên làm việc
Bằng cách nghe lén lưu lượng mạng, hacker có thể giám sát hoặc theo dõi một phiên làm việc. Bước tiếp theo trong việc tấn công session hijacking là làm mất đồng bộ phiên làm việc. Việc thực hiện cuộc tấn công này dễ dàng nếu hacker biết được số thứ tự kế tiếp (NSN) được sử dụng bởi client. Một phiên làm việc có thể bị chiếm đoạt bằng cách sử dụng số thứ tự đó trước khi client sử dụng nó. Có hai khả năng để xác định số thứ tự: một là nghe trộm lưu lượng, tìm một gói ACK và sau đó xác định NSN dựa trên gói ACK. Cách khác là truyền dữ liệu với các số thứ tự đoán nhưng đây không phải là một phương pháp hiệu quả. Nếu hacker có thể truy cập vào mạng và nghe trộm phiên làm việc TCP, chúng có thể dễ dàng xác định số thứ tự. Loại tấn công session hijacking này được gọi là “Local Session Hijacking“.
Hình vẽ dưới đây mô tả việc phân tích gói tin của một cuộc tấn công local session hijacking:
![[CEH] Module 11 - Phần 1: Session Hijacking là gì? 8 [CEH] Module 11 - Phần 1: Session Hijacking là gì? 7](https://sinhviencntt.net/wp-content/uploads/2023/07/image-123.png)
Dựa trên hình vẽ trên, số thứ tự kế tiếp dự kiến là 1420. Nếu hacker gửi gói tin với số thứ tự đó trước khi client làm được, hacker có thể làm mất đồng bộ kết nối giữa client và server và server sẽ được đồng bộ với hacker. Sau đó, server sẽ loại bỏ dữ liệu gửi từ client với số thứ tự chính xác, tin rằng đó là một gói tin được gửi lại. Người dùng không nhận biết được hành động của hackerg và có thể gửi lại gói dữ liệu vì không nhận được ACK. Như vậy, tấn công local session hijacking được thực hiện thành công.
Phân loại Session Hijacking
Session hijacking có thể được chia thành hai loại: hijack chủ động (active) và hijack thụ động (passive), phụ thuộc vào mức độ tham gia của người tấn công. Sự khác biệt quan trọng giữa hijack chủ động và hijack thụ động là hijack chủ động chiếm quyền kiểm soát một phiên làm việc hiện có, hijack thụ động chỉ giám sát một phiên làm việc đang diễn ra.
Passive Session Hijacking
Trong tấn công thụ động, sau khi chiếm quyền kiểm soát một phiên làm việc, hacker chỉ quan sát và ghi lại toàn bộ lưu lượng trong phiên làm việc đó. Chúng sử dụng các công cụ nghe trộm để thu thập thông tin như username, password. Hacker có thể sau đó sử dụng thông tin này để đăng nhập với tư cách là người dùng hợp lệ và tận hưởng các đặc quyền của người dùng đó. Sniffing mật khẩu là một cuộc tấn công đơn giản nhằm tiếp cận trực tiếp mạng.
Active Session Hijacking
Trong tấn công chủ động, hacker chiếm quyền kiểm soát một phiên làm việc hiện có bằng cách ngắt kết nối ở một bên của cuộc trò chuyện hoặc tham gia chủ động. Một ví dụ đó là MITM. Trên hầu hết các hệ thống hiện nay, việc dự đoán số thứ tự không khả thi, vì các nhà cung cấp hệ điều hành sử dụng các giá trị ngẫu nhiên cho số thứ tự khởi tạo, điều này làm cho việc dự đoán số thứ tự trở nên khó khăn hơn nhiều.
![[CEH] Module 11 - Phần 1: Session Hijacking là gì? 10 [CEH] Module 11 - Phần 1: Session Hijacking là gì? 9](https://sinhviencntt.net/wp-content/uploads/2023/07/image-124.png)
Session Hijacking in OSI Model
Có hai cấp độ của session hijacking trong mô hình OSI: cấp độ mạng (network-level) và cấp độ ứng dụng (application-level).
Network-Level Hijacking
Hijacking cấp độ mạng là việc chặn các gói tin trong quá trình truyền giữa một client và server trong một phiên làm việc TCP/UDP. Hacker thường thực hiện hijacking cấp độ mạng vì họ không cần sửa đổi cách tấn công theo từng ứng dụng web cụ thể. Kiểu tấn công này tập trung vào luồng dữ liệu của giao thức được chia sẻ trên tất cả các ứng dụng web.
Application-Level Hijacking
Hijack cấp độ ứng dụng liên quan đến việc giành quyền kiểm soát phiên làm việc HTTP bằng cách lấy session ID. Ở cấp độ ứng dụng, hacker chiếm quyền kiểm soát một phiên làm việc hiện có và có thể tạo ra các phiên không được ủy quyền bằng cách sử dụng dữ liệu đã đánh cắp. Thông thường, cả hai loại hijacking này xảy ra cùng nhau, phụ thuộc vào hệ thống đang bị tấn công.
Spoofing và Hijacking
Để hiểu về blind hijacking, quan trọng là hiểu về việc dự đoán số thứ tự. Số thứ tự TCP, duy nhất cho mỗi byte trong một phiên làm việc TCP, cung cấp điều khiển luồng và tính toàn vẹn dữ liệu. Các TCP segment cung cấp số thứ tự khởi tạo (initial sequence number – ISN) là một phần của header của mỗi segment. ISN không bắt đầu từ 0 cho mỗi phiên làm việc mà nó là một giá trị ngẫu nhiên. Trong quá trình bắt tay, mỗi bên cần khai báo ISN, và các byte được đánh số theo thứ tự từ giá trị đó.
Blind session hijacking dựa trên khả năng dự đoán hoặc đoán số thứ tự của hacker. Hacker không thể giả mạo một server tin cậy trên một mạng khác và quan sát các gói phản hồi vì không có đường truyền tồn tại để các gói tin trở về IP của hacker. Hơn nữa, hacker không thể sử dụng ARP cache poisoning vì các bộ định tuyến không broadcast ARP trên Internet. Vì hacker không thể quan sát được các gói phản hồi, hacker ta phải tiên đoán các phản hồi từ nạn nhân và ngăn chặn server gửi gói TCP/RST đến nạn nhân. Hacker dự đoán các số thứ tự mà server mong đợi và sau đó chiếm đoạt phiên giao tiếp. Phương pháp này hữu ích khi khai thác các mối quan hệ tin cậy giữa client và các server từ xa.
![[CEH] Module 11 - Phần 1: Session Hijacking là gì? 12 [CEH] Module 11 - Phần 1: Session Hijacking là gì? 11](https://sinhviencntt.net/wp-content/uploads/2023/07/image-126.png)
Trong spoofing attack, hacker giả vờ là một người dùng hoặc máy khác (nạn nhân) để đạt được quyền truy cập. Thay vì chiếm quyền kiểm soát một phiên làm việc hoạt động hiện có, hacker khởi tạo một phiên làm việc mới bằng cách sử dụng thông tin đăng nhập của nạn nhân. Việc giả mạo IP đơn giản để thực hiện phương pháp tấn công khác. Trong trường hợp giả mạo IP mà không có hijacking, việc đoán số thứ tự là không cần thiết vì không có phiên làm việc đang mở với IP đó. Lưu lượng trả về cho hacker chỉ xảy ra nếu sử dụng source routing (định tuyến nguồn). Source routing là quá trình cho phép người gửi chỉ định đường đi mà gói tin IP sẽ đi đến đích. Hacker thực hiện source routing và sau đó nghe trộm lưu lượng khi nó đi qua hacker.
Session hijacking là quá trình chiếm quyền kiểm soát một phiên làm việc hoạt động hiện có. Hacker dựa vào một người dùng hợp lệ để thiết lập kết nối và xác thực. Session hijacking khó khăn hơn so với giả mạo IP. Trong session hijacking, John (hacker) sẽ cố gắng chèn mình vào một phiên làm việc mà James (người dùng) đã thiết lập với \Mail. John sẽ chờ đợi cho đến khi James thiết lập phiên làm việc, đẩy James ra khỏi phiên làm việc đã thiết lập bằng một số phương pháp như tấn công DoS, sau đó tiếp tục phiên làm việc như thể hacker là James. Tiếp theo, John sẽ gửi một tập hợp các gói tin theo kịch bản đến \Mail và quan sát các phản hồi. Để làm được điều này, John cần biết số thứ tự trong quá trình chiếm đoạt phiên làm việc. Để tính toán số thứ tự, anh ta phải biết ISN và số gói tin tham gia vào quá trình trao đổi.
![[CEH] Module 11 - Phần 1: Session Hijacking là gì? 14 [CEH] Module 11 - Phần 1: Session Hijacking là gì? 13](https://sinhviencntt.net/wp-content/uploads/2023/07/image-125.png)
Session hijacking chỉ khả thi khi một số yếu tố nằm trong tầm kiểm soát của hacker. Cả IP spoofing hoặc session hijacking không thể xảy ra nếu phiên làm việc sử dụng các phương pháp mã hóa như SSL hoặc Point-to-Point Tunneling Protocol (PPTP) do hacker không thể tham gia vào việc trao đổi khóa.
Xem thêm tại Session Hijacking Attacks.

![[CEH] Module 10 - Phần 5: Thực hành DoS sử dụng Metasploit và Hping3 16 [CEH] Module 10 – Phần 5: Thực hành DoS sử dụng Metasploit và Hping3](https://sinhviencntt.net/wp-content/uploads/2025/04/m10-p5-350x250.png)
![[CEH] Module 10 - Phần 4: Các giải pháp chống lại DDoS 17 [CEH] Module 10 – Phần 4: Các giải pháp chống lại DDoS](https://sinhviencntt.net/wp-content/uploads/2025/01/m10-p4-350x250.png)
![[CEH] Module 10 - Phần 3: Một số kiểu tấn công từ chối dịch vụ (tiếp theo) 18 [CEH] Module 10 – Phần 3: Một số kiểu tấn công từ chối dịch vụ (tiếp theo)](https://sinhviencntt.net/wp-content/uploads/2025/01/m10-p2-350x250.png)
![[CEH] Module 10 – Phần 2: Một số kiểu tấn công từ chối dịch vụ DoS/DDoS 19 [CEH] Module 10 – Phần 2: Một số kiểu tấn công từ chối dịch vụ DoS/DDoS](https://sinhviencntt.net/wp-content/uploads/2024/09/m10-p2-350x250.png)
![[CEH] Module 10 - Phần 1: Tấn công từ chối dịch vụ là gì? 20 [CEH] Module 10 – Phần 1: Tấn công từ chối dịch vụ là gì?](https://sinhviencntt.net/wp-content/uploads/2024/08/m10-p1-350x250.png)

Comments 1