Phân tích mã độc liên hệ với APT-Q-27 ảnh hưởng các tổ chức tài chính
Ha Van Thieu

Tóm tắt
Bối cảnh
Vào giữa tháng 01/2026, đội ngũ bảo mật của CyStack phát hiện các hoạt động bất thường trên hệ thống của một khách hàng doanh nghiệp.
Tuy nhiên, những dấu hiệu này không đủ rõ ràng để được xem là một cuộc tấn công. Cả người dùng lẫn các cơ chế bảo mật như antivirus đều không phát hiện ra điều gì đáng ngờ.
Với các doanh nghiệp nhạy cảm – nơi dữ liệu và độ tin cậy là yếu tố sống còn, đây là một kịch bản có mức độ rủi ro cực kỳ cao.
Khoanh vùng và điều tra
Quá trình khoanh vùng cho thấy các dấu hiệu bất thường tập trung tại một máy trạm thuộc bộ phận hỗ trợ khách hàng. Trước thời điểm xảy ra sự cố, người dùng tại đây đã tương tác với một đường link được gửi qua kênh hỗ trợ, dẫn tới việc tải và thực thi một file có phần mở rộng .pif.
Thực chất, đây là một chương trình thực thi được ngụy trang bằng định dạng ít phổ biến và được ký số hợp lệ tại thời điểm phát tán. Cách làm này đã giảm đáng kể mức độ nghi ngờ trong giai đoạn xâm nhập ban đầu.
Quá trình điều tra sau đó tập trung vào các tài nguyên còn tồn tại trên hệ thống nạn nhân, bao gồm file system, registry liên quan đến cơ chế khởi động cùng hệ thống, cấu hình Windows service và dấu vết tiến trình. Kết quả phân tích cho thấy đây là một chiến dịch tấn công nhiều giai đoạn, sử dụng các kỹ thuật phổ biến trong các chiến dịch tấn công có chủ đích như staging payload trong thư mục giả dạng Windows Update, khai thác DLL sideloading, và thực thi payload trực tiếp trong bộ nhớ. Tất cả là nhằm che giấu hoạt động và hạn chế dấu vết trên máy nạn nhân.
Nhận định
Tại thời điểm hoàn tất điều tra, chúng tôi chưa ghi nhận bằng chứng cho thấy mã độc đã lan truyền sang các hệ thống khác trong cùng môi trường. Tuy nhiên, việc phân tích hạ tầng điều khiển (C&C), mô hình thực thi payload và kiến trúc backdoor cho thấy nhiều điểm tương đồng đáng chú ý với các chiến dịch đã được công bố trước đó, đặc biệt là các hoạt động được QiAnXin Threat Intelligence gán cho APT-Q-27 (GoldenEyeDog).
Mặc dù chưa có đủ bằng chứng để khẳng định chắc chắn về sự liên quan, các tương đồng về cách đặt tên hạ tầng C&C, mô hình multi-stage, kỹ thuật lưu trữ payload trong file log và kiến trúc backdoor dạng mô-đun cho thấy chiến dịch này nhiều khả năng thuộc cùng một hệ sinh thái công cụ hoặc chia sẻ framework và hạ tầng với các hoạt động của APT-Q-27, phản ánh một chiến dịch được phát triển, duy trì và tái sử dụng theo thời gian.
⚠️ Miễn trừ trách nhiệm:
Bài viết này nằm trong chuỗi nghiên cứu bảo mật chuyên sâu được thực hiện bởi đội ngũ CyStack. Nội dung được biên tập thuần túy cho mục đích học thuật và giáo dục, nhằm nâng cao nhận thức cộng đồng về các nguy cơ an ninh mạng và lỗ hổng bảo mật. Chúng tôi khẳng định không cung cấp hướng dẫn thực hiện mã độc hay các hành vi tấn công trái phép.
Toàn bộ nội dung và số liệu công bố đã được thông báo, nhận được sự đồng ý từ các tổ chức liên quan, đồng thời mọi thông tin định danh đều đã được ẩn danh để đảm bảo tính bảo mật tuyệt đối.
Tổng quan chuỗi tấn công
|
👤
|
01. Người dùng – Bộ phận CSKHNhận link qua Zendesk. |
|
⬇️
|
02. Dropper (File tải về)Kết nối cloud. |
|
⚡
|
03. LoaderGiải mã payload. |
|
⚙️
|
04. BackdoorThiết lập persistence (service). |
|
📡
|
05. Duy trì hiện diện & điều khiển từ xaHoàn tất xâm nhập. |
Phân tích kỹ thuật chi tiết
1. Giai đoạn xâm nhập ban đầu
Điểm vào của chiến dịch là một URL được gửi tới nhân viên qua ticket Zendesk có dạng hxxps://storage[.]googleapis[.]com/iwantuu/photo202512.pif#image2025-12-29-14-53.jpg
Ở góc độ trực quan, URL này được thiết kế để đánh lừa người dùng tin rằng đây là một tệp hình ảnh JPG, thông qua việc gắn thêm phần mở rộng .jpg ở phía sau ký tự #.
Tuy nhiên, điểm mấu chốt nằm ở cơ chế xử lý URL của trình duyệt và giao thức HTTP:
Mọi nội dung nằm sau ký tự # (fragment identifier) sẽ không bao giờ được gửi lên server. Fragment chỉ tồn tại ở phía client, thường được sử dụng cho điều hướng nội dung trong trang web, và không ảnh hưởng tới request thực tế.
File được tải về (chúng tôi sẽ gọi là Dropper) có phần mở rộng .pif (Program Information File), một định dạng có từ thời MS-DOS, từng được sử dụng để mô tả cách thực thi các chương trình 16-bit. Trong các phiên bản Windows hiện đại, .pif vẫn được Windows Explorer coi là một file thực thi, tương đương với .exe.
Quan trọng hơn, trong nhiều cấu hình hệ thống, đặc biệt là khi tùy chọn hiển thị phần mở rộng file bị tắt, Windows Explorer chỉ hiển thị phần tên phía trước .pif, khiến file trông giống như một tài liệu hoặc hình ảnh thông thường.

