You are on page 1of 6

Các thiết bị bị ảnh hưởng

Mặc dù ban đầu chúng tôi không thể phát hiện ra cách thức các máy nạn nhân bị lây nhiễm, nhưng
một phân tích về phần cứng của chúng đã làm sáng tỏ các thiết bị mà CosmicStrand có thể lây nhiễm.
Bộ rootkit nằm trong firmware images của bo mạch chủ Gigabyte hoặc ASUS và chúng tôi nhận thấy
rằng tất cả những hình ảnh này đều liên quan đến các thiết kế sử dụng chipset H81. Điều này cho thấy
rằng một lỗ hổng phổ biến có thể tồn tại cho phép những kẻ tấn công đưa bộ rootkit của họ vào image
của firmware. Trong các firmware images này, các sửa đổi đã được đưa vào trình điều khiển CSMCORE
DXE, entry point  của nó đã được vá để chuyển hướng đến mã được thêm trong phần .reloc. Mã này,
được thực thi trong quá trình khởi động hệ thống, kích hoạt một chuỗi thực thi dài dẫn đến việc tải
xuống và triển khai một thành phần độc hại bên trong Windows.

Nhìn vào các firmware images khác nhau mà chúng tôi có thể thu được, chúng tôi đánh giá rằng các
sửa đổi có thể đã được thực hiện bằng một trình vá lỗi tự động. Điều đó có nghĩa là những kẻ tấn
công đã có quyền truy cập trước vào máy tính của nạn nhân để trích xuất, sửa đổi và ghi đè chương
trình cơ sở của bo mạch chủ. Báo cáo ban đầu của Qihoo chỉ ra rằng người mua có thể đã nhận được
một bo mạch chủ đã được sửa chữa sau khi đặt hàng tại một đại lý bán lại đồ cũ.

Tổng quan về quá trình lây nhiễm

Trước khi đi sâu vào các thành phần khác nhau tạo nên bộ rootkit này, chúng tôi muốn cung cấp một
cái nhìn nâng cao về những gì nó cố gắng đạt được. Mục tiêu của chuỗi thực thi này là triển khai bộ
cấy ghép mã độc ở cấp độ Kenel vào hệ thống Windows mỗi khi nó khởi động, bắt đầu từ một thành
phần UEFI bị nhiễm.

Các tác giả của phần mềm độc hại UEFI phải đối mặt với một thách thức kỹ thuật duy nhất: bộ cấy của
họ bắt đầu chạy quá sớm trong quá trình khởi động đến nỗi hệ điều hành (trong trường hợp này là
Windows) thậm chí còn chưa được tải trong bộ nhớ - và tại thời điểm đó, ngữ cảnh thực thi UEFI sẽ có
kết thúc. Tìm cách truyền mã độc qua các giai đoạn khởi động khác nhau là nhiệm vụ chính mà rootkit
cần hoàn thành.

Quy trình làm việc bao gồm việc thiết lập những sự móc nối liên tiếp, cho phép mã độc hại tồn tại cho
đến khi hệ điều hành khởi động. Các bước liên quan là:

firmware bị nhiễm ban đầu khởi động toàn bộ chuỗi.

Phần mềm độc hại thiết lập một kết nối độc hại trong trình quản lý khởi động, cho phép nó sửa đổi
Windows’ kernel loader trước khi nó được thực thi.

Bằng cách giả mạo bộ tải hệ điều hành, những kẻ tấn công có thể thiết lập một móc nối khác trong
một chức năng của Windows kernel..

Khi chức năng đó (sau đó được gọi trong quy trình khởi động bình thường của HĐH), phần mềm độc
hại sẽ kiểm soát luồng thực thi lần cuối.

Nó triển khai một mã shellcode trong bộ nhớ và liên hệ với máy chủ C2 để truy xuất malicious payload
thực tế để chạy trên máy của nạn nhân.
Sơ đồ tổng quan :

