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
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.
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.
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
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.
Ngoài thay đổi cấu hình này, mẫu không sử dụng thư viện để lọc mạng 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/store
và cố gắng tải nó dưới dạng thư viện được thực hiện bằng hàm 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 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
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).
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.
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.
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
Đầ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
Nguồn: www.habr.com