Có một số đặc điểm với Dropper này:
- File .NET (C#)
- Được pack/obfuscate mạnh:
- Tên hàm, biến bị làm rối
- String quan trọng không tồn tại dạng plaintext
- Các chuỗi được decode động khi runtime, chủ yếu thông qua:
- Base64 nhiều lớp đối với URI chứa FileList
- Obfuscate các string quan trọng
Và điểm đáng chú ý nhất là Dropper được ký số hợp lệ tại thời điểm phát tán.

Phân tích chữ ký số cho thấy:
- Chứng thư được phát hành cho Portier Global Pty Ltd
- Thuật toán băm SHA-256
- Có timestamp hợp lệ từ dịch vụ ký số bên thứ ba (SSL.com Timestamp)
Mặc dù tại thời điểm phân tích, chứng chỉ này đã bị explicitly revoked, nhưng việc có timestamp hợp lệ đồng nghĩa với việc:
- Windows vẫn coi chữ ký là hợp lệ tại thời điểm ký
- SmartScreen và nhiều cơ chế kiểm tra khác không chặn file ở thời điểm người dùng tải về
Việc sử dụng chứng chỉ thật, từng hợp lệ cho thấy nhóm tấn công có khả năng tiếp cận chứng chỉ bị rò rỉ hoặc chứng chỉ được cấp cho mục đích khác nhưng bị lạm dụng.
Đây là một chiến thuật quen thuộc trong các chiến dịch targeted malware và thường chỉ xuất hiện ở những nhóm có mức độ đầu tư tương đối cao, nhằm giảm tối đa nghi ngờ trong giai đoạn bắt đầu.
2. Thực thi Dropper
Ngay sau khi người dùng click thực thi, dropper khởi tạo HTTP client với:
- User-Agent được chọn ngẫu nhiên trong 3 giá trị dưới đây:
- Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
- Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0
- Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Edge/120.0.0.0
- Header hợp lệ (
Accept,Accept-Language,Cache-Control) - Ngôn ngữ được set gồm cả
en-US,zh-CN, cho thấy khả năng tái sử dụng cho nhiều khu vực
Dropper không mang payload chính bên trong. Thay vào đó, nó:
1. Decode một chuỗi Base64 để lấy URI FileList

hxxps://yyupdats[.]s3.ap-southeast-1.amazonaws.com/updat.txt
2. Thực hiện GET request tới Filelist URL thu được để lấy về các file cần thiết

| Tên file | MD5 | Nhận định |
|---|---|---|
| updat.exe | 64B07B1C385CF94A3559E323009F7641 | File sạch, giữ vai trò Loader |
| crashreport.dll | 30917B5ABB991DF495827A9D7C7EBCBC | DLL độc hại có ký số |
| updat.log | 543023ACE4F10B736C4C4109E005F0EF | blob chứa payload chính (đã nén/mã hóa) |
| vcruntime140.dll | 4113057339D9E4E376BDED9074D20C17 | File sạch |
| image.jpg | 4DE8079431D85D3A37FD77FB26E8328F | File mồi, để tăng độ hợp pháp của thư mục |
| msvcp140.dll | 7E8BDD2C2304E204B44A3BEC09D66062 | File sạch |
3. Các file này được được lưu vào một thư mục có dạng C:\\Users\\Admin\\AppData\\Local\\Microsoft\\WindowsUpdate\\Cache\\WU_20251230_67e65f7b@27 với mục đích giả mạo Windows Update cache nhằm đánh lừa người dùng. Thư mục này chúng ta sẽ gọi là Staging.

4. Thư mục Staging sau đó được gán đồng thời hai thuộc tính Hidden và NotContentIndexed. Điều này khiến thư mục không hiển thị trong các thao tác duyệt file mặc định và không bị các dịch vụ lập chỉ mục của Windows xử lý.

5. Song song với việc staging payload, dropper thiết lập một cơ chế persistence tạm thời thông qua registry Run key tại:
HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run
SystemOptimizer = "<path_to_updat.exe> /minimized"
Run key này trỏ tới updat.exe (chúng ta sẽ gọi là Loader), đảm bảo file này được chạy khi người dùng đăng nhập. Persistence ở giai đoạn này không nhằm duy trì hiện diện lâu dài, mà đóng vai trò giữ foothold trong thời gian cần thiết để hoàn tất việc tải và triển khai các thành phần tiếp theo của chuỗi tấn công.

Ngoài ra, Dropper cũng đã chuẩn bị sẵn các phương án xóa dấu vết, như là cho phép xóa Registry key đã ghi ở trên

3. Thực thi Loader
Trong chuỗi tấn công này, updat.exe đóng vai trò loader có chữ ký số hợp lệ (benign loader), trong khi crashreport.dll là malicious loader stage. Do crashreport.dll trùng tên với DLL mà updat.exe mong đợi, Windows loader sẽ ưu tiên load DLL này từ thư mục Staging, dẫn đến việc thực thi mã độc ngay trong ngữ cảnh của một tiến trình hợp lệ. Một điểm đáng chú ý nữa là file .dll này còn được ký số trùng signer với file .NET
Ngay khi crashreport.dllđược load, luồng thực thi đi qua DllMain, từ đó gọi vào logic loader chính, bao gồm:
- Giải mã tên file payload (
updat.log). Tên file này vốn không được hardcoded trong mã nguồn để tránh bị phát hiện, thay vào đó nó được xây dựng từ một hàm giải mã với thuật toán XOR đơn giản (với 0xAA) từ một mảng byte tĩnh.
- Sau khi khi xác định được tên file payload, loader mở file
updat.log; đọc toàn bộ nội dung vào buffer; và thực hiện vòng lặp giải mã để thu được payload hoàn chỉnh (bao gồm shellcode và dữ liệu PE file)

- Sau khi giải mã:
- Loader gọi
VirtualProtectđể chuyển vùng nhớ sangPAGE_EXECUTE_READ - Gọi trực tiếp entry point của payload để shellcode được thực thi
- Loader gọi
Theo những gì chúng tôi quan sát được, shellcode này đảm nhiệm công việc:
- Giải nén payload chính thành một file PE
- Map PE vào bộ nhớ
- Fix import table
- Resolve API động
File PE cuối cùng này chính là Backdoor hoàn thiện, nó sẽ giữ vai trò chính trong việc hiện diện, nhận lệnh, và thực thi lệnh từ máy chủ điều khiển trong tương lai. Điểm đáng chú ý là Backdoor được giải mã, thực thi hoàn toàn trên RAM (In-memory execution) để né tránh các phương pháp săn mã độc truyền thống của các Antivirus.
4. Thực thi Backdoor
Kiểm tra môi trường để chống phân tích
Ngay sau khi Backdoor được load, nó sẽ kiểm tra môi trường:
- Chống chạy nhiều instance / đánh dấu phiên chạy
- Tạo mutex bằng
CreateMutexA(). - Nếu
GetLastError() == 183(đã tồn tại) thì hiểu là đã có instance khác, thường sẽ thoát hoặc đổi nhánh xử lý.
- Tạo mutex bằng
- Chống debug
- Gọi
IsDebuggerPresent(). - Nếu có debugger → exit.
- Gọi
- Kiểm tra “đủ tài nguyên” để tránh sandbox
- Hàm
CPUandRamCheck()gọi:GetSystemInfo()→ kiểm tra số core CPU ≥ 3GlobalMemoryStatusEx()→ kiểm tra RAM ≥ 3 GB
- Nếu không đạt → thoát (điển hình để né VM/sandbox cấu hình thấp).
- Hàm


Giải mã danh sách máy chủ điều khiển (C2) khi chạy
- Backdoor đã lưu sẵn một danh sách các C2 dưới dạng mã hóa ngay trong nó, với mục tiêu giải mã trong quá trình chạy nhằm chống lại việc phát hiện của các Antivirus với chuỗi tĩnh.
- Các C2 này được giải mã bằng hàm XOR (hàm
sub_1001F582với vòng lặp XOR theobyte_10046160[...]). - Kết quả sau giải mã là nhiều C2 theo format kiểu:
<ip>:15628

Kiểm tra quyền
Backdoor kiểm tra quyền người dùng hiện tại:
- Nếu không phải Admin: tự chạy lại với quyền admin (qua
ShellExecuteExA). - Nếu đang là Admin: đi vào nhánh thiết lập persistence (tạo service), rồi mới chạy các module logic tiếp theo.
Persistence bằng Windows Service
Sau khi xác định tiến trình đang chạy với quyền admin, backdoor tiến hành thiết lập cơ chế persistence dài hạn bằng cách lợi dụng Windows Service Control Manager (SCM). Mục tiêu của bước này là đảm bảo mẫu được khởi động tự động cùng hệ thống và duy trì khả năng kiểm soát ngay cả sau khi hệ thống khởi động lại.
Mẫu kiểm tra sự tồn tại của một service có tên: Windows EventN
Tên service này được lựa chọn nhằm ngụy trang như một thành phần hệ thống hợp lệ, dễ gây nhầm lẫn với các service liên quan tới Windows Event Log hoặc Windows Event Collector.
Quy trình thiết lập persistence diễn ra theo các nhánh sau:
- Trường hợp service chưa tồn tại:
- Mã độc tạo một thư mục mới trên hệ thống người dùng với đường dẫn có dạng:
C:\\Users\\<User>\\Videos\\<random_string>@27 - Các file thực thi liên quan được sao chép vào thư mục này.
- Mẫu sau đó gọi các API như
OpenSCManagerA()vàCreateServiceA()để tạo service mới, trỏ tới executable vừa được triển khai. - Service được cấu hình chạy tự động khi hệ thống khởi động.
- Mã độc tạo một thư mục mới trên hệ thống người dùng với đường dẫn có dạng:
- Trường hợp service đã tồn tại:
- Mẫu kiểm tra trạng thái và cấu hình của service.
- Nếu service chưa được thiết lập để chạy cùng hệ thống, mã độc sẽ cập nhật lại cấu hình thông qua các lời gọi
ChangeServiceConfigA/ChangeServiceConfig2A. - Trong trường hợp service tồn tại nhưng không hoạt động, mã độc sẽ khởi động lại service và kết thúc tiến trình hiện tại.

Vô hiệu hoá cơ chế UAC
Backdoor tiếp tục thực hiện một bước quan trọng nhằm đảm bảo các module độc hại sau này có thể chạy mà không hiển thị UAC prompt đối với người dùng.
Mẫu kiểm tra phiên bản hệ điều hành thông qua GetVersionExA() và xác định:
- Nếu hệ điều hành có
dwMajorVersion >= 6(tương ứng Windows Vista trở lên), mã độc tiến hành chỉnh sửa các chính sách liên quan tới UAC.
Cụ thể, backdoor thao tác trực tiếp với các khoá registry dưới nhánh:
HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System
Các giá trị bị chỉnh sửa bao gồm:
EnableLUAConsentPromptBehaviorAdminPromptOnSecureDesktop
Những thay đổi này có tác dụng:
- Giảm hoặc vô hiệu hoá hộp thoại xác nhận UAC
- Cho phép các tiến trình con và module bổ sung được thực thi trong ngữ cảnh quản trị mà không yêu cầu tương tác người dùng

Kết nối C2 và cơ chế điều khiển theo mô-đun
Chỉ sau khi các cơ chế persistence và kiểm soát đặc quyền đã được thiết lập đầy đủ, backdoor mới tiến hành kết nối tới hạ tầng C2 được nhắc ở phần trên.
Sau khi thiết lập kết nối thành công, backdoor khởi tạo một bảng ánh xạ mã lệnh (command dispatch table). Mỗi mã lệnh được liên kết với một handler hoặc module cụ thể, phản ánh kiến trúc plugin-based của loại mã độc này.
Một số module được quan sát trong mẫu phân tích bao gồm (chúng tôi đính kèm danh sách chi tiết ở phụ lục):
- Module thao tác file
- Module chụp / ẩn màn hình
- Module ghi nhận bàn phím
- Module thực thi shell
- Một số module placeholder hoặc chờ kích hoạt trong các giai đoạn sau
Thiết kế này cho phép kẻ tấn công:
- Kích hoạt chức năng theo nhu cầu
- Linh hoạt mở rộng khả năng của backdoor mà không cần thay đổi payload chính

Mối liên hệ với các chiến dịch tấn công đã biết
Trong quá trình mở rộng phân tích, chúng tôi tiếp tục đối chiếu các chỉ dấu kỹ thuật của mẫu mã độc với các chiến dịch đã được công bố công khai. Một trong những báo cáo đáng chú ý là phân tích của QiAnXin Threat Intelligence về APT-Q-27 (còn được gọi là GoldenEyeDog), trong đó mô tả chi tiết hoạt động gần đây của nhóm này.
Tương đồng về cách đặt tên và sử dụng hạ tầng C2
Điểm đáng chú ý nhất là cách đặt tên domain C2. Trong chiến dịch chúng tôi phân tích, domain như wk.goldeyeuu.io được sử dụng làm máy chủ điều khiển. Việc sử dụng chuỗi “goldeye” trong tên miền C2 cho thấy sự tương đồng rõ rệt về mặt đặt tên với các chiến dịch được QiAnXin gán cho APT-Q-27, vốn sử dụng tên GoldenEyeDog để mô tả hệ sinh thái mã độc của nhóm.
Tương đồng về hạ tầng C&C
Danh sách máy chủ C&C được giải mã từ backdoor cho thấy sự trùng lặp trực tiếp của một số địa chỉ IP, đáng chú ý như 192.252.182.53 và 27.124.41.140, và cổng: 15628 vốn đã xuất hiện trong các phân tích công khai trước đó. Ngoài ra, phần lớn C&C đều được triển khai tại các khu vực tương tự (Hồng Kông, Nhật Bản, Hoa Kỳ), phản ánh một mô hình hạ tầng phân tán quen thuộc của các chiến dịch APT nhằm duy trì khả năng hoạt động lâu dài.
Tương đồng về cơ chế thực thi payload
Một điểm đáng chú ý khác là cách sử dụng file log làm container payload. Payload chính không được lưu trữ trực tiếp dưới dạng PE mà được đọc từ file log, giải mã và thực thi hoàn toàn trong bộ nhớ. Cách tiếp cận này trùng khớp với kỹ thuật được mô tả trong chiến dịch của APT-Q-27, và là dấu hiệu cho thấy sự tương đồng rõ rệt về tư duy thiết kế backdoor.
Kiến trúc backdoor
Backdoor sử dụng kiến trúc plugin-based, trong đó các lệnh từ C&C được ánh xạ tới các module chức năng độc lập (file, screen, keylogging, shell). Kiến trúc này phù hợp với mô hình backdoor đã được ghi nhận trong các chiến dịch APT trước đây, thay vì các mã độc cơ hội thông thường.
Mặc dù chưa đủ cơ sở để khẳng định cùng một chiến dịch hoặc cùng một nhóm tấn công, các điểm tương đồng về hạ tầng C&C, cơ chế tải payload và kiến trúc backdoor cho thấy mẫu mã độc này nhiều khả năng thuộc cùng một hệ sinh thái công cụ, hoặc là một biến thể/phái sinh được phát triển dựa trên nền tảng đã từng được sử dụng trong các chiến dịch trước đó.
Khuyến nghị cho doanh nghiệp
Từ các phát hiện trong chiến dịch này, CyStack khuyến nghị các tổ chức cần ưu tiên những biện pháp phòng thủ sau:
- Tăng cường Threat Hunting chủ động trên endpoint, tập trung vào các hành vi khó phát hiện bằng chữ ký như DLL sideloading, thực thi payload trong bộ nhớ, tiến trình hợp lệ có hành vi bất thường và các Windows service không rõ nguồn gốc. Việc săn tìm mối đe dọa định kỳ giúp phát hiện các chiến dịch đã vượt qua lớp phòng thủ ban đầu nhưng chưa gây ra sự cố rõ ràng.
- Chuẩn bị sẵn sàng năng lực Incident Response, cho phép khoanh vùng nhanh các máy trạm bị xâm nhập, thu thập artefact phục vụ phân tích và cô lập hệ thống trước khi mã độc thiết lập kết nối ổn định với hạ tầng C&C hoặc lan sang các tài nguyên quan trọng hơn.
- Áp dụng giải pháp bảo vệ endpoint dựa trên hành vi, không chỉ dựa vào chữ ký hoặc danh tiếng file. Các giải pháp như CyStack Endpoint giúp giám sát tiến trình, phát hiện các cơ chế persistence bất thường và can thiệp kịp thời ngay cả với các mẫu mã độc chưa từng được biết đến.
- Khai thác Threat Intelligence có ngữ cảnh, bao gồm thông tin về hạ tầng C&C, TTP và mối liên hệ giữa các chiến dịch đã biết, nhằm nâng cao khả năng phát hiện sớm và đánh giá đúng mức độ rủi ro thay vì phản ứng bị động theo từng IOC rời rạc.
- Đánh giá lại các bề mặt tấn công phi truyền thống, đặc biệt là các kênh hỗ trợ khách hàng, hệ thống ticketing và các bộ phận thường xuyên tương tác với bên ngoài, nơi các kỹ thuật social engineering tinh vi ngày càng được khai thác.
Phụ lục
Phụ lục A. Dấu vết tấn công hệ thống (IOC) – Máy chủ điều khiển
| C&C | Quốc gia |
|---|---|
| wk.goldeyeuu.io (185.135.79.200) | Tokyo, Nhật bản |
| 1.32.250.21 | Hồng Kông, Trung Quốc |
| 1.32.250.227 | Hồng Kông, Trung Quốc |
| 103.145.87.3 | Hồng Kông, Trung Quốc |
| 103.145.87.143 | Hồng Kông, Trung Quốc |
| 103.151.44.6 | Noida, Ấn Độ |
| 103.151.44.82 | Noida, Ấn Độ |
| 103.215.49.173 | Quảng Đông, Trung Quốc |
| 103.97.228.178 | Iowa, Hoa Kỳ |
| 104.233.164.136 | Tokyo, Nhật Bản |
| 107.148.52.201 | Hồng Kông, Trung Quốc |
| 134.122.190.220 | Tokyo, Nhật Bản |
| 134.122.205.97 | Tokyo, Nhật Bản |
| 139.28.232.90 | California, Hoa Kỳ |
| 143.92.32.243 | Hồng Kông, Trung Quốc |
| 143.92.56.224 | Hồng Kông, Trung Quốc |
| 143.92.57.46 | Hồng Kông, Trung Quốc |
| 143.92.61.121 | Hồng Kông, Trung Quốc |
| 154.55.135.212 | Hồng Kông, Trung Quốc |
| 154.91.84.174 | Singapore |
| 18.166.142.167 | Hồng Kông, Trung Quốc |
| 18.167.137.104 | Hồng Kông, Trung Quốc |
| 192.252.182.53 | California, Hoa Kỳ |
| 192.253.225.162 | California, Hoa Kỳ |
| 202.79.175.78 | Seoul, Hàn Quốc |
| 202.94.68.2 | Hồng Kông, Trung Quốc |
| 27.124.41.140 | Hồng Kông, Trung Quốc |
| 27.124.44.76 | Hồng Kông, Trung Quốc |
| 27.124.45.181 | Hồng Kông, Trung Quốc |
| 27.124.7.23 | Hồng Kông, Trung Quốc |
| 43.154.170.196 | Hồng Kông, Trung Quốc |
| 45.120.80.106 | Hồng Kông, Trung Quốc |
| 45.145.73.105 | Washington, Hoa Kỳ |
| 45.195.148.73 | Manila, Philippines |
| 8.210.94.213 | Hồng Kông, Trung Quốc |
| 8.217.110.88 | Hồng Kông, Trung Quốc |
| 8.217.69.130 | Hồng Kông, Trung Quốc |
| 8.218.138.126 | Hồng Kông, Trung Quốc |
Phụ lục B. IOC – Mã băm
- 64B07B1C385CF94A3559E323009F7641
- 30917B5ABB991DF495827A9D7C7EBCBC
- 543023ACE4F10B736C4C4109E005F0EF
- B591EE37860F35A788B10531A00BBBD2
- 3B4C845044154DD151796ECC9FEBF395
- D1D9D197AF176CDB6570E6D348A789D7
- 9FE20B85E9F9F3D9EE075EE5764A7078
- A9B75DCF502593A6F0EF47A3CEBB4822
Phụ lục C. IOC – URL
hxxps://yyupdats[.]s3.ap-southeast-1.amazonaws.com/updat.txt
hxxps://yyupdats[.]s3.ap-southeast-1.amazonaws.com/updat.exe
hxxps://yyupdats[.]s3.ap-southeast-1.amazonaws.com/crashreport.dll
hxxps://yyupdats[.]s3.ap-southeast-1.amazonaws.com/updat.log
hxxps://yy-service[.]s3.ap-northeast-2.amazonaws.com/yy.txt
hxxps://yy-service[.]s3.ap-northeast-2.amazonaws.com/yyex.exe
hxxps://yy-service[.]s3.ap-northeast-2.amazonaws.com/crashreport.dll
hxxps://yy-service[.]s3.ap-northeast-2.amazonaws.com/yyex.log
Phụ lục D. Ánh xạ MITRE ATT&CK
| Chiến thuật ATT&CK | ID kỹ thuật | Tên kỹ thuật | Đối tượng | Dấu hiệu |
|---|---|---|---|---|
| Initial Access | T1566.002 | Phishing: Spearphishing Link | Link sử dụng # để lừa người dùng tưởng rằng tải file ảnh (.jpg) nhưng thực ra là tải file .pif |
|
| Initial Access | T1204.002 | User Execution: Malicious File | Dropper | Người dùng thực thi file .pif trong khi tưởng rằng đang mở file ảnh |
| Defense Evasion | T1553.002 | Subvert Trust Controls: Code Signing | Dropper, crashreport.dll | Sử dụng chữ ký của Portier Global Pty Ltd |
| Defense Evasion | T1564.003 | Hide Artifacts: Hidden Window | Dropper | Ẩn cửa sổ thông qua API ShowWindow khi phát hiện không có debugger |
| Defense Evasion | T1140 | Deobfuscate/Decode Files or Information | Dropper | Base 64 decode ra url tải các file mã độc |
| Defense Evasion | T1497 | Virtualization/Sandbox Evasion | Dropper | Sleep ngẫu nhiên trong các đoạn code mã độc |
| Defense Evasion | T1497.001 | Virtualization/Sandbox Evasion: System Checks | APT Loader | Kiểm tra về cấu hình CPU core, RAM trước khi chạy tiếp |
| Defense Evasion | T1036.005 | Masquerading: Match Legitimate Resource Name or Location | Dropper | Giả dạng file của Windows Update khi tải các mã độc vào C:\\Users\\<user>\\AppData\\Local\\Microsoft\\WindowsUpdate\\Cache\\ |
| Defense Evasion | T1564.001 | Hide Artifacts: Hidden Files and Directories | Dropper | Thư mục tải mã độc được cấu hình thuộc tính Hidden và NotContentIndexed |
| Defense Evasion | T1036.004 | Masquerading: Masquerade Task or Service | APT Loader | Tạo service có tên Windows Eventn |
| Defense Evasion | T1620 | Reflective Code Loading | APT Loader | Load DLL được giải mã sau khi load crashreport.dll |
| Defense Evasion | T1070.004 | Indicator Removal: File Deletion | APT Loader | Xoá file và kết thúc chương trình |
| Defense Evasion | T1070.001 | Indicator Removal: Clear Windows Event Logs | APT Loader | Xoá Windows Event Logs |
| Defense Evasion | T1070.010 | Indicator Removal: Relocate Malware | APT Loader | Copy bản sao các file mã độc sang C:\\Users\\Admin\\Videos\\XXXXXXXX@27 |
| Defense Evasion | T1070.009 | Indicator Removal: Clear Persistence | Dropper | Xoá key SystemOptimizer ở registry HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run |
| Persistence | T1547.001 | Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder | Dropper | Thêm key SystemOptimizer ở registry HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run |
| Persistence | T1574.001 | Hijack Execution Flow: DLL | APT Loader | Load crashreport.dll |
| Persistence | T1543.003 | Create or Modify System Process: Windows Service | APT Loader | Copy bản sao các file mã độc sang nơi khác và trỏ service Windows Eventn đến |
| Execution | T1059 | Command and Scripting Interpreter | APT Loader | Thực hiện lệnh nhận từ C&C |
| Privilege Escalation | T1548.002 | Abuse Elevation Control Mechanism: Bypass User Account Control | APT Loader | Rerun chương trình với quyền Admin |
| Command and Control | T1105 | Ingress Tool Transfer | Dropper | Tải thêm updat.exe, crashreport.dll, updat.log |
| Credential Access | T1555 | Credentials from Password Stores | APT Loader | Xoá dữ liệu trình duyệt Chrome, Firefox, 360SE6, 360 Chrome, Sogou, QQ |
Phụ lục E. Danh sách các module trong Backdoor
| Mã lệnh | Chức năng |
|---|---|
| 5431 | DllFile plugin |
| 5477 | DllScreen plugin |
| 5452 | DllScreenHide plugin |
| 3214 | Rỗng |
| 5492 | DllKeybo plugin |
| 5513 | DllShell plugin |
| 5496, 5487 | Rỗng |
| 5511 | DllMsgBox plugin |
| 5497 | DllSyste plugin |
| 5548 | Rỗng |
| 3217 | fnProxy plugin |
| 2446 | ConnSocks plugin |
| 3216 | Kill explorer.exe |
| 3215 | Chạy lại chương trình với quyền admin |
| 5527 | DllSerSt plugin |
| 5520, 5521, 5522 | Ghi và thực thi file |
| 3210 | Tải Plugin từ C2 |
| 2447 | Tải Plugin từ C2 |
| 5515 | Xóa dấu vết và thoát chương trình |
| 5514 | Thoát module |
| 5525 | Chuẩn bị registry |
| 5512 | ConnectGroup plugin |
| 5516 | Xóa Windows Log |
| 5519 | Chạy tiến trình được chỉ định |
| 5524 | DllOpenURLSHOW plugin |
| 5523 | DllOpenURLHIDE plugin |
| 3221 | Kill tiến trình chỉ định |
| 3222 | Xóa toàn bộ file trong thư mục cụ thể |
| 3225 | Lấy đường dẫn file của tiến trình |
| 2448 | Tải Plugin từ C2 |
| 2449 | onBootup plugin |
| 3223 | Chạy file .bat nếu tiến trình cmd.exe không tồn tại |
| 3224 | Kill tiến trình cmd.exe nếu tồn tại |
| 3227 | Xóa lịch sử Internet Explorer |
| 3228 | Xóa dữ liệu Skype |
| 3229 | Xóa dữ liệu trình duyệt Chrome |
| 3230 | Xóa dữ liệu trình duyệt Firefox |
| 3231 | Xóa dữ liệu trình duyệt 360SE6 |
| 3232 | Xóa dữ liệu trình duyệt 360 Chrome |
| 3233 | Xóa dữ liệu trình duyệt Sogou |
| 3234 | Xóa dữ liệu trình duyệt QQ |
Tài liệu tham khảo
- https://ti.qianxin.com/blog/articles/tracking-the-recent-activities-of-the-apt-q-27-en/
- https://mp.weixin.qq.com/s/_oulmr53ZeMFFsVR1esa9A
- https://www.ctfiot.com/286193.html
Hà Văn Thiệu, Trần Thái Dương, Nguyễn Văn Huy từ CyStack Security


