OceanLotus: cập nhật phần mềm độc hại cho macOS

Vào tháng 2019 năm XNUMX, một mẫu phần mềm độc hại macOS mới từ nhóm mạng OceanLotus đã được tải lên VirusTotal, một dịch vụ quét trực tuyến phổ biến. Tệp thực thi cửa sau có các khả năng tương tự như phiên bản trước của phần mềm độc hại macOS mà chúng tôi đã nghiên cứu, nhưng cấu trúc của nó đã thay đổi và trở nên khó phát hiện hơn. Thật không may, chúng tôi không thể tìm thấy ống nhỏ giọt liên quan đến mẫu này, vì vậy chúng tôi chưa biết vectơ lây nhiễm.

Gần đây chúng tôi đã xuất bản bài viết về OceanLotus và cách các nhà khai thác đang cố gắng cung cấp tính bền bỉ, tăng tốc độ thực thi mã và giảm thiểu dấu chân trên hệ thống Windows. Được biết, nhóm mạng này cũng có thành phần dành cho macOS. Bài đăng này nêu chi tiết những thay đổi trong phiên bản mới nhất của phần mềm độc hại dành cho macOS so với phiên bản trước (được mô tả bởi Trend Micro), đồng thời mô tả cách bạn có thể tự động hóa việc giải mã chuỗi trong quá trình phân tích bằng API Hex-Rays IDA.

OceanLotus: cập nhật phần mềm độc hại cho macOS

Phân tích

Ba phần tiếp theo mô tả việc phân tích mẫu có hàm băm SHA-1 E615632C9998E4D3E5ACD8851864ED09B02C77D2. Tập tin được gọi bị chiếu đèn pin, Các sản phẩm chống vi-rút của ESET phát hiện nó là OSX/OceanLotus.D.

Chống gỡ lỗi và bảo vệ sandbox

Giống như tất cả các tệp nhị phân OceanLotus của macOS, mẫu được đóng gói bằng UPX nhưng hầu hết các công cụ nhận dạng của trình đóng gói không nhận dạng được mã đó. Điều này có lẽ là do chúng hầu hết chứa chữ ký phụ thuộc vào sự hiện diện của chuỗi “UPX”, ngoài ra, chữ ký Mach-O ít phổ biến hơn và không được cập nhật thường xuyên. Tính năng này làm cho việc phát hiện tĩnh trở nên khó khăn. Điều thú vị là sau khi giải nén, điểm vào nằm ở đầu phần __cfstring trong phân khúc .TEXT. Phần này có thuộc tính cờ như trong hình bên dưới.

OceanLotus: cập nhật phần mềm độc hại cho macOS
Hình 1. Thuộc tính của phần MACH-O __cfstring

Như thể hiện trong Hình 2, các vị trí mã trong phần __cfstring cho phép bạn đánh lừa một số công cụ tháo gỡ bằng cách hiển thị mã dưới dạng chuỗi.

OceanLotus: cập nhật phần mềm độc hại cho macOS
Hình 2. Mã cửa sau được IDA phát hiện dưới dạng dữ liệu

Sau khi được thực thi, tệp nhị phân sẽ tạo một luồng như một trình chống gỡ lỗi với mục đích duy nhất là liên tục kiểm tra sự hiện diện của trình gỡ lỗi. Đối với luồng này:

— Cố gắng gỡ bỏ bất kỳ trình gỡ lỗi nào, gọi ptrace с PT_DENY_ATTACH như một tham số yêu cầu
- Kiểm tra xem một số cổng độc quyền có mở hay không bằng cách gọi một hàm task_get_exception_ports
- Kiểm tra xem trình gỡ lỗi đã được kết nối chưa, như trong hình bên dưới, bằng cách kiểm tra sự hiện diện của cờ P_TRACED trong quá trình hiện tại

OceanLotus: cập nhật phần mềm độc hại cho macOS
Hình 3. Kiểm tra kết nối trình gỡ lỗi bằng hàm sysctl

Nếu cơ quan giám sát phát hiện sự hiện diện của trình gỡ lỗi, hàm này được gọi exit. Ngoài ra, mẫu sau đó sẽ kiểm tra môi trường bằng cách chạy hai lệnh:

ioreg -l | grep -e "Manufacturer" и sysctl hw.model

Sau đó, mẫu sẽ kiểm tra giá trị trả về dựa trên danh sách các chuỗi được mã hóa cứng từ các hệ thống ảo hóa đã biết: acle, vmware, VirtualBox hoặc song song. Cuối cùng, lệnh tiếp theo sẽ kiểm tra xem máy có phải là một trong các “MBP”, “MBA”, “MB”, “MM”, “IM”, “MP” và “XS” sau hay không. Đây là các mã model hệ thống, ví dụ: “MBP” có nghĩa là MacBook Pro, “MBA” có nghĩa là MacBook Air, v.v.

system_profiler SPHardwareDataType 2>/dev/null | awk '/Boot ROM Version/ {split($0, line, ":");printf("%s", line[2]);}

Bổ sung cơ bản

Mặc dù các lệnh cửa sau không thay đổi kể từ nghiên cứu của Trend Micro nhưng chúng tôi đã nhận thấy một số sửa đổi khác. Các máy chủ C&C được sử dụng trong mẫu này khá mới và được tạo vào ngày 22.10.2018/XNUMX/XNUMX.

- daff.faybilodeau[.]com
- sarc.onteagleroad[.]com
- au.charlineopkesston[.]com

URL tài nguyên đã thay đổi thành /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35.
Gói đầu tiên được gửi đến máy chủ C&C chứa nhiều thông tin hơn về máy chủ, bao gồm tất cả dữ liệu được thu thập bởi các lệnh trong bảng bên dưới.

