Giải mã kỹ thuật phân phối Captcha giả mạo của mã độc Lumma Stealer

10:27 | 03/06/2025

Lumma Stealer được biết đến là phần mềm độc hại đánh cắp thông tin tinh vi, các phương pháp phân phối của mã độc này rất đa dạng, sử dụng các kỹ thuật phổ biến thường thấy trong các chiến dịch phần mềm độc hại đánh cắp thông tin. Các vectơ lây nhiễm chính bao gồm email lừa đảo có tệp đính kèm hoặc liên kết độc hại, cũng như các ứng dụng hợp pháp bị Trojan hóa. Các chiến thuật lừa đảo này đánh lừa người dùng thực thi phần mềm độc hại, chạy âm thầm trong backgroud để thu thập dữ liệu có giá trị. Lumma cũng đã được phát hiện sử dụng bộ công cụ khai thác, kỹ nghệ xã hội và các trang web bị xâm phạm để mở rộng phạm vi tiếp cận và tránh bị các giải pháp bảo mật phát hiện. Bài viết tập trung khám phá chủ yếu vào vectơ phân phối CAPTCHA giả mạo (dựa trên báo cáo của hãng bảo mật Kaspersky), một hoạt động xâm phạm hệ thống mục tiêu của Lumma Stealer.

Phân phối Captcha giả mạo

Kỹ thuật này liên quan đến các trang xác minh giả mạo trông giống như các dịch vụ hợp pháp, thường được lưu trữ trên các nền tảng sử dụng mạng phân phối nội dung (CDN). Các trang này thường ngụy trang thành CAPTCHA thường được sử dụng, chẳng hạn như Google reCAPTCHA hoặc Cloudflare CAPTCHA, để đánh lừa người dùng tin rằng họ đang tương tác với một dịch vụ đáng tin cậy.

Hình 1. Cách thức phân phối CAPTCHA giả mạo

Có hai hình thức được sử dụng để quảng bá các trang CAPTCHA giả mạo. Thứ nhất, các trang web vi phạm bản quyền hoặc trang web phần mềm bị bẻ khóa. Kẻ tấn công sao chép các trang web này và chèn quảng cáo độc hại vào trang đã sao chép để chuyển hướng người dùng đến CAPTCHA độc hại. Thứ hai, các kênh Telegram giả mạo về nội dung vi phạm bản quyền và tiền điện tử. Những kẻ tấn công tạo các kênh Telegram với tên chứa các từ khóa liên quan đến tiền điện tử hoặc nội dung vi phạm bản quyền, chẳng hạn như phần mềm, phim ảnh,… Khi người dùng tìm kiếm, các kênh giả mạo này sẽ xuất hiện ở đầu tìm kiếm. Những kẻ tấn công cũng sử dụng các bài đăng trên mạng xã hội để dụ nạn nhân đến các kênh này. Khi người dùng tham gia một kênh như vậy, họ sẽ được nhắc nhở hoàn tất xác minh danh tính thông qua bot “Safeguard Captcha” lừa đảo.

Hình 2. Giao diện Bot Safeguard Captcha

Như trong Hình 2, khi người dùng nhấp vào nút Verify, bot sẽ mở một trang có CAPTCHA giả mạo. Người dùng được hiển thị một trang bật lên trông giống như xác minh CAPTCHA hợp lệ, nhắc họ nhấp vào I’m not a robot/Verify/Copy hoặc một số nút tương tự (Hình 3).

Hình 3. Ví dụ về trang CAPTCHA giả mạo

Trang giả mạo có nội dung độc hại

Khi nhấp vào nút I’m not a robot/Verify/Copy, người dùng được hướng dẫn thực hiện một chuỗi thao tác bất thường: 

- Mở hộp thoại Run (Win+R).

- Nhấn Ctrl+V.

- Nhấn Enter. 

Việc chọn vào các nút trên sẽ tự động sao chép lệnh PowerShell vào clipboard. Sau đó, nếu người dùng dán lệnh vào hộp thoại Run và nhấn Enter, hệ thống sẽ thực thi lệnh.

Hình 4. Ví dụ về các tập lệnh được sao chép vào clipboard và được thực thi thông qua hộp thoại Run

Lệnh này có thể thay đổi đôi chút tùy theo từng trang web và thay đổi sau mỗi vài ngày, nhưng thường được sử dụng để tải Lumma Stealer từ máy chủ từ xa, thường là một CDN đã biết có thời gian dùng thử miễn phí, hoặc nền tảng lưu trữ và cộng tác mã hợp pháp như GitHub, từ đó bắt đầu quá trình cài đặt phần mềm độc hại. Để phân tích kỹ hơn chuỗi lây nhiễm này, thực hiện lệnh Hình 5.

