COMmander: Giám Sát RPC/COM Chuyên Sâu, Phát Hiện Tấn Công Tinh Vi

Giới thiệu COMmander: Công cụ giám sát RPC/COM nâng cao

Trong bối cảnh an ninh mạng không ngừng phát triển, nhu cầu về các giải pháp nâng cao khả năng phát hiện chống lại các cuộc tấn công tinh vi ngày càng tăng. COMmander nổi lên như một tiện ích gọn nhẹ, được phát triển bằng C#, được thiết kế để củng cố khả năng đo lường từ xa (telemetry) phòng thủ bằng cách giám sát chi tiết các hoạt động Giao thức Gọi thủ tục từ xa (RPC) và Mô hình đối tượng thành phần (COM).

Bối cảnh và sự cần thiết

COMmander được phát triển để khắc phục những lỗ hổng trong việc xác định các hành vi khai thác dựa trên mạng liên quan đến các giao thức RPCCOM. Công cụ này khai thác nhà cung cấp sự kiện ETW Microsoft-Windows-RPC, thu thập các sự kiện cấp thấp tiết lộ chi tiết phức tạp về tương tác RPC và các lớp trừu tượng COM chồng lên chúng. Cách tiếp cận này giúp các nhà phòng thủ phát hiện các hành vi độc hại tiềm ẩn, chẳng hạn như các lệnh gọi trái phép hoặc chiến thuật ép buộc (coercion), vốn phổ biến trong các mối đe dọa dai dẳng nâng cao (APT).

Nguyên lý hoạt động và khả năng phát hiện

Giám sát dựa trên ETW

Về cơ bản, COMmander hoạt động với sự đơn giản và hiệu quả đáng kể, yêu cầu người dùng cung cấp một tệp cấu hình xác định các quy tắc phát hiện dựa trên các bộ lọc cụ thể. Các quy tắc này cho phép kiểm soát chính xác việc giám sát, cho phép xác định các sự kiện phù hợp với các tiêu chí như InterfaceUUID, OpNum, Endpoint, NetworkAddress hoặc ProcessName.

Phát hiện hành vi độc hại

Chẳng hạn, một quy tắc có thể nhắm mục tiêu UUID c8cb7687-e6d3-11d2-a958-00c04f682e16 kết hợp với điểm cuối \\PIPE\\DAV RPC SERVICE để phát hiện các lệnh gọi DCOM liên quan đến WebClient. Hoặc tập trung vào OpNum 0 trong UUID c681d488-d850-11d0-8c52-00c04fd90f7e để phát hiện ép buộc xác thực thông qua khai thác PetitPotam EfsRpcOpenFileRaw.

Khi được khởi chạy, công cụ liên tục quét các sự kiện hệ thống, cảnh báo qua đầu ra terminal khi có sự kiện phù hợp, đồng thời duy trì mức tiêu thụ tài nguyên tối thiểu. Đây là một lợi thế quan trọng do khối lượng lớn các sự kiện RPC có thể làm quá tải hiệu suất hệ thống. Thiết kế gọn nhẹ này đảm bảo COMmander chạy không gây cản trở, làm cho nó phù hợp để triển khai theo thời gian thực trong môi trường doanh nghiệp mà không gây gánh nặng tính toán đáng kể.

Cấu hình quy tắc phát hiện

COMmander sử dụng một tệp cấu hình định dạng XML để xác định các quy tắc phát hiện. Tệp này cho phép người dùng tùy chỉnh các tiêu chí giám sát dựa trên các thuộc tính cụ thể của hoạt động RPCCOM. Mặc dù các quy tắc hiện chỉ hỗ trợ một thể hiện (instance) cho mỗi loại, cấu hình dựa trên XML cung cấp sự linh hoạt, cho phép kết hợp các bộ lọc để săn lùng mối đe dọa một cách mục tiêu.

Các trường bộ lọc chính

  • InterfaceUUID: Định danh duy nhất cho một giao diện RPC/COM cụ thể. Việc giám sát dựa trên UUID cho phép xác định các tương tác với các thành phần hoặc giao thức đã biết.
  • OpNum: Số thao tác trong giao diện RPC. Điều này rất hữu ích để nhắm mục tiêu các chức năng cụ thể của một giao diện, chẳng hạn như OpNum 0 trong khai thác PetitPotam.
  • Endpoint: Điểm cuối mạng mà giao tiếp RPC diễn ra. Ví dụ, \\PIPE\\DAV RPC SERVICE chỉ ra một ống định danh.
  • NetworkAddress: Địa chỉ IP hoặc tên máy chủ của thiết bị mạng liên quan đến hoạt động RPC.
  • ProcessName: Tên của tiến trình thực hiện hoặc nhận cuộc gọi RPC/COM. Điều này giúp khoanh vùng các ứng dụng hoặc dịch vụ có hành vi đáng ngờ.

Ví dụ cấu trúc quy tắc (khái niệm)

Mặc dù nội dung gốc không cung cấp một đoạn mã XML đầy đủ, cấu trúc của một quy tắc có thể hình dung như sau, nơi các bộ lọc được định nghĩa để khớp với các sự kiện cụ thể:

