Lokibot là dòng mã độc chuyên nhắm đến các tổ chức tài chính – ngân hàng trên toàn thế giới. Dòng mã độc này từng hoạt động khá mạnh ở Việt Nam trong khoảng đầu năm 2019. Bài viết là một phân tích về mẫu mã độc này mà tôi có được trong quá trình giám sát.
- Tổng quan
Thời gian gần đây, bộ phận giám sát an ninh mạng của chúng tôi nhận được khá nhiều thông tin về hàng loạt các email phishing trong chiến dịch nhằm phát tán mã độc Lokibot – dòng mã độc chuyên nhắm đến các tổ chức tài chính – ngân hàng trên toàn thế giới.
Tệp tin mã độc được kẻ tấn công đính kèm trong email là dạng file excel (*.xlsx). Thực chất dạng email phishing như thế này chúng ta cũng đã gặp khá nhiều, tuy nhiên điều đặc biệt ở đây là tệp tin xlsx đính kèm. Như một thói quen chúng tôi check qua “hàng” trước khi tiến hành các bước phân tích sâu hơn (Tất nhiên là không phải click chuột để mở file đâu nhé).
Đối với các tệp tin văn bản độc hại thuộc dạng Excel Workbook như trên chúng tôi thường extract để xem có thông tin gì “khác lạ” nhúng bên trong không. Qua các thông tin giải nén, nhận thấy file đính kèm dường như được mã hóa – bảo vệ bằng mật khẩu -> Vậy chắc hẳn kẻ tấn công phải gửi mật khẩu file trong nội dung email để người dùng mở file khi nhận được?
Ồ! Không hề nhé. Nội dung email không có gửi kèm mật khẩu mở file. Vậy file thực thi thế nào? Làm thế nào để mã độc thực thi được khi người dùng mở file? Và làm thế nào để chúng ta phân tích được nội dung của nó?
Thông tin mẫu
– Tên file: MV TRANSATLANTIC – VSL.xlsx
– File type: Excel Workbook (Microsoft Office Excel)
– MD5 Hash: D24ECFFA43F1FF02A5BEDC5DBD00BE40
– Loại mã độc: sử dụng mã khai thác CVE 2017-11882
Thông tin nhận dạng trên Virustotal (28/61 AVs detected) (https://www.virustotal.com/gui/file/72aa19544925e456a56d9560c9cbf22c4e054c1650f8044f42126f6a64876a84/detection):
- Phân tích chi tiết
Qua việc phân tích sơ bộ, chúng tôi nhận thấy mã độc là dạng file xlsx được bảo vệ bằng mật khẩu mở file. Để thực hiện phân tích sâu về kỹ thuật, chúng tôi sẽ thực hiện các công việc sau:
– Xóa bỏ mật khẩu bảo vệ file
– Extract mã khai thác
– Phân tích mã khai thác
Bước 01: Xóa bỏ mật khẩu bảo vệ file
Với bước đầu tiên chúng tôi có thực hiện 02 thao tác để kiểm tra và phân tích:
– Dùng công cụ để xóa bỏ mật khẩu bảo vệ tuy nhiên cách này khá hên xui vì chưa rõ độ phức tạp của mật khẩu thế nào. Tôi dùng công cụ Office Password Recovery Toolbox và may mắn là remove được mật khẩu! -> Thực hiện phân tích như file không bị mã hóa.
– Phân tích động (chạy mẫu trong môi trường ảo hóa và monitor hành vi).
Ở cách thao tác thứ 02 chúng tôi click mở file excel trong môi trường ảo hóa, file chạy bình thường mà hoàn toàn không cần người dùng phải nhập mật khẩu mở file và ghi nhận hành vi độc hại. Điều này chứng tỏ kẻ tấn công sử dụng trick gì đó ở đây:
Qua phân tích sâu hơn, chúng tôi thấy rằng mật khẩu mà kẻ tấn công sử dụng là “VelvetSweatshop” – đây là mật khẩu mặc định của Microsoft Excel. Theo cơ chế của Microsoft Excel, để giải mã một file excel được bảo vệ bởi mật khẩu của trước tiên ứng dụng này thử trước với một mật khẩu mặc định “VelvetSweatshop”. Trong trường hợp mật khẩu mặc định không đúng, ứng dụng mới thực hiện bật hộp thoại yêu cầu người dùng nhập mật khẩu. Lợi dụng việc này, kẻ tấn công sử dụng mật khẩu mặc định trên nhằm vào 02 mục đích:
– Mã hóa file nhằm qua mặt một số hệ thống bảo vệ nhưng với người dùng khi mở file lên thì vẫn hoạt động bình thường. Hiện tại khá nhiều hệ thống bỏ qua việc phân tích hoặc không phân tích được khi gặp định dạng file mã hóa này.
– Che giấu mã khai thác nhằm làm khó việc phân tích tệp tin.
Sử dụng công cụ msoffcrypto-tool (cách cài đặt: pip install msoffcrypto-tool) để gỡ bỏ mật khẩu bảo vệ của file bằng mật khẩu mặc định:
Bước 02: Extract mã khai thác
Sau khi extract file xlsx đã được xóa bỏ mật khẩu bảo vệ, dễ nhận thấy file OleObject chứa mã khai thác CVE 2017-11882 trong thư mục “.\xl\embeddings”. Tệp tin khai thác lỗ hổng của công cụ EQNEDT32.exe trong Microsoft Office:
Trước tiên, để lấy được đoạn mã khai thác + payload và phân tích được chúng tôi sẽ mô tả lại một chút về cơ chế hoạt động của lỗ hổng CVE 2017-11882:
– Khai thác lỗ hổng nằm trong thành phần EQNEDT32.exe của Office.
– Vai trò của EQNEDT32.exe là hỗ trợ Office xử lý các công thức tính toán thông qua các OleObject. Vì độ dài của chuỗi không bị giới hạn khi sao chép trường tên phông chữ được truyền vào Office nên gây ra tràn bộ đệm.
=> Kẻ tấn công có thể sử dụng lỗ hổng này để thực thi các lệnh tùy ý như người dùng bình thường.
Dựa theo 1 số bài phân tích chi tiết về lỗ hổng này, load EQNEDT32.exe vào IDA tôi có luồng thực hiện để khai thác lỗ hổng như hình dưới:
=> Hàm sub_41160F này thực hiện sao chép tên phông chữ sang biến local var_28gây ra lỗi tràn bộ đệm và kẻ tấn công lợi dụng để nhảy về đoạn mã khai thác nhằm thực hiện hành vi độc hại!
Sử dụng một số công cụ như Cerbero Advance hoặc Oledump ta có thể extract được đoạn mã khai thác của kẻ tấn công. Ở đây đơn giản hơn tôi dùng tính năng giải nén của 7zip để extract file OleObject1 và có được file “EQuaTIOn nAtIVe” chứa đoạn mã khai thác. Tất nhiên nhìn qua cũng thấy được đoạn mã khai thác này đã được mã hóa để che dấu strings hoặc tránh việc detect từ các hệ thống bảo vệ:
Bước 03: Phân tích mã khai thác
Theo phân tích về lỗ hổng CVE 2017-11882 ở trên, để thực hiện phân tích được mã khai thác này, tôi phải nhảy được vào hàm sub_41160F. Vì thế tôi sử dụng “Image File Execution Options” để attach trình debugger của tôi vào để phân tích. Các bước setup như sau:
– Tạo key value “Debugger” với nội dung là đường dẫn tới trình debugger.
– Đường dẫn key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\EQNEDT32.EXE
Khi click vào file xlsx độc hại chứa mã khai thác CVE 2017-11882, EQNEDT32.exe sẽ được gọi và trình debugger sẽ được thực thi + attach tiến trình EQNEDT32.exe dừng tại EntryPoint của EQNEDT32.exe. Dựa vào các thông tin phân tích ở bước 02, tôi nhảy đến hàm sub_41160F để tìm đến đoạn trả về mã khai thác:
Tại địa chỉ 0x411658, câu lệnh sẽ thực hiện sao chép gây ra tràn bộ đệm và địa chỉ trả về của hàm sẽ là 0x18F354 – đây là địa chỉ bắt đầu của Shellcode:
Đối với các đoạn mã khai thác (shellcode) chúng tôi thường sử dụng một chương trình nhỏ lên load lên memory và phân tích trực tiếp với OllyDBG. Tuy nhiên ở đây đoạn shellcode sử dụng các địa chỉ cố định nên việc debug trực tiếp shellcode là không khả thi nên bắt buộc phải attach debugger như trên.
Đến đây thì dễ rồi, ta tiếp tục thực hiện giải mã đoạn shellcode này để nhảy vào nó và dễ nhận thấy các string bên dưới cửa sổ Hex Dump được giải mã.
Tôi không đi sâu vào việc phân tích đoạn shellcode nữa vì nó cũng khá dễ:
– Thực hiện download mã độc Lokibot từ địa chỉ “http[:]//chnes21greatworldsportsmanofalltimeigd.duckdns[.]org/secure/svchost.exe” bằng hàm API URLDownloadToFileW
– Ghi vào file theo đường dẫn “%Appdata%\svchost.exe”.
– File mã độc svchost.exe thực hiện kết nối đến máy chủ điều khiển “http[:]//zangs.ga/lee/gate.php”.
III. Kết luận
Bài phân tích trên được tác giả viết dựa trên góc nhìn về mặt kỹ thuật để mọi người hiểu hơn về cách phân tích cụ thể một tệp tin xlsx độc hại. Rất mong ý kiến đóng góp của các chuyên gia để bài viết được hoàn thiện và chuẩn xác hơn.
Luồng hoạt động của mã độc:
– Giải mã nội dung file excel bằng mật khẩu mặc định của Office.
– Thực hiện khai thác lỗ hổng của EQNEDT32.exe để thực thi mã khai thác.
– Giải mã đoạn mã khai thác và thực thi.
– Tải mã độc Lokibot về thực thi.
– Mã độc Lokibot kết nối tới máy chủ điều khiển.
IOC:
– C&C:
o chnes21greatworldsportsmanofalltimeigd.duckdns[.]org
o zangs.ga
– Hash:
o XLSX File: D24ECFFA43F1FF02A5BEDC5DBD00BE40
o Svchost.exe: 202565E408066030BA667BC4CFFC1541