LỖ HỔNG BẢO MẬT TRONG GIAO THỨC TSL/SSL

Một phần của tài liệu Nghiên cứu một số lỗ hổng thiếu an ninh trong ứng dụng công nghệ thông tin, phương pháp và công cụ kiểm soát, xử lý lỗ hổng (Trang 36)

2.1.1. Giới thiệu [10]

Giao thức Secure Sockets Layer (SSL) được sử dụng rộng rãi cho việc đảm bảo thông tin liên lạc an toàn qua mạng Internet. Giao thức SSL cho phép mã hóa đối xứng bằng cách sử dụng thuật toán mã hóa khối hoặc mật mã dòng. Trong thực tế quá trình triển khai , thông thường sử dụng mật mã khối, và tin tặc cũng tận dung sơ hở này để thực hiện các cuộc tấn. Luận văn trình bày sẽ cho thấy một kẻ tấn công tấn công man- in-the-middle sau đó lựa chọn bản rõ ( các hàm tiên tri) với SSL để nhanh chóng khôi phục lại bản rõ thật. Trong trường hợp của HTTPS. chúng ta sẽ chứng minh rằng một kẻ tấn công có thể giải mã và có thông tin của HTTP Cookie [10]

2.1.2.Mô tả tấn công BEAST lên bộ giao thức SSL/TLS

BEAST (Browser Exploit Against SSL/TLS) là kỹ thuật khai thác điểm yếu của chế độ mã khối CBC và mức độ bảo mật yếu của trình duyệt web. Lỗ hổng loại này tồn tại trong các phiên bản SSL2.0, SSL 3.0/TLS 1.0 có hỗ trợ chế độ mã khối CBC.

Việc kiểm tra máy chủ Web có bị ảnh hưởng bởi tấn công BEAST hay không, được thực hiện rất dễ dàng bởi công cụ trực tuyến tại địa chỉ www.ssllabs.com/ssltest.

Các bước thực hiện tấn công:

- Kẻ tấn công sẽ cài một chương trình (agent) vào trình duyệt của người dùng (client). Agent này có thể đơn giản là một đoạn mã javascript, cài vào trình duyệt theo cách tấn công XSS.

- Agent này có khả năng yêu cầu trình duyệt thực hiện một yêu cầu (HTTPS request) tới một server chạy HTTPS, lúc này thông điệp (được mã hóa) gửi tới server sẽ bị Kẻ tấn công lấy trộm được.

- Sau khi có được thông điệp (được mã hóa) kể tấn công tiếp tực đưa các bản rõ vào để quan sát bản mã đầu ra so sánh để tìm ra bản rõ.

37

Hình 2.1. Mô tả tấn công BEAST

Đường truyền https từ client đến server được mã hóa bởi SSL/TLS nhằm đảm bảo tính bí mật, tính toàn vẹn và tính xác thực của nội dung thông tin.

2.1.3. Ý tưởng tấn công do Wei Dai đề xuất chống lại chế độ mã khối CBC Quá trình mã hóa trong SSL/TLS sử dụng khóa đối xứng và ở đây ta thực hiện Quá trình mã hóa trong SSL/TLS sử dụng khóa đối xứng và ở đây ta thực hiện đối với các hệ thống thực hiễn mã hóa khối dưới chế độ CBC (3DES, AES) với bản rõ đầu vào có độ dài không đổi (64, 128, 256 bit) [1].

Quá trình mã hóa và giải mã trong chế độ CBC [1]:

38

Hình 2.2. Sơ đồ mã hóa khối CBC Ta có: Ta có:

Ci = Ek(Ci-1 ⨁ Pi) C0 = IV

 Giải mã

Hình 2.3. Sơ đồ giải mã trong chế độ mã hóa khối CBC Ta có: Ta có:

C0 = IV

Pi = Dk(Ci) ⨁ Ci-1 Trong đó:

39

 P, C tương ứng là bản rõ và bản mã;

 C0 = IV là vector khởi tạo ban đầu;

 Ek , Dk là các thuận toán mã hóa và giải mã.

Vector khởi tạo CBC (IV) không cần phải giữ bí mật nhưng không thể dự đoán trước khi kẻ tấn công lựa chọn một bản rõ. Với cùng đầu vào (khóa và bản rõ) nhưng vector khởi tạo khác nhau thì giá trị đầu ra sẽ khác nhau [1]