OceanLotus: cập nhật phần mềm độc hại cho macOS

Ngoài thay đổi cấu hình này, mẫu không sử dụng thư viện để lọc mạng thư viện, nhưng là một thư viện bên ngoài. Để tìm thấy nó, backdoor cố gắng giải mã mọi tệp trong thư mục hiện tại bằng AES-256-CBC bằng khóa gFjMXBgyXWULmVVVzyxy, được đệm bằng số không. Mỗi tập tin được giải mã và lưu dưới dạng /tmp/storevà cố gắng tải nó dưới dạng thư viện được thực hiện bằng hàm dlopen. Khi nỗ lực giải mã dẫn đến cuộc gọi thành công dlopen, cửa sau trích xuất các hàm đã xuất Boriry и ChadylonV, dường như chịu trách nhiệm liên lạc mạng với máy chủ. Chúng tôi không có ống nhỏ giọt hoặc các tệp khác từ vị trí ban đầu của mẫu, vì vậy chúng tôi không thể phân tích cú pháp thư viện này. Hơn nữa, vì thành phần được mã hóa nên quy tắc YARA dựa trên các chuỗi này sẽ không khớp với tệp được tìm thấy trên đĩa.

Như đã mô tả trong bài viết trên, nó tạo ra ID khách hàng. ID này là hàm băm MD5 của giá trị trả về của một trong các lệnh sau:

- ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformSerialNumber/ { split($0, line, """); printf("%s", line[4]); }'
- ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformUUID/ { split($0, line, """); printf("%s", line[4]); }'
- ifconfig en0 | awk '/ether /{print $2}' (lấy địa chỉ MAC)
- đội vô danh ("x1ex72x0a"), được sử dụng trong các mẫu trước đó

Trước khi băm, "0" hoặc "1" được thêm vào giá trị trả về để biểu thị quyền root. Cái này khách hàng được lưu trữ trong /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex, nếu mã được chạy dưới quyền root hoặc trong ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML trong tất cả các trường hợp khác. Tệp thường được ẩn bằng chức năng _chflags, dấu thời gian của nó được thay đổi bằng lệnh touch –t với một giá trị ngẫu nhiên.

Giải mã chuỗi

Giống như các tùy chọn trước đó, chuỗi được mã hóa bằng AES-256-CBC (khóa thập lục phân: 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92 được đệm bằng số XNUMX và IV chứa đầy số XNUMX) thông qua hàm CCcrypto. Khóa đã thay đổi so với các phiên bản trước, nhưng do nhóm vẫn sử dụng cùng một thuật toán mã hóa chuỗi nên việc giải mã có thể được tự động hóa. Ngoài bài đăng này, chúng tôi sẽ phát hành tập lệnh IDA sử dụng API Hex-Rays để giải mã các chuỗi có trong tệp nhị phân. Tập lệnh này có thể giúp phân tích OceanLotus trong tương lai và phân tích các mẫu hiện có mà chúng tôi chưa thể lấy được. Tập lệnh dựa trên một phương thức chung để nhận các đối số được truyền cho hàm. Ngoài ra, nó còn tra cứu các bài tập tham số. Phương thức này có thể được sử dụng lại để lấy danh sách các đối số của hàm và sau đó chuyển nó đến hàm gọi lại.

Biết nguyên mẫu hàm giải mã, tập lệnh sẽ tìm tất cả các tham chiếu chéo đến hàm này, tất cả các đối số, sau đó giải mã dữ liệu và đặt văn bản thuần túy bên trong nhận xét tại địa chỉ tham chiếu chéo. Để tập lệnh hoạt động chính xác, nó phải được đặt thành bảng chữ cái tùy chỉnh được sử dụng bởi hàm giải mã base64 và phải xác định một biến toàn cục có chứa độ dài của khóa (trong trường hợp này là DWORD, xem Hình 4).

OceanLotus: cập nhật phần mềm độc hại cho macOS
Hình 4. Định nghĩa biến toàn cục key_len

Trong cửa sổ Chức năng, bạn có thể nhấp chuột phải vào chức năng giải mã và nhấp vào “Trích xuất và giải mã đối số”. Tập lệnh sẽ đặt các dòng được giải mã trong phần nhận xét, như trong Hình 5.

OceanLotus: cập nhật phần mềm độc hại cho macOS
Hình 5. Văn bản được giải mã được đặt trong phần bình luận

Bằng cách này, các chuỗi được giải mã sẽ được đặt cùng nhau một cách thuận tiện trong cửa sổ IDA xref cho chức năng này như trong Hình 6.

OceanLotus: cập nhật phần mềm độc hại cho macOS
Hình 6. Hàm Xref tới f_decrypt

Kịch bản cuối cùng có thể được tìm thấy tại Kho lưu trữ Github.

Đầu ra

Như đã đề cập, OceanLotus không ngừng cải tiến và cập nhật bộ công cụ của mình. Lần này, nhóm mạng đã cải tiến phần mềm độc hại để hoạt động với người dùng Mac. Mã không thay đổi nhiều, nhưng vì nhiều người dùng Mac bỏ qua các sản phẩm bảo mật nên việc bảo vệ phần mềm độc hại khỏi bị phát hiện chỉ có tầm quan trọng thứ yếu.

Các sản phẩm ESET đã phát hiện tệp này tại thời điểm nghiên cứu. Do thư viện mạng được sử dụng cho giao tiếp C&C hiện đã được mã hóa trên đĩa nên vẫn chưa xác định được giao thức mạng chính xác mà những kẻ tấn công sử dụng.

Các chỉ số của sự thỏa hiệp

Các chỉ báo về sự xâm phạm cũng như thuộc tính MITER ATT&CK cũng có sẵn trên GitHub.

Nguồn: www.habr.com

Thêm một lời nhận xét