ทำความรู้จัก Sysmon เครื่องมือการทำ Endpoint Detection ด้วยตัวเอง

Sysmon คืออะไร ?

Sysmon เป็นคำเรียกแบบย่อๆ ที่มาจากคำว่า “System Monitor” เป็น Windows system service ที่ถูกพัฒนาขึ้นมาของ Microsoft และเป็นเครื่องมือตัวหนึ่งในชุดเครื่องมือ Sysinternals Suite ของ Microsoft เมื่อติดตั้งบนเครื่องเรียบร้อยแล้ว จะมีหน้าที่ในการช่วยบันทึกพฤติกรรมต่างๆ ที่เกิดขึ้นบนเครื่องคอมพิวเตอร์ตามเงื่อนไข (Event Filtering) ที่ระบุไว้ในไฟล์ Configuration ที่กำหนดไว้ ซึ่งโดยส่วนมากเงื่อนไขที่ถูกสร้างขึ้นมาจะเป็นพฤติกรรมน่าสงสัยที่อาจเกี่ยวข้องกับภัยคุกคามทางไซเบอร์หรือมัลแวร์ และข้อมูลพฤติกรรมที่เกิดขึ้นนี้จะถูกเก็บในรูปแบบของ Log ไว้ที่ “Windows event log” ซึ่งมีอยู่แล้วบนเครื่องคอมพิวเตอร์ทุกเครื่องที่เป็นระบบปฏิบัติการ Windows โดย Log ต่างๆ ที่ถูกเก็บบันทึกไว้ใน Windows event log นี้ สามารถถูกส่งต่อไปเก็บยังอุปกรณ์ที่เรียกว่า SIEM (Security Information and Event Management) และจะถูกเก็บไว้เป็นฐานข้อมูลในลักษณะข้อมูลที่มีโครงสร้าง ส่งผลให้สามารถค้นหาเฉพาะข้อมูลที่ได้รับความสนใจเป็นพิเศษ (Retrieval) ผ่านการใช้คำสั่ง (Query) ที่เหมาะสมในการประมวลผลและแสดงผลข้อมูลให้ได้ผลลัพธ์ตามที่ต้องการ หรือแจ้งเตือนเมื่อพบพฤติกรรมที่ตรงกับเงื่อนไขภัยคุกคามที่สนใจ

รูปที่ 1: แสดงตัวอย่างการออกแบบระบบการทำงานร่วมกันระหว่าง sysmon และ splunk

Sysmon มีการแบ่งชนิดของเหตุการณ์ (Event) ที่สามารถตรวจจับได้เป็นทั้งหมด 22 เหตุการณ์ โดยแต่ละชนิดของเหตุการณ์จะมีเลข Event ID กำกับไว้เช่นเดียวกับ Windows event log ปกติ ดังต่อไปนี้

Event ID 1: Process creation
บันทึกข้อมูลเมื่อพบว่ามีโปรเซสถูกสร้างขึ้นใหม่บนเครื่อง โดยมีการเก็บข้อมูลของ command line ที่ถูกเรียก, ProcessGUID, ค่า Hash ของไฟล์ที่ถูกโปรเซสเรียกมารัน

มี Field name ประกอบด้วย Log Name, Source, Date, Event ID, Task Category, Level, Keywords, User, Computer, Description, UtcTime, ProcessGuid, ProcessId, Image, FileVersion, Description, Product, Company, CommandLine, CurrentDirectory, User, LogonGuid, LogonId, TerminalSessionId, IntegrityLevel, Hashes, ParentProcessGuid, ParentProcessId, ParentImage, ParentCommandLine

Event ID 2: A process changed a file creation time
บันทึกข้อมูลเมื่อพบว่ามีไฟล์บนเครื่องถูกเปลี่ยนเวลาการสร้าง (creation time)

มี Field name ประกอบด้วย Log Name, Source, Date, Event ID, Task Category, Level, Keywords, User, Computer, Description, UtcTime, ProcessGuid, ProcessId, Image, TargetFilename, CreationUtcTime, PreviousCreationUtcTime