Một hàm tiên tri (oracle) có thể được xây dựng thành công nếu kẻ tấn công biết được các vector khởi tạo sử dụng trong chế độ CBC. Coi như kẻ tấn công đã hoàn toàn sở hữu khối bản mã Cj-1 (khối bản mã trước đó). Do sử dụng chế độ CBC, nên khối bản mã này được dùng với vai trò vector khởi tạo cho khối bản rõ tiếp theo Pj. Có thể tạo ra một bản rõ dự đoán P* và xác nhận bằng cách quan sát khi nào thì biểu thức sau đây thỏa mãn (các chỉ số i và j khác nhau): Theo quá trình mã hóa, giải mã trong chế độ mã móc xích CBC ta luôn có [1][10]: C* = Ek(P*) P*= Dk(C*) Pj = Cj-1 ⨁ P* = Cj-1 ⨁ Dk(C*) (1) Cj= Ek(Cj-1 ⨁ Pj)  Ta luôn đặt được: Pj+1 = C*⨁ Ci-1 ⨁ Pi (2)  Khi đó: Cj+1 = Ek(Cj ⨁ Pj+1) = Ek(Ek(Cj-1 ⨁ Pj)⨁ Pj+1) = Ek(Ek(Cj-1 ⨁ Cj-1 ⨁ P*)⨁ Pj+1) = Ek(Ek(P*)⨁ Pj+1 (3) = Ek (C*⨁ C*⨁ Ci-1 ⨁ Pi) = Ek(Ci-1 ⨁ Pi)

40 = Ci

Nếu thỏa mãn phương trình (3), thì giá trị Pj+1 ở (2) mà kẻ tấn công dự đoán là chính xác và việc dự đoán này sẽ tìm thấy hoàn toàn bản rõ. Nếu Pj+1 nhận một giá trị W cụ thể thì có thể giải mã được sau khi thử tất cả giá trị W có khả năng. Trong thực tế phạm vi của giá trị W rất rộng, tầm 2128. Câu hỏi được đặt ra là làm sao để thu nhỏ phạm vi dự đoán của W? Phương án được đưa ra là chọn ranh giới tấn công chống lại mã khối ở chế độ CBC. Di chuyển đường biên khối xung quanh để thu nhỏ giá trị W đến 256. Với giả thiết là kẻ tấn công có thể thêm một số byte vào bản rõ. [1] [10]

2.1.4. Tấn công lựa chọn giá trị biên (block-wise chosen-boundary attack) [10] [10]

Để áp dụng phương pháp tấn công lên SSL/TLS và giải mã các khối bản mã, các tác giả đã đề xuất một kiểu tấn công mới được gọi là kiểu tấn công lựa chọn giá trị biên với các khối quan trọng (block-wise chosen-boundary attack). Ta có b là kích thước khối tính theo byte, và thông điệp m (message) bao gồm L byte m[1], m[2],... m[L] sẽ được chia thành s b-byte khối p1, p2,.... ps. Từ đây một kẻ tấn công có thể thêm vào trước r byte vào m (r <b). Hình 1 minh họa một ví dụ cụ thể về những gì vừa được mô tả. Trong trường hợp này kích thước khối trong byte 8 và m gồm 9 byte. Thêm vào trước m một chuỗi 7-byte tùy ý, một kẻ tấn công thay đổi ranh giới khối mới với 7 byte bên trái đã biết trước và chỉ phải dự đoán byte còn lại của khổi mới. Nói chung, đối với bất kỳ cặp liên tiếp các byte m [i] và m [i + 1], một kẻ tấn công có thể luôn luôn thêm vào trước ít hơn byte b như vậy tạo ra một ranh giới giữa khối m[i] và m[i + 1 ]. Do đó, kẻ tấn công có thể chọn vị trí để tạo ra ranh giới khối. [10]

Block blocksize 8 len(m) =9 len(r) = 7 Block

R1 R2 R3 R4 R5 R6 R7 M1 M2 M3 M4 M5 M6 M7 M8 M9 Hình 2.4. Thêm một chuỗi vào thông điệp để chọn ranh giới khối

41

2.1. 5. Ứng dụng ý tưởng tấn công của Wei Dai để giải mã yêu cầu HTTPS [1][10] [1][10]

Ứng dụng cụ thể của cách tấn công dùng để giải mã yêu cầu HTTPS. HTTP sử dụng SSL để bảo vệ cookies trong yêu cầu và hồi đáp (responses). SSL nhận được thông báo HTTP từ lớp ứng dụng là dữ liệu nguyên bản (raw data), sau đó được phân chia thành các bản ghi có chiều dài nhỏ hơn hoặc bằng 214 byte. Lỗ hổng bảo mật được khai thác như sau: Mỗi bản ghi được mã hóa ở chế độ CBC với những vector khởi tạo móc xích với nhau, tức là vector khởi tạo CBC dành cho mỗi bản ghi chính là khối bản mã cuối cùng của bản ghi trước đó ngoại trừ vector khởi tạo đầu tiên[1][10].

Block Block P O S T / A A A A A A H T T P

Block

R S [...] \r \n R E Q U E S T B O D Y [...] Hình 2.5. Thực hiện tấn công lựa chọn biên với POST requers trong HTTPS Điều kiện để thực hiện thành công cuộc tấn công:

 Kẻ tấn công nghe trộm được dữ liệu trên đường truyền giữa victim và server;

 Kẻ tấn công có khả năng điều khiển được victim thực hiện một HTTP(S) POST requests tới server;

 Kẻ tấn công điều khiển được đường dẫn đến trong POST request của victim;

 Kẻ tấn công điều khiển được victim truy cập vào một website tạo bởi chính kẻ tấn công để tiến hành cài Agent vào trình duyệt của victim. [1][10]

Kịch bản tấn công như sau[1]:

 Người dùng 1 (Alice) đóng vai trò victim truy cập địa chỉ server của người dùng (Bob): https://www.bob.com;

/ 1 . 1 \r \l n

42

 Alice truy cập địa chỉ https://www.oscar.com do kẻ tấn công (Oscar) điều khiển;

 Oscar sẽ giải mã dữ liệu trên đường truyền từ Alice tới https://www.bob.com. Nguyên lý tấn công [1]:

1) Oscar bắt Allice thực hiện một HTTPS POST requests tới server của Bob (với đường dẫn https://www.bob.com/AAAAAA), brower của Allice sẽ tạo một request (P =POST/AAAAAA HTTP/1.1 ), chia thành các bản ghi ở dạng các block và được mã hóa trong chế độ CBC. Kết quả là bản mã C = Ek(P) được gửi tới server của Bob;

2) Oscar thu được C= [C0…Cn] và đặt i = 1. Oscar đã tiến hành chèn AAAAAA vào trong P và ở đây Oscar sẽ tìm được cookies thông qua giải mã được REQUEST HEADER từ việc dự đoán giá trị P3 trong các bước tiếp theo;

