Hacker Triều Tiên phát tán 26 gói npm ẩn C2 qua Pastebin cho RAT đa nền tảng

Các nhà nghiên cứu an ninh mạng vừa tiết lộ một phiên bản mới của chiến dịch Contagious Interview đang diễn ra, trong đó các tác nhân đe dọa từ Triều Tiên đã công bố 26 gói độc hại lên kho lưu trữ npm. Các gói này giả mạo công cụ dành cho nhà phát triển, nhưng chứa chức năng trích xuất command-and-control (C2) thực tế bằng cách sử dụng nội dung Pastebin tưởng chừng vô hại làm bộ phân giải "dead drop".
Logo npm

Các nhà nghiên cứu an ninh mạng đã tiết lộ một phiên bản mới của chiến dịch Contagious Interview đang diễn ra, trong đó các tác nhân đe dọa từ Triều Tiên đã công bố một bộ gồm 26 gói độc hại lên kho lưu trữ npm.

Các gói này giả mạo các công cụ dành cho nhà phát triển, nhưng chứa chức năng trích xuất command-and-control (C2) thực tế bằng cách sử dụng nội dung Pastebin tưởng chừng vô hại làm bộ phân giải "dead drop", và cuối cùng thả một trình đánh cắp thông tin xác thực (credential stealer) và remote access trojan (RAT) nhắm mục tiêu vào nhà phát triển. Cơ sở hạ tầng C2 được lưu trữ trên Vercel với 31 triển khai.

Chiến dịch, được theo dõi bởi Socket và Kieran Miyamoto của kmsec.uk, đang được theo dõi dưới biệt danh StegaBin.

"Trình tải trích xuất các URL C2 được mã hóa bằng kỹ thuật ẩn mã (steganographically) trong ba bài đăng Pastebin, những bài tiểu luận khoa học máy tính vô hại trong đó các ký tự ở những vị trí cách đều nhau đã được thay thế để tạo thành các địa chỉ cơ sở hạ tầng bị ẩn," các nhà nghiên cứu Philipp Burckhardt và Peter van der Zee của Socket cho biết.

Các gói npm độc hại được xác định

Danh sách các gói npm độc hại như sau:

Tất cả các gói được xác định đều đi kèm với một script cài đặt ("install.js") tự động thực thi trong quá trình cài đặt gói, đến lượt nó, chạy payload độc hại nằm trong "vendor/scrypt-js/version.js". Một khía cạnh chung khác gắn kết 26 gói này là chúng công khai khai báo gói hợp pháp mà chúng đang typosquatting làm dependency, có lẽ trong nỗ lực làm cho chúng trông đáng tin cậy hơn.

Payload hoạt động như một bộ giải mã ẩn mã văn bản bằng cách liên hệ với một URL Pastebin và trích xuất nội dung của nó để lấy các URL C2 Vercel thực tế. Mặc dù các bài đăng dường như chứa một bài tiểu luận vô hại về khoa học máy tính, bộ giải mã được thiết kế để tìm kiếm các ký tự cụ thể ở những vị trí nhất định trong văn bản và xâu chuỗi chúng lại với nhau để tạo ra một danh sách các domain C2.

"Bộ giải mã loại bỏ các ký tự Unicode không có chiều rộng (zero-width), đọc một dấu hiệu độ dài 5 chữ số từ đầu, tính toán các vị trí ký tự cách đều nhau trong toàn bộ văn bản và trích xuất các ký tự ở những vị trí đó," Socket cho biết. "Các ký tự được trích xuất sau đó được tách bằng dấu phân cách ||| (với một dấu kết thúc ===END===) để tạo ra một mảng các tên domain C2."

Phần mềm độc hại sau đó tiếp cận domain đã giải mã để tìm nạp các payload cụ thể theo nền tảng cho Windows, macOS và Linux, một chiến thuật được quan sát rộng rãi trong chiến dịch Contagious Interview. Một domain như vậy, "ext-checkdin.vercel[.]app" đã được tìm thấy để phục vụ một shell script, sau đó liên hệ với cùng một URL để lấy một thành phần RAT.

