Săn tìm Lateral Movement: Thực hành phát hiện với osquery, Zeek và Sigma

Security tutorial - IT technology blog
Security tutorial - IT technology blog

Bắt đầu nhanh: Tại sao Lateral Movement lại quan trọng

Truy cập ban đầu hiếm khi là mục tiêu cuối cùng. Một khi kẻ tấn công đã xâm nhập được vào một máy trạm duy nhất—có lẽ thông qua một liên kết lừa đảo—đồng hồ bắt đầu đếm ngược. Chúng không đứng yên một chỗ. Chúng sẽ ngay lập tức bắt đầu khám phá mạng của bạn để tìm các tài sản có giá trị cao như Domain Controllers hoặc cơ sở dữ liệu SQL. Giai đoạn này được gọi là Lateral Movement (di chuyển ngang).

Các tường lửa biên tiêu chuẩn thường không thể phát hiện được điều này. Chúng giám sát lưu lượng “Bắc-Nam” (từ internet vào nội bộ), nhưng lại bỏ qua lưu lượng “Đông-Tây” di chuyển giữa các máy chủ của bạn. Để bắt được một kẻ tấn công đang di chuyển trong môi trường của mình, bạn cần có khả năng hiển thị ở ba lớp cụ thể:

  • Máy chủ (The Host): Những tiến trình nào đang chạy và ai đang đăng nhập? (osquery).
  • Đường truyền (The Wire): Những giao thức nào đang di chuyển giữa các IP nội bộ? (Zeek).
  • Logic: Làm thế nào để chuẩn hóa các cảnh báo trên các nguồn log khác nhau? (Sigma Rules).

Bạn không nên kỳ vọng sẽ chặn đứng được mọi vụ xâm nhập ban đầu. Thay vào đó, hãy đặt mục tiêu làm cho mạng nội bộ của bạn trở nên minh bạch đến mức kẻ tấn công không thể thực hiện một bước nào mà không bị phát hiện.

Đi sâu: Xây dựng hệ thống phát hiện

Giám sát hiệu quả đòi hỏi một sự thay đổi trong tư duy. Tôi đã ngừng theo đuổi các chữ ký mã độc (malware signatures) cụ thể từ nhiều năm trước. Giờ đây, tôi tìm kiếm “các công cụ quản trị được sử dụng sai chỗ, sai thời điểm”.

1. Khả năng giám sát mức Host với osquery

Osquery biến hệ điều hành của bạn thành một cơ sở dữ liệu có thể truy vấn được. Bạn không cần phải đào bới các bản ghi Windows Event Logs khó hiểu. Thay vào đó, bạn chạy các truy vấn SQL để tìm các điểm bất thường trong thời gian thực. Kẻ tấn công thường di chuyển bằng cách cài đặt các dịch vụ từ xa hoặc chiếm quyền điều khiển các tác vụ được lập lịch.

Tôi sử dụng truy vấn này để gắn cờ các dịch vụ mới bỏ qua các quy ước đặt tên tiêu chuẩn hoặc ẩn mình trong các thư mục tạm thời:

SELECT name, display_name, path, start_type 
FROM services 
WHERE start_type = 'SERVICE_AUTO_START' 
AND path NOT LIKE 'C:\Windows\System32\%' 
AND path LIKE '%\Temp\%';

Nếu bạn thấy một dịch vụ có tên “SystemUpdate” đang chạy một tệp thực thi từ C:\Users\Public\, rất có thể bạn đang nhìn thấy một beacon điều khiển (C2) hoặc một công cụ như PsExec.

2. Metadata mạng với Zeek

Zeek không phải là một IDS truyền thống; nó là một công cụ metadata mạnh mẽ. Nó không chỉ cho bạn biết một kết nối đã xảy ra, mà nó ghi lại chính xác những gì đã diễn ra trong kết nối đó. Đối với lateral movement, hãy tập trung vào smb_files.logntlm.log.

Kẻ tấn công dựa vào SMB (Server Message Block) để di chuyển ngang. Một người dùng thông thường có thể kết nối với hai hoặc ba chia sẻ tệp mỗi ngày. Nếu Zeek cho thấy một máy trạm duy nhất cố gắng thực hiện hơn 50 kết nối SMB đến các IP nội bộ riêng biệt trong vòng 60 giây, đó là một dấu hiệu cảnh báo rõ ràng. Hành vi này thường cho thấy việc quét tự động qua các công cụ như CrackMapExec hoặc BloodHound.

3. Thắt chặt thông tin xác thực

Phát hiện là quan trọng, nhưng ngăn chặn còn tốt hơn. Một sai lầm phổ biến là sử dụng cùng một mật khẩu quản trị viên cục bộ cho toàn bộ hệ thống. Nếu một máy bị chiếm quyền, tất cả đều sẽ sụp đổ. Khi tôi thiết lập các máy chủ mới, tôi đảm bảo mọi tài khoản quản trị cục bộ đều có một mật khẩu duy nhất, có độ phức tạp cao.

Để tạo mật khẩu nhanh chóng và an toàn, tôi sử dụng công cụ tại toolcraft.app/vi/tools/security/password-generator. Nó chạy hoàn toàn trong trình duyệt của bạn, đảm bảo không có dữ liệu nhạy cảm nào được truyền qua mạng. Trong khi các công cụ như Microsoft LAPS là tiêu chuẩn vàng cho doanh nghiệp, việc có một trình tạo mật khẩu không lưu trữ cho các hệ thống độc lập sẽ ngăn chặn việc một thông tin xác thực bị lộ trở thành “chìa khóa vạn năng” cho toàn bộ mạng của bạn.

Tương quan nâng cao với Sigma Rules

Dữ liệu từ osquery và Zeek chỉ hữu ích nếu bạn có thể phân tích nó. Sigma cung cấp một ngôn ngữ chung để phát hiện, không phụ thuộc vào nhà cung cấp. Nó cho phép bạn viết một quy tắc một lần và áp dụng cho Splunk, ELK hoặc Microsoft Sentinel.

Phát hiện thực thi WMI

Windows Management Instrumentation (WMI) là một công cụ ưa thích cho kỹ thuật “Living off the Land” (tận dụng công cụ sẵn có). Nó được tích hợp sẵn, mạnh mẽ và thường bị bỏ qua. Đây là một quy tắc Sigma để bắt việc WMI được sử dụng để tạo tiến trình trên các hệ thống từ xa:

title: Tạo tiến trình WMI từ xa
status: stable
description: Phát hiện wmic.exe tạo tiến trình trên các nút từ xa.
logsource:
    product: windows
    service: security
detection:
    selection:
        EventID: 4688
        CommandLine|contains|all:
            - 'wmic'
            - '/node:'
            - 'process call create'
    condition: selection
level: high

Quy tắc này nhắm vào các đối số dòng lệnh cụ thể được kẻ tấn công sử dụng để thực thi mã từ xa mà không bao giờ cần để lại một tệp virus truyền thống trên ổ đĩa.

Nhận diện SSH Tunneling

Trong môi trường Linux, việc di chuyển thường diễn ra qua SSH. Tôi tìm kiếm các phiên kết nối “Thời gian dài, lưu lượng thấp”. Một kết nối SSH mở trong 12 giờ nhưng truyền tải ít hơn 5MB dữ liệu thường là một reverse shell hoặc một đường truyền điều khiển (C2) bền bỉ.

Mẹo thực tế từ thực địa

Sau nhiều năm ứng cứu sự cố, ba chiến lược này luôn mang lại kết quả tốt nhất:

1. Thu hẹp phạm vi ảnh hưởng (Blast Radius)

Hãy giả định rằng các máy trạm của bạn đã bị xâm nhập. Sử dụng tường lửa trên máy chủ để ngăn các máy trạm nói chuyện trực tiếp với nhau. Một máy tính xách tay ở phòng Marketing không có lý do gì để khởi tạo kết nối RDP (Cổng 3389) đến một máy tính xách tay ở phòng Kế toán. Nếu điều đó xảy ra, SIEM của bạn nên kích hoạt cảnh báo ngay lập tức.

2. Cảnh giác với “Pass-the-Hash”

Giám sát chặt chẽ các bản ghi NTLM của bạn. Nếu bạn đã chuyển đổi môi trường sang Kerberos, bất kỳ sự gia tăng đột ngột nào trong xác thực NTLM đều đáng nghi ngờ. Nó thường cho thấy kẻ tấn công đang sử dụng Mimikatz để xác thực bằng cách sử dụng hash mật khẩu thu thập được từ bộ nhớ, bỏ qua nhu cầu về mật khẩu văn bản thuần túy.

3. Thiết lập Baseline (Mức cơ sở)

Bạn không thể xác định điều gì là “bất thường” nếu bạn không biết cái gì là “bình thường”. Hãy dành hai tuần để quan sát nhịp đập của mạng lưới. Ghi lại những tài khoản dịch vụ nào đăng nhập lúc 2 giờ sáng và những tập lệnh nào chạy định kỳ. Một khi bạn đưa các tác vụ quản trị đã biết này vào danh sách trắng (whitelist), các lệnh thủ công, dò dẫm của một hacker sẽ trở nên rõ mồn một.

Lời kết

Đừng cố gắng làm mọi thứ cùng một lúc. Hãy bắt đầu nhỏ bằng cách triển khai osquery cho năm máy chủ quan trọng nhất của bạn. Thêm Zeek vào switch cốt lõi để giám sát lưu lượng đến trung tâm dữ liệu. Bằng cách kết hợp truy vấn SQL mức host với metadata mạng và quy tắc Sigma, bạn biến mạng của mình thành một môi trường đầy đủ ánh sáng, nơi kẻ tấn công không còn chỗ để ẩn nấp.

Share: