Tìm hiểu về lỗ hổng CVE 2017-0016 (Phần I)
Bài đăng này đã không được cập nhật trong 5 năm
LỜI NÓI ĐẦU
Hiện nay, với sự phát triển mạnh mẽ của công nghệ đã và đang tác động sâu sắc đến mọi lĩnh vực của đời sống xã hội, cũng như sự phát triển của nhiều quốc gia. Nhờ kết nối internet, những nhu cầu của con người như học tập, mua bán, giao dịch ngân hàng, tư vấn khám, chữa bệnh, đăng ký thủ tục hành chính,... có thể được đáp ứng nhanh chóng. Song, cũng phải khẳng định internet ngày nay cũng là mảnh đất màu mỡ của các hành vi phạm tội, tiềm ẩn nhiều thách thức và hiểm họa, trong đó có cả hoạt động mang tính khủng bố, chuyển hóa chính trị, trực tiếp đe dọa kinh tế, văn hóa, an toàn của cộng đồng. Sự bùng nổ của internet và ứng dụng công nghệ mới đã làm nảy sinh loại tội phạm công nghệ cao với mục tiêu là tiến công, chiếm đoạt, phá hoại dữ liệu của các cơ quan, tổ chức, cá nhân, gây hậu quả nặng nề. Việt Nam chúng ta cũng không nằm ngoài các nguy cơ, hiểm họa có tính toàn cầu đã được cảnh báo. Những năm gần đây, Việt Nam đã phải đối mặt, chịu hậu quả nặng nề từ rất nhiều cuộc tiến công qua mạng. Trên phạm vi rộng, tin tặc đã xâm nhập hệ thống dữ liệu của một số cơ quan nhà nước, doanh nghiệp ngân hàng thực hiện hành vi lấy cắp tiền bạc, chiếm đoạt dữ liệu, đánh bạc xuyên quốc gia, tống tiền, cài mã độc đào tiền ảo, môi giới mại dâm, rao bán ma túy, buôn bán hàng giả, bùng nổ tin tức giả mạo, truyền bá sản phẩm suy đồi... Đặc biệt, trên không gian mạng còn xuất hiện rất nhiều hoạt động tuyên truyền chống phá Nhà nước; xuyên tạc vấn đề dân chủ, nhân quyền, tự do báo chí, tự do tôn giáo ở Việt Nam; kêu gọi và kích động biểu tình gây rối loạn xã hội, cổ vũ thái độ cực đoan để phá hoại khối đoàn kết dân tộc, phá hoại quan hệ giữa Việt Nam với các nước trên thế giới. Nguyên nhân của các vụ việc mất an toàn thông tin này đến từ nhiều yếu tố, nhưng những điểm yếu về trong nội tại của các phần mềm, ứng dụng luôn tạo cho tin tặc những cơ hội lớn để có thể khai thác thành công. Báo cáo này sẽ tìm hiểu một trong những lỗ hổng phần mềm điển hình CVE 2017 – 0016, gây từ chối dịch vụ trên một số hệ thống sử dụng hệ điều hành Windows.
I. Tổng quan về lỗ hổng CVE 2017 – 0016 và giao thức SMB
1.1 Tổng quan về lỗ hổng CVE 2017 – 0016.
CVE 2017 – 0016 là một lỗ hổng gây từ chối trạng thái dịch vụ (DoS), được công bố vào ngày 02 tháng 02 năm 2017. Lỗ hổng này tồn tại mặc định trong nhiều phiên bản của hệ điều Windows, tác hại nghiêm trọng đối với các phiên bản Windows server vì gây tình trạng DoS với các hệ thống này ảnh hưởng rất lớn đến tổ chức, cũng như các cá nhân muốn truy cập tại thời điểm đó. Một lỗ hổng dịch vụ từ chối tồn tại trong việc triển khai máy khách Microsoft Server Message Block 2 và 3 (SMBv2 / SMBv3). Lỗ hổng này là do việc xử lý không đúng các yêu cầu nhất định được gửi bởi máy chủ SMB độc hại tới máy khách. Để khai thác lỗ hổng, kẻ tấn công có thể sử dụng các phương pháp khác nhau như tấn công chuyển hướng (redirectors), vector tấn công bổ xung, ..., có thể gây ra ứng dụng SMB để kết nối với máy chủ SMB độc hại. Bản cập nhật bảo mật giải quyết lỗ hổng bằng cách sửa lỗi cách ứng dụng khách SMBv2 / SMBv3 của Microsoft xử lý các yêu cầu được tạo thủ công đặc biệt [3].
1.2 Các phiên bản Windows bị ảnh hưởng.
Theo [4], lỗ hổng tồn tại một cách mặc định trên một số các phiên bản của hệ điều hành Windows được liệt kê dưới đây:
Bảng 1: Các phiên bản Windows bị ảnh hưởng bởi CVE 2017-0016:
1.3 Đánh giá lỗ hổng CVE 2017 – 0016.
Theo [5], đánh giá về điểm CVSS và các loại lỗ hổng, CVE 2017-0016 được xếp vào loại lỗ hổng nghiêm trọng, tấn công lên tính sẵn sàng của hệ thống thông tin. Lỗ hổng không có tác động lên tính toàn vẹn và tính bảo mật, tính phức tạp trung bình, cụ thể được thể hiện tại bảng đánh giá dưới đây:
Bảng 2: Bảng đánh giá lỗ hổng CVE 2017 - 0016
1.4 Kịch bản chung của các kiểu tấn công lên CVE 2017 – 0016
Bản chất tồn tại lỗ hổng CVE 2017 – 0016 là do phía client (máy nạn nhân) đã không xử lý được gói tin phản hồi từ server độc hại sử dụng giao thức SMB. Vì vậy, kịch bản của cuộc tấn công sử dụng lỗ hổng CVE 2017 – 0016 thường sẽ phải qua một số giai đoạn.
Bước 1: Kẻ tấn công tạo lập một server lắng nghe kết nối và phản hồi lại bằng các gói tin SMB (trong đó có gói tin SMB độc hại).
Bước 2: Bằng nhiều cách thức kẻ tấn công có thể lừa nạn nhân truy cập đến server độc hại của mình, ví dụ: chuyển hướng, lừa đảo,… Từ đó nếu phía client có tồn tại lỗ hổng thì kẻ tấn công có thể khai thác được.
Một cuộc tấn công sẽ là vô ích nếu phía client không tồn tại lỗ hổng. Và chi tiết về một số phương pháp mà kẻ tấn công thường sử dụng để khai thác lỗ hổng này sẽ được trình bày chi tiết ở Phần II.
II. Tổng quan về giao thức SMB.
2.1 Khái niệm.
Server Message Block protocol (SMB) hoạt động như một giao thức mạng lớp ứng dụng sử dụng chủ yếu để cung cấp truy cập chia sẻ đến các file, máy in và cổng nối tiếp và truyền thông hỗn hợp giữa các nút trên mạng. Nó cũng cung cấp một cơ chế xác thực. Hầu hết việc sử dụng SMB liên quan đến các máy tính chạy Microsoft Windows, được gọi là “Microsoft Windows Network” trước khi giới thiệu Active Directory [6]. Theo [7], giao thức này xuất hiện lần đầu tiên năm 1984 khi IBM đưa ra SMB trong một bản công bố tài liệu kỹ thuật của mình, thiết kế với mục đích ban đầu là thiết kế một giao thức mạng để đặt tên và duyệt (naming and browsing). Sau này khi SMB được kế thừa bởi Microsoft thì hãng này đã biến nó thành một giao thức chia sẻ file cực kỳ phổ biến trên các hệ điều hành của mình. Microsoft đã cung cấp phiên bản mã nguồn mở của SMB cho IETF. Giao thức này được gọi là Common Internet File Sharing (CIFS), linh hoạt hơn các ứng dụng Internet hiện có như File Transfer Protocol. Có thể hình dung CIFS là phần bổ sung cho giao thức truyền tải siêu văn bản (Hypertext Transfer Protocol) của Internet để duyệt web Đây là một giao thức có thiết kế đơn giản và đáp ứng dụng đầy đủ nhu cầu cơ bản của người dùng. Với giao thức này người dùng có thể cấu hình quyền Read-Only (chỉ đọc) hoặc Read-Write (đọc và ghi) hoặc đặt mật khẩu đối với dữ liệu được chia sẻ. Dữ liệu đó có thể là một tập tin hay là một thư mục. Điểm hay khác của SMB là nó còn hỗ trợ Unicode, đồng thời phù hợp với mô hình một server tập trung, mọi dữ liệu được xử lý từ client đều được khuyến nghị là lưu trữ tại server. Bên cạnh việc chia sẻ file, SMB còn hỗ trợ một số tính năng như:
- Tìm kiếm các máy chủ sử dụng giao thức SMB khác.
- Hỗ trợ in qua mạng.
- Xác thực file và thư mục được chia sẻ.
- Thông báo sự thay đổi file và thư mục.
Giao thức SMB trên Windows buộc phải sử dụng truyền tải qua NetBT với các cổng 137, 138 (UDP), 139 (TCP). Từ Windows 2000/XP, Microsoft cấp thêm khả năng chạy SMB trực tiếp trên TCP/IP, chỉ sử dụng cổng 445 (TCP).
2.2 Các phiên bản SMB tồn tại lỗ hổng
Lỗ hổng được cho là tồn tại trên các phiên bản SMBv2 và SMBv3 của giao thức SMB, dưới đây là một số thông tin về các phiên bản của 2 version này:
SMB 2.0: Microsoft đã giới thiệu phiên bản mới của giao thức (SMB 2.0 hoặc SMB2) với Windows Vista vào năm 2006. Mặc dù giao thức là độc quyền, đặc tả của nó đã được xuất bản để cho phép các hệ thống khác tương thích với hệ điều hành Microsoft sử dụng giao thức mới.
SMB2 bao gồm hỗ trợ cho các liên kết tượng trưng . Các cải tiến khác bao gồm bộ nhớ đệm của các thuộc tính tệp, cải thiện việc ký thư bằng thuật toán băm HMAC SHA-256 và khả năng mở rộng tốt hơn bằng cách tăng số lượng người dùng, chia sẻ và mở tệp trên mỗi máy chủ trong số những người khác. Giao thức SMB1 sử dụng kích thước dữ liệu 16 bit, trong đó có các kích thước khác, giới hạn kích thước khối tối đa là 64K. SMB2 sử dụng 32 hoặc 64-bit lĩnh vực lưu trữ rộng, và 128 bit trong trường hợp xử lý tập tin , do đó loại bỏ những hạn chế trước đó về kích thước khối, cải thiện hiệu suất với chuyển tập tin lớn qua mạng nhanh.
Windows Vista / Server 2008 và các hệ điều hành sau này sử dụng SMB2 khi giao tiếp với các máy khác cũng có khả năng sử dụng SMB2. SMB1 tiếp tục được sử dụng cho các kết nối với các phiên bản cũ của Windows, cũng như các giải pháp NAS của các nhà cung cấp khác nhau . Samba 3.5 cũng bao gồm hỗ trợ thử nghiệm cho SMB2. Samba 3.6 hỗ trợ đầy đủ SMB2, ngoại trừ việc sửa đổi hạn ngạch người dùng bằng các công cụ quản lý hạn ngạch Windows.
Khi SMB2 được giới thiệu, nó mang lại một số lợi ích hơn SMB1 cho các nhà triển khai bên thứ ba của các giao thức SMB. SMB1, ban đầu được thiết kế bởi IBM, được thiết kế ngược, và sau này trở thành một phần của nhiều hệ điều hành không phải Windows như Xenix , OS / 2 và VMS ( Pathworks ) X; nó cũng có dự thảo tiêu chuẩn IETF đã hết hiệu lực. Mã SMB1 của Microsoft phải làm việc với nhiều máy khách và máy chủ SMB. SMB1 có nhiều phiên bản thông tin cho các lệnh (chọn cấu trúc nào cần trả về cho một yêu cầu cụ thể) vì các tính năng như hỗ trợ Unicode đã được trang bị retro vào một ngày sau đó. SMB2 liên quan đến việc giảm đáng kể khả năng tương thích-thử nghiệm cho những người thực hiện giao thức. Mã SMB2 có độ phức tạp ít hơn đáng kể vì ít biến đổi hơn nhiều (ví dụ, các đường dẫn mã không phải mã Unicode trở nên thừa khi SMB2 yêu cầu hỗ trợ Unicode).
Các Linux kernel CIFS hệ thống tập tin của khách hàng đã hỗ trợ SMB2 kể từ phiên bản 3.7.
SMB 2.1: được giới thiệu với Windows 7 và Server 2008 R2, giới thiệu các cải tiến hiệu năng nhỏ với cơ chế khóa cơ hội mới.
SMB 3.0: (trước đây có tên SMB 2.2) đã được giới thiệu với Windows 8 và Windows Server 2012 . Nó mang lại một số thay đổi quan trọng nhằm bổ sung chức năng và cải thiện hiệu suất SMB2, đáng chú ý trong các trung tâm dữ liệu ảo hóa. Nó cũng giới thiệu một số cải tiến bảo mật, chẳng hạn như mã hóa đầu cuối và một thuật toán ký mới dựa trên AES.
SMB 3.0.2 (được gọi là 3.02): đã được giới thiệu với Windows 8.1 và Windows Server 2012 R2; trong những bản phát hành sau đó, phiên bản SMB trước đó 1 có thể được tùy chọn vô hiệu hóa để tăng cường bảo mật.
SMB 3.1.1: đã được giới thiệu với Windows 10 và Windows Server 2016. Phiên bản này hỗ trợ mã hóa AES 128 GCM ngoài mã hóa AES 128 CCM được thêm vào trong SMB3 và triển khai kiểm tra tính toàn vẹn trước khi xác thực bằng cách sử dụng hàm băm SHA-512 . SMB 3.1.1 cũng làm cho thương lượng an toàn bắt buộc khi kết nối với khách hàng sử dụng SMB 2.x trở lên.
Tiểu kết:
Trên đây là cái nhìn cơ bản nhất về một lỗ hổng bảo mật cơ bản và khá phổ biến trên hệ điều hành Window. Trong phần tiếp theo, mình sẽ tiếp tục nói về một số phương pháp để khai thác lỗ hổng này. Mong các bạn tiếp tục đón đọc và ủng hộ. Xin cảm ơn!
TÀI LIỆU THAM KHẢO
[1] FIRST, “Common Vulnerability Scoring System SIG.” [Online]. Available: https://www.first.org/cvss/. [Accessed: 01-Nov-2018].
[2] Wikipedia, “Common Weakness Enumeration,” 2018. [Online]. Available: https://en.wikipedia.org/wiki/Common_Weakness_Enumeration. [Accessed: 01-Nov-2018].
[3] Rapid7, “Microsoft CVE-2017-0016: SMBv2/SMBv3 Null Dereference Denial of Service Vulnerability,” 2017. [Online]. Available: https://www.rapid7.com/db/vulnerabilities/msft-cve-2017-0016. [Accessed: 29-Oct-2018].
[4] SecurityFocus, “Microsoft Windows CVE-2017-0016 Memory Corruption Vulnerability,” 2017-02-02, 2017. [Online]. Available: https://www.securityfocus.com/bid/95969. [Accessed: 30-Oct-2018].
[5] C. Detail, “Vulnerability Details : CVE-2017-0016,” 2017-03-16, 2017. [Online]. Available: https://www.cvedetails.com/cve/cve-2017-0016. [Accessed: 29-Oct-2018].
[6] Wikipedia, “Server Message Block,” 2017. [Online]. Available: https://en.wikipedia.org/wiki/Server_Message_Block. [Accessed: 02-Nov-2018].
[7] A. Nhiên, “SMB là gì?,” 2017. [Online]. Available: https://trainghiemso.vn/smb-la-gi/. [Accessed: 02-Nov-2018].
[8] Lbqthinh, “Cảnh báo điểm yếu trong dịch vụ Microsoft Windows SMB cho phép tin tặc thực hiện tấn công từ chối dịch vụ,” 09:28 AM 17/02/2017, 2017. [Online]. Available: https://ais.gov.vn/canh-bao-khuyen-nghi/canh-bao/canh-bao-diem-yeu-trong-dich-vu-microsoft-windows-smb-cho-phep-tin-tac-thuc-hien-tan-cong-tu-choi-dich-vu.htm?fbclid=IwAR0n7gc78H-229gvtpYx4L-D_qK172SSgVx0VWeM_MqaFZvUWke_8WodTVc. [Accessed: 03-Nov-2018].
[9] M. O. A. H. MIWA, “Attacking Windows SMB Zero-Day Vulnerability,” 2017-02-27, 2017. [Online]. Available: https://www.secureworks.com/blog/attacking-windows-smb-zero-day-vulnerability?fbclid=IwAR2RaRQoRZGGdSG4pR7RwZQCTj5yyU3LpueSPRaCCrS78k2eJ75GtxrPsXA. [Accessed: 03-Nov-2018].
[10] Microsoft, “Message Signing Example,” 2017. [Online]. Available: https://msdn.microsoft.com/en-us/library/ee442085.aspx. [Accessed: 03-Nov-2018].
All rights reserved