Các Module của RAT

Trojan kết nối đến 103.106.67[.]63:1244 để chờ các lệnh tiếp theo cho phép nó thay đổi thư mục hiện hành và thực thi các lệnh shell, qua đó một bộ sưu tập thông tin tình báo toàn diện được triển khai. Nó chứa chín module để tạo điều kiện duy trì Microsoft Visual Studio Code (VS Code), keylogging và đánh cắp clipboard, thu thập thông tin xác thực trình duyệt, quét bí mật TruffleHog, và trích xuất kho lưu trữ Git và SSH key -

  • vs: sử dụng một file tasks.json độc hại để liên hệ với domain Vercel mỗi khi một project được mở trong VS Code bằng cách tận dụng trigger runOn: "folderOpen". Module này đặc biệt quét thư mục cấu hình VS Code của nạn nhân trên cả ba nền tảng và ghi trực tiếp file tasks.json độc hại vào đó.
  • clip: hoạt động như một keylogger, trình theo dõi chuột và clipboard stealer với hỗ trợ theo dõi cửa sổ đang hoạt động và thực hiện exfiltration định kỳ 10 phút một lần.
  • bro: là một Python payload để đánh cắp các kho lưu trữ thông tin xác thực trình duyệt.
  • j: là một Node.js module được sử dụng để đánh cắp trình duyệt và cryptocurrency bằng cách nhắm mục tiêu vào Google Chrome, Brave, Firefox, Opera và Microsoft Edge, cùng các tiện ích mở rộng như MetaMask, Phantom, Coinbase Wallet, Binance, Trust, Exodus và Keplr, trong số những ứng dụng khác. Trên macOS, nó cũng nhắm mục tiêu vào iCloud Keychain.
  • z: liệt kê file system và đánh cắp các file khớp với các mẫu được xác định trước.
  • n: hoạt động như một RAT để cấp cho kẻ tấn công khả năng điều khiển từ xa máy chủ bị nhiễm trong thời gian thực thông qua kết nối WebSocket bền vững đến 103.106.67[.]63:1247 và exfiltration dữ liệu quan trọng qua FTP.
  • truffle: tải xuống TruffleHog secrets scanner hợp pháp từ trang GitHub chính thức để khám phá và exfiltration các bí mật của nhà phát triển.
  • git: thu thập các file từ thư mục .ssh, trích xuất Git credentials và quét các repository.
  • sched: giống như "vendor/scrypt-js/version.js" và được triển khai lại như một cơ chế persistence.

"Trong khi các đợt trước của chiến dịch Contagious Interview dựa vào các script độc hại tương đối đơn giản và payload được lưu trữ trên Bitbucket, phiên bản mới nhất này cho thấy một nỗ lực phối hợp để vượt qua cả việc phát hiện tự động và xem xét thủ công," Socket kết luận.

"Việc sử dụng ẩn mã cấp độ ký tự trên Pastebin và định tuyến Vercel đa giai đoạn cho thấy một đối thủ đang tinh chỉnh các kỹ thuật né tránh và cố gắng làm cho các hoạt động của chúng trở nên kiên cường hơn."

Tiết lộ này được đưa ra khi các tác nhân Triều Tiên cũng đã được quan sát thấy đang công bố các gói npm độc hại (ví dụ: express-core-validator) để tìm nạp một JavaScript payload giai đoạn tiếp theo được lưu trữ trên Google Drive.

"Chỉ một gói duy nhất được công bố với kỹ thuật mới này," Miyamoto cho biết. "Có khả năng FAMOUS CHOLLIMA sẽ tiếp tục tận dụng nhiều kỹ thuật và cơ sở hạ tầng để cung cấp các payload tiếp theo. Khó có khả năng điều này báo hiệu một sự thay đổi hoàn toàn trong hành vi stager của chúng trên npm."