Event ID 3: Network connection
บันทึกข้อมูลเมื่อพบว่ามีโปรเซสบนเครื่องที่มีการเชื่อมต่อผ่าน TCP/UDP โดยจะมีการเก็บข้อมูลของ ProcessId, ProcessGUID, Source host name, Source IP address, Destination host name และ Destination IP address

มี Field name ประกอบด้วย Log Name, Source, Date, Event ID, Task Category, Level, Keywords, User, Computer, Description, UtcTime, ProcessGuid, ProcessId, Image, User, Protocol, Initiated, SourceIsIpv6, SourceIp, SourceHostname, SourcePort, SourcePortName, DestinationIsIpv6, DestinationIp, DestinationHostname, DestinationPort, DestinationPortName

Event ID 4: Sysmon service state changed
บันทึกข้อมูลเมื่อพบว่า sysmon service มีการ start/stop เกิดขึ้น

มี Field name ประกอบด้วย Log Name, Source, Date, Event ID, Task Category, Level, Keywords, User, Computer, Description, UtcTime, State, Version, SchemaVersion

Event ID 5: Process terminated
บันทึกข้อมูลเมื่อพบว่ามีโปรเซสใดๆ บนเครื่องถูกสั่งให้หยุดทำงาน

มี Field name ประกอบด้วย Log Name, Source, Date, Event ID, Task Category, Level, Keywords, User, Computer, Description, UtcTime, ProcessGuid, ProcessId, Image

Event ID 6: Driver loaded
บันทึกข้อมูลเมื่อพบว่ามีการเรียกใช้งาน driver บนเครื่อง โดยจะมีการเก็บข้อมูลค่า hash ของไฟล์ที่ถูกเรียกด้วย

มี Field name ประกอบด้วย Log Name, Source, Date, Event ID, Task Category, Level, Keywords, User, Computer, Description, UtcTime, ImageLoaded, Hashes, Signed, Signature, SignatureStatus

Event ID 7: Image loaded
บันทึกข้อมูลเมื่อพบว่าโปรเซสใดๆ มีการเรียกใช้งาน module (dll) เพิ่มเติม โดยจะมีการเก็บข้อมูลค่า hash ของ module ไฟล์ที่ถูกเรียก

มี Field name ประกอบด้วย Log Name, Source, Date, Event ID, Task Category, Level, Keywords, User, Computer, Description, UtcTime, ProcessGuid, ProcessId, Image, ImageLoaded, FileVersion, Description, Product, Company, Hashes, Signed, Signature, SignatureStatus

Event ID 8: CreateRemoteThread
บันทึกข้อมูลเมื่อพบว่าโปรเซสใดๆ มีการสร้าง Thread บนโปรเซสอื่นๆ เพิ่มเติม โดยจะมีการเก็บข้อมูลของทั้งโปรเซสที่ทำการเรียก (source) และโปรเซสที่ถูกเรียก (target)

มี Field name ประกอบด้วย Log Name, Source, Date, Event ID, Task Category, Level, Keywords, User, Computer, Description, UtcTime, SourceProcessGuid, SourceProcessId, SourceImage, TargetProcessGuid, TargetProcessId, TargetImage, NewThreadId, StartAddress, StartModule, StartFunction

Event ID 9: RawAccessRead
บันทึกข้อมูลเมื่อพบว่าโปรเซสใดๆ มีความพยายามเข้าถึงไฟล์บนเครื่องผ่านการใช้ \\.\ ซึ่งมักเป็นพฤติกรรมของมัลแวร์ในการพยายามเข้าถึงไฟล์สำคัญบนเครื่องที่มีการป้องกัน เพื่อขโมยข้อมูล โดยจะมีการเก็บข้อมูลของโปรเซสต้นทางที่พยายามจะเข้าถึง และอุปกรณ์ปลายทางที่พยายามเข้าถึง

มี Field name ประกอบด้วย Log Name, Source, Date, Event ID, Task Category, Level, Keywords, User, Computer, Description, RawAccessRead, UtcTime: Time event occurred, ProcessGuid: The GUID of the process that generated the event, ProcessID: ID of the process that generated the event, Image: File used to generate the event, Device