Sau khi thiết lập được những gì mà bộ cấy phần mềm độc hại cố gắng thực hiện, giờ đây chúng ta có
thể xem xét chi tiết hơn về cách thực hiện của từng bước trong số các bước này.
Toàn bộ chuỗi thực thi bắt đầu bằng trình điều khiển EFI. Nó dường như là một phiên bản vá lỗi của
một phiên bản hợp pháp có tên CSMCORE (nhằm tạo điều kiện khởi động máy ở chế độ kế thừa thông
qua MBR), nơi những kẻ tấn công đã sửa đổi con trỏ thành chức năng dịch vụ khởi động
HandleProtocol. Mỗi khi hàm này được gọi, việc thực thi được chuyển hướng đến mã do kẻ tấn công
cung cấp để cố gắng xác định thành phần nào đã gọi nó (nó đang tìm kiếm một thành phần cụ thể để
lây nhiễm - efi). Bằng cách kiểm tra các đối số của hàm cũng như các byte nằm ở địa chỉ trả về,
CosmicStrand có thể xác định chính xác “lệnh gọi” mà nó đang tìm kiếm.

Điểm cụ thể này trong quá trình thực thi đã được chọn vì ở giai đoạn này, trình quản lý khởi động đã
được tải trong bộ nhớ, nhưng vẫn chưa chạy. CosmicStrand nắm bắt cơ hội này để vá một số byte
trong Archpx64TransferTo64BitApplicationAsm của nó

Chức năng đó sau đó được gọi trong quá trình khởi động hệ điều hành bình thường, cũng tại thời
điểm chiến lược: lúc đó bộ nạp hệ điều hành Windows cũng có trong bộ nhớ và có thể được sửa đổi
lần lượt.

Khi nó chạy, Archpx64TransferTo64BitApplicationAsm định vị một chức năng từ OS loader


(OslArchTransferToKernel) bằng cách tìm kiếm một mẫu byte cụ thể. Sau đó, CosmicStrand thêm một
móc nối vào cuối nó.

OslArchTransferToKernel được gọi ngay trước khi việc thực thi được chuyển từ bộ tải Windows sang
Windows kernel, điều này làm cho nó trở thành một điểm nối truyền thống cho các rootkit thuộc loại
đó.

Trước khi Windows kernel  có cơ hội chạy, CosmicStrand đã thiết lập một móc nối khác trong mã
ZwCreateSection Mã độc được sao chép [2] vào image  của ntoskrnl.exe trong bộ nhớ và các byte đầu
tiên của ZwCreateSection được ghi đè để chuyển hướng đến nó. Chúng tôi lưu ý rằng những kẻ tấn
công đã cẩn thận đặt mã độc bên trong slack space thuộc .text của ntoskrnl.exe, điều này làm cho việc
chuyển hướng này khó thấy hơn rất nhiều trong mắt các sản phẩm bảo mật có thể có..

Tại thời điểm này, CosmicStrand dường như cũng cố gắng vô hiệu hóa PatchGuard, một cơ chế bảo
mật được giới thiệu để ngăn chặn các sửa đổi trong cấu trúc chính của Windows kernel trong bộ nhớ.
Để làm như vậy, nó định vị hàm KiFilterFiberContext của ntoskrnl.exe [3] và sửa đổi nó để nó trả về mà
không cần thực hiện bất kỳ công việc nào. Điều đáng chú ý là việc bản địa hóa chức năng này, cũng đạt
được bằng cách tìm kiếm các hardcoded, rất đầy đủ và thậm chí còn chứa các mẫu tương ứng với bản
phát hành Redstone 1 từ tháng 8 năm 2016.

Windows kernel sau đó khởi động và kết thúc việc gọi hàm ZwCreateSection trong khi đang chạy bình
thường. Khi điều đó xảy ra, CosmicStrand giành lại quyền kiểm soát việc thực thi và khôi phục mã gốc
trước khi chạy thêm mã độc.

Mục đích chính của ZwCreateSection hook là thu thập địa chỉ của các hàm API do kernel cung cấp và
tạo một loại bảng nhập cho thành phần tiếp theo. Sử dụng các chức năng đã phân giải, nó cũng cấp
phát một bộ đệm trong không gian địa chỉ của kernel nơi nó ánh xạ một mã shellcode, trước khi gọi
nó.

