Hướng dẫn phân tích mối đe dọa Sysmon, Phần 1

Hướng dẫn phân tích mối đe dọa Sysmon, Phần 1

Bài viết này là phần đầu tiên của loạt bài về phân tích mối đe dọa Sysmon. Tất cả các phần khác của bộ truyện:

Phần 1: Giới thiệu về Phân tích nhật ký Sysmon (Chúng tôi ở đây)
Phần 2: Sử dụng dữ liệu sự kiện Sysmon để xác định các mối đe dọa
Phần 3. Phân tích chuyên sâu các mối đe dọa của Sysmon bằng biểu đồ

Nếu bạn làm việc trong lĩnh vực bảo mật thông tin, có lẽ bạn thường phải hiểu các cuộc tấn công đang diễn ra. Nếu bạn đã có con mắt tinh tường, bạn có thể tìm kiếm hoạt động không chuẩn trong nhật ký chưa được xử lý “thô” - chẳng hạn như tập lệnh PowerShell đang chạy bằng lệnh DownloadString hoặc tập lệnh VBS giả vờ là tệp Word - chỉ cần cuộn qua hoạt động mới nhất trong nhật ký sự kiện Windows. Nhưng đây thực sự là một vấn đề đau đầu. May mắn thay, Microsoft đã tạo ra Sysmon, giúp việc phân tích tấn công trở nên dễ dàng hơn nhiều.

Bạn muốn hiểu những ý tưởng cơ bản đằng sau các mối đe dọa được hiển thị trong nhật ký Sysmon? Tải xuống hướng dẫn của chúng tôi Sự kiện WMI như một phương tiện gián điệp và bạn nhận ra người trong cuộc có thể lén lút quan sát các nhân viên khác như thế nào. Vấn đề chính khi làm việc với nhật ký sự kiện Windows là thiếu thông tin về các tiến trình gốc, tức là. không thể hiểu được thứ bậc của các quá trình từ nó. Mặt khác, các mục nhật ký Sysmon chứa ID tiến trình gốc, tên của nó và dòng lệnh sẽ được khởi chạy. Cảm ơn bạn, Microsoft.

Trong phần đầu tiên của loạt bài này, chúng ta sẽ xem xét những gì bạn có thể làm với thông tin cơ bản từ Sysmon. Trong Phần XNUMX, chúng ta sẽ tận dụng tối đa thông tin của quy trình gốc để tạo ra các cấu trúc tuân thủ phức tạp hơn được gọi là biểu đồ mối đe dọa. Trong phần thứ ba, chúng ta sẽ xem xét một thuật toán đơn giản quét biểu đồ mối đe dọa để tìm kiếm hoạt động bất thường bằng cách phân tích “trọng lượng” của biểu đồ. Và cuối cùng, bạn sẽ được thưởng một phương pháp phát hiện mối đe dọa xác suất rõ ràng (và dễ hiểu).

Phần 1: Giới thiệu về Phân tích nhật ký Sysmon

Điều gì có thể giúp bạn hiểu được sự phức tạp của nhật ký sự kiện? Cuối cùng - SIEM. Nó bình thường hóa các sự kiện và đơn giản hóa việc phân tích tiếp theo của chúng. Nhưng chúng ta không cần phải đi xa đến thế, ít nhất là lúc đầu. Ban đầu, để hiểu các nguyên tắc của SIEM, chỉ cần dùng thử tiện ích Sysmon miễn phí tuyệt vời là đủ. Và cô ấy dễ làm việc cùng một cách đáng ngạc nhiên. Hãy tiếp tục cố gắng nhé Microsoft!

Sysmon có những tính năng gì?

Tóm lại - thông tin hữu ích và dễ đọc về các quy trình (xem hình bên dưới). Bạn sẽ tìm thấy nhiều chi tiết hữu ích không có trong Nhật ký sự kiện Windows, nhưng quan trọng nhất là các trường sau:

  • ID tiến trình (ở dạng thập phân, không phải hex!)
  • ID tiến trình gốc
  • Dòng lệnh xử lý
  • Dòng lệnh của tiến trình cha
  • Băm hình ảnh tập tin
  • Tên hình ảnh tập tin

Sysmon được cài đặt vừa làm trình điều khiển thiết bị vừa làm dịch vụ - chi tiết hơn đây. Ưu điểm chính của nó là khả năng phân tích nhật ký từ hơn nguồn, mối tương quan của thông tin và đầu ra của các giá trị kết quả vào một thư mục nhật ký sự kiện nằm dọc theo đường dẫn Microsoft -> Windows -> Sysmon -> Hoạt động. Trong các cuộc điều tra dựng tóc gáy của riêng tôi về nhật ký Windows, tôi nhận thấy mình liên tục phải chuyển đổi giữa thư mục nhật ký PowerShell và thư mục Bảo mật, lướt qua nhật ký sự kiện trong một nỗ lực dũng cảm để bằng cách nào đó tương quan các giá trị giữa hai thư mục này. . Đây không bao giờ là một nhiệm vụ dễ dàng, và sau này tôi nhận ra rằng tốt hơn hết là nên dự trữ ngay aspirin.

Sysmon thực hiện một bước nhảy vọt về mặt lượng tử bằng cách cung cấp thông tin hữu ích (hoặc như các nhà cung cấp muốn nói là có thể hành động) để giúp hiểu các quy trình cơ bản. Ví dụ: tôi đã bắt đầu một phiên bí mật wmiexec, mô phỏng chuyển động của một người nội bộ thông minh trong mạng. Đây là những gì bạn sẽ thấy trong nhật ký sự kiện Windows:

Hướng dẫn phân tích mối đe dọa Sysmon, Phần 1

Nhật ký Windows hiển thị một số thông tin về quy trình nhưng nó ít được sử dụng. Cộng với ID tiến trình ở dạng thập lục phân ???

Đối với một chuyên gia CNTT chuyên nghiệp có hiểu biết cơ bản về hack, dòng lệnh sẽ đáng ngờ. Việc sử dụng cmd.exe để chạy lệnh khác và chuyển hướng đầu ra sang một tệp có tên lạ rõ ràng tương tự như hành động của phần mềm giám sát và điều khiển chỉ huy và kiểm soát (C2): Bằng cách này, một shell giả được tạo bằng cách sử dụng các dịch vụ WMI.
Bây giờ chúng ta hãy xem mục tương đương của Sysmon, lưu ý xem nó cung cấp cho chúng ta bao nhiêu thông tin bổ sung:

Hướng dẫn phân tích mối đe dọa Sysmon, Phần 1

Các tính năng của Sysmon trong một ảnh chụp màn hình: thông tin chi tiết về quy trình ở dạng có thể đọc được

Bạn không chỉ nhìn thấy dòng lệnh mà còn thấy tên tệp, đường dẫn đến ứng dụng thực thi, những gì Windows biết về nó (“Bộ xử lý lệnh Windows”), mã định danh cha mẹ quy trình, dòng lệnh cha mẹ, khởi chạy cmd shell, cũng như tên tệp thực của tiến trình gốc. Cuối cùng thì mọi thứ đều ở một nơi!
Từ nhật ký Sysmon, chúng tôi có thể kết luận rằng rất có thể dòng lệnh đáng ngờ mà chúng tôi thấy trong nhật ký "thô" này không phải là kết quả công việc bình thường của nhân viên. Ngược lại, nó được tạo ra bởi một quy trình giống C2 - wmiexec, như tôi đã đề cập trước đó - và được sinh ra trực tiếp bởi quy trình dịch vụ WMI (WmiPrvSe). Bây giờ chúng tôi có dấu hiệu cho thấy kẻ tấn công từ xa hoặc nội bộ đang kiểm tra cơ sở hạ tầng của công ty.

Giới thiệu Get-Sysmonlogs

Tất nhiên thật tuyệt khi Sysmon đặt các bản ghi vào một nơi. Nhưng có lẽ sẽ còn tốt hơn nếu chúng ta có thể truy cập các trường nhật ký riêng lẻ theo chương trình - ví dụ: thông qua các lệnh PowerShell. Trong trường hợp này, bạn có thể viết một tập lệnh PowerShell nhỏ để tự động tìm kiếm các mối đe dọa tiềm ẩn!
Tôi không phải là người đầu tiên có ý tưởng như vậy. Và thật tốt khi trong một số bài đăng trên diễn đàn và GitHub dự án Nó đã được giải thích cách sử dụng PowerShell để phân tích nhật ký Sysmon. Trong trường hợp của tôi, tôi muốn tránh phải viết các dòng tập lệnh phân tích cú pháp riêng biệt cho từng trường Sysmon. Vì vậy, tôi đã sử dụng nguyên tắc người lười biếng và tôi nghĩ kết quả là tôi đã nghĩ ra một điều gì đó thú vị.
Điểm quan trọng đầu tiên là khả năng của đội Sự kiện Get-Win đọc nhật ký Sysmon, lọc các sự kiện cần thiết và xuất kết quả ra biến PS, như sau:

