พอดีไปอ่านเจอเรื่อง incident analysis จากงาน Splunk Conf2015 เลยมาทำสรุปในนี้ เผื่อลืมจะได้หยิบมาใช้ได้อีกง่ายๆไม่ต้องหาอะไรมากมาย รวมถึงเพื่อให้ผู้อ่านได้รับทราบเผื่อเอาไปค้นหาเหตุการณ์ที่ผิดปกติในองค์กรด้วยครับ (แต่เหนือสิ่งอื่นใดบทความนี้จะใช้ได้หรือไม่ได้ขึ้นอยู่กับ visibility หรือก็คือการ logging ที่ครบถ้วนด้วยครับ ไม่งั้นก็จบครับ สืบหา root cause ได้ยากเลยครับ)
- EventCode 4624/528/540 สำหรับการ logon
1 |
index=windows LogName=Security EventCode=4624 NOT (host=“DC1" OR host=“DC2" OR host=“DC...”) NOT (Account_Name="*$" OR Account_Name="ANONYMOUS LOGON") NOT (Account_Name=“Service_Account") | eval Account_Domain=(mvindex(Account_Domain,1)) | eval Account_Name=if(Account_Name="-",(mvindex(Account_Name,1)), Account_Name) | eval Account_Name=if(Account_Name="*$",(mvindex(Account_Name,1)), Account_Name) | eval Time=strWime(_Ome,"%Y/%m/%d %T") | stats count values(Account_Domain) AS Domain, values(host) AS Host, dc(host) AS Host_Count, values(Logon_Type) AS Logon_Type, values(WorkstaOon_Name) AS WS_Name, values(Source_Network_Address) AS Source_IP, values(Process_Name) AS Process_Name by Account_Name | where Host_Count > 2 |
- EventCode 4688/592 เพื่อดูเรื่องการใช้ command ต่างๆ (สร้าง Process)
1 |
index=windows source="WinEventLog:Security" (EventCode=4688) NOT (Account_Name=*$) (at.exe OR bcdedit.exe OR chcp.exe OR cmd.exe OR cscript.exe OR ipconfig.exe OR mimikatz.exe OR nbtstat.exe OR nc.exe OR netcat.exe OR netstat.exe OR nmap OR nslookup.exe OR bcp.exe OR sqlcmd.exe OR OSQL.exe OR ping.exe OR powershell.exe OR powercat.ps1 OR psexec.exe OR psexecsvc.exe OR psLoggedOn.exe OR procdump.exe OR rar.exe OR reg.exe OR route.exe OR runas.exe OR sc.exe OR schtasks.exe OR sethc.exe OR ssh.exe OR sysprep.exe OR systeminfo.exe OR system32\\net.exe OR tracert.exe OR vssadmin.exe OR whoami.exe OR winrar.exe OR wscript.exe OR winrm.* OR winrs.* OR wmic.exe OR wsmprovhost.exe) | eval Message=split(Message,".") | eval Short_Message=mvindex(Message,0) | table _Ome, host, Account_Name, Process_Name, Process_ID, Process_Command_Line, New_Process_Name, New_Process_ID, Creator_Process_ID, Short_Message |
- EventCode 4663/567 สำหรับการพยายามการเข้าถึง object
1 |
index=windows sourcetype=WinEventLog:Security EventCode=4663 NOT (Process_Name="*\ \Windows\\servicing\\TrustedInstaller.exe" OR "*\\Windows\\System32\\poqexec.exe") NOT (Object_Name="*\\Users\\svc_acct\\pnp“ OR Object_Name="C:\\Users\\Surf\\AppData\ \Local\\Google\\Chrome\\User Data*" NOT Object_Name="C:\\Users\\Surf\\AppData\ \Roaming\\MicrosoW\\Windows\\Recent\\CustomDesOnaOons") NOT (Object_Name="C:\ \Windows\\System32\\LogFiles\\*" OR Object_Name="*ProgramData\\MicrosoW\\RAC\\*" OR Object_Name="*\\MicrosoW\\Windows\\Explorer\\thumbcache*" OR Object_Name="*.MAP" OR Object_Name="*counters.dat" OR Object_Name="*\\Windows\ \Gatherlogs\\SystemIndex\\*") | rename Process_Name as Created_By | table _Ome, host, Security_ID, Handle_ID, Object_Type, Object_Name, Process_ID, Created_By, Accesses |
- EventCode 5140/560 สำหรับการเข้าถึง network sharing
1 |
index=windows source="WinEventLog:Security" EventCode=5140 (Share_Name="*\ \C$" OR Share_Name="*D$" OR Share_Name="*E$" OR Share_Name="*F$" OR Share_Name="*U$") NOT Source_Address="::1" | eval DesOnaOon_Sys1=trim(host,"1") | eval DesOnaOon_Sys2=trim(host,"2") | eval Dest_Sys1=lower(DesOnaOon_Sys1) | eval Dest_Sys2=lower(DesOnaOon_Sys2) | rename host AS DesOnaOon | rename Account_Domain AS Domain | where Account_Name!=Dest_Sys1 | where Account_Name!=Dest_Sys2 | stats count values(Domain) AS Domain, values(Source_Address) AS Source_IP, values(DesOnaOon) AS DesOnaOon, dc(DesOnaOon) AS Dest_Count, values(Share_Name) AS Share_Name, values(Share_Path) AS Share_Path by Account_Name |
- EventCode 5156 สำหรับการสร้าง connection
1 |
index=windows LogName=Security EventCode=5156 NOT (Source_Address="239.255.255.250" OR Source_Address="224.0.0.*" OR Source_Address="::1" OR Source_Address="ff02::*" OR Source_Address="fe80::*" OR Source_Address="255.255.255.255" OR Source_Address=192.168.1.255) NOT (DesOnaOon_Address="127.0.0.1" OR DesOnaOon_Address="239.255.255.250" OR DesOnaOon_Address="*.*.*.255" OR DesOnaOon_Address="224.0.0.25*") NOT (DesOnaOon_Port="0") NOT (ApplicaOon_Name="\\icamsource\\" OR ApplicaOon_Name="*\\bin\\splunkd.exe") | dedup DesOnaOon_Address DesOnaOon_Port | table _Ome, host, ApplicaOon_Name, DirecOon, Source_Address, Source_Port, DesOnaOon_Address, DesOnaOon_Port | sort DirecOon DesOnaOon_Port |
- EventCode 7045/601 สำหรับการจัดการ service (install new serviced, change service state)
1 |
index=windows LogName=System EventCode=7045 | eval Message=split(Message,".") | eval Short_Message=mvindex(Message,0) | table _Ome host Service_Name, Service_Type, Service_Start_Type, Service_Account, Short_Message |
- EventCode 7040 สำหรับการเปลี่ยน state ของ service
- EventCode 4657 สำหรับการตรวจจับ change registry key
- EventCode 106 สำหรับการสร้าง scheduled job
- EventCode 501 สำหรับการใช้งาน powershell
- EventCode 2004, 2005, 2006 สำหรับการสร้าง,แก้ไข,ลบ firewall rule
สำหรับการ log process creation
– Software\Microsoft\Windows\CurrentVersion\Policies\System\Audit\ProcessCreationIncludeCmdLine_Enabled to DWORD – 1
Source:: Splunk