3) Đặt Pi= Ci-1 ⨁ C3 ⨁ P3 với P3= P/1.1\r\nW[i]

Trong đó W[i] là giá trị dự đoán của X tương ứng với bản rõ Pi; 4) Gắn Pi vào request body;

5) Điều khiển trình duyệt của Allice tính Ci = Ek(Ci-1⨁ Pi). Và Ci sẽ được gửi tới server của Bob.

6) Thực hiện:

Ở đây Ci sẽ được khai triển như sau: Ci= Ek(Ci-1 ⨁ Pi)

= Ek(Ci-1⨁ Ci-1 ⨁ C3 ⨁ P3) = Ek(C3⨁ P3)

= C3

Tiến hành kiểm tra: for(i=1; i<=256; i++){ if(Ci= C3)

return X=W[i]; else

43 goto step3;}

Cuối cùng tìm được các giá trị X và tất cả các bản rõ Pi tương ứng. Vậy Oscar sẽ giải mã thành công HTTPS request của Alice gửi cho Bob. Khi đó Oscar tìm được thành công cookies và từ đây dễ dàng truy cập vào server của Bob trên tài khoản của Alice.

2.1. 6. Giải pháp khắc phục và ngăn chặn tấn công [1] 1) Đối với các máy client: 1) Đối với các máy client:

Hạn chế truy cập vào các địa chỉ website và tải các tài liệu không rõ nguồn gốc (tránh bị tấn công XXS).