Event ID 10: ProcessAccess
บันทึกข้อมูลเมื่อพบว่าโปรเซสใดๆ พยายามที่จะเรียกหรือเข้าถึงโปรเซสอื่นๆ ซึ่งอาจเป็นพฤติกรรมที่น่าสงสัยของมัลแวร์ในการพยายามอ่านข้อมูลที่อยู่บนโปรเซสสำคัญอื่นๆ เช่น Lsass.exe เพื่อขโมยข้อมูลผู้ใช้งาน และรหัสผ่าน เป็นต้น

มี Field name ประกอบด้วย Log Name, Source, Date, Event ID, Task Category, Level, Keywords, User, Computer, Description, UtcTime, SourceProcessGUID, SourceProcessId, SourceThreadId, SourceImage, TargetProcessGUID, TargerProcessId, TargetImage, GrantedAccess, CallTrace

Event ID 11: FileCreate
บันทึกข้อมูลเมื่อพบว่ามีการสร้างไฟล์หรือเขียนข้อมูลทับไฟล์ที่มีอยู่บนเครื่อง

มี Field name ประกอบด้วย Log Name, Source, Date, Event ID, Task Category, Level, Keywords, User, Computer, Description, UtcTime, ProcessGuid, ProcessId, Image, TargetFilename, CreationUtcTime

Event ID 12: RegistryEvent (Object create and delete)
บันทึกข้อมูลเมื่อพบว่ามีการสร้างหรือลบข้อมูลในส่วนของ Registry บนเครื่อง

มี Field name ประกอบด้วย Log Name, Source, Date, Event ID, Task Category, Level, Keywords, User, Computer, Description, EventType, UtcTime, ProcessGuid, ProcessId, Image, TargetObject

Event ID 13: RegistryEvent (Value Set)
บันทึกข้อมูลเมื่อพบว่ามีการเปลี่ยนแปลงค่าใน Registry Key

มี Field name ประกอบด้วย Log Name, Source, Date, Event ID, Task Category, Level, Keywords, User, Computer, Description, EventType, UtcTime, ProcessGuid, ProcessId, Image, TargetObject, Details

Event ID 14: RegistryEvent (Key and Value Rename)
บันทึกข้อมูลเมื่อพบว่ามีการแก้ไขชื่อของ Key และ Value ของ Registry

มี Field name ประกอบด้วย Log Name, Source, Date, Event ID, Task Category, Level, Keywords, User, Computer, Description, EventType, UtcTime, ProcessGuid, ProcessId, Image, TargetObject, NewName

Event ID 15: FileCreateStreamHash
บันทึกข้อมูลเมื่อพบว่ามีการสร้างไฟล์บนเครื่องที่สร้างจาก bytes sequence หรือ File Stream บน NTFS file system เช่น การดาวน์โหลดไฟล์ผ่าน web browser หรือ attachment โดยจะมีการคำนวณค่า hash ของไฟล์ที่ถูกสร้างเพื่อเก็บไว้ด้วย

มี Field name ประกอบด้วย Log Name, Source, Date, Event ID, Task Category, Level, Keywords, User, Computer, Description, UtcTime, ProcessGuid, ProcessId, Image, TargetFileName, CreationUtcTime, Hash

Event ID 16: Sysmon config state changed
บันทึกข้อมูลเมื่อพบว่ามีการเปลี่ยนแปลงไฟล์ config. ของ sysmon

มี Field name ประกอบด้วย Log Name, Source, Date, Event ID, Task Category, Level, Keywords, User, Computer, Description, UtcTime, Configuration, ConfigurationFileHash

Event ID 17: PipeEvent (Pipe Created)
บันทึกข้อมูลเมื่อพบว่ามีการสร้าง named pipe ใหม่ ซึ่งมักจะถูกเรียกโดยมัลแวร์ เพื่อใช้ในการติดต่อระหว่างโปรเซส

มี Field name ประกอบด้วย Log Name, Source, Date, Event ID, Task Category, Level, Keywords, User, Computer, Description, Pipe Created, UtcTime, ProcessGuid, ProcessId, PipeName, Image

Event ID 18: PipeEvent (Pipe Connected)
บันทึกข้อมูลเมื่อพบว่ามีการเรียกใช้งาน named pipe เพื่อสร้างการเชื่อมต่อระหว่าง client และ server

มี Field name ประกอบด้วย Log Name, Source, Date, Event ID, Task Category, Level, Keywords, User, Computer, Description, Pipe Connected, UtcTime, ProcessGuid, ProcessId, PipeName, Image

Event ID 19: WmiEvent (WmiEventFilter activity detected)
บันทึกข้อมูลเมื่อพบว่ามีการใช้งาน event filter ของ WMI โดยจะมีการเก็บข้อมูลของ WMI namespace, filter name และ filter expression

มี Field name ประกอบด้วย Log Name, Source, Date, Event ID, Task Category, Level, Keywords, User, Computer, Description, EventType, UtcTime, Operation, User, EventNamespace, Name, Query

Event ID 20: WmiEvent (WmiEventConsumer activity detected)
บันทึกข้อมูลของ WMI consumer เมื่อพบว่ามีการใช้งาน WMI โดยจะเก็บข้อมูลของ consumner name, log และ destination

มี Field name ประกอบด้วย Log Name, Source, Date, Event ID, Task Category, Level, Keywords, User, Computer, Description, EventType, UtcTime, Operation, User, Name, Type, Destination

Event ID 21: WmiEvent (WmiEventConsumerToFilter activity detected)
บันทึกข้อมูลเมื่อพบว่า WMI consumer มีการ bind กับ event filter โดยจะเก็บข้อมูลของ consumer name และ filter path

มี Field name ประกอบด้วย Log Name, Source, Date, Event ID, Task Category, Level, Keywords, User, Computer, Description, EventType, UtcTime, Operation, User, Consumer, Filter

Event ID 255: Error
บันทึกข้อมูล error ที่เกิดขึ้นกับ sysmon

การสร้างเงื่อนไขเพื่อคัดกรองข้อมูลที่ต้องการ (Event Filtering)

แต่ละ Event ID ของ sysmon จะมี tag ของตัวเอง โดย tag แต่ละตัวจะถูกนำไประบุในไฟล์ configuration ที่อยู่ในรูปแบบ xml เพื่อกำหนดว่าต้องการจะให้เก็บเหตุการณ์ (event log) อะไรบ้าง โดย tag ของแต่ละ event มีดังต่อไปนี้

การสร้างเงื่อนไขเพื่อกำหนดเหตุการณ์ที่ต้องการเก็บของแต่ละ tag จำเป็นต้องมีการใช้ syntax คำว่า “onmatch=” ตามด้วยค่าที่ต้องการ ซึ่งต้องเป็นค่าใดค่าหนึ่งระหว่าง

  • include” สำหรับกำหนดให้บันทึก (logging) เฉพาะเหตุการณ์ที่ตรงกับเงื่อนไขที่ระบุเท่านั้น อย่างไรก็ตามถ้าหากไม่มีการระบุเงื่อนไข ความหมายจะเป็นไปในทางตรงกันข้าม คือจะไม่ทำการเก็บเหตุการณ์ใดๆ ของ event tag ดังกล่าวเลย
  • exclude” สำหรับกำหนดให้บันทึก (logging) เฉพาะเหตุการณ์ที่ไม่ตรงกับเงื่อนไขที่ระบุเท่านั้น อย่างไรก็ตามถ้าหากไม่มีการระบุเงื่อนไข ความหมายจะเป็นไปในทางตรงกันข้ามเช่นเดียวกัน คือจะทำการเก็บเหตุการณ์ทุกอย่างที่เกิดขึ้นของ event tag ดังกล่าวทั้งหมด

จากนั้นตามด้วยการระบุ field name และค่าของ field name ที่ต้องการของ event tag นั้นๆ เพื่อสร้างเป็นเงื่อนไขว่าต้องการให้เก็บข้อมูลที่มีลักษณะยังไงของ event tag ดังกล่าว

เงื่อนไขของแต่ละ Event tag เรียกว่า “rule” โดยการสร้างเงื่อนไข (rule) จะสร้างจากการระบุ field name และค่าของ field name ที่ต้องการของ event tag นั้นๆ ร่วมกับคำสั่งตามรายการต่อไปนี้

ยกตัวอย่างเช่น

<Sysmon schemaversion="4.0.0">
    <EventFiltering>
         <ProcessCreate onmatch=”include”>
               <Image condition=”end with”>powershell.exe</Image>
               <Image condition=”end with”>cmd.exe</Image>
              <CommandLine condition=”contains”>whoami</CommandLine>
         </ProcessCreate>
         <DriverLoad onmatch=”exclude“>
              <Signature condition="is">Microsoft Windows</Signature>
         </DriverLoad>
         <ImageLoad onmatch=”include” />
         <FileCreateTime onmatch=”include” />
         <NetworkConnect onmatch=”include” />
         <CreateRemoteThread onmatch=”include” />
         <RawAccessRead onmatch=”exclude” />
    </EventFiltering>
</Sysmon>

จากตัวอย่าง Configuration ไฟล์ข้างบน ระบบจะทำการเลือกเก็บข้อมูล (logging) ของเหตุการณ์ ดังต่อไปนี้

  1. เหตุการณ์ ProcessCreate ที่มีชื่อโปรเซสลงท้ายด้วย “cmd.exe” หรือ “powershell.exe” และเหตุการณ์มีการใช้ command line ที่มีคำว่า “whoami
  2. เหตุการณ์ DriverLoad ทั้งหมด ยกเว้นถ้าไฟล์ดังกล่าวถูก Sign โดย “Microsoft Windows
  3. เหตุการณ์ ProcessTerminate ทั้งหมดที่เกิดขึ้น เนื่องจากเป็น default event ที่จะถูกเก็บ และไม่มีการกำหนดเงื่อนไขเพิ่มเติม

ทั้งนี้ได้มีคำแนะนำสำหรับการเก็บ event พื้นฐานดังต่อไปนี้

การติดตั้ง sysmon บนเครื่อง client

  1. สามารถดาวน์โหลดตัวติดตั้งได้จากเว็บไซต์ของ Sysinternals
  2. เมื่อแตกไฟล์ zip ออกมาจะเจอ exe 2 ไฟล์ (Sysmon และ Sysmon64) เป็นไฟล์ติดตั้งแยกตามลักษณะของระบบปฏิบัติการ 32 bit หรือ 64 bit
  3. ทำการติดตั้ง service ของ sysmon บนเครื่อง โดยการรัน cmd ด้วยสิทธิ์ administrator โดยสามารถเลือกติดตั้งได้ 2 แบบ คือ
    • แบบยังไม่มีไฟล์ configuration ให้ติดตั้งโดยใช้คำสั่ง
      sysmon -i – accepteula <ตามด้วย Option อื่นที่รองรับ>” เช่น sysmon -i – accepteula -h md5 -n -l>
      สามารดูรายละเอียด Option อื่นๆ เพิ่มเติมจาก เว็บไซต์ Microsoft
    • แบบมีไฟล์ configuration โดยสามารถดาวน์โหลดไฟล์ที่มีการกำหนดค่าให้พร้อมใช้งานแล้วจากแหล่งอื่นๆ เช่น SwiftOnSecurity หรือ ion-storm เป็นต้น ให้ใช้คำสั่ง
      sysmon -accepteula -i <ชื่อไฟล์.xml>

      รูปที่ 2: แสดงตัวอย่างการติดตั้ง sysmon

  4. ถ้าหากเคยมีการติดตั้ง service ของ sysmon ไว้ก่อนแล้ว แต่ต้องการอัพเดทไฟล์ configuration ที่มีการปรับปรุงใหม่ ให้ใช้คำสั่ง “sysmon –c <ชื่อไฟล์ใหม่.xml>”สำหรับการติดตั้งบน Enterprise สามารถศึกษาได้จาก ที่นี่