Kernel shellcode
Tất cả các bước được mô tả cho đến nay chỉ phục vụ mục đích truyền thực thi mã từ UEFI xuống
Windows kernel. Shellcode này là thành phần thực sự độc hại đầu tiên của chuỗi cho đến nay. Nó thiết
lập một quy trình thông báo luồng được gọi mỗi khi một luồng mới được tạo. CosmicStrand đợi cho
đến khi một trong winlogon.exe xuất hiện, rồi thực hiện một lệnh gọi lại trong ngữ cảnh đặc quyền cao
này. Tại đó, CosmicStrand sẽ ngủ trong 10 phút và kiểm tra khả năng kết nối internet của máy bị
nhiễm. CosmicStrand không dựa vào các hàm API cấp cao để tạo lưu lượng mạng mà thay vào đó
tương tác trực tiếp với Giao diện thiết bị truyền tải: nó tạo IRP cần thiết (gói yêu cầu I / O) và chuyển
chúng đến ngăn xếp mạng bằng cách gửi IOCTL đến Đối tượng thiết bị TCP hoặc UDP. Yêu cầu DNS
được thực hiện theo cách này, sử dụng máy chủ DNS của Google (8.8.8 [.] 8) hoặc máy chủ tùy chỉnh
(222.222.67 [.] 208). CosmicStrand truy xuất tải trọng cuối cùng của nó bằng cách gửi gói UDP hoặc
TCP được chế tạo cụ thể (tốt nhất là) đến máy chủ C2 của nó, update.bokts [.] Com. Câu trả lời dự kiến
sẽ trả về trong một hoặc một số gói chứa các phần 528 byte theo cấu trúc sau:

Các phần khác nhau được tập hợp lại thành một chuỗi các byte được ánh xạ vào không gian hạt nhân
và được hiểu như một mã shellcode. Rất tiếc, chúng tôi không thể lấy bản sao dữ liệu từ máy chủ C2.
Tuy nhiên, chúng tôi đã tìm thấy một mẫu chế độ người dùng trong bộ nhớ trên một trong những máy
bị nhiễm mà chúng tôi có thể nghiên cứu và tin rằng nó được liên kết với CosmicStrand. Mẫu này là
một tệp thực thi chạy các dòng lệnh để tạo người dùng (“aaaabbbb”) trên máy của nạn nhân và thêm
người đó vào nhóm quản trị viên cục bộ.

Từ đó, chúng tôi có thể suy ra rằng các mã shell nhận được từ máy chủ C2 có thể là điểm dừng cho các
tệp thực thi PE do kẻ tấn công cung cấp và rất có thể còn nhiều mã khác tồn tại.

Các biến thể CosmicStrand cũ hơn

Cơ sở hạ tầng
Trong quá trình điều tra, chúng tôi cũng đã phát hiện ra các phiên bản cũ hơn của rootkit này. Chúng
có cùng một quy trình triển khai và sự khác biệt nhỏ của chúng liên quan đến kernel shellcode

Chúng tôi nhận thấy có hai máy chủ C2, một máy chủ cho mỗi biến thể. Theo dữ liệu DNS thụ động có
sẵn cho chúng, các miền này có thời gian tồn tại lâu dài và được phân giải thành địa chỉ IP trong các
khung thời gian giới hạn - nếu không, rootkit sẽ không hoạt động. Do đó, điều thú vị là trong khi những
kẻ tấn công chọn triển khai một bộ phận cấy ghép cực kỳ bền bỉ, việc khai thác thực tế các máy nạn
nhân có thể không kéo dài quá vài tháng. Tuy nhiên, có thể các miền này đôi khi được kích hoạt lại
trong khoảng thời gian rất ngắn và thông tin này sẽ không được hệ thống DNS thụ động ghi lại.

Độc giả cẩn thận sẽ nhận thấy khoảng cách ba năm giữa các giai đoạn hoạt động của hai lĩnh vực. Có
thể trong thời gian đó, những kẻ tấn công đang điều khiển máy của nạn nhân bằng cách sử dụng các
thành phần chế độ người dùng được triển khai thông qua CosmicStrand hoặc (nhiều khả năng hơn)
rằng các biến thể và máy chủ C2 khác mà chúng tôi chưa phát hiện tồn tại ở đâu đó

