Sysmon
-
Sysmon là gì?
Sysmon là bộ công cụ của Microsoft dùng để kiểm tra những hoạt động của Windows: process, network, file… và đưa vào windows event log.
1 vài ví dụ về log sysmon export ra event viewer
-
Vậy Sysmon dùng làm gì?
Sysmon thường được dùng để audit những hành vi bất thường của ứng dụng (process, thread, connection, file, command, sign ,dns…)
- Process: dùng để tìm kiếm những process bất thường chạy trong windows.
- Connection: phát hiện những kết nối bất thường đến những IP nghi ngờ. Kết hợp với geoip để phân loại quốc gia theo IP
- File: phát hiện thay đổi file. Trường hợp này phát hiện với ransomware, thay đổi hàng loạt file.
- DNS: phát hiện những truy vấn DNS bất thường.
Sysmon được tích hợp khá nhiều với các SIEM như:
QRadar:
https://www.ibm.com/support/knowledgecenter/SSKMKU/com.ibm.extensions.doc/r_sysmon_setup.html
Splunk:
https://splunkbase.splunk.com/app/1914/
Logrhythm:
https://logrhythm.com/products/logrhythm-sysmon/
-
Cài đặt sysmon
Download sysmon từ:
https://docs.microsoft.com/en-us/sysinternals/downloads/sysmon
Sau đó mở cmd với quyền administrator để cài đặt sysmon
Sysmon64.exe -accepteula -I -n -l
-i Install -l Lưu log thay đổi -n Lưu lại kết nối connection -c Dùng file config với bộ rule -u Uninstall Các thông số cài đặt có thể xem thêm tại đây : https://docs.microsoft.com/en-us/sysinternals/downloads/sysmon
-
Xóa sysmon khỏi windows
Xem log sysmon trên event viewer
Mở event viewer
Event Viewer -> Application and Services -> Microsoft -> Windows -> Sysmon -> Operational
-
Cấu hình sysmon
Do mặc định sysmon sẽ ghi lại log toàn bộ mọi thứ: nên những ứng dụng bình thường cũng sẽ bị ghi log lại và dẫn đến quá nhiều log.
Nên chúng ta sẽ cần viết rule cho sysmon để log những gì cần log.
Đây là file config mẫu của Sysmon: https://github.com/SwiftOnSecurity/sysmon-config
Khuyến cáo: nên dùng notepad++ để mở file config xml
-
Ví dụ 1:
<Sysmon
schemaversion=“4.22”>
<HashAlgorithms>md5,sha256,IMPHASH</HashAlgorithms>
<CheckRevocation/>
<EventFiltering>
<RuleGroup
name=“IT4VN”
groupRelation=“or”>
<ProcessCreate
onmatch=“include”>
<CommandLine
condition=“contains”>iexplore.exe</CommandLine>
<CommandLine
condition=“contains”>firefox.exe</CommandLine>
</ProcessCreate>
</RuleGroup>
</EventFiltering>
</Sysmon>
Ở đây chúng ta chỉ cần quan tâm từ dòng EventFiltering. Từ dòng này chúng ta sẽ có những định nghĩa như sau:
-
- RuleGroup: tên của group rule
- groupRelation: Mối quan hệ giữa các group, and hay or. Trong ví dụ bên trên thì sysmon sẽ log những process được tạo ra có tên là
iexplore.exe hoặc firefox.exe
- ProcessCreate: Sysmon có 22 event ID. Mỗi event ID có rule riêng. Tham khảo thêm ở file config mẫu.
ID | Tag | Event |
1 ProcessCreate | Process Create | |
2 FileCreateTime | File creation time | |
3 NetworkConnect | Network connection detected | |
4 n/a | Sysmon service state change (cannot be filtered) | |
5 ProcessTerminate | Process terminated | |
6 DriverLoad | Driver Loaded | |
7 ImageLoad | Image loaded | |
8 CreateRemoteThread | CreateRemoteThread detected | |
9 RawAccessRead | RawAccessRead detected | |
10 ProcessAccess | Process accessed | |
11 FileCreate | File created | |
12 RegistryEvent | Registry object added or deleted | |
13 RegistryEvent | Registry value set | |
14 RegistryEvent | Registry object renamed | |
15 FileCreateStreamHash | File stream created | |
16 n/a | Sysmon configuration change (cannot be filtered) | |
17 PipeEvent | Named pipe created | |
18 PipeEvent | Named pipe connected | |
19 WmiEvent | WMI filter | |
20 WmiEvent | WMI consumer | |
21 WmiEvent | WMI consumer filter | |
22 DNSQuery | DNS query |
- onmatch: onmatch có 2 giá trị là
include
hoặc
exclude. Include sẽ xuất log ra eventlog khi những điều kiện bên dưới đúng. Exclude sẽ không xuất ra eventlog khi những điều kiện bên dưới đúng (ngược lại với include)
- CommandLine: Điều kiện của mỗi rule. Ví dụ ở process event thì có rule command, network connection thì có rule source IP, destination IP , port…Tham khảo thêm ở file config mẫu.
- Giải thích: ở file config ban đầu có group rule tên là IT4VN, groupRelation là or tức là những chỉ cần thỏa 1 điều kiện là đủ. Ở đây là CommandLine có chứa tên iexplore.exe hoặc firefox.exe
-
Ví dụ 2:
<RuleGroup
name=“”
groupRelation=“or”>
<DnsQuery
onmatch=“exclude”>
<QueryName
condition=“is”>..localmachine</QueryName>
<QueryName
condition=“is”>localhost</QueryName>
<QueryName
condition=“end with”>.windowsupdate.com</QueryName>
<QueryName
condition=“end with”>.xboxlive.com</QueryName>
<QueryName
condition=“is”>login.windows.net</QueryName>
<Image
condition=“begin with”>C:\ProgramData\Microsoft\Windows Defender\Platform\</Image>
</DnsQuery>
</RuleGroup>
-
Giải thích: Ở ví dụ 2 là cấu hình cho eventlog DnsQuery. Với event này groupRelation là or nên chỉ cần đúng với một điều kiện. Sau đó là nên khi đúng với điều kiện bên dưới thì sẽ được loại trừ không đưa và eventlog:
- dns query là ..localmachine, localhost, .windowsupdate.com, .xbox.live.com, login.windows.net
- Tên của process bắt đầu với C:\ProgramData\Microsoft\Windows Defender\Platform\
-
Bước kế tiếp
Sau khi đã có log rồi, những với hàng chục hàng trăm server thì việc xem eventlog không dễ tí nào. Do đó thông thường eventlog được thu thập và tập trung lại để theo dõi. Ở phần kế tiếp eventlog sẽ được đưa vào ELK để biểu diễn dưới dạng dashboard giúp việc theo dõi dễ dàng hơn.