ตัวอย่างการนำ sysmon ไปใช้เพื่อตรวจจับพฤติกรรมที่ต้องสงสัย

    • ตรวจจับการใช้ Windows Commands ที่น่าสงสัย เช่น net use, net start, cmd.exe, whoami หรือ taskkill เป็นต้น จากตัวอย่างเป็นการ query ข้อมูลจาก Splunk เพื่อหาพฤติกรรมการเรียกใช้งาน command line ที่น่าสงสัย

      รูปที่ 3: แสดงตัวอย่างผลลัพธ์การค้นหาพฤติกรรมการเรียกใช้ command ที่ผิดปกติ

    • ตรวจจับพฤติกรรมการใช้งาน web browser และ Microsoft Office ที่มีการเรียกใช้งาน cmd หรือ Powershell โดยสามารถใช้ query ลักษณะต่อไปนี้ เพื่อหาข้อมูลบนอุปกรณ์ SIEM ที่ใช้งานอยู่ได้
      sourcetype=”WinEventLog:Microsoft-Windows-Sysmon/Operational” eventcode=1 parentimage=”C:\\Program Files (x86)\\Microsoft Office\\Office14\\WINWORD.EXE” OR parentimage=”C:\\Program Files (x86)\\Microsoft Office\\Office14\\OUTLOOK.EXE” OR parentimage=”C:\\Program Files (x86)\\Microsoft Office\\Office14\\EXCEL.EXE” OR parentimage=”C:\\Program Files (x86)\\Microsoft Office\\Office14\\POWERPNT.EXE” OR parentimage=”C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe” OR parentimage=”C:\\Program Files\\Internet Explorer\\iexplore.exe” OR parentimage=”\”C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe\”” OR parentimage=”C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe” AND (image=”C:\\Windows\\SysWOW64\\WindowsPowerShell\\v1.0\\powershell.exe” OR image=”C:\\Windows\\System32\\cmd.exe” OR image=”C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe”)
    • ตรวจจับการเรียกใช้คำสั่ง Powershell ที่น่าสงสัย จากความยาวและคำสั่งที่ควรเฝ้าระวัง โดยสามารถใช้ query ลักษณะต่อไปนี้
      sourcetype=”WinEventLog:Microsoft-Windows-Sysmon/Operational” eventcode=1 image=”C:\\Windows\\SysWOW64\\WindowsPowerShell\\v1.0\\powershell.exe” OR image=”C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe” | eval c_length=len(commandline) | where c_length>1000

      และ
      sourcetype=”WinEventLog:Microsoft-Windows-Sysmon/Operational” eventcode=1 powershell.exe Invoke* OR IEX OR Download* | table _time, computername, processid, image,commandline, parentprocessid,parentimage,parentcommandline
    • ตรวจจับพฤติกรรม thread injection บน svchost โปรเซส และ web browser
      sourcetype=”WinEventLog:Microsoft-Windows-Sysmon/Operational” eventcode=8 targetimage=C:\\Windows\\System32\\svchost.exe | eval ppid=sourceimage+”;”+targetimage |rare ppid

      และ
      sourcetype=”WinEventLog:Microsoft-Windows-Sysmon/Operational” eventcode=8 NOT antivirus_image sourceimage=*temp* OR sourceimage=*Temp* OR sourceimage=C:\\ProgramData\\* OR sourceimage=C:\\Users\\* | eval ppid=sourceimage+”;”+targetimage |rare ppid
    • ตรวจจับพฤติกรรมการเชื่อมออกไปภายนอก (C&C) ผ่านโปรเซสที่ไม่ใช่ web browser จากตัวอย่างตรวจจับการเชื่อมต่อจากโปรเซส rundll32.exe
      sourcetype=”WinEventLog:Microsoft-Windows-Sysmon/Operational” eventcode = 3 rundll32.exe | timechart count(_raw) by computername

ตัวอย่างการนำ sysmon ไปใช้ร่วมกับแหล่งข้อมูลภัยคุกคาม (OSINT)

  • VirusTotal
    สำหรับ Event ID 1: ProcessCreate จะมี field name ที่ชื่อว่า “Hashes” ส่วนนี้จะมีการเก็บค่า hash ของโปรเซสไฟล์ที่มีการสร้างขึ้นมาใหม่บนเครื่อง โดยค่า hash ตัวนี้สามารถนำไปใช้ตรวจสอบกับแหล่งข้อมูลภัยคุกคามอื่นๆ ที่สามารถรับค่า hash อย่างเช่น VirusTotal ผ่านการระบุค่าบนเว็บไซต์ หรือ API (1, 2) ก็ได้ โดยผลลัพธ์ที่ได้นั้นสามารถนำไปต่อยอดกับอุปกรณ์ความปลอดภัยอื่นๆ หรือช่วยตัดสินใจได้ว่าโปรเซสที่มีการสร้างขึ้นมาใหม่นั้นเป็นโปรเซสที่ปกติหรือไม่ หรือเป็นโปรเซสที่อันตราย เช่นเดียวกับ Event ID อื่นๆ ที่มีการเก็บค่า hash ของไฟล์

