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. Không cho phép các user không cùng channel thấy IRC name và message trên channel. Tuy nhiên, nếu user ngoài channel dùng một số lệnh channel locator thì có thể biết được sự tồn tại của private channel đó.
Secrect channel : tương tự private channel nhưng không thể xác định bằng channel locator.
Hình 2.8. Kiến trúc attack-network của kiểu IRC-Base
- IRC – Based network cũng tương tự như Agent – Handler network nhưng mô hình này sử dụng các kênh giao tiếp IRC làm phương tiện giao tiếp giữa Client và Agent (không sử dụng Handler). Sử dụng mô hình này, attacker còn có thêm một số lợi thế khác như:
Các giao tiếp dưới dạng chat message làm cho việc phát hiện chúng là vô cùng khó khăn
Attacker Attacker
Agent Agent Agent Agent Agent
Victim
50
IRC traffic có thể di chuyển trên mạng với số lượng lớn mà không bị nghi ngờ Không cần phải duy trì danh sách các Agent, hacker chỉ cần logon vào IRC server là đã có thể nhận được report về trạng thái các Agent do các channel gửi về.
Sau cùng: IRC cũng là một môi trường file sharing tạo điều kiện phát tán các Agent code lên nhiều máy khác.
2.2.1.4. Phân loại tấn công kiểu DdoS [2][3][4]
- Có thể chia thành hai loại tấn công cơ bản: Làm cạn kiệt băng thông và làm cạn kiệt tài nguyên hệ thống
Hình 2.9. Phân loại các kiểu tấn công DDoS
a. Những kiểu tấn công làm cạn kiệt băng thông của mạng (BandWith Depletion Attack) [2][3][4]
DDoS attack
Bandwith DeleptionDeleption Resource Deleption
Flood Attack Amplification
UDP Random Port Smuft Protocol Exploit Malformed Paclket Static Port ICMP Spoof Source Flaggle Direct Loop TCP SYS Spoof source PUSH +ACK IP @ IP Packet Options Spoof source Spoof source Spoof source
51
- BandWith Depletion Attack được thiết kế nhằm làm tràn ngập mạng mục tiêu với những traffic không cần thiết, với mục địch làm giảm tối thiểu khả năng của các traffic hợp lệ đến được hệ thống cung cấp dịch vụ của mục tiêu.
- Có hai loại BandWith Depletion Attack:
+ Flood attack: Điều khiển các Agent gởi một lượng lớn traffic đến hệ thống dịch vụ của mục tiêu, làm dịch vụ này bị hết khả năng về băng thông.
+ Amplification attack: Điều khiển các agent hay Client tự gửi message đến một địa chỉ IP broadcast, làm cho tất cả các máy trong subnet này gửi message đến hệ thống dịch vụ của mục tiêu. Phương pháp này làm gia tăng traffic không cần thiết, làm suy giảm băng thông của mục tiêu.
Flood attack:
Trong phương pháp này, các Agent sẽ gửi một lượng lớn IP traffic làm hệ thống dịch vụ của mục tiêu bị chậm lại, hệ thống bị treo hay đạt đến trạng thái hoạt động bão