Sử dụng trình duyệt được nâp cấp lêm TLS 1.1 và TLS 1.2

Không lưu thông tin đăng nhập sau khi đã đăng nhập thành công tài khoản; 2) Phía máy server

- Vô hiệu hóa tất cả các hệ mã khối như AES_CBC;

- Sử dụng giao thức bảo mật TLS phiên bản 1.1 và TLS phiên bản 1.2 thay choTLS phiên bản 1.0;

- Hạn chế các dạng tấn công Cross Site Scripting (XSS) nhắm vào máy chủ. - Tắt giao thức SSL 2.0 trong các phiên bản OpenSSL cũ;

Chỉnh sửa tập tin ssl.conf với các tham số sau: SSLAllowClientRenegotiation0 SSLHonorCipherOrderon SSLProtocol-all +SSLv3 +TLSv1 -SSLv2 SSLCipherSuiteRC4-SHA:HIGH:!ADH!aNULL SSLProxyCheckPeerCNon SSLProxyCheckPeerExpireon

44

SSLCipherSuiteECDHE-RSA-AES128-SHA256:AES128-GCM- SHA256:RC4:HIGH:!MD5:!aNULL:!EDH [1]

45

2.2. LỖ HỔNG BẢO MẬT GÂY RA TẤN CÔNG TỪ CHỐI DỊCH VỤ PHÂN TÁN (DDOS) PHÂN TÁN (DDOS)

2.2.1. Tấn công từ chối dịch vụ phân tán DDoS(Distributed Denial of Service) 2.2.1.1. Giới thiệu khái quát về DdoS[2][3][4]: 2.2.1.1. Giới thiệu khái quát về DdoS[2][3][4]:

- Distributed Denial Of Service (DDoS) là kỹ thuật tấn công làm các ISP lo âu, giới hacker chính thống thì không công nhận DDoS là kỹ thuật tấn công chính thống. Thế nhưng Black hat đang có rất nhiều ưu thế khi triển khai tấn công bằng kỹ thuật DDoS[2].

Tấn công từ chối dịch vụ phân tán (DDoS) đã ngày càng trở thành một mối đe dọa lớn đối với sự tin cậy của mạng internet. Là các cuộc tấn công sử dụng nhiều cách thức tổ chức và thực hiện khác nhau, từ việc dùng chỉ một máy tới việc thu thập các máy agent dưới quyền với số lượng lên đến hàng chục ngàn máy phục vụ tấn công, mục đích của các cuộc tấn công là làm tê liệt các ứng dụng, máy chủ, toàn bộ mạng lưới, hoặc làm gián đoạn kết nối của người dùng hợp pháp tới Website đích. Một nghiên cứu tại UCSD đã chỉ ra rằng ngay từ đầu thập niên này các cuộc tấn công từ chối dịch vụ đã diễn ra với một tỷ lệ lên tới 4000 cuộc tấn công mỗi tuần. Từ đó đã dẫn đến một loạt các nghiên cứu nhằm hiểu rõ hơn về các cơ chế tấn công, để đưa tới các cách thức giúp có thể phòng chống ảnh hưởng tiêu cực của nó

Việc phòng ngừa và ngăn chặn DDoS vẫn còn đang thực hiện ở mức độ khắc phục hậu quả và truy tìm thủ phạm

2.2.1.2. Các bước thực hiện một cuộc tấn công kiểu DdoS [2][3][4]: Bao gồm 3 bước: Bao gồm 3 bước:

a. Chuẩn bị:

- Chuẩn bị công cụ quan trọng của cuộc tấn công. Hiện nay nhưng phần mềm free trên mạng rất nhiều tin tặc tải về để thực hiện hành vi tấn công. Ngoài ra, đối với những tin tặc có trình độ chuyên môn cao hoàn toàn có thể xây dựng các công cụ cho riêng mình.

46

- Sau khi đã có công cụ trong tay, tin tặc dùng một số kỹ thuật để nắm trọn quyền kiểm soát một số host trên mạng, thực hiện cài đặt các công cụ cần thiết trên các host này, cấu hình và thử nghiệm toàn bộ attack-netword (bao gồm toàn bộ mạng lưới các máy đã bị lợi dụng cùng với các công cụ đã được thiết lập trên đó) cũng sẽ được thực hiện trong giai đoạn này.