<Rules>
    <Rule Name="Detect DCOM WebClient Coercion">
        <Filter Type="InterfaceUUID" Value="c8cb7687-e6d3-11d2-a958-00c04f682e16" />
        <Filter Type="Endpoint" Value="\\PIPE\\DAV RPC SERVICE" />
        <Action Type="Log" />
    </Rule>
    <Rule Name="Detect PetitPotam EfsRpcOpenFileRaw">
        <Filter Type="InterfaceUUID" Value="c681d488-d850-11d0-8c52-00c04fd90f7e" />
        <Filter Type="OpNum" Value="0" />
        <Action Type="Log" />
    </Rule>
</Rules>

Cấu trúc này cho phép các nhà phòng thủ tạo ra các quy tắc tùy chỉnh để phù hợp với các mối đe dọa cụ thể mà họ muốn giám sát, cung cấp một mức độ kiểm soát cao đối với các sự kiện RPCCOM.

Triển khai và vận hành COMmander

Việc triển khai COMmander khá đơn giản, với các tùy chọn cho cả thực thi qua giao diện dòng lệnh (CLI) và hoạt động dựa trên dịch vụ.

Chế độ hoạt động CLI

Để sử dụng CLI, chỉ cần chạy COMmander.exe. Theo mặc định, công cụ sẽ tải tệp config.xml từ cùng thư mục.

COMmander.exe

Trong chế độ CLI, các cảnh báo khi có sự kiện phù hợp sẽ được hiển thị trực tiếp trên terminal, cung cấp phản hồi tức thì cho người dùng.

Cài đặt và quản lý dịch vụ

Cài đặt dịch vụ bao gồm việc tải xuống bản phát hành mới nhất và thực thi tập lệnh InstallService.ps1 với quyền quản trị viên. Tập lệnh này sẽ đặt các tệp vào C:\Program Files\COMmander và chạy dịch vụ dưới tài khoản hệ thống cục bộ (Local System account).

# Mở PowerShell với quyền quản trị viên
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser # Nếu cần thiết
cd <đường_dẫn_thư_mục_COMmander>
.\InstallService.ps1

Trong quá trình cài đặt dịch vụ, người dùng có thể gặp lời nhắc nhập thông tin đăng nhập, có thể bỏ qua bằng cách nhấn Enter.

Để khởi động dịch vụ sau khi cài đặt, sử dụng lệnh Start-Service:

Start-Service COMmander

Sau khi khởi động, dịch vụ COMmander sẽ bắt đầu giám sát các sự kiện hệ thống theo các quy tắc đã định cấu hình.

Ghi nhật ký sự kiện

Các sự kiện được ghi lại trong Windows Event Viewer, trong nhật ký “COMmander” thuộc phần Application and Service Logs. Các ID sự kiện chính bao gồm:

  • ID 1: Dịch vụ khởi động.
  • ID 2: Dịch vụ tắt.
  • ID 3: Tải quy tắc.
  • ID 4: Lỗi trong thời gian chạy (runtime errors).
  • ID 5: Phát hiện được kích hoạt (triggered detections).

Điều này cung cấp một cái nhìn tập trung về các hoạt động của COMmander, hỗ trợ việc theo dõi và điều tra.

Gỡ cài đặt và lưu ý quan trọng

Việc gỡ cài đặt COMmander cũng đơn giản bằng cách sử dụng tập lệnh UninstallService.ps1:

# Mở PowerShell với quyền quản trị viên
cd <đường_dẫn_thư_mục_COMmander>
.\UninstallService.ps1

Một lưu ý quan trọng là tránh chạy đồng thời cả phiên bản CLI và dịch vụ. Việc này có thể làm gián đoạn hoạt động của công cụ và yêu cầu khởi động lại dịch vụ để giải quyết vấn đề.
Nếu muốn xây dựng từ mã nguồn, quá trình này cũng dễ dàng: chỉ cần mở dự án trong Visual Studio và thực hiện thao tác build.

Ưu điểm và tiềm năng của COMmander

Hiệu suất và tối ưu tài nguyên

COMmander được thiết kế để duy trì mức tiêu thụ tài nguyên tối thiểu. Điều này đặc biệt quan trọng khi xem xét khối lượng lớn các sự kiện RPC có thể được tạo ra trên một hệ thống. Khả năng chạy không phô trương này cho phép COMmander được triển khai trong môi trường doanh nghiệp mà không gây ra gánh nặng tính toán đáng kể, đảm bảo giám sát liên tục mà không ảnh hưởng đến hiệu suất hệ thống.

Tính linh hoạt trong cấu hình

Sự tích hợp của COMmander giữa các thông tin chuyên sâu từ ETW và các quy tắc do người dùng định nghĩa giúp nó trở thành một công cụ có độ tin cậy cao để củng cố khả năng phòng thủ chống lại các hành vi khai thác RPCCOM. Công cụ này kết hợp chiều sâu kỹ thuật với sự dễ dàng vận hành, hỗ trợ các chuyên gia an ninh mạng trong việc duy trì ưu thế trong môi trường kỹ thuật số phức tạp.