รูปที่ 4: แสดงตัวอย่าง ProcessCreate log ที่มีค่า hash

รูปที่ 5: แสดงการนำค่า hash ที่ได้ตรวจสอบบน VirusTotal

รูปที่ 6: แสดงผลลัพธ์การตรวจสอบค่า hash จาก VirusTotal

  • Hybrid-Analysis (Sandbox)
    สำหรับผู้ที่เคยเข้าไปใช้งาน hybrid-analysis หรือเว็บไซต์อื่นๆ ที่ให้บริการ Sandbox เพื่อวิเคราะห์ไฟล์ที่ต้องสงสัย จะพบว่าเว็บไซต์เหล่านี้จะมีการให้ข้อมูลรายการของ Parent-Child โปรเซสที่ถูกสร้างขึ้นเมื่อทำการรันไฟล์ที่ต้องสงสัยดังกล่าว จากตัวอย่างสามารถนำค่ารายการโปรเซสดังกล่าวมา query บน SIEM ที่มีการเก็บ log ของ sysmon เพื่อแสดงผลให้ทราบเมื่อพบว่ามีรายการของพฤติกรรมที่ต้องสงสัยดังกล่าวเกิดขึ้นบนเครื่อง

รูปที่ 7: แสดงรายการโปรเซสของ Adwind RAT และ query สำหรับตรวจจับ

รูปที่ 8: แสดงการแก้ไข Registry ของ Adwind RAT และ Query สำหรับตรวจจับ

  • StixIOC
    Japan Computer Emergency Response Team Coordination Center (JPCERT/CC) ซึ่งเป็น CSIRT (Computer Security Incident Response Team) ของประเทศญี่ปุ่น ได้พัฒนาระบบที่มีการใช้ Sysmon เป็นตัวเก็บข้อมูลพฤติกรรมการทำงานของเครื่อง ร่วมกับ ElasticSearch, Kibana และ StixIOC server ขึ้นมาเพื่อใช้ในการตรวจจับพฤติกรรมที่ความเสี่ยงบนเครื่องที่เฝ้าระวัง โดยอาศัยข้อมูลที่มาจากแหล่งภัยคุกคามภายนอก (OSINT) ที่มีการเก็บข้อมูลอยู่ในรูปแบบ Structured Threat Information eXpression (STIX) และตั้งชื่อระบบว่า SysmonSearch

รูปที่ 9: แสดงโครงสร้างของระบบ SysmonSearch

แหล่งอ้างอิง

  1. https://sector.ca/wp-content/uploads/presentations18/Morin_Sysmon_2019-16-9.pdf
  2. https://securitylogs.org/https://securitylogsdotorg.files.wordpress.com/2017/01/sysmon-2017-16-1.pdf
  3. https://github.com/SwiftOnSecurity/sysmon-config
  4. https://www.rsaconference.com/writable/presentations/file_upload/hta-w05-tracking_hackers_on_your_network_with_sysinternals_sysmon.pdf
  5. https://blogs.technet.microsoft.com/motiba/2016/10/18/sysinternals-sysmon-unleashed/
  6. https://blogs.technet.microsoft.com/motiba/2017/12/07/sysinternals-sysmon-suspicious-activity-guide/
  7. http://security-research.dyndns.org/pub/slides/FIRST-TC-2018/FIRST-TC-2018_Tom-Ueltschi_Sysmon_PUBLIC.pdf
  8. https://onedrive.live.com/view.aspx?resid=D026B4699190F1E6!2843
  9. https://www.crowdstrike.com/blog/sysmon-2/
  10. https://medium.com/@olafhartong/sysmon-8-0-a-leap-forward-in-event-annotation-59a36555d856
  11. https://www.botconf.eu/wp-content/uploads/2018/12/2018-Tom-Ueltschi-Sysmon.pdf