b. Xác định mục tiêu và thời điểm:

- Tin tặc cần xác định mục tiêu để tiến hành cấu hình attack-network về mục tiêu. - Lựa chọn thời điểm cũng là vấn đề quan trọng ảnh hưởng mức độ thiệt hại và khả năng đáp ứng của mục tiêu đối với cuộc tấn công.

c. Phát động tấn công và xóa dấu vết:

- Vào thời điểm thực hiện tấn công, tin tặc sẽ phát động tấn công từ máy của mình thực hiện điều khiển attack-network tấn công đến mục tiêu. Toàn bộ attack- network (có thể lên đến hàng ngàn máy), sẽ làm khả năng đáp ứng của server mục tiêu bị quá tải dấn đến ngừng cung cấp dịch vụ.

- Sau khi thực hiện cuộc tấn công đạt được mục đích, tin tặc tiến hành xóa mọi dấu vết có thể truy ngược đến mình.

2.2.1.3. Mô hình tổng quan của DDoS attack-network [2][3][4] DDoS attack-network có hai mô hình chính: DDoS attack-network có hai mô hình chính:

Mô hình Agent – Handler Mô hình IRC – Based

47

Hình 2.6. Sơ đồ chính phân loại các kiểu tấn công DDoS

a. Mô hình Agent – Handler[2][3][4]:

Theo mô hình này, attack-network gồm 3 thành phần: Agent, Client và Handler - Client : là software cơ sở để hacker điều khiển mọi hoạt động của attack-network - Handler : là một thành phần software trung gian giữa Agent và Client (thường được cài đặt trên các server , router có lượng traffic lớn)

- Agent : là thành phần software thực hiện sự tấn công mục tiêu, nhận điều khiển từ Client thông qua các Handler ( thường chạy trên các máy chạy hệ điều hành windows do số lượng sử dụng lớn và dễ khai thác)

DDoS attack-network

Agent -Handler IRC - Based

Client – Handler Secret/private

channel

Public channel

TCP UDP ICMP TCP UDP ICMP

48

Hình 2.7. Kiến trúc attack-network kiểu Agent – Handler

- Attacker sẽ từ Client giao tiếp với 1 Handler để xác định số lượng Agent đang online, điều chỉnh thời điểm tấn công và cập nhật các Agent. Tùy theo cách attacker cấu hình attack-network, các Agent sẽ chịu sự quản lý của một hay nhiều Handler[2][3][4].

- Thông thường Attacker sẽ đặt Handler software trên một Router hay một server có lượng traffic lưu thông nhiều. Việc này nhằm làm cho các giao tiếp giữa Client, handler và Agent khó bị phát hiện. Các gia tiếp này thông thường xảy ra trên các protocol TCP, UDP hay ICMP. Chủ nhân thực sự của các Agent thông thường không hề hay biết họ bị lợi dụng vào cuộc tấn công kiểu DDoS, do họ không đủ kiến thức hoặc các chương trình Backdoor Agent chỉ sử dụng rất ít tài nguyên hệ thống làm cho hầu như không thể thấy ảnh hưởng gì đến hiệu năng của hệ thống[2][3][4].

b. Mô hình IRC – Based[2][3][4]:

- Internet Relay Chat (IRC) là một hệ thống online chat multiuser, IRC cho phép User tạo một kết nối đến multipoint đến nhiều user khác và chat thời gian thực.

Attacker Attacker

Handler Handler Handler Handler

Agent Agent Agent Agent Agent

49

- Kiến trúc của IRC network bao gồm nhiều IRC server trên khắp internet, giao tiếp với nhau trên nhiều kênh (channel). IRC network cho phép user tạo ba loại channel: public, private và serect.

 Public channel: Cho phép user của channel đó thấy IRC name và nhận được message của mọi user khác trên cùng channel

 Private channel: được thiết kế để giao tiếp với các đối tượng cho phép.

Một phần của tài liệu Nghiên cứu một số lỗ hổng thiếu an ninh trong ứng dụng công nghệ thông tin, phương pháp và công cụ kiểm soát, xử lý lỗ hổng (Trang 36)

Tải bản đầy đủ (PDF)

(91 trang)