
HWH #1 - DLL Sideloading
Tổng quan (Executive Summary)
DLL Sideloading là một kỹ thuật tấn công tinh vi lợi dụng cơ chế tìm kiếm thư viện (DLL Search Order) của hệ điều hành Windows. Thay vì sửa đổi mã nguồn của tệp thực thi (Binary Patching), kẻ tấn công sử dụng một tệp thực thi hợp pháp có chữ ký số (Signed Executable) để nạp một tệp DLL độc hại. Kỹ thuật này cho phép mã độc thực thi dưới ngữ cảnh của một tiến trình tin cậy, từ đó vượt qua các giải pháp bảo mật dựa trên danh sách trắng (Whitelisting) và phân tích hành vi cơ bản

Cơ chế kỹ thuật (Technical Mechanics)
Quy trình tìm kiếm DLL (Standard DLL Search Order)
Khi một ứng dụng gọi hàm API LoadLibrary hoặc LoadLibraryEx mà không chỉ định đường dẫn tuyệt đối, Windows Resource Manager sẽ tìm kiếm tệp tin theo thứ tự ưu tiên (nếu SafeDllSearchMode được kích hoạt):
- Application Directory: Thư mục chứa tệp thực thi gốc (.exe)
- System Directory: Đường dẫn trả về bởi hàm
GetSystemDirectory(thường làC:\Windows\System32) - 16-bit System Directory:
(C:\Windows\System) - Windows Directory: (
C:\Windows) - Current Directory: Thư mục hiện hành
- Directories in PATH: Các đường dẫn được cấu hình trong biến môi trường
PATH
Kẻ tấn công khai thác mức ưu tiên cao nhất Application Directory bằng cách đặt tệp DLL độc hại cùng cấp với tệp thực thi mục tiêu
DLL Proxying và Export Forwarding
Để tránh làm ứng dụng bị lỗi (crash) do thiếu các hàm xuất (Exports), kẻ tấn công thường sử dụng kỹ thuật DLL Proxying

DLL độc hại sẽ giả mạo tất cả các hàm Export của DLL gốc
Khi ứng dụng gọi một hàm chức năng, DLL độc hại sẽ thực thi mã độc (Payload) và đồng thời chuyển tiếp (Forward) yêu cầu đó tới DLL thật (đã được đổi tên) để duy trì tính ổn định của ứng dụng
Signed Executable (Authenticode)
Các tệp thực thi được ký số (Signed) chứa cấu trúc Certificate Table trong tệp PE (Portable Executable)
Hệ thống bảo mật (AV/EDR) thường bỏ qua hoặc giảm mức độ giám sát đối với các tệp có chứng chỉ từ các CA (Certificate Authorities) uy tín
DLL Sideloading không vi phạm tính toàn vẹn của tệp .exe (Hash của .exe không đổi), do đó chữ ký số vẫn được coi là hợp lệ (Valid), tạo ra một lỗ hổng trong mô hình tin cậy của hệ điều hành
Phương pháp phát hiện (Detection)
Giám sát hành vi (Behavioral Monitoring)
- Path Mismatch: Phát hiện các tệp thực thi hệ thống (như
cmd.exe,sc.exe) chạy từ các thư mục không chuẩn (như\Temp,\Downloads,\AppData) - Module Load Events: Giám sát Event ID 7 (Sysmon) để phát hiện các DLL không có chữ ký số được nạp bởi các tiến trình có chữ ký số (Unsigned DLL in Signed Process)
- Process Monitor (Procmon): Lọc các sự kiện
CreateFilehoặcLoad Imagecó kết quảSUCCESStại các đường dẫn bất thường - Signcheck (Sysinternals): Kiểm tra tính hợp lệ của chữ ký số hàng loạt trong các thư mục ứng dụng
Phòng vệ và giảm thiểu (Mitigation)
Đối với Nhà phát triển (Software Developers)
- Absolute Paths: Luôn sử dụng đường dẫn tuyệt đối khi gọi
LoadLibrary - API Flags: Sử dụng
LoadLibraryExvới cờLOAD_LIBRARY_SEARCH_SYSTEM32để giới hạn phạm vi tìm kiếm. - DLL Redirection: Sử dụng tệp Manifest để chỉ định chính xác phiên bản và vị trí của các thư viện phụ thuộc
- SetDefaultDllDirectories: Gọi hàm này khi bắt đầu chương trình để loại bỏ thư mục hiện hành khỏi danh sách tìm kiếm
Đối với Quản trị viên hệ thống (SysAdmins)
- AppLocker/Windows Defender Application Control (WDAC): Cấu hình chính sách nghiêm ngặt, chỉ cho phép nạp các DLL đã được ký số và nằm trong thư mục được bảo vệ (
C:\Program Files) - EDR Tuning: Thiết lập cảnh báo cho các hành vi nạp module không xác định từ các tiến trình thuộc whitelist
Chiến dịch Lotus Blossom (APT30) 2026
Dựa trên các phân tích thực tế từ Rapid7 về backdoor Chrysalis, chúng ta có thể thấy cách nhóm Lotus Blossom tối ưu hóa kỹ thuật DLL Sideloading để thực hiện các cuộc tấn công có mục tiêu
- Tệp thực thi sạch (The Host):
BluetoothService.exe(Thực chất là tệpBDSubWiz.execủa Bitdefender đã được đổi tên). Tệp này có chữ ký Authenticode hợp lệ của Bitdefender, giúp nó vượt qua sự kiểm soát của hệ thống EDR - Trình nạp (The Loader):
log.dll. Đây là tệp tin thực hiện kỹ thuật Sideloading. Nó giả mạo một thư viện ghi log bình thường nhưng chứa logic giải mã payload
Khi BluetoothService.exe khởi chạy, ngay lập tức nó gọi hàm LoadLibrary để nạp log.dll