Nhóm tin tặc Lazarus - Phần 4

WhiteHat News #ID:2018

WhiteHat Support
20/03/2017
129
444 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
Một tệp tin có đặc điểm gần như giống hệt đã được tìm thấy ở một địa điểm khác với các đặc tính sau:
  • 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
Nhãn thời gian tạo mã độc cho thấy mã độc được tạo chính xác là một ngày trước khi được đưa vào sử dụng tại ngân hàng.

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
Khi bắt đầu thực thi, mã độc cố gắng đọc file C:\MSO10\LATIN.SHP 5 lần liên tiếp, mỗi lần cách nhau 100ms. Nếu không tìm thấy file này hoặc chữ ký file không hợp lệ, nó sẽ ghi ra một message với nội dung "NR-PR" để ghi lại thông tin lỗi. Chúng tôi đoán PR là 2 chữ cái đầu của PRoblem (Vấn đề), và NR ám chỉ chương trình printer helper có tên “nroff” được phần mềm SWIFT Alliance sử dụng.

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]
Chức năng ghi log được gọi và thực thi thông qua 3 tham số truyền vào: fltmsg.exe <mode> <print -file > <output-path>

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ứ 2 <print-file>: là đường dẫn của một bản backup của log có đuôi file là ".prt", ".out" hoặc ".txt".

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\
Trong đó, N là một số nguyên bất kỳ.

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
Khi mã độc tìm thấy các file này, chúng sẽ lưu một bản copy vào drive:\MSO10. Và một file được mã hóa RC4 (LATIN.SHP), chứa các chuỗi dưới đây sau khi giải mã:
  • 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\
Trong một trường hợp trước đó từ ngân hàng Bangladesh, cấu hình chứa mã định danh doanh nghiệp SWIFT (BIC) ẩn trong các báo cáo giao dịch SWIFT.

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
Thời điểm biên dịch cho thấy mã độc được tạo ra vài ngày trước khi tấn công vào ngân hàng.

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
Khi bắt đầu thực thi mã độc đọc file %DRIVE%:\MSO10\LATIN.SHP 5 lần liên tiếp với mỗi lần cách nhau 100ms. Nếu không tìm thấy hoặc file không hợp lệ, nó sẽ lưu vào log "PM-PhR". File được đọc thành công nếu kích thước của nó lớn hơn hoặc bằng 35.260 byte. Sau đó, module bắt đầu giải mã file bằng thuật toán RC4 với khóa mã hóa 4E 38 1F A7 7F 08 CC AA 0D 56 ED EF F9 ED 08 EF.

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:

Malware1_2_1.PNG
Mô-đun này có bảy khối bao gồm 0x130 byte chứa thông tin đối tượng mô-đun cần vá. Mỗi khối có bốn phần, mỗi phần tương đương 0x4C byte chứa thông tin mỗi bản vá. Tuy nhiên, chỉ có phần đầu tiên trên mỗi mô-đun được sử dụng.

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á:
Malware 1_2_2.PNG

Các công cụ nhị phân của phần mềm SWIFT Alliance được liên kết với file "saa_check.cpp", giúp kiểm tra bảo mật cơ bản và xác nhận tính toàn vẹn của cơ sở dữ liệu. Các bản vá được áp dụng cho các mô-đun để vô hiệu hóa việc kiểm tra này và ngăn chặn việc phát hiện ra sự không nhất quán của cơ sở dữ liệu. File lựa chọn không phải ngẫu nhiên, vì môi trường máy chủ được kết nối SWIFT là tổ hợp các file có thể thực thi có mối quan hệ phức tạp, kẻ tấn công xác định được tất cả các file thực thi đã triển khai các tính năng bảo mật mới và vá chúng lại. Chúng tôi đã kiểm tra tất cả các nhị phân khác trên máy chủ và không có ứng dụng nào khác có liên kết với saa_check.cpp, ngoại trừ danh sách 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
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
    • Thích
    Reactions: whf
    Thẻ
    bluenoroff lazarus
    Bên trên