By
Morgan Marquis-Boire, Claudio Guarnieri, and Ryan Gallagher,
11/25/2014
Bài
được đưa lên Internet ngày: 25/11/2014
Lời
người dịch: Lại một SIÊU SIÊU SIÊU phần mềm độc
hại nữa dành riêng cho Windows,
được cho là do các cơ quan an ninh và tình báo NSA - Mỹ
và GCHQ - Anh cùng tạo ra, đánh
vào các hệ thống mạng của hãng viễn thông Bỉ Belgacom
và Liên minh châu Âu, có tên là Regin.
“Ronald Prins, một chuyên gia an
ninh của hãng Fox IT
được thuê để loại bỏ phần mềm độc hại đó khỏi
các mạng của Belgacom, đã nói
cho Intercept rằng đó là “phần
mềm độc hại tinh vi phức tạp nhất”
mà anh ta từng nghiên cứu”. “Phần
mềm độc hại đó ăn cắp dữ
liệu từ các hệ thống bị lây nhiễm và tự ngụy trang
nó như là phần mềm hợp pháp của Microsoft,
cũng đã được xác định trong các hệ thống máy tính
của Liên minh châu Âu mà đã bị ngắm đích để Cơ quan
An ninh Quốc gia Mỹ (NSA) giám sát”. Để
tải về phần mềm độc hại
đó, nháy vào
đây. Xem thêm: Chương
trình gián điệp của NSA trên không gian mạng.
Cài
cắm giấu giếm
Điều
tra của Intercept đã phát hiện một mẫu được tải lên
VirusTotal hôm 14/03/2012 mà trình bày đầu đề đặc biệt
0xfedcbafe, nó là một dấu hiệu rằng nó có thể được
một trình điều khiển của Regin tải lên và nó dường
như cung cấp chứng năng giấu giếm cho bộ công cụ đó.
Hình này chỉ các byte ngay đầu của mẫu theo yêu cầu, chỉ ra đầu đề đặc biệt 0xfedcbafe ở ngay đầu.
Để
truy cập thông tin được lưu trong bộ nhớ của máy tính,
các chương trình sử dụng các đối tượng mà tham chiếu
tới các vị trí đặc biệt trong bộ nhớ, được gọi
là các con trỏ. Tệp nhị phân này có vài con trỏ như
vậy được khởi tạo, nó làm rõ thêm giả thiết rằng
tệp đó đã bị bỏ khỏi bộ nhớ trong quá trình một
phân tích pháp lý một hệ thống bị tổn thương.
Mẫu
có hàm băm SHA256 sau:
fe1419e9dde6d479bd7cda27edd39fafdab2668d498931931a2769b370727129
Mẫu
này đưa ra ý nghĩa về sự phức tạp của các tác nhân
và độ dài của sự đề phòng mà chúng đã thực hiện
để hoạt động càng giấu giếm bao nhiêu càng tốt.
Khi
một trình điều khiển nhân Windows cần phân bổ bộ nhớ
để lưu trữ vài dạng dữ liệu, nó tạo ra cái gọi là
các vùng (pools) của nhân. Các phân bổ bộ nhớ như vậy
có các đầu đề và thẻ tag đặc thù được sử dụng
để nhận diện dạng các đối tượng có trong khối đó.
Ví dụ các thẻ tag như vậy có thể là Proc, Thrd hoặc
File, tương ứng chỉ rằng khối được đưa ra có thể
có một cấu trúc đối tượng tiến trình, luồng hoặc
tệp.
Khi
thực hiện phân tích pháp lý bộ nhớ một máy tính, là
phổ biến để sử dụng một kỹ thuật được gọi là
quét vùng để phân tích cú pháp bộ nhớ của nhân, đánh
số các vùng nhân như vậy, nhận diện dạng nội dung và
trích xuất nó.
Hệt
như các trình điều khiển trình tải Regin, trình điều
khiển này sử dụng lặp đi lặp lại thẻ tag “Ddk”
chung với ExAllocatePoolWithTag() khi phân bổ tất cả các
vùng của nhân:
Hình
này chỉ sự sử dụng thẻ tag “ddk” khi phân bổ bộ
nhó với hàm ExAllocatePoolWIthTag() của Windows
Thẻ
tag chung đó được sử dụng khắp hệ điều hành khi một
thẻ phù hợp không được chỉ định. Điều này làm cho
khó khăn hơn đối với phân tích pháp lý để tìm ra bất
kỳ thông tin hữu ích nào khi tiến hành quét vùng, vì tất
cả các phân bổ bộ nhớ của nó sẽ trộng với nhiều
vùng chung khác.
Hơn
nữa, khi giải phóng bộ nhớ bằng việc sử dụng
ExFreePool(), trình điều khiển vô hiệu hóa nội dung, có
khả năng để tránh các dấu vết để sót lại trong bộ
nhớ của các vùng đó.
Trình
điều khiển cũng gồm các thủ tục để kiểm tra các
xây dựng đặc thù của nhân Windows
đang được sử dụng, bao gồm cả các phiên bản rất cũ
như Windows NT4 Terminal Server và Windows 2000, và áp dụng các
hành vi của nó một cách tương ứng.
Các
trình điều khiển nhân Windows vận hành trong các mức ưu
tiên khác nhau, từ mức thấp nhất PASSIVE_LEVEL cho tới
mức cao nhất HIGH_LEVEL. Mức này được bộ vi xử lý sử
dụng để biết dịch vụ nào trao quyền ưu tiên thực
thi và để chắc chắn rằng hệ thống không cố phân bổ
các tài nguyên được sử dụng mà có thể gây ra sự đổ
vỡ.
Trình
điều khiển Regin này định kỳ kiểm tra IRQL (Interrupt
Request Level) hiện hành được thiết lập về PASSIVE_LEVEL
bằng việc sử dụng hàm KeGetCurrentIrql() trong nhiều phần
của mã, có thể để vận hành càng âm thầm có thể
càng tốt và ngăn cản sự lộn xộn có thể của IRQL. Kỹ
thuật này là một ví dụ khác về mức độ ngăn chặn
mà các lập trình viên chọn khi thiết kế khung công việc
phần mềm độc hại này.
Dựa
vào sự thực thi của thủ tục bỏ tải (nằm ở
0xFDEFA04A), trình điều khiển đó thực hiện một tuần
tự dài các bước để loại bỏ các dấu vết và các
chế tác còn sót lại.
Ví
dụ của Belgacom
Trong
một cuộc phỏng vấn được tạp chí Bỉ MondiaalNiews
đưa ra, Fabrice Clément, người đứng đầu về an ninh của
Belgacom, nói rằng hãng lần đầu tiên đã nhận diện
cuộc tấn công vào ngày 21/06/2013.
Trong
một cuộc phỏng vấn y hệt Clément nói rằng các máy
tính bị các tin tặc nhắm đích bao gồm các máy trạm
của các nhân viên cũng như các máy chủ thư điện tử.
Các
tuyên bố khẳng định thời điểm và các kỹ thuật được
sử dụng trong cuộc tấn công.
từ
các mẫu Regin được
nhận diện trước đó, Intercept đã phát triển các
chữ ký độc nhất có thể nhận diện được bộ công
cụ này. Một tệp lưu trữ nén với một mẫu được
nhận diện như là Rgin/Prax đã được tìm thấy trong
VirusTotal, một website tự do, trực tuyến cho phép mọi
người gửi các tệp sẽ được vài sản phẩm chống
virus quét lên. Tệp nén đó đã được gửi lên hôm
21/06/2013 lúc 07:58:37 UTC từ Bỉ, ngày mà Clément đã nhận
diện ra. Các nguồn tin thân cận với sự việc thâm nhập
trái phép vào Belgacom đã nói cho Intercept rằng mẫu này
đã được một người quản trị hệ thống ở công ty
đó tải lên, người đã phát hiện ra phần mềm độc
hại và đã tải nó lên trong một nỗ lực để nghiên
cứu xem nó là dạng phần mềm độc hại nào.
Tệp
lưu trữ đó bao gồm:
Cùng với các tệp khác, Intercept đã thấy đầu ra của một công cụ phân tích pháp lý, GetThis, nó đang được chạy trong các hệ thống đích để tìm kiếm phần mềm độc hại. Từ nội dung của tệp GetThis.log, chúng ta có thể thấy rằng một mẫu được gọi là “svcsstat.exe” và nằm trong C:\Windows\System32\ đã được thu thập và một bản sao của nó đã được lưu trữ.
Phần
mềm độc hại theo yêu cầu đó là
“0001000000000C1C_svcsstat.exe_sample ”. Đây là một biến
thể 64 bit của trình tải Regin bước 1 được nêu ở
trên.
Tệp
lưu trữ đó cũng gồm đầu ra của ProcMon, “Process
Monitor” (Giám sát Tiến trình), một công cụ giám sát hệ
thống được Microsoft phân phối và thường được sử
dụng trong phân tích pháp lý và thâm nhập trái phép.
Tệp
này nhận diện hệ thống bị lây nhiễm và đưa ra một
loạt các thông tin thú vị về mạng. Ví dụ:
USERDNSDOMAIN=BGC.NET
USERDOMAIN=BELGACOM
USERNAME=id051897a
USERPROFILE=C:\Users\id051897a
Biến
môi trường sau đây chỉ ra rằng hệ thống đã được
cung cấp cùng với một máy chủ Microsoft SQL và một máy
chủ Microsoft Exchange, chỉ ra rằng nó có thể là một
trong những máy chủ thư điện tử bị lây nhiễm của
hãng mà Fabrice Clément đã nêu cho Mondiaal News:
Path=C:\ProgramFiles\Legato\nsr\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program
Files\Microsoft Network Monitor 3\;C:\Program Files\System Center
Operations Manager 2007\;c:\Program Files (x86)\Microsoft SQL
Server\90\Tools\binn\;D:\Program Files\Microsoft\Exchange Server\bin
Bên
dưới là một danh sách các hàm băm cho các tệp mà
Intercept đang làm
cho sẵn sàng để tải về. Biết rằng đã 1 năm trôi
qua kể từ khi chiến dịch Belgacom đã được nêu công
khai, Intercept cân nhắc có khả năng là GCHQ/NSA đã thay
thế bộ công cụ của họ và không có hoạt động hiện
hành nào sẽ bị ảnh hưởng vì sự xuất bản các mẫu
đó.
Các
mẫu Regin
Các
trình tải 32 bit
Rootkit 32 bit
fe1419e9dde6d479bd7cda27edd39fafdab2668d498931931a2769b370727129
Trình
dàn phối 32 bit
e420d0cf7a7983f78f5a15e6cb460e93c7603683ae6c41b27bf7f2fa34b2d935
4139149552b0322f2c5c993abccc0f0d1b38db4476189a9f9901ac0d57a656be
Trình
tải 64 bit (Belgacom)
4d6cebe37861ace885aa00046e2769b500084cc79750d2bf8c1e290a1c42aaff
Ảnh của:
Winfried Rothermel/AP
Gửi email cho các tác giả: morgan@firstlook.org, nex@nex.sx,
ryan.gallagher@theintercept.com
Dịch:
Lê Trung Nghĩa