WhiteHat News #ID:2018
WhiteHat Support
-
20/03/2017
-
129
-
443 bài viết
Nhóm tin tặc Lazarus - Phần 4
Phụ lục: Phân tích mã độc
Mã độc số 1: Thu thập thông tin các giao dịch SWIFT (Hiệp hội viễn thông liên ngân hàng và tài chính quốc tế)
- Hàm băm MD5: 0abdaebbdbd5e6507e6db15f628d6fd7
- Đường dẫn phát hiện: C:\MSO10\fltmsg.exe
- Thời điểm phát hiện: 18/08/2016 lúc 23:44:21
- Kích thước file: 90'112 bytes
- Thời điểm tạo mã độc: 18/08/2016 lúc 22:24:41 (giờ GMT)
- Phiên bản: 10.0
- Kiểu file: 32bit Windows (PE32 executable (GUI) Intel 80386)
- Nhãn Bluenoroff nội bộ: NR
- Được sử dụng trong vụ việc #1
- Hàm băm MD5: 9d1db33d89ce9d44354dcba9ebba4c2d
- Đường dẫn phát hiện: D:\Alliance\Entry\common\bin\win32\nroff.exe
- Thời điểm phát hiện: 2016-08-12 22:24:19
- Kích thước file: 89'088 bytes
- Thời điểm tạo mã độc: 12/08/2016 lúc 12:25:02 (giờ GMT)
- Kiểu file: 32bit Windows (PE32 executable (GUI) Intel 80386)
- Nhãn mô-dun nội bộ: NR
Mã độc tạo thư mục MSO10 trên ổ đĩa cài hệ điều hành, ví dụ C:\MSO10. Nó cũng tạo một vài đường dẫn với mục đích không rõ ràng. Không phải tất cả các đường dẫn đều có trong code và chúng có thể là các code được copy – paste hoặc một phần trong một file chung chung của framework. Các đường dẫn có dạng như sau:
- %DRIVE%:\MSO10\LATIN.SHP
- %DRIVE%:\MSO10\ENGDIC.LNG
- %DRIVE%:\MSO10\ADDT.REF
- %DRIVE%:\MSO10\MSE.LIV
Nếu kích thước file lớn hơn hoặc bằng 35.260 byte, file sẽ được đọc thành công. Sau đó, mô-đun sẽ giải mã file bằng thuật toán RC4 sử dụng khóa 4E 38 1F A7 7F 08 CC AA 0D 56 ED EF F9 ED 08 EF. Khóa này là duy nhất và từng được tìm thấy trong công cụ dùng để tấn công phần mềm SWIFT Alliance và công cụ Wiper Tool trong vụ tấn công ngân hàng tại Bangladesh đầu năm 2016 (MD5: 5d0ffbc8389f27b0649696f0ef5b3cfe). Nó cũng được sử dụng trong một công cụ khác để mã hóa các file cấu hình như báo cáo của Tập đoàn BAE.
Dữ liệu sau khi được giải mã sẽ được xác thực lại bằng cách kiểm tra 4byte đầu với giá trị 0xA0B0C0D0. File này chứa cấu hình của 35.260 byte sẽ được sao chép sang bộ nhớ riêng và các khối dữ liệu chứa 1.096 byte mỗi khối. Số lượng các khối có thể thay đổi, mô-đun đọc tất cả các khối này và lưu trữ trong danh sách liên kết.
Mã độc có chức năng ghi log quá trình thực thi và được lưu trong file C:\MSO10\ENGDIC.LNG có định dạng [%Hour%:%Minute%:%Second%] [%Process_PID%] %Message%\r\n và các tiền tố như sau:
- [ERROR]
- [INFO]
- [WARNING]
Tham số thứ nhất (Mode): có giá trị bằng 1 hoặc 2, tuân theo định dạng sau "NR-PR-P %mode%". Chúng tôi cho rằng "NR-PR-P" có nghĩa là "nroff problem parameter".
- Mode = 1: Đường dẫn xuất ra file log sẽ là #%04d%04d.prt
- Mode = 2: Đường dẫn xuất ra file log sẽ lấy từ tham số thứ 3
Tham số thứ 3: Đường dẫn lưu file log thuộc một trong các thư mục sau:
- C:\MSO10\P %N%\MOT\
- C:\MSO10\R %N%\MOT\
- C:\MSO10\N %N%\MOT\
Mã độc sẽ phân tích các file lịch sử giao dịch SWIFT để lấy các thông tin như: Người gửi, người nhận, số tài khoản, sao kê và các thông tin khác… Các file được gửi đến bản sao lưu này có định dạng giao dịch SWIFT, cho thấy kẻ tấn công đã quen với các tài liệu trong nội bộ của SWIFT hoặc đã khá cẩn thận khi đảo ngược lại định dạng như sau:
- 515 (M51)
- 940 (M94) – Số dư đầu ngày
- 950 (M95) – Số dư cuối ngày
- D:\Alliance\Entry\database\bin\sqlplus.exe
- D:\Alliance\Entry\common\bin\win32
- D:\Alliance\Entry
- C:\MSO10\fltmsg.exe
- C:\MSO10\MSO.DLL
- C:\MSO10\MXS.DLL
- \\127.0.0.1\share
- localhost\testuser
- \\127.0.0.1\share\
Mã độc số 2: SWIFT Alliance Access Protection Mangler
- Hàm băm MD5: 198760a270a19091582a5bd841fbaec0
- Kích thước file: 71'680 bytes
- Đường dẫn phát hiện: C:\MSO10\MSO.dll
- Biên dịch ngày: 18/08/2016 lúc 22:24:44 (GMT)
- Phiên bản: 10.0
- Kiểu file: 32bit Windows
- Nhãn Bluenoroff nội bộ : PM
- Được sử dụng trong vụ việc #1
Mã độc này được sử dụng để vá một số mô-đun phần mềm SWIFT Alliance trong bộ nhớ nhằm vô hiệu hóa cơ chế bảo vệ của phần mềm dùng để phát hiện các hành động thay đổi dữ liệu. Mã rất có thể được tạo ra bởi cùng một nhà phát triển Mã độc 1 (MD5: 0abdaebbdbd5e6507e6db15f628d6fd7) vì nó có các thư mục tương tự như Mã độc số 1 được tạo ra trên ổ đĩa C: \ MSO10.
Nó cũng tạo ra một số đường dẫn với mục đích không rõ ràng giống như Mã độc 1.
- %DRIVE%:\MSO10\LATIN.SHP
- %DRIVE%:\MSO10\ENGDIC.LNG
- %DRIVE%:\MSO10\ADDT.REF
- %DRIVE%:\MSO10\MSE.LIV
Nội dung file sau khi giải mã sẽ được kiểm tra phần header với giá trị 0xA0B0C0D0. Nếu chính xác nó sẽ đọc từng khối dữ liệu 1096 byte và lưu vào một danh sách liên kết.
Nếu file LATIN.SHP tồn tại, mô-đun đơn giản chỉ cần đếm số lượng các bản ghi của file và tiến hành ghi đè lên file đó còn ngược lại nó sẽ tạo file mới hoàn toàn.
Mã độc có tính năng ghi lại các hoạt động vào một file log C:\MSO10\ENGDIC.LNG với định dạng như sau:
Mỗi phần sẽ chứa thông tin về kích thước bản vá và đường dẫn tương đối đến mô-đun được vá trên ổ đĩa, vị trí đến các byte được vá (chứa địa chỉ ảo tương đối) và byte gốc. Việc xác minh các byte gốc có tồn tại tại vị trí xác định hay không sẽ được thực hiện trước khi tiến hành sửa đổi mã.
Phần dữ liệu đầu tiên là một bản vá cho thư viện liboradb.dll có vẻ như cần thiết và được áp dụng trong mọi trường hợp. Các bản vá khác được thiết kế cho các tệp thực thi cụ thể mà mô-đun Patcher DLL của phần mềm SWIFT Alliance được tải vào. Phần này tìm kiếm một bản vá tương ứng phù hợp với tên tệp có thể thực thi theo tiến trình hiện tại và chỉ áp dụng bản vá đó.
Bảng dưới đây sẽ giải thích các khối của bản vá:
Trình vá DLL phải được tải lên không gian địa chỉ của tiến trình mục tiêu, không được thiết kế để vá các tiến trình khác.
Nguồn: Kaspersky Lab
Bài viết đã đăng:
Nhóm tin tặc Lazarus - Phần 1
Nhóm tin tặc Lazarus - Phần 2
Nhóm tin tặc Lazarus - Phần 3