Hình 5. Lệnh kích hoạt chuỗi lây nhiễm của Lumma

Lệnh này khá đơn giản, thực hiện giải mã và thực thi nội dung từ tệp win15[.]txt từ xa được lưu trữ tại https[:]//win15.b-cdn[.]net/win15[.]txt. Tệp này chứa một tập lệnh PowerShell được mã hóa Base64, sau đó tải xuống và chạy Lumma Stealer.

Hình 6. Nội dung của tệp win15.txt

Khi được giải mã, tập lệnh PowerShell thực hiện các hành động sau:

1. Tải xuống phần mềm độc hại: Lệnh sẽ tải xuống tệp win15[.]zip từ https[:]//win15.b-cdn[.]net/win15[.]zip đến [User Profile]\AppData\Roaming\bFylC6zX[.]zip.

2. Trích xuất phần mềm độc hại: Tệp ZIP đã tải xuống được giải nén vào thư mục C:\Users\[User]\AppData\Roaming\7oCDTWY, một thư mục ẩn trong thư mục AppData của người dùng.

3. Thực thi phần mềm độc hại: Tập lệnh chạy tệp Set-up[.]exe từ kho lưu trữ đã giải nén, hiện đặt tại C:\Users\[User]\AppData\Roaming\7oCDTWYu\Set-up[.]exe.

4. Thiết lập cơ chế duy trì: Tập lệnh tạo một mục entry trong Windows Registry để duy trì, đảm bảo phần mềm độc hại chạy mỗi khi hệ thống khởi động. Key được thêm vào HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run. Tên key là 5TQjtTuo, với giá trị trỏ đến Set-up[.]exe .

Tuy nhiên, trong một số trường hợp, cơ chế phân phối phần mềm độc hại có thể phức tạp hơn. Trong ví dụ Hình 7, tập lệnh phân phối là mã JavaScript ẩn trong tệp trông giống như tệp mp3 (các định dạng tệp khác như mp4 và png cũng đã được sử dụng). Trên thực tế, ngoài JavaScript, tệp có thể chứa tệp mp3/mp4 bị hỏng, mã phần mềm hợp lệ hoặc chỉ là dữ liệu ngẫu nhiên.

Tập lệnh được thực thi bằng cách sử dụng công cụ ứng dụng HTML của Microsoft  mshta[.]exe, bằng cách nhắc người dùng dán lệnh sau vào hộp thoại Run:

Hình 7. Lệnh kích hoạt chuỗi lây nhiễm dựa trên JS

Lệnh mshta phân tích tệp dưới dạng tệp HTA và thực thi bất kỳ mã JavaScript nào trong thẻ script, kích hoạt chuỗi lây nhiễm sau:

Lớp (1)

Hình 8 là mã lệnh JS bên trong tệp mp3 được thực thi bởi mshta.

Hình 8. Tập lệnh JS trong tệp never[.]mp3

Lớp (2)

Sau khi phân tích giá trị Kwb, các nhà nghiên cứu thu được đoạn mã sau và đoạn mã này sẽ được thực thi bởi hàm eval.

Hình 9. Lớp 2 của tập lệnh

Lớp (3)

Sau khi tính toán các giá trị cho kXN và zzI, lệnh ActiveX cuối cùng được xây dựng và thực thi, nó chứa một tập lệnh PowerShell được mã hóa trong biến $PBwR.

Hình 10. Lớp giải mã (2) tập lệnh JS

Lớp (4)

Sau khi giải mã tập lệnh PowerShell, các nhà nghiên cứu phát hiện ra rằng mục đích chính của nó là tải xuống và thực thi một tệp PowerShell khác từ đường dẫn: hXXps://connect[.]klipfuzj[.]shop/firefire[.]png.

Hình 11. Lớp giải mã (3) tập lệnh PowerShell

Phân tích tệp firefire

Các nhà nghiên cứu cho biết, firefire[.]png chính là tệp PowerShell lớn (gần bằng 31MB) với nhiều lớp che giấu và chống debug. Sau khi giải mã và xóa mã không cần thiết, chúng ta có thể thấy mục đích chính của tệp là tạo và thực thi tập lệnh PowerShell được mã hóa như Hình 12.

Hình 12. Tệp firefire

Khóa giải mã là đầu ra của lệnh Invoke-Metasploit, bị chặn nếu AMSI được bật. Do đó, một thông báo lỗi được tạo ra bởi AMSI: AMSI_RESULT_NOT_DETECTED, được sử dụng làm khóa. Nếu AMSI bị tắt, phần mềm độc hại sẽ không giải mã được tập lệnh.