Nạn nhân

Chúng tôi đã có thể xác định các nạn nhân của CosmicStrand ở Trung Quốc, Việt Nam, Iran và Nga.
Một điểm đáng quan tâm là tất cả nạn nhân trong cơ sở người dùng của chúng tôi dường như là các cá
nhân riêng tư (tức là sử dụng phiên bản miễn phí của sản phẩm của chúng tôi) và chúng tôi không thể
ràng buộc họ với bất kỳ tổ chức hoặc thậm chí ngành dọc nào.

Ghi nhận

Một số điểm dữ liệu khiến chúng tôi tin rằng CosmicStrand được phát triển bởi một tác nhân đe dọa
nói tiếng Trung Quốc hoặc bằng cách tận dụng các nguồn lực chung được chia sẻ giữa các tác nhân đe
dọa nói tiếng Trung Quốc. Cụ thể, một số mẫu mã có trong CosmicStrand cũng được quan sát thấy
trong một họ phần mềm độc hại khác, mạng botnet MyKings (ví dụ: MD5
E31C43DD8CB17E9D68C65E645FB3F6E8). Mạng botnet này, được sử dụng để triển khai công cụ mã
hóa, đã được ghi lại bởi Sophos vào năm 2020, nơi họ ghi nhận sự hiện diện của một số hiện vật bằng
tiếng Trung.

Những điểm tương đồng với CosmicStrand bao gồm:

Việc sử dụng bộ rootkit MBR để thiết lập tính bền bỉ lén lút trong MyKings. CosmicStrand và MyKings
sử dụng các thẻ giống hệt nhau khi chúng cấp phát bộ nhớ trong kernel mode( Proc và GetM). Cả hai
họ đều tạo ra các gói mạng theo cùng một cách và tận dụng trực tiếp các đối tượng thiết bị UDP và
TCP. Mã băm API được sử dụng trong hai mã này giống hệt nhau, được minh chứng bằng ảnh chụp
màn hình bên dưới. Theo những gì chúng tôi biết, thuật toán này chỉ từng được tìm thấy trong hai
rootkit khác là MoonBounce và xTalker - cũng gắn liền với các tác nhân đe dọa nói tiếng Trung.
Ngoài sự giống nhau về mã này, thực tế là máy chủ DNS dự phòng được mã hóa cứng được
CosmicStrand sử dụng nằm ở CHINANET-BACKBONE (AS4134) có thể được coi là một dấu hiệu có độ
tin cậy rất thấp cho thấy những kẻ tấn công là một phần của mối quan hệ nói tiếng Trung Quốc. Ngoài
mối ràng buộc này, chúng tôi đã quyết định rằng chúng tôi không có đủ thông tin cho phép chúng tôi
liên kết CosmicStrand với một cụm hiện có.

CosmicStrand là một bộ phần mềm gốc UEFI tinh vi cho phép chủ sở hữu của nó đạt được độ bền bỉ
rất cao: toàn bộ tuổi thọ của máy tính, đồng thời cực kỳ bí mật. Nó dường như đã được sử dụng trong
hoạt động trong vài năm, và vẫn còn nhiều bí ẩn. Còn bao nhiêu máy cấy và máy chủ C2 nữa có thể
đang lẩn tránh chúng ta? Những tải trọng cuối cùng nào đang được chuyển đến các nạn nhân? Nhưng
ngoài ra, có thực sự là CosmicStrand đã tiếp cận một số nạn nhân của nó thông qua gói “ngăn chặn”
không? Trong mọi trường hợp, nhiều rootkit được phát hiện cho đến nay là bằng chứng cho thấy một
điểm mù trong ngành của chúng ta cần được giải quyết sớm hơn là muộn.

Số liệu :

- Đã Ra đời 6 năm
- Hiện tại có 4 quốc gia đã phát hiện
- Nạn nhân chủ yếu là người dùng cá nhân
-

You might also like