Tác giả: 23pds & Thinking
Bối cảnh
Trong những năm gần đây, các vụ lừa đảo nhắm vào các kỹ sư blockchain đã xảy ra thường xuyên trên nền tảng LinkedIn. Hôm qua, chúng tôi đã thấy một bài đăng trên X của @_swader_. Trải nghiệm này thực chất là một mô hình thu nhỏ của lừa đảo để tuyển dụng kỹ sư blockchain. Tiếp theo, chúng ta hãy phân tích trường hợp này.

(https://x.com/_swader_/status/1900116168544817589)
Quy trình
Theo mô tả của Bruno, một người tự nhận là bên tham gia dự án đã chủ động liên hệ với anh ấy và gửi cho anh ấy một bản giới thiệu dài về dự án:

Nội dung chủ yếu liên quan đến một blockchain Socifi Tuyển dụng cho các nền tảng hợp đồng thông minh về trò chơi và đặt cược.
Tổng quan về dự án
Dự án là nền tảng hợp đồng thông minh thế chấp dựa trên trò chơi Socifi. Các tính năng cốt lõi bao gồm:
• Sàn giao dịch phi tập trung
• Trò chơi
• Chức năng cộng đồng nhiều trò chơi
• NFT và token
• Dịch vụ phát sóng trực tiếp
Mục đích tuyển dụng
• Đang tìm kiếm các nhà phát triển tham gia dự án.
• Các nhà phát triển hợp đồng thông minh và phần phụ trợ đã được tuyển dụng.
• Đề xuất Bruno Skvorc làm quản lý dự án/trưởng nhóm phát triển front-end.
Thiết kế MVP
• Người gửi đã cung cấp liên kết thiết kế Figma trỏ đến phiên bản MVP v2.
Quy trình tuyển dụng
Lúc đầu, người tuyển dụng còn mơ hồ, sau đó bắt đầu gọi cho Bruno, cố gắng truyền đạt cảm giác cấp bách và quan trọng, rồi ngay lập tức cung cấp liên kết kho lưu trữ: https://bitbucket[.]org/ventionteam/gameplatform/src/main/.

Người dùng và thời gian gửi mã:

Tiếp theo, chúng ta hãy phân tích mã độc.
Kỹ thuật và chiến thuật
Chúng ta hãy xem mô tả mã:

Vậy đây có phải là chức năng thực sự của nó không?
Trước tiên, hãy xem package.json:

Không tìm thấy mô-đun độc hại của bên thứ ba nào, do đó có vẻ như cuộc tấn công không được thực hiện thông qua các gói NPM độc hại. Chúng ta hãy tiếp tục phân tích. Khi chúng ta thấy server.js, nếu không cẩn thận, chúng ta có thể dừng ở dòng 47, vì thoạt nhìn, có vẻ như không có gì bất thường.

Nhưng hãy nhìn kỹ vào dòng 46, đó là gì? Và có một thanh cuộn ngang nhỏ, nghĩa là có thứ gì đó ở bên phải! Hãy kéo nó qua và xem thử:

Đây là một phần mềm độc hại được mã hóa. Chức năng cụ thể của nó là gì? Hãy cùng xem mã sau:

(Hình ảnh trên là một phần của mã)
Đây là mã được mã hóa và có nhiều hơn một lớp, mã hóa base64.
Sau khi chạy npm start, nó sẽ chạy bình thường, vậy payload này có tác dụng gì?
Chúng tôi chạy thử nghiệm trên máy ảo (hoạt động chuyên nghiệp, vui lòng không bắt chước).

Chúng tôi phát hiện ra rằng phương pháp tấn công này đã bị che giấu và việc giải mã rất khó khăn. Chúng tôi đã trực tiếp nắm bắt được liên kết C2 thông qua phương pháp Hook:

Đã nắm bắt thành công IP độc hại:
216.173.115[.]200
95.179.135[.]133
Yêu cầu độc hại: http://216.173.115[.]200:1244/s/bc7302f71ff3. Điều thú vị là yêu cầu độc hại này thực sự đã vượt qua được sự phát hiện giám sát của kẻ chỉ điểm nhỏ bé.

Kẻ tấn công sẽ tải xuống và thực thi hai tệp test.js và .npl.

Trojan .npl chủ yếu được sử dụng để duy trì quyền:

Đây là nội dung đã giải mã của .npl:

Đoạn mã trên được sử dụng để tải xuống chương trình Python có tên là pay. Nội dung đã giải mã như sau:
![]()

test.js chủ yếu được sử dụng để đánh cắp dữ liệu trình duyệt, chẳng hạn như dữ liệu ví plug-in, mật khẩu tài khoản được trình duyệt lưu, v.v.:

(một phần mã test.js)
Giải mã (đoạn mã):


Cuối cùng, theo phân tích của chúng tôi, sau khi nạn nhân chạy mã, phần mềm độc hại sẽ thực hiện các hoạt động sau:
1. Thu thập dữ liệu hệ thống/môi trường (thư mục gốc, nền tảng, tên máy chủ, tên người dùng, v.v.).
2. Gửi yêu cầu HTTP đến máy chủ từ xa để lấy thêm dữ liệu hoặc tải trọng hiệu quả.
3. Ghi tải trọng hiệu quả thu được vào hệ thống tệp cục bộ (thường là trong thư mục gốc).
4. Sử dụng child_process.exec của Node để thực thi các tải trọng này.
5. Tiếp tục kết nối lại hoặc "truyền" dữ liệu hệ thống đến máy chủ C2.
6. Lặp lại hoạt động này theo các khoảng thời gian đều đặn, duy trì gói nhịp tim và thử nhiều lần nếu lần thử đầu tiên không thành công.
7. Theo dõi âm thầm hành vi của người dùng và chuẩn bị cho việc đánh cắp tài sản được mã hóa, chẳng hạn như cố gắng đọc thư mục cụ thể /Library/Keychains/ (đường dẫn lưu trữ khóa macOS) trong mã, đánh cắp khóa riêng SSH, đánh cắp dữ liệu plug-in của trình duyệt và mật khẩu tài khoản được trình duyệt lưu.
Cùng lúc đó, @blackbigswan tìm thấy cùng một người dùng:
https://github[.]com/DavidDev0219
https://github[.]com/vention-dev
https://github[.]com/FortuneTechWorld
Tác giả suy đoán rằng họ là cùng một nhóm kẻ tấn công và sẽ không đưa ra bất kỳ phân tích không cần thiết nào. <. /p>
-
Khi xử lý mã bên ngoài, xem xét nghiêm ngặt nguồn dự án và nền tảng của tác giả, từ chối chạy các dự án có rủi ro cao chưa được xác minh và nên thực hiện mã đáng ngờ trong một máy ảo hoặc môi trường hộp cát để cô lập rủi ro; Hãy cảnh giác với các tệp tin nhận được từ các nền tảng như QQ, tắt chức năng tải xuống tự động và quét tệp tin theo cách thủ công, đồng thời cảnh giác với các yêu cầu thực thi tập lệnh độc hại dưới danh nghĩa "kiểm tra kỹ thuật";
Bật xác thực đa yếu tố và thường xuyên thay đổi mật khẩu có độ mạnh cao để tránh sử dụng lại trên nhiều nền tảng.
Doanh nghiệp
Thường xuyên tổ chức cho nhân viên tham gia diễn tập mô phỏng tấn công lừa đảo và đào tạo họ cách nhận diện tên miền giả mạo và các yêu cầu bất thường;
Triển khai cổng bảo mật email để chặn các tệp đính kèm độc hại;
Giám sát xem thông tin nhạy cảm trong kho lưu trữ mã có bị rò rỉ không;
Thiết lập cơ chế ứng phó khẩn cấp cho các sự cố lừa đảo và giảm nguy cơ rò rỉ dữ liệu và mất tài sản thông qua chiến lược đa chiều kết hợp bảo vệ kỹ thuật với nhận thức của nhân viên.