Tập lệnh PowerShell được giải mã có kích thước khoảng 1,5 MB và mục đích chính của nó là tạo và chạy một tệp thực thi độc hại.

Hình 13. Tập lệnh PowerShell đã giải mã

Phương pháp và kỹ thuật lây nhiễm

Lumma Stealer đã được phát hiện sử dụng nhiều phương pháp lây nhiễm khác nhau, với hai kỹ thuật chính nổi bật trong các chiến dịch phân phối của nó, đó là: DLL sideloading và tiêm payload độc hại vào phần lớp phủ của phần mềm miễn phí hợp pháp. Các kỹ thuật này đặc biệt hiệu quả trong việc trốn tránh phát hiện, bởi vì chúng khai thác lợi dụng vào lòng tin mà người dùng đặt vào các ứng dụng và tiến trình hệ thống phổ biến rộng rãi.

- DLL sideloading: DLL sideloading là một kỹ thuật mà trong đó các thư viện liên kết động (DLL) độc hại được tải bởi một ứng dụng hợp pháp. Kỹ thuật này khai thác các lỗ hổng hoặc cấu hình sai trong phần mềm vô tình tải các tệp DLL từ các thư mục không đáng tin cậy.

Kẻ tấn công có thể nhúng Lumma Stealer DLL vào cùng thư mục với một ứng dụng đáng tin cậy, khiến nó tải khi ứng dụng được thực thi. Vì DLL độc hại được tải trong bối cảnh của một tiến trình đáng tin cậy, nên các biện pháp bảo mật truyền thống khó phát hiện ra sự xâm nhập hơn nhiều.

- Tiêm phần mềm độc hại vào lớp phủ của phần mềm: Một phương pháp khác thường được Lumma Stealer sử dụng là đưa một phần mềm độc hại vào lớp phủ của phần mềm miễn phí. Lớp phủ thường được sử dụng cho chức năng phần mềm hợp pháp, chẳng hạn như hiển thị giao diện đồ họa hoặc xử lý một số sự kiện đầu vào. Bằng cách sửa đổi lớp phủ của phần mềm, kẻ tấn công có thể đưa phần mềm độc hại vào mà không làm gián đoạn hoạt động bình thường của ứng dụng.

Phương pháp này đặc biệt nguy hiểm vì phần mềm vẫn tiếp tục có vẻ hợp pháp trong khi mã độc vẫn âm thầm thực thi ở chế độ backgroud, nó cũng giúp phần mềm độc hại tránh bị phát hiện bởi các công cụ bảo mật tập trung vào giám sát hệ thống.

Cả hai phương pháp trên đều dựa vào việc khai thác các ứng dụng đáng tin cậy, làm tăng đáng kể khả năng lây nhiễm thành công. Các kỹ thuật này có thể được sử dụng kết hợp với các kỹ thuật khác, chẳng hạn như phishing hoặc trojan hóa các gói phần mềm, để tối đa hóa việc lây lan Lumma Stealer đến nhiều mục tiêu.

Phân tích mẫu mã độc

Để chứng minh cách thức hoạt động của trình cài đặt Lumma Stealer và tác động đến hệ thống và bảo mật dữ liệu, các nhà nghiên cứu đã phân tích mẫu mã độc mà họ phát hiện. Mẫu này sử dụng kỹ thuật tiêm lớp phủ. Dưới đây là phân tích chi tiết về chuỗi lây nhiễm và các kỹ thuật khác nhau được sử dụng để triển khai và thực thi Lumma Stealer.

Thực hiện ban đầu và tự giải nén RAR (SFX)

Payload ban đầu trong mẫu này được phân phối dưới dạng tiến trình ProjectorNebraska[.]exe, bao gồm một tệp hợp lệ bị hỏng và phần mềm độc hại trong lớp phủ, nó được nạn nhân thực thi. Sau đó, tệp giải nén và chạy một tệp lưu trữ RAR (SFX) tự giải nén. Tệp lưu trữ này chứa giai đoạn tiếp theo của quá trình lây nhiễm: trình cài đặt Nullsoft Scriptable Install System (NSIS). NSIS là một công cụ được sử dụng rộng rãi để tạo trình cài đặt Windows.

Các thành phần cài đặt NSIS

Hình 14. Các thành phần cài đặt NSIS

Trình cài đặt NSIS loại bỏ một số thành phần quan trọng đối với việc thực thi phần mềm độc hại. Chúng bao gồm các thành phần AutoIt và một trình tải tập lệnh hàng loạt được tối giản hóa có tên là Hose[.]cmd. Các thành phần AutoIt sau đây bị loại bỏ:

- Các thành phần của một tệp thực thi AutoIt hợp lệ: Đây là các thành phần của một tệp thực thi AutoIt hợp lệ được đưa vào hệ thống của nạn nhân và sau đó được sắp xếp lại trong quá trình lây nhiễm.

- Tập lệnh AutoIt đã biên dịch: Tập lệnh đã biên dịch mang theo chức năng chính của Lumma Stealer, bao gồm các hoạt động như đánh cắp thông tin đăng nhập và đánh cắp dữ liệu.

Các thành phần này sau đó được build lại thành tệp thực thi cuối cùng bằng các tệp batch loader và thực thi nhiều đoạn khác nhau.

Hose[.]cmd có vai trò điều phối các bước cuối cùng của quá trình thực thi phần mềm độc hại. Dưới đây là phân tích các thành phần chính của nó (sau khi giải mã):

Hình 16. Tập lệnh batch đã được giải mã

Hình 17. Cây tiến trình sau khi thực thi tập lệnh batch

Tập lệnh batch thực hiện các hành động sau:

1. Trốn tránh sản phẩm bảo mật

Tập lệnh quét sự hiện diện của phần mềm bảo mật (SecureAnywhere và Quick Heal AntiVirus) bằng cách sử dụng tasklist. Nếu phát hiện thấy bất kỳ phần mềm nào trong số chúng, nó sẽ trì hoãn việc thực thi thông qua lệnh ping -n 198, lệnh này sẽ ping localhost 198 lần. Kỹ thuật này được sử dụng để tránh phát hiện sandbox, vì sandbox thường thoát trước khi tập lệnh hoàn tất tác vụ ping.

Tập lệnh kiểm tra sự hiện diện của bất kỳ mục nào sau đây: Avast, AVG, McAfee, Bitdefender, Sophos bằng cách sử dụng danh sách các tác vụ. Nếu phát hiện thấy một trong số chúng, nó sẽ giữ tên thực thi cho AutoIt là AutoIt3[.]exe; nếu không, nó sẽ đổi tên thành Suggests[.]pif.

2. Thiết lập môi trường và chuẩn bị payload

Tệp lệnh sẽ thiết lập các biến môi trường cho tệp thực thi AutoIt và payload cuối cùng. Ngoài ra, nó cũng tạo một thư mục làm việc có tên là 195402 trong thư mục Temp để lưu trữ các thành phần độc hại.

3. Làm tối nghĩa và trích xuất

Tập lệnh lọc và dọn dẹp một tệp có tên Sitting từ trình cài đặt NSIS bằng cách xóa chuỗi OptimumSlipProfessionalsPerspective và lưu trữ kết quả dưới dạng Suggests[.]pif. Sau đó, sử dụng lệnh copy /b để hợp nhất Suggests[.]pif với một thành phần bổ sung từ trình cài đặt NSIS có tên Oclc vào tệp thực thi AutoIt, lưu lại dưới dạng Suggests[.]pif.

4. Payload assembly

Tập lệnh kết hợp nhiều tệp từ trình cài đặt NSIS: Italy, Holmes, True,… để tạo tệp thực thi cuối cùng có tên h[.]a3x, đây là một tập lệnh AutoIt.

5. Thực thi Lumma Stealer

Cuối cùng, tập lệnh chạy Suggests[.]pif và sau đó là h[.]a3x và kích hoạt thực thi Lumma Stealer dựa trên AutoIt.

Phân tích tập lệnh AutoIt

Trong quá trình phân tích, tiện ích AutoIt Extractor đã được sử dụng để giải mã và trích xuất tập lệnh từ tệp h[.]a3x. Tập lệnh đã được tối ưu hóa rất nhiều và cần phải giải mã thêm để có được tập lệnh au3 sạch và có thể phân tích được. Dưới đây là phân tích về hành vi của trình tải AutoIt.

Hình 18. Trích xuất tập lệnh AutoIt

Kiểm tra chống phân tích

Tập lệnh bắt đầu bằng cách xác thực môi trường để phát hiện các công cụ phân tích hoặc môi trường sandbox, nó kiểm tra tên máy tính và tên người dùng cụ thể thường liên quan đến môi trường thử nghiệm.

Hình 19. Xác thực môi trường

Sau đó, tập lệnh kiểm tra các tiến trình từ các công cụ anti-virus phổ biến như Avast Bitdefendervà Kaspersky.

Hình 20. Kiểm tra anti-virus

Nếu bất kỳ điều kiện nào trong số này được đáp ứng, tập lệnh sẽ dừng thực thi để tránh bị phát hiện.

Thực thi shellcode của trình tải

Nếu kiểm tra chống phân tích được thông qua, tập lệnh sẽ tự động chọn shellcode 32 bit hoặc 64 bit dựa trên kiến ​​trúc hệ thống, nằm trong biến $vinylcigaretteau bên trong tập lệnh. Để thực hiện việc này, nó phân bổ bộ nhớ thực thi và đưa shellcode vào đó. Sau đó, shellcode khởi tạo môi trường thực thi và chuẩn bị cho payload giai đoạn tiếp theo.

Hình 21. Một phần của trình tải AutoIt chịu trách nhiệm thực thi shellcode

Xử lý payload $dayjoy

Sau khi thực thi shellcode của trình tải, tập lệnh sẽ xử lý payload giai đoạn thứ hai nằm trong biến $dayjoy. Payload được giải mã bằng RC4 với khóa được mã hóa cứng 1246403907690944.

Hình 22. Payload được mã hóa

Để giải mã dữ liệu một cách độc lập, các nhà nghiên cứu đã viết một tập lệnh Python tùy chỉnh như Hình 23 dưới đây.

Hình 23. Tập lệnh Python để giải mã payload

Payload giải mã được giải nén bằng thuật toán LZNT1.

Thực hiện payload cuối cùng

Sau khi giải mã và giải nén, payload $dayjoy được thực thi trong bộ nhớ. Tập lệnh sử dụng DllCallAddress để gọi payload trực tiếp trong bộ nhớ được phân bổ. Điều này đảm bảo payload được thực thi một cách bí mật mà không được ghi vào đĩa.

Hình 24. Thực hiện payload cuối cùng

Payload cuối cùng này chính là trình đánh cắp thông tin. Khả năng đánh cắp dữ liệu toàn diện của phần mềm độc hại nhắm vào nhiều loại thông tin nhạy cảm, bao gồm:

- Thông tin xác thực ví tiền điện tử (ví dụ: Binance, Ethereum) và tiện ích mở rộng trình duyệt liên quan (ví dụ: MetaMask).

- Dữ liệu xác thực hai yếu tố (2FA) và tiện ích mở rộng.

- Thông tin đăng nhập và cookie được lưu trữ trên trình duyệt.

- Thông tin đăng nhập được lưu trữ từ các công cụ truy cập từ xa như AnyDesk.

- Thông tin đăng nhập được lưu trữ từ các trình quản lý mật khẩu như KeePass.

- Dữ liệu hệ thống và ứng dụng.

- Thông tin tài chính như số thẻ tín dụng.

Giao tiếp máy chủ điều khiển và ra lệnh (C2)

Sau khi Lumma Stealer được thực thi, nó sẽ thiết lập liên lạc với máy chủ (C2) của nó để trích xuất dữ liệu bị đánh cắp. Phần mềm độc hại gửi thông tin đã thu thập được trở lại cơ sở hạ tầng của kẻ tấn công để khai thác thêm. Giao tiếp này thường được thực hiện qua HTTP hoặc HTTPS, được ngụy trang dưới dạng lưu lượng hợp pháp để tránh bị các công cụ giám sát bảo mật mạng phát hiện.

Kết luận

Là một chương trình độc hại được phân phối hàng loạt, Lumma Stealer sử dụng một chuỗi lây nhiễm phức tạp bao gồm một số kỹ thuật chống phân tích và tránh phát hiện để xâm nhập vào thiết bị của nạn nhân một cách lén lút. Mặc dù đợt lây nhiễm ban đầu thông qua phần mềm vi phạm bản quyền đáng ngờ và các trang web liên quan đến tiền điện tử và các kênh Telegram cho thấy rằng cá nhân là mục tiêu chính của các cuộc tấn công này, các nhà nghiên cứu đã phát hiện Lumma trong một sự cố tại một trong những khách hàng của mình, điều này minh họa rằng các tổ chức cũng có thể trở thành nạn nhân của mối đe dọa này.

Thông tin bị đánh cắp bởi phần mềm độc hại như vậy có thể rơi vào tay những tên tội phạm mạng khét tiếng hơn, chẳng hạn như những kẻ điều hành mã độc tống tiền. Đó là lý do tại sao việc ngăn chặn các đợt lây nhiễm của kẻ đánh cắp ngay từ giai đoạn đầu là rất quan trọng. Bằng cách nắm bắt các kỹ thuật lây nhiễm, các chuyên gia bảo mật có thể phòng thủ tốt hơn trước mối đe dọa ngày càng gia tăng này và phát triển các chiến lược phát hiện, phòng ngừa hiệu quả hơn.

Để lại bình luận