$events = Get-WinEvent  -LogName "Microsoft-Windows-Sysmon/Operational" | where { $_.id -eq 1 -or $_.id -eq 11}

Nếu bạn muốn tự mình kiểm tra lệnh, bằng cách hiển thị nội dung trong phần tử đầu tiên của mảng $events, $events[0].Message, đầu ra có thể là một chuỗi chuỗi văn bản với định dạng rất đơn giản: tên của Trường Sysmon, dấu hai chấm và sau đó là giá trị của chính nó.

Hướng dẫn phân tích mối đe dọa Sysmon, Phần 1

Hoan hô! Xuất nhật ký Sysmon sang định dạng sẵn sàng cho JSON

Bạn có đang suy nghĩ giống tôi không? Với một chút nỗ lực hơn, bạn có thể chuyển đổi đầu ra thành chuỗi có định dạng JSON, sau đó tải trực tiếp vào đối tượng PS bằng lệnh mạnh mẽ Chuyển đổiTừ-Json .
Tôi sẽ hiển thị mã PowerShell để chuyển đổi - nó rất đơn giản - trong phần tiếp theo. Bây giờ, hãy xem lệnh mới của tôi có tên get-sysmonlogs, mà tôi đã cài đặt dưới dạng mô-đun PS, có thể làm được những gì.
Thay vì đi sâu vào phân tích nhật ký Sysmon thông qua giao diện nhật ký sự kiện bất tiện, chúng ta có thể dễ dàng tìm kiếm hoạt động gia tăng trực tiếp từ phiên PowerShell, cũng như sử dụng lệnh PS Ở đâu (bí danh – “?”) để rút ngắn kết quả tìm kiếm:

Hướng dẫn phân tích mối đe dọa Sysmon, Phần 1

Danh sách shell cmd được khởi chạy qua WMI. Phân tích mối đe dọa với chi phí thấp với nhóm Get-Sysmonlogs của riêng chúng tôi

Thật tuyệt vời! Tôi đã tạo một công cụ để thăm dò nhật ký Sysmon như thể nó là một cơ sở dữ liệu. Trong bài viết của chúng tôi về CHỈ SỐ THÔNG MINH cần lưu ý rằng chức năng này sẽ được thực hiện bởi tiện ích tuyệt vời được mô tả trong đó, mặc dù về mặt hình thức vẫn thông qua giao diện giống SQL thực. Có, EQL thanh lịch, nhưng chúng ta sẽ đề cập đến nó trong phần thứ ba.

Phân tích Sysmon và đồ thị

Hãy lùi lại và suy nghĩ về những gì chúng ta vừa tạo. Về cơ bản, hiện tại chúng tôi có cơ sở dữ liệu sự kiện Windows có thể truy cập được thông qua PowerShell. Như tôi đã lưu ý trước đó, có các kết nối hoặc mối quan hệ giữa các bản ghi - thông qua ParentProcessId - do đó có thể thu được hệ thống phân cấp hoàn chỉnh của các quy trình.

Nếu bạn đã đọc bộ truyện "Cuộc phiêu lưu của phần mềm độc hại khó nắm bắt" bạn biết rằng tin tặc thích tạo ra các cuộc tấn công nhiều giai đoạn phức tạp, trong đó mỗi quy trình đóng một vai trò nhỏ riêng và chuẩn bị bàn đạp cho bước tiếp theo. Rất khó để bắt được những thứ như vậy chỉ từ nhật ký "thô".
Nhưng với lệnh Get-Sysmonlogs của tôi và cấu trúc dữ liệu bổ sung, chúng ta sẽ xem xét ở phần sau trong văn bản (tất nhiên là bằng biểu đồ), chúng ta có một cách thực tế để phát hiện các mối đe dọa - việc này chỉ yêu cầu thực hiện tìm kiếm đỉnh đúng.
Như mọi khi với các dự án blog DYI của chúng tôi, bạn càng nỗ lực phân tích chi tiết các mối đe dọa ở quy mô nhỏ, bạn sẽ càng nhận ra mức độ phức tạp của việc phát hiện mối đe dọa ở cấp doanh nghiệp. Và nhận thức này là vô cùng tâm điểm.

Chúng ta sẽ gặp những vấn đề phức tạp thú vị đầu tiên trong phần thứ hai của bài viết, nơi chúng ta sẽ bắt đầu kết nối các sự kiện Sysmon với nhau thành các cấu trúc phức tạp hơn nhiều.

Nguồn: www.habr.com

Thêm một lời nhận xét