Cảnh báo bảo mật VBA - Code VBA tự đổi khi mở các phiên bản khác nhau

  • Thread starter Deleted member 1392
  • Ngày gửi
Trạng thái
Không mở trả lời sau này.
D

Deleted member 1392

Guest
Mục tiêu Topic
Như tiêu đề, mục tiêu của Topic là giúp các bạn có thể cảnh giác với một phương pháp ghép mã độc vào file Excel chứa VBA mà các bạn không hay biết. Topic không khuyến nghị các bạn làm theo cũng như tìm hiểu cách ghép mã như Topic chỉ ra.
Bạn cần đăng nhập để thấy hình ảnh

---------------------------------------------

Cách hoạt động
Trong ảnh các bạn sẽ thấy chung 1 file Excel nhưng khi mở bằng 2 bảng Office khác nhau sẽ có 2 đoạn Code khác nhau được thể hiện trong VBA.
Khi mở bằng Excel 2013 thì sẽ chỉ có đoạn code:
Mã:
Public Sub Hello_World()
a= 1
b = 2
End Sub
Nhưng khi mở bằng Office 365, Lập tức đoạn code trên được thay thế bằng đoạn code:
Mã:
Public Sub Auto_Open()
MsgBox " Msg nay chi hien khi duoc mo bang Office 365"
End Sub
Mặc dù chung 1 file nhưng khi mở bằng 2 bảng Office khác nhau lại có 2 đoạn code. Đây là một sự nguy hiểm vô cùng lớn. Bởi khi kiểm tra file ta chỉ kiểm tra được code trong file Excel bằng bảng Offce đang cài trong máy chúng ta, nhưng khi gởi cho mọi người cài khác bảng Offce thì code lại khác.

Vì vậy, mọi người cần cảnh giác cao với các file Excel khi tải trên mạng về, đặc biệt là nguồn gốc của file.

Trên đây là cảnh báo nhanh của mình trước loại mã độc này. Hiện tại, mình vẫn đang tìm hiểu cách phát hiện và gỡ bỏ mã độc này. Mọi thông tin mới nhất mình sẽ cập nhật trong Topic này.
 
Sửa lần cuối bởi điều hành viên:

tuhocvba

Administrator
Thành viên BQT
Bạn cần đăng nhập để thấy hình ảnh

Một chủ đề dễ gây tò mò, mong chờ kết quả nghiên cứu của chủ topic.
 
D

Deleted member 1392

Guest
Cấu trúc lưu trữ code VBA trong file Excel

Như trong bài viết ẩn module của vothanhthu (link ), việc khi chúng ta tác động đến file vbaProject.bin sẽ làm có ảnh hưởng đến cấu trúc cũng như code trong VBA, vậy nguyên nhân là do đâu?, chúng ta sẽ cùng tìm hiểu:

Các nội dung được lấy từ nguồn của Microsoft.

Trong Excel, chúng ta thường thấy Microsoft sử dụng các định dạng .xlsb, .xlsx, .xlsm... Bản chất của những tệp này là một vùng ZIP được nén lại. Khi giải nén, bạn sẽ có thế truy cập vào file vbaProject.bin, File này mang định dạng Compound File Binary Format (CFBF), và là file chứa toàn bộ thông tin macro của file.
Bạn cần đăng nhập để thấy hình ảnh


Khi mở file bằng Hex, ta sẽ thấy rất nhiều mã nhị phân khó hiểu. Đây không phải là cấu trúc thật của file, cái các bạn đang thấy chỉ là định dạng nhị phân đang được thể hiện ở dạng nén. Cấu trúc thật của file bao gồm rất nhiều tệp nhỏ (gọi là luồng) trong một tệp lớn vbaProject.bin
Bạn cần đăng nhập để thấy hình ảnh


Trong các luồng, ta sẽ có một số luồng quan trọng như sau:
PROJECT: Xác định cấu trúc VBA, cấu hình nên GUI của VBA Editor
_VBA_PROJECT: Luồng này chứa cách macro được diễn giải trong VBA Editor
Dir: Chứa bố cục của toàn dự án VBA
Module: Chứa toàn bộ code thực tế mà chúng sẽ được thực thi

Bạn cần đăng nhập để thấy hình ảnh


Quay trở lại phương pháp ẩn Module được vothanhthu trình bày, việc ta xoá đoạn Module=Module1 trong Hex, thực tế là ta đang tác động đến luồng PROJECT. Như mình đã đề cập ở trên, luồng này cấu hình nên những gì được nhìn thấy trong VBA Editor. Việc bạn việc xoá Module=Module1 sẽ làm biến mất tên Module trong VBA Editor nhưng lại không hề làm mất đi code thực thi. Vì thực tế, code đang được lưu ở luồng Module. Lưu ý, bạn không thể tác động đến module "Thisworkbook" và "ThisDocument".

Qua bài viết chắc các bạn cũng hình dung phần nào cấu trúc của tệp vbaProject.bin. Trong bài viết tiếp theo, chúng ta sẽ tìm hiểu làm sao chúng ta có thể biết được cấu trúc chính xác của một file Excel, Thậm chí là có thể trích xuất code VBA mà không cần mở file, bỏ qua toàn bộ bảo mật của file.
 
Trạng thái
Không mở trả lời sau này.
Top