นโยบายการตรวจสอบความปลอดภัยของ Windows และการสอบสวนบันทึกเหตุการณ์ในทางปฏิบัติ — เป็นทีมไอทีที่อ่าน 4625 ได้

· · Windows, ความปลอดภัย, บันทึกเหตุการณ์, นโยบายการตรวจสอบ, การออกแบบบันทึก, PowerShell, ระบบสารสนเทศ

«ตั้งแต่เมื่อคืนบัญชีหนึ่งถูกล็อกซ้ำ ๆ ช่วยหาสาเหตุ» «อยากตรวจว่ามีใครลองลงชื่อเข้าใช้ด้วยบัญชีผู้ที่ลาออกหรือไม่» «เซิร์ฟเวอร์นี้ ใครทำอะไร เมื่อใด รู้ได้ไหม?» — คำขอที่เจ้าหน้าที่สารสนเทศของธุรกิจขนาดกลางและเล็ก หรือนักพัฒนาที่ส่งมอบระบบให้ลูกค้า ได้รับขึ้นมาวันหนึ่งอย่างกะทันหัน และสิ่งที่ไปพึ่งคือบันทึกเหตุการณ์ Security ของ Windows

แต่พอเปิดตัวแสดงเหตุการณ์จริง มีสองความเป็นจริงรออยู่ เหตุการณ์ที่อยากเห็นไม่ถูกบันทึก (นโยบายการตรวจสอบยังไม่เปิด) หรือ จมอยู่ใต้เหตุการณ์ปริมาณมหาศาลจนอ่านไม่ได้ (พองด้วยสัญญาณรบกวน) การตรวจสอบความปลอดภัย «เปิดแล้วบันทึกได้» แต่ถ้าไม่ออกแบบว่าจะบันทึกอะไรและถึงไหน พอถึงจังหวะที่ใช้จริงมันไม่ช่วย

สองความเป็นจริงที่รออยู่ที่ตัวแสดงเหตุการณ์เมื่อเปิดตัวแสดงเหตุการณ์ มีสองความเป็นจริง คือนโยบายการตรวจสอบยังไม่เปิดและเหตุการณ์ที่ต้องการไม่ได้ถูกบันทึก หรือบันทึกพองด้วยสัญญาณรบกวนจนเหตุการณ์จมและอ่านไม่ได้ จึงต้องออกแบบว่าจะบันทึกอะไรและถึงไหนไม่ได้บันทึกจมอยู่เปิดตัวแสดงเหตุการณ์ความเป็นจริงที่รอคือ?เหตุการณ์ที่ต้องการยังไม่ถูกบันทึกอ่านไม่ได้เพราะเหตุการณ์ปริมาณมากนโยบายการตรวจสอบปิดอยู่พองด้วยสัญญาณรบกวนออกแบบว่าจะบันทึกอะไรและถึงไหน

ภาพ 1: «ไม่ได้ถูกบันทึก» หรือ «จมจนอ่านไม่ได้» ทั้งสองกรณีเกิดจากการไม่ได้ออกแบบขอบเขตที่จะบันทึก

บทความนี้จัดกลไกของนโยบายการตรวจสอบ (สองระบบ — พื้นฐานและขั้นสูง) หมวดย่อยที่ควรเปิดอย่างน้อยในสภาพแวดล้อมขนาดกลางและเล็ก วิธีอ่านรหัสเหตุการณ์ที่ใช้ประจำอย่าง 4624/4625/4740/4688 การออกแบบความจุของบันทึก Security และการสอบสวนด้วย PowerShell โดยยึดแหล่งปฐมภูมิ ณ สิงหาคม 2026 หากบทความ การตรวจสอบ NTLM ลายเซ็น SMB BitLocker และ ไฟร์วอลล์ ที่ไซต์นี้เคยทำเป็นเรื่อง «ทำให้การป้องกันแน่น» บทความนี้เป็นเรื่อง «ทำให้ยืนยันย้อนหลังได้ว่าเกิดอะไรขึ้น» — ภาคต่อที่มัดเรื่องเหล่านั้นเข้าด้วยกัน

1. สรุปก่อนเลย

  • นโยบายการตรวจสอบมีสองระบบ — «พื้นฐาน» และ «ขั้นสูง (Advanced Audit Policy)» — และห้ามผสม Microsoft ระบุชัดว่าการใช้ทั้งสองทำให้ผลตรวจสอบอยู่ในสถานะที่คาดไม่ได้ รวมฝั่งขั้นสูง (กว่า 40 หมวดย่อย)1
  • ตรวจสถานะปัจจุบันด้วย auditpol /get /category:* มันแสดงสิ่งที่ใช้ผลจริงตอนนี้ โดยไม่สนว่ามาจาก GPO หรือการตั้งค่าท้องถิ่น2
  • ห้าม «เปิดทั้งหมด» การเปิดหมวดย่อยที่เกิดเหตุการณ์ปริมาณมหาศาลทำให้เหตุการณ์ที่สำคัญจมในสัญญาณรบกวน และกระทบประสิทธิภาพด้วย เริ่มจากคำแนะนำฐานของ Microsoft แล้วเติมเฉพาะที่ต้องการ34
  • ลงชื่อเข้าใช้สำเร็จคือ 4624 ล้มเหลวคือ 4625 สำหรับ 4624 อ่าน «เป็นการลงชื่อเข้าใช้ชนิดใด» จากชนิดล็อกออน (2 = Interactive, 3 = Network, 10 = RemoteInteractive เป็นต้น)5
  • สำหรับ 4625 รหัส Status/Sub Status บอกเหตุผลที่ล้ม ที่ใช้ประจำคือ 0xC0000064 = ชื่อผู้ใช้ไม่มี, 0xC000006A = รหัสผ่านผิด, 0xC0000072 = บัญชีถูกปิด, 0xC0000234 = บัญชีถูกล็อก6
  • ที่ที่เหตุการณ์ถูกบันทึกถูกกำหนดไว้แล้ว 4624/4625 ถูกบันทึกบนเครื่องที่ถูกเข้าถึง การตรวจข้อมูลรับรอง (4776) และความล้มเหลวของ Kerberos pre-authentication (4771) ถูกบันทึกบนตัวควบคุมโดเมน ดูเครื่องผิดแล้วจะวินิจฉัยผิดว่า «ไม่มีบันทึก»678
  • ครึ่งหนึ่งของการออกแบบบันทึก Security คือภาชนะเอง — ขนาดสูงสุดและการเก็บ หากการเก็บตั้งเป็นทับ เหตุการณ์เก่าจะหายก่อน ตรวจขนาดสูงสุดและจำนวนรายการด้วย Get-WinEvent -ListLog Security แล้วขยายโดยคำนวณย้อนจากจำนวนวันที่ต้องเก็บจริง910
  • การบันทึกบรรทัดคำสั่งของการสร้างโพรเซส (4688) ทรงพลัง แต่แลกด้วยความเสี่ยงที่ความลับไปอยู่ในบันทึกเป็นข้อความธรรมดา ตรวจสคริปต์ก่อนเปิด1112

2. พื้นฐานของนโยบายการตรวจสอบ — อย่าผสม «พื้นฐาน» กับ «ขั้นสูง»

นโยบายการตรวจสอบของ Windows มีสองระบบ1

  • นโยบายการตรวจสอบพื้นฐาน: การตั้งค่า 9 หมวดใต้ «นโยบายท้องถิ่น > นโยบายการตรวจสอบ» เป็นระบบเก่าที่มีมาก่อน Windows Vista
  • การกำหนดค่านโยบายการตรวจสอบขั้นสูง (Advanced Audit Policy Configuration): การตั้งค่า หมวดย่อย กว่า 40 รายการใต้ «การตั้งค่าความปลอดภัย > การกำหนดค่านโยบายการตรวจสอบขั้นสูง» มันแตกแต่ละหมวดพื้นฐานเป็นหลายหมวดย่อย — ตัวอย่างเช่น หมวดพื้นฐานเดียว «Audit account logon events» ตรงกับสี่หมวดย่อยฝั่งขั้นสูง การเปิดหมวดพื้นฐานหนึ่งหมวดมีผลเท่ากับการเปิดหมวดย่อยที่คู่กันทั้งหมด จึงบันทึกเหตุการณ์ปริมาณมากที่อาจไม่ได้สนใจ1

จุดสำคัญคือ สองระบบนี้เข้ากันไม่ได้ Microsoft ระบุตรง ๆ ว่า «อย่าใช้ทั้งนโยบายพื้นฐานและขั้นสูง — จะทำให้ผลตรวจสอบอยู่ในสถานะที่ไม่คาดคิด» เมื่อนโยบายการตรวจสอบขั้นสูงถูกใช้ผ่าน Group Policy การตั้งค่าการตรวจสอบที่มีอยู่ของคอมพิวเตอร์นั้นถูกล้างก่อน แล้วจึงใช้ค่าฝั่งขั้นสูง จากนั้นควบคุมได้อย่างน่าเชื่อถือได้เฉพาะฝั่งขั้นสูง ในสภาพแวดล้อมที่ใช้ฝั่งขั้นสูง ให้เปิดตัวเลือกความปลอดภัย «Audit: Force audit policy subcategory settings to override audit policy category settings» เพื่อไม่ให้ค่าฝั่งพื้นฐานทับได้ (บนเครื่องสแตนด์อโลนเปิดโดยค่าเริ่มต้น)14

ความสัมพันธ์ของนโยบายการตรวจสอบพื้นฐานกับขั้นสูงนโยบายการตรวจสอบพื้นฐานกับขั้นสูงเข้ากันไม่ได้ และการใช้ทั้งสองทำให้ผลตรวจสอบอยู่ในสถานะไม่คาดคิด จึงรวมฝั่งขั้นสูง แล้วเปิดการบังคับการตั้งค่าหมวดย่อยเพื่อกันการทับจากฝั่งพื้นฐานใช่ไม่นโยบายการตรวจสอบพื้นฐาน(9 หมวด)ใช้ทั้งสอง?นโยบายการตรวจสอบขั้นสูง(กว่า 40 หมวดย่อย)ผลตรวจสอบอยู่ในสถานะไม่คาดคิดรวมฝั่งขั้นสูงเปิดการบังคับการตั้งค่าหมวดย่อยกันการทับจากการตั้งค่าฝั่งพื้นฐาน

ภาพ 2: สองระบบเข้ากันไม่ได้ รวมฝั่งขั้นสูง แล้วใช้ค่า «บังคับ» เพื่อกันการทับจากฝั่งพื้นฐาน

การตรวจสถานะปัจจุบันคือคำสั่งเดียว รันจากพรอมต์คำสั่งระดับผู้ดูแล2

rem แสดงการตั้งค่าการตรวจสอบที่ใช้อยู่ตอนนี้ ตามหมวดย่อย
auditpol /get /category:*

rem สำรองการตั้งค่าปัจจุบันเป็น CSV ก่อนเปลี่ยน แล้วกู้คืน
auditpol /backup /file:C:\logs\auditpol-backup.csv
auditpol /restore /file:C:\logs\auditpol-backup.csv

เอาต์พุตของ auditpol คือ «นโยบายที่ใช้ผลจริง» โดยไม่สนว่ามาจาก GPO หรือการตั้งค่าท้องถิ่น ยังใช้เทียบเมื่อค่าที่ควรถูกแจกด้วย GPO ดูเหมือนยังไม่สะท้อน โปรดทราบว่าการเปลี่ยนการตั้งค่าการตรวจสอบเองถูกบันทึกเป็นเหตุการณ์ 4719 ดังนั้น «การตรวจสอบถูกปิดโดยไม่มีใครรู้» ก็ไล่ย้อนได้12

สิ่งที่ auditpol เห็นคือนโยบายผลลัพธ์เอาต์พุตของ auditpol คือ นโยบายการตรวจสอบที่ใช้ผลจริง โดยไม่สนว่ามาจาก GPO หรือการตั้งค่าท้องถิ่น ใช้เทียบเมื่อค่า GPO ยังไม่สะท้อน และการเปลี่ยนการตั้งค่าการตรวจสอบเองถูกบันทึกเป็นเหตุการณ์ 4719 จึงไล่ย้อนได้การตั้งค่าที่แจกด้วย GPOนโยบายที่ใช้ผลจริงการตั้งค่าท้องถิ่นรายการด้วย auditpol /getใช้เทียบเมื่อ GPO ยังไม่สะท้อนการเปลี่ยนการตั้งค่าการตรวจสอบเองบันทึก 4719 แล้วไล่ย้อนได้

ภาพ 3: auditpol คืน «ค่าที่ใช้ผล» โดยไม่สนที่มา การเปลี่ยนการตั้งค่าการตรวจสอบเองเหลือที่ 4719

3. ตารางตัดสินหมวดย่อยที่ควรเปิดอย่างน้อย

เหตุที่ «เปิดทั้งหมดไว้ก่อน» เป็นทางผิดชัดเจน ตัวอย่างเช่น Microsoft เตือนว่าการตรวจสอบสำเร็จของหมวดย่อยการใช้สิทธิ์พิเศษเกิดเหตุการณ์มหาศาลจนหาเหตุการณ์อื่นในบันทึกความปลอดภัยยาก และกระทบประสิทธิภาพอย่างมีนัย4 ภาชนะของบันทึก (หมวด 5) มีจำกัด ดังนั้นยิ่งบันทึกสัญญาณรบกวน ยิ่งกินจำนวนวันที่เก็บของเหตุการณ์ที่ต้องการจริง การออกแบบการตรวจสอบคือการตัดสินใจว่าจะไม่บันทึกอะไร

เหตุที่เปิดทั้งหมดเป็นทางผิดการเปิดหมวดย่อยทั้งหมดทำให้เกิดเหตุการณ์ปริมาณมาก เหตุการณ์สำคัญจมในสัญญาณรบกวน ประสิทธิภาพถูกกระทบ และภาชนะบันทึกที่จำกัดทำให้จำนวนวันที่เก็บของเหตุการณ์ที่ต้องการถูกตัดเปิดหมวดย่อยทั้งหมดเกิดเหตุการณ์ปริมาณมากเหตุการณ์สำคัญจมกระทบประสิทธิภาพจำนวนวันที่เก็บถูกตัดออกแบบการตรวจสอบคือการตัดสินว่าไม่บันทึกอะไร

ภาพ 4: «เปิดทั้งหมด» ทำให้เหตุการณ์สำคัญจม การออกแบบการตรวจสอบคือการตัดสินว่าจะไม่บันทึกอะไร

Microsoft เผยแพร่คำแนะนำฐานและคำแนะนำที่เข้มขึ้นแยกตามเวิร์กสเตชันกับเซิร์ฟเวอร์ และนั่นคือจุดตั้งต้น3 จากนั้นตารางด้านล่างจัดจากมุมของสภาพแวดล้อมขนาดกลางและเล็ก ว่า «ตอนเกิดเหตุอยากอ่านได้อย่างน้อยอะไร»

หมวดย่อย (หมวด) รหัสเหตุการณ์หลัก สิ่งที่บอก คำแนะนำสำหรับธุรกิจขนาดกลางและเล็ก
ล็อกออน (Logon/Logoff) 4624 / 4625 ลงชื่อเข้าใช้สำเร็จ/ล้ม ชนิดล็อกออน ต้นทาง สำเร็จ + ล้มเหลว Windows 10 1809 เป็นต้นไปเปิดสำเร็จและล้มเหลวโดยค่าเริ่มต้นอยู่แล้ว3
ล็อกออนพิเศษ (เดียวกัน) 4672 / 4964 การลงชื่อเข้าใช้ที่มีสิทธิ์ผู้ดูแล สำเร็จ
การล็อกบัญชี (เดียวกัน) 4625 การล็อกออนที่ล้มต่อบัญชีที่ถูกล็อกอยู่ ล้มเหลว (4625 เป็นเหตุการณ์ล้ม หมวดย่อยนี้ไม่มีเหตุการณ์สำเร็จ)13
การจัดการบัญชีผู้ใช้ (Account Management) 4720 / 4726 / 4738 / 4740 การสร้าง ลบ แก้ และล็อกบัญชี สำเร็จ + ล้มเหลว
การจัดการกลุ่มความปลอดภัย (เดียวกัน) 4728 / 4732 / 4756 (เพิ่ม), 4729 / 4733 / 4757 (เอาออก) การเพิ่มหรือเอาสมาชิกออกจากกลุ่มผู้ดูแลและกลุ่มอื่น (โกลบอล/ท้องถิ่น/ยูนิเวอร์แซล) สำเร็จ (หมวดย่อยนี้ไม่มีเหตุการณ์ล้ม)14
การตรวจข้อมูลรับรอง (Account Logon) 4776 สำเร็จหรือล้มของการรับรอง NTLM บัญชีโดเมนถูกบันทึกบน DC7 สำเร็จ + ล้มเหลว
บริการรับรอง Kerberos (เดียวกัน, เฉพาะ DC) 4768 / 4771 การออก TGT และความล้มเหลวของ pre-authentication (รหัสผ่านผิด เป็นต้น)8 สำเร็จ + ล้มเหลว บน DC
การสร้างโพรเซส (Detailed Tracking) 4688 ใครรันอะไร จากโพรเซสแม่ใด สำเร็จ อ่านข้อควรระวังในหมวด 7 ก่อนเปิดการบันทึกบรรทัดคำสั่ง
เหตุการณ์การเข้าถึงวัตถุอื่น (Object Access) 4698 การสร้างงานตามกำหนดเวลา (เทคนิคคงอยู่ที่ใช้บ่อย)15 พิจารณาเปิดสำเร็จ
การเปลี่ยนนโยบายการตรวจสอบ (Policy Change) 4719 การเปลี่ยนการตั้งค่าการตรวจสอบเอง สำเร็จ + ล้มเหลว

ในทางกลับกัน โดยทั่วไปปลอดภัยที่สุดที่ ไม่แตะการตรวจสอบการเข้าถึงวัตถุของระบบไฟล์หรือรีจิสทรี การใช้สิทธิ์พิเศษ หรือหมวดย่อยตัวกรองแพ็กเก็ต (5152 เป็นต้น) โดยค่าเริ่มต้น สิ่งเหล่านี้มีประโยชน์เมื่อจำกัดด้วย SACL ที่เจาะเป้าหมาย หรือช่วงสอบสวนที่มีกำหนด ไม่ใช่เปิดเต็มตลอดเวลา — ทำเช่นนั้นจะกินบันทึกจนหมด4

วิธีจัดการหมวดย่อยที่เกิดเหตุการณ์ปริมาณมากการตรวจสอบการเข้าถึงวัตถุของระบบไฟล์หรือรีจิสทรี การใช้สิทธิ์พิเศษ และตัวกรองแพ็กเก็ต หากเปิดเต็มตลอดเวลาจะกินบันทึกจนหมด จึงมีประโยชน์เมื่อจำกัดด้วย SACL ที่เจาะเป้าหมาย หรือจำกัดช่วงแยกปัญหาเปิดเต็มตลอดเวลาSACL ที่จำกัดเป้าหมายจำกัดช่วงแยกปัญหาหมวดย่อยที่เกิดเหตุการณ์ปริมาณมากเปิดอย่างไร?การตรวจสอบการเข้าถึงวัตถุการใช้สิทธิ์พิเศษและตัวกรองแพ็กเก็ตกินบันทึกจนหมดมีประโยชน์มีประโยชน์

ภาพ 5: อย่าเปิดการเข้าถึงวัตถุหรือการใช้สิทธิ์พิเศษเต็มตลอดเวลา มีประโยชน์เมื่อจำกัดเป้าหมายและช่วงเวลา

4. วิธีอ่านรหัสเหตุการณ์ที่ใช้ประจำ

4.1. 4624 — การลงชื่อเข้าใช้สำเร็จแยกด้วยชนิดล็อกออน

4624 «An account was successfully logged on» ถูก บันทึกบนเครื่องที่สร้างเซสชันล็อกออน (เครื่องที่ถูกเข้าถึง)5 เพราะเป็นเหตุการณ์ปริมาณมาก ขั้นแรกของการอ่านคือแยกด้วย ชนิดล็อกออน (Logon Type)5

ชนิดล็อกออน ชื่อ ความหมายในทางปฏิบัติ
2 Interactive ลงชื่อเข้าใช้ที่คอนโซลของพีซีนั้นเอง
3 Network การเข้าถึงผ่านเครือข่าย (โฟลเดอร์แชร์ เครื่องมือผู้ดูแล เป็นต้น) พบบ่อยสุดเพราะเกิดทีละเครื่อง
4 Batch การรันแบบแบตช์ (งานตามกำหนดเวลา เป็นต้น)
5 Service บริการเริ่มทำงาน (ผ่าน Service Control Manager)
7 Unlock ปลดล็อกหน้าจอ
8 NetworkCleartext ล็อกออนเครือข่ายที่รหัสผ่านถูกส่งไปแพ็กเกจการรับรองเป็นข้อความธรรมดา
9 NewCredentials การทำสำเนาโทเค็นที่มีอยู่ด้วยข้อมูลรับรองอื่น (เทียบเท่า runas /netonly)
10 RemoteInteractive Remote Desktop
11 CachedInteractive ลงชื่อเข้าใช้ด้วยข้อมูลรับรองที่แคชไว้ (เมื่อถึง DC ไม่ได้)

ฟิลด์อื่นที่ควรดูคู่กันคือชื่อบัญชีใต้ «New Logon» ที่อยู่ต้นทางใต้ «Network Information» «Authentication Package» (NTLM หรือ Kerberos) และ «Elevated Token» (ว่าเซสชันมีสิทธิ์ผู้ดูแลหรือไม่) หากอยากติดตามเฉพาะการลงชื่อเข้าใช้ที่มีสิทธิ์ผู้ดูแล เหตุการณ์ 4672 (Special privileges assigned to new logon) ที่บันทึกด้วย Logon ID เดียวกันก็ใช้ได้5

ขั้นตอนการแยกอ่าน 46244624 ที่ถูกบันทึกปริมาณมากให้แยกด้วยชนิดล็อกออนก่อน แล้วตรวจชื่อบัญชีกับต้นทาง แพ็กเกจการรับรอง และโทเค็นที่ยกระดับ และการลงชื่อเข้าใช้ที่มีสิทธิ์ผู้ดูแลให้เทียบกับ 4672 ของ Logon ID เดียวกัน4624 ลงชื่อเข้าใช้สำเร็จแยกด้วยชนิดล็อกออนตรวจฟิลด์หลักชื่อบัญชีและต้นทางแพ็กเกจการรับรองโทเค็นที่ยกระดับติดตามสิทธิ์ผู้ดูแล4672 ของ Logon ID เดียวกัน

ภาพ 6: 4624 ให้แยกด้วยชนิดล็อกออนก่อนแล้วอ่านฟิลด์ การลงชื่อเข้าใช้ที่มีสิทธิ์พิเศษให้เทียบกับ 4672

4.2. 4625 — ยืนยันเหตุผลที่ล้มด้วยรหัส Status/Sub Status

4625 «An account failed to log on» ถูก บันทึกบนเครื่องที่ถูกลองล็อกออน6 แทนที่จะเชื่อข้อความในฟิลด์ «Failure Reason» วิธีที่ชัวร์คืออ่านจากรหัสฐานสิบหก Status/Sub Status ที่ใช้ประจำมีดังนี้6

  • 0xC0000064: ชื่อผู้ใช้ไม่มี หากเกิดต่อเนื่องในหน้าต่างสั้น อาจเป็นสัญญาณการโจมตีแบบไล่ชื่อบัญชี
  • 0xC000006A: รหัสผ่านผิด ความล้มเหลวซ้ำต่อบัญชีเฉพาะอาจเป็นสัญญาณการเดารหัสผ่าน
  • 0xC000006D: ชื่อผู้ใช้หรือข้อมูลการรับรองไม่ถูกต้อง
  • 0xC000006F: นอกช่วงเวลาที่อนุญาตให้ล็อกออน
  • 0xC0000070: จากเวิร์กสเตชันที่ไม่อนุญาต
  • 0xC0000072: บัญชีถูกผู้ดูแลปิด (การลองบัญชีผู้ที่ลาออกโผล่ที่นี่)
  • 0xC000015B: ชนิดล็อกออนที่ขอไม่อนุญาตบนเครื่องนี้
  • 0xC0000193: บัญชีหมดอายุ
  • 0xC0000234: ถูกล็อก

«ใคร จากที่ไหน ทำไมจึงล้ม» ยืนยันด้วยชุดสามจุดของบัญชีเป้าหมาย ต้นทาง (ชื่อเวิร์กสเตชัน / ที่อยู่ IP) และรหัสนี้ หมวด 6 มี PowerShell ที่ดึงทั้งสามพร้อมกันในครั้งเดียว

ไหลการยืนยันเหตุผลที่ล้มของ 4625เหตุผลที่ล้มของ 4625 ยืนยันด้วยรหัสฐานสิบหก Status/Sub Status อ่านสัญญาณการโจมตีจากแนวโน้มของรหัส แล้วระบุด้วยชุดสามจุดของบัญชีเป้าหมายกับต้นทาง0xC0000064 ต่อเนื่อง0xC000006A ต่อเนื่อง0xC00000724625 ลงชื่อเข้าใช้ล้มเหลวตรวจรหัส Sub Statusแนวโน้มของรหัสคือ?สัญญาณการไล่ชื่อบัญชีสัญญาณการเดารหัสผ่านลองบัญชีผู้ที่ลาออกยืนยันด้วยชุดสามจุดบัญชีเป้าหมาย+ต้นทาง+รหัส

ภาพ 7: ยืนยันเหตุผลที่ล้มด้วยรหัส แล้วอ่านเป็นชุดสามจุดคู่บัญชีเป้าหมายและต้นทาง

4.3. 4740 — ต้นทางของการล็อกบัญชีอยู่ที่ «ชื่อคอมพิวเตอร์ที่เรียก»

4740 «A user account was locked out» (หมวดย่อย: User Account Management) ฟิลด์หลักของเหตุการณ์นี้คือ «Caller Computer Name» ซึ่งบันทึก คอมพิวเตอร์ที่เป็นต้นทางของการลองล็อกออนที่ทำให้เกิดการล็อก16 ขั้นตอนมาตรฐานคือระบุเครื่องต้นทางจากฟิลด์นี้ แล้ว ไล่ข้อมูลรับรองเก่าที่ยังค้างบนเครื่องนั้น ในกรณีส่วนใหญ่สาเหตุคือสิ่งที่ยังใช้ข้อมูลรับรองเก่าหลังเปลี่ยนรหัสผ่าน — ข้อมูลรับรองที่บันทึกไว้ เซสชัน RDP ที่ตัดค้าง หรือบริการหรืองานตามกำหนดเวลาที่ตั้งด้วยรหัสผ่านเก่า

วิธีมาตรฐานในการสอบสวนการล็อกบัญชีชื่อคอมพิวเตอร์ที่เรียกของ 4740 ระบุเครื่องต้นทาง แล้วไล่ข้อมูลรับรองที่บันทึกไว้ เซสชัน RDP ที่ตัดค้าง และบริการหรืองานที่ใช้รหัสผ่านเก่าบนเครื่องนั้น4740 เกิดการล็อกบัญชีตรวจชื่อคอมพิวเตอร์ที่เรียกระบุเครื่องต้นทางไล่ข้อมูลรับรองเก่าข้อมูลรับรองที่บันทึกไว้เซสชัน RDP ที่ตัดค้างบริการหรืองานที่ใช้รหัสผ่านเก่า

ภาพ 8: ระบุต้นทางจาก «ชื่อคอมพิวเตอร์ที่เรียก» ของ 4740 แล้วไล่ข้อมูลรับรองเก่าบนเครื่องนั้น

มีข้อควรระวังข้อหนึ่ง 4625 ถูกบันทึกบน คอมพิวเตอร์ที่รับการลองล็อกออน หากสาเหตุคือล็อกออนเครือข่ายจากเครื่องต้นทางไปยังไฟล์เซิร์ฟเวอร์ เป็นต้น บันทึก Security ของเครื่องต้นทางเองจะไม่มี 4625 ร่องรอยอยู่ที่ 4625 ของเซิร์ฟเวอร์ปลายทาง หรือถ้าเป็นบัญชีโดเมน ที่ 4776 (NTLM) หรือ 4771 (ความล้มเหลวของ Kerberos pre-authentication) บน DC78 เมื่อ «ไม่มีอะไรในบันทึกของเครื่องต้นทาง» ให้ไปดูฝั่งที่รับ

เครื่องที่เหลือร่องรอยความล้มเหลวความล้มเหลวของล็อกออนเครือข่ายไม่เหลือบนเครื่องต้นทางเอง แต่ถูกบันทึกที่ 4625 ของเซิร์ฟเวอร์ปลายทางที่รับการลอง และถ้าเป็นบัญชีโดเมน ร่องรอยยังเหลือที่ 4776 หรือ 4771 ของ DCล็อกออนเครือข่ายการรับรองบัญชีโดเมนเครื่องต้นทาง(ตัวเองไม่มี 4625)เซิร์ฟเวอร์ปลายทางบันทึก 4625ตัวควบคุมโดเมน4776(NTLM)/4771(Kerberos)

ภาพ 9: 4625 เหลือฝั่งที่รับ หากเครื่องต้นทางไม่มีอะไร ให้ดูเซิร์ฟเวอร์ปลายทางและฝั่ง DC

4.4. ตระกูล 4720 — การสร้าง แก้บัญชี และการเพิ่มเข้ากลุ่ม

เหตุการณ์การจัดการบัญชีเรียงหมายเลขติดกัน: 4720 (สร้างบัญชีผู้ใช้)17, 4726 (ลบ), 4738 (แก้) และฝั่งกลุ่มคือการเพิ่ม/เอาสมาชิกออก โปรดทราบว่า รหัสเหตุการณ์ของการเปลี่ยนสมาชิกกลุ่มขึ้นกับชนิดของกลุ่ม เป็น 4732/4733 สำหรับกลุ่มท้องถิ่น, 4728/4729 สำหรับกลุ่มโกลบอล และ 4756/4757 สำหรับกลุ่มยูนิเวอร์แซล14 Domain Admins เป็นกลุ่มโกลบอล ดังนั้นการเพิ่มเข้ากลุ่มนั้นโผล่เป็น 4728 — หากเตือนเฉพาะ 4732 จะพลาดพอดีเหตุการณ์ที่อยากจับที่สุด ในงานประจำส่วนใหญ่เป็นบันทึกงานเฮลป์เดสก์ แต่ «ผู้ใช้มาตรฐานถูกเพิ่มเข้ากลุ่มผู้ดูแลกะทันหัน» หรือ «บัญชีที่ไม่มีใครรู้จักเพิ่งถูกสร้าง» แม้เกิดครั้งเดียวก็สมควรสอบสวนทันที Microsoft เองยกการเพิ่มสมาชิกที่ไม่คาดคิดเข้ากลุ่มที่มีสิทธิ์พิเศษเป็นตัวอย่างของเหตุการณ์ที่ควรเตือนเป็นรายครั้ง3

ชนิดกลุ่มกับเหตุการณ์เพิ่มสมาชิกการเพิ่มสมาชิกเข้ากลุ่มมีรหัสเหตุการณ์ต่างกันตามชนิดกลุ่ม ท้องถิ่นบันทึกที่ 4732 โกลบอลที่ 4728 ยูนิเวอร์แซลที่ 4756 ดังนั้นการเพิ่มเข้ากลุ่มโกลบอล Domain Admins ดูที่ 4728ท้องถิ่นโกลบอลยูนิเวอร์แซลเพิ่มสมาชิกเข้ากลุ่มชนิดของกลุ่มคือ?บันทึกที่ 4732บันทึกที่ 4728บันทึกที่ 4756การเพิ่มเข้า Domain Admins อยู่ที่นี่เฝ้าแค่ 4732 จะพลาด

ภาพ 10: รหัสเหตุการณ์ของการเพิ่มสมาชิกแยกตามชนิดกลุ่ม การเพิ่มเข้า Domain Admins คือ 4728

4.5. 4688 — การสร้างโพรเซส การบันทึกบรรทัดคำสั่งเป็นสวิตช์แยก

4688 «A new process has been created» บันทึกบัญชีที่สร้าง เส้นทางไฟล์ปฏิบัติการของโพรเซสใหม่ โพรเซสแม่ และชนิดการยกระดับโทเค็นทุกครั้งที่มีการสร้างโพรเซส11 เป็นเหตุการณ์ที่มีคุณค่าต่อการสอบสวนสูง เพราะตอบได้ว่า «ใครรันอะไรบนเซิร์ฟเวอร์นี้»

อย่างไรก็ตามโดยค่าเริ่มต้น อาร์กิวเมนต์บรรทัดคำสั่งไม่ถูกบันทึก เฉพาะเมื่อเปิดค่า Group Policy «Include command line in process creation events» (Administrative Templates > System > Audit Process Creation) แยกต่างหาก ฟิลด์ «Process Command Line» ของ 4688 จึงมีอาร์กิวเมนต์1112 ค่านี้แทบจำเป็นสำหรับการไล่การเปิดที่น่าสงสัยอย่าง powershell -EncodedCommand ... แต่เปิดเมื่อเข้าใจความเสี่ยงที่ความลับปน ตามที่กล่าวในหมวด 7

ความสัมพันธ์ของ 4688 กับการบันทึกบรรทัดคำสั่งเมื่อเปิดการตรวจสอบการสร้างโพรเซส 4688 บันทึกบัญชี เส้นทางไฟล์ปฏิบัติการ และโพรเซสแม่ แต่อาร์กิวเมนต์บรรทัดคำสั่งถูกบันทึกเมื่อเปิด Group Policy แยก และมีความเสี่ยงที่ความลับอยู่ในข้อความธรรมดาคงค่าเริ่มต้นเปิด GPO เพิ่มเปิดการตรวจสอบการสร้างโพรเซสบันทึก 4688บัญชี เส้นทาง และโพรเซสแม่อยากเห็นอาร์กิวเมนต์ด้วย?บรรทัดคำสั่งว่างบันทึกอาร์กิวเมนต์ความเสี่ยงที่ความลับอยู่ในข้อความธรรมดา

ภาพ 11: การบันทึกบรรทัดคำสั่งของ 4688 เป็นสวิตช์แยก ก่อนเปิดให้ตรวจความเสี่ยงที่ความลับปนก่อน

4.6. 4698 — การสร้างงานตามกำหนดเวลา

4698 «A scheduled task was created» บันทึกชื่องานและ XML ทั้งก้อนของนิยามงาน (รวมคำสั่งที่รัน) เพราะการลงทะเบียนงานตามกำหนดเวลาเป็นเทคนิคที่มัลแวร์ใช้เพื่ออยู่รอดหลังรีบูต Microsoft จึงแนะนำให้เฝ้าเหตุการณ์การสร้างงาน15 แม้ในสภาพแวดล้อมที่ใช้งานตามกำหนดเวลาหนักเพื่อธุรกิจ การสร้างเองไม่ใช่เรื่องที่เกิดทุกวัน ดังนั้นระดับสัญญาณรบกวนค่อนข้างต่ำ

การคงอยู่ด้วยการลงทะเบียนงานกับ 4698มัลแวร์ลงทะเบียนงานตามกำหนดเวลาเป็นวิธีประจำเพื่ออยู่รอดหลังรีบูต ดังนั้นการเฝ้า 4698 ที่บันทึกตอนสร้างงานทำให้ไล่ได้ถึงนิยามงานรวมคำสั่งที่รันการคงอยู่ของมัลแวร์ลงทะเบียนงานเพื่ออยู่รอดบันทึก 4698XML ทั้งก้อนรวมคำสั่งที่รันตรวจจับด้วยการเฝ้าการสร้างงานการสร้างไม่ใช่เรื่องประจำวัน สัญญาณรบกวนน้อย

ภาพ 12: การลงทะเบียนงานซึ่งเป็นวิธีคงอยู่ที่ใช้ประจำเหลือที่ 4698 XML ทั้งก้อนไล่ได้ถึงคำสั่งที่รัน

อีกอันที่ควรจำคือ 1102 «The audit log was cleared» การล้างบันทึก Security ต้องเหลือเหตุการณ์นี้เสมอ ดังนั้นเมื่อพบว่า «บันทึกว่าง» จะแยกได้ว่าเป็นอุบัติเหตุหรือการดำเนินการ18

การแยกการลบบันทึกด้วย 1102การล้างบันทึก Security ต้องเหลือ 1102 เสมอ ดังนั้นเมื่อบันทึกว่าง การตรวจว่ามี 1102 หรือไม่ช่วยแยกได้ว่าเป็นการดำเนินการลบหรืออุบัติเหตุมีไม่มีบันทึกว่างการล้างต้องเหลือ 1102 เสมอมี 1102 หรือไม่?มีการดำเนินการลบสงสัยว่าเป็นอุบัติเหตุ

ภาพ 13: การล้างบันทึก Security ต้องเหลือ 1102 เสมอ บันทึกว่างแยกอุบัติเหตุกับการดำเนินการด้วยว่ามี 1102 หรือไม่

5. การออกแบบภาชนะของบันทึก — ขนาดสูงสุดและการเก็บ

ก่อนเพิ่มนโยบายการตรวจสอบ ให้ตรวจภาชนะรับ บันทึก Security มีขนาดสูงสุดและโหมดการเก็บ: ในโหมดทับ (โครงที่ใช้ทั่วไป) เมื่อถึงขนาดสูงสุด เหตุการณ์ใหม่จะทับเหตุการณ์เก่าสุด ในทางกลับกัน ในโหมดเก็บ (ไม่ทับ) เมื่อบันทึกเต็ม เหตุการณ์ใหม่ถูกทิ้งแทน10 ทั้งสองพฤติกรรมเป็นสาเหตุของ «พอบันทึกที่ต้องการก็ไม่มี» ดังนั้นการรู้สถานะปัจจุบันมาก่อน

# ตรวจภาชนะของบันทึก Security: โหมดเก็บรักษา ขนาดสูงสุด จำนวนระเบียนปัจจุบัน
Get-WinEvent -ListLog Security |
    Select-Object LogName, LogMode, MaximumSizeInBytes, RecordCount

# ตอนนี้เหลือจริงกี่วัน (เวลาของเหตุการณ์เก่าสุด)
Get-WinEvent -LogName Security -Oldest -MaxEvents 1 |
    Select-Object TimeCreated

Get-WinEvent -ListLog คืนโครงของบันทึกและจำนวนรายการพร้อมกัน9 ผลต่างระหว่าง «เวลาของเหตุการณ์เก่าสุด» กับเวลาปัจจุบันคือช่วงเก็บจริง หากไม่พอต่อความต้องการ (อยากย้อนสอบสวนกี่วัน) ให้ขยายขนาดสูงสุด ตั้งค่าได้ด้วย wevtutil sl Security /ms:<byte count> หรือแจกผ่าน Group Policy10

การออกแบบความจุโดยคำนวณย้อนจากจำนวนวันที่เก็บตรวจโครงและจำนวนด้วย ListLog ของ Get-WinEvent หาจำนวนวันที่เก็บจริงจากเวลาของเหตุการณ์เก่าสุด หากไม่พอต่อวันที่อยากย้อนตอนสอบสวนเหตุ ให้ขยายขนาดสูงสุดพอไม่พอตรวจโครงและจำนวนด้วย ListLogตรวจเวลาของเหตุการณ์เก่าสุดคำนวณจำนวนวันที่เก็บจริงพอต่อความต้องการ?คงขนาดปัจจุบันขยายขนาดสูงสุดตั้งด้วย wevtutil sl หรือ GPO

ภาพ 14: ตรวจจำนวนวันที่เหลือจริง แล้วคำนวณย้อนจากวันที่อยากย้อนเพื่อกำหนดขนาดสูงสุด

นอกจากนี้ยังมีตัวเลือกความปลอดภัยชื่อ «Audit: Shut down system immediately if unable to log security audits» (ที่เรียกกันว่า CrashOnAuditFail) เมื่อเปิด หากระบบบันทึกเหตุการณ์ตรวจสอบไม่ได้ มันจะหยุดด้วย STOP error C0000244 มีไว้สำหรับข้อกำหนดการรับรองที่ขาดร่องรอยการตรวจสอบไม่ได้เลย และปิดโดยค่าเริ่มต้น Microsoft เองเตือนว่าอาจถูกพลิกเป็น DoS โดยผู้โจมตีจงใจทำให้เกิดเหตุการณ์ท่วมเพื่อหยุดเซิร์ฟเวอร์ — จึงไม่ใช่สิ่งที่ควรเปิดง่าย ๆ ในสภาพแวดล้อมขนาดกลางและเล็กทั่วไป19

พฤติกรรมเมื่อบันทึกเต็มโครงการเก็บมีสองแบบคือโหมดทับกับโหมดไม่ทับ และเมื่อโหมดไม่ทับทำให้บันทึกการตรวจสอบไม่ได้ หาก CrashOnAuditFail ซึ่งเป็นการตั้งค่าอีกกรอบเปิดอยู่ ระบบจะหยุดด้วย STOP error C0000244โหมดทับไม่ทับใช่บันทึก Security ถึงขนาดสูงสุดโครงเก็บคือ?เหตุการณ์เก่าสุดถูกทับเหตุการณ์ใหม่ถูกทิ้งทั้งคู่เป็นสาเหตุที่พอบันทึกที่ต้องการก็หายCrashOnAuditFail เปิดด้วย?หยุดด้วย STOP C0000244

ภาพ 15: โครงการเก็บมีสองทาง คือทับหรือทิ้ง CrashOnAuditFail เป็นค่าอีกกรอบ ที่หยุดระบบเมื่อบันทึกไม่ได้

6. การสอบสวนในทางปฏิบัติ — กรอง Get-WinEvent และการส่งออก

6.1. การจำกัดในตัวแสดงเหตุการณ์

สำหรับการสอบสวนครั้งเดียว ตัวแสดงเหตุการณ์ก็พอ เปิดบันทึก Security แล้วระบุรหัสเหตุการณ์ (เช่น 4625) และช่วงเวลาด้วย «Filter Current Log» เงื่อนไขที่ตรวจซ้ำให้บันทึกเป็น «Custom View» เพื่อคลิกครั้งเดียวครั้งหน้า หากอยากจำกัดด้วยบัญชีเฉพาะ ไม่ใช่แค่รหัสเหตุการณ์ แก้คิวรี XPath โดยตรงที่แท็บ XML ของกล่องกรองได้

6.2. การดึงด้วย Get-WinEvent

สำหรับการสอบสวนที่มีจำนวนรายการมาก หลายเงื่อนไข หรือรันเป็นระยะ ให้สลับไป Get-WinEvent ของ PowerShell จุดสำคัญคือใช้ -FilterHashtable ซึ่งให้ตัวกรองทำงานฝั่งเซิร์ฟเวอร์9

การเลือกเครื่องมือสอบสวนการสอบสวนครั้งเดียวใช้ตัวกรองของตัวแสดงเหตุการณ์ก็พอ เงื่อนไขที่ดูซ้ำให้บันทึกเป็นมุมมองกำหนดเอง และการสอบสวนที่จำนวนมาก หลายเงื่อนไข หรือรันเป็นระยะ ให้สลับไป Get-WinEventครั้งเดียวเงื่อนไขที่ดูซ้ำปริมาณมาก หลายเงื่อนไข เป็นระยะเป็นการสอบสวนแบบใด?กรองด้วยตัวแสดงเหตุการณ์บันทึกเป็นมุมมองกำหนดเองสลับไป Get-WinEventกรองด้วย FilterHashtable

ภาพ 16: ครั้งเดียวใช้ตัวแสดงเหตุการณ์ ซ้ำแล้วใช้มุมมองกำหนดเอง จำนวนมากใช้ Get-WinEvent

# ดึงความล้มเหลวของการลงชื่อเข้า (4625) ใน 24 ชั่วโมงล่าสุด
Get-WinEvent -FilterHashtable @{
    LogName   = 'Security'
    Id        = 4625
    StartTime = (Get-Date).AddDays(-1)
}

# จัด «ใคร จากไหน ทำไม» เป็นตาราง
Get-WinEvent -FilterHashtable @{
    LogName   = 'Security'
    Id        = 4625
    StartTime = (Get-Date).AddDays(-1)
} | ForEach-Object {
    $x = [xml]$_.ToXml()
    $d = @{}
    $x.Event.EventData.Data | ForEach-Object { $d[$_.Name] = $_.'#text' }
    [pscustomobject]@{
        Time      = $_.TimeCreated
        Account   = "$($d.TargetDomainName)\$($d.TargetUserName)"
        LogonType = $d.LogonType
        Source    = "$($d.WorkstationName) $($d.IpAddress)"
        Status    = $d.Status
        SubStatus = $d.SubStatus
    }
} | Group-Object Account, Status, SubStatus, Source |
    Sort-Object Count -Descending |
    Format-Table Count, Name -AutoSize

พอมีแบบดึง EventData จากนิพจน์ XML ของเหตุการณ์แบบนี้แล้ว ใช้ซ้ำกับ 4624 หรือ 4688 ได้ตามที่เป็น การออกแบบการกรองของ Get-WinEvent — เมื่อใดใช้ FilterHashtable เมื่อใดใช้ XPath และวิธีแก้คิวรีที่ช้า — ครอบคลุมละเอียดใน «สอบสวนบันทึกเหตุการณ์ในทางปฏิบัติด้วย Get-WinEvent — ความเร็วของการกรองกำหนดเวลาสอบสวน»

แบบดึง EventData แล้วจัดรูปแปลงเหตุการณ์ที่ได้จาก Get-WinEvent เป็นนิพจน์ XML ดึงแต่ละฟิลด์ของ EventData แล้วจัดเป็นตาราง แบบนี้ใช้ซ้ำกับ 4624 หรือ 4688 ได้ด้วยวิธีเดียวกัน ไม่จำกัดที่ 4625ดึงด้วย Get-WinEventแปลงเหตุการณ์เป็น XMLดึง EventDataจัดเป็นตารางแล้วรวมใช้แบบเดียวกันกับ 4624 และ 4688

ภาพ 17: แบบดึง EventData จากนิพจน์ XML แล้วจัดเป็นตารางใช้ซ้ำได้แม้รหัสเหตุการณ์เปลี่ยน

6.3. การส่งออกด้วย wevtutil

หลักของบันทึกบนเครื่องที่สอบสวนคือ ส่งออกแล้วเก็บสำเนาก่อน จะถูกทับ10

rem รักษาบันทึก Security ทั้งก้อนเป็น evtx
wevtutil epl Security C:\logs\security-20260801.evtx

rem ส่งออกเฉพาะเหตุการณ์ 4625 จำกัดด้วย XPath
wevtutil epl Security C:\logs\security-4625.evtx /q:"*[System[(EventID=4625)]]"

ไฟล์ .evtx ที่ส่งออกวิเคราะห์บนเครื่องอื่นได้แบบเดียวกันด้วย Get-WinEvent -Path C:\logs\security-20260801.evtx9 นิสัยเก็บก่อนแล้วค่อยวิเคราะห์ คือชุดความคิดเดียวกับ «เก็บดัมป์ก่อน» ตอนสอบสวนแครช (ดู «แนะนำการเก็บดัมป์แครชของ Windows - WER/ProcDump/WinDbg»)

ไหลการเก็บก่อนแล้วค่อยวิเคราะห์ส่งออกบันทึก Security ของเครื่องที่สอบสวนเป็นไฟล์ evtx ด้วย wevtutil epl เพื่อเก็บไว้ แล้ววิเคราะห์แบบเดียวกันบนเครื่องอื่นด้วยการระบุ Path ของ Get-WinEventเครื่องที่สอบสวนเก็บเป็น evtx ด้วย wevtutil eplนำไปเครื่องอื่นวิเคราะห์ด้วย Get-WinEvent -Pathเก็บก่อนถูกทับ

ภาพ 18: เก็บก่อน แล้วค่อยวิเคราะห์ เก็บเป็น evtx แล้วสอบสวนบนเครื่องอื่นได้แบบเดียวกัน

7. กับดัก — สี่ข้อที่เหยียบง่ายในสนาม

(1) ความลับไปอยู่ในบรรทัดคำสั่งของ 4688 การเปิดการบันทึกบรรทัดคำสั่งใส่ อาร์กิวเมนต์ของทุกโพรเซสเข้าบันทึก Security เป็นข้อความธรรมดา Microsoft ระบุชัดว่า «ผู้ใช้ทุกคนที่มีสิทธิ์อ่านเหตุการณ์ความปลอดภัยจะอ่านอาร์กิวเมนต์บรรทัดคำสั่งของทุกโพรเซสที่สร้างสำเร็จได้ อาร์กิวเมนต์บรรทัดคำสั่งอาจมีความลับหรือข้อมูลส่วนตัวอย่างรหัสผ่าน» 12 หากมีแอปธุรกิจหรือสคริปต์แม้ตัวเดียวที่เปิดแบบ myapp.exe /user:admin /password:P@ssw0rd นั่นคือการเปิดเผยความลับต่อทุกคนที่ดูบันทึกได้ ก่อนเปิด ให้ไล่จุดที่ส่งความลับเป็นอาร์กิวเมนต์บรรทัดคำสั่งแล้วแก้ ที่ส่งออกหรือส่งต่อบันทึกไปก็ต้องจัดการในระดับความลับเดียวกัน

ลำดับการเปิดการบันทึกบรรทัดคำสั่งการบันทึกบรรทัดคำสั่งของ 4688 ต้องไล่แอปธุรกิจและสคริปต์ที่ส่งความลับเป็นอาร์กิวเมนต์ก่อนเปิด แก้จุดที่ตรง แล้วค่อยเปิดตามลำดับนั้น และที่เก็บกับที่ส่งต่อต้องใช้ระดับเดียวกันมีไม่มีไล่การส่งความลับเป็นอาร์กิวเมนต์มีรายการที่ตรง?แก้จุดที่ส่งเปิดการบันทึกบรรทัดคำสั่งที่เก็บและที่ส่งต่อใช้ระดับเดียวกัน

ภาพ 19: การบันทึกบรรทัดคำสั่งให้ «ไล่แล้วแก้ แล้วค่อยเปิด» ลำดับกลับคือการเปิดเผยความลับ

(2) ดำเนินงานโดยไม่รู้ว่าเกิดอะไรเมื่อบันทึกเต็ม ในโหมดทับ หลักฐานเก่าหายเงียบ ในโหมดไม่ทับ เหตุการณ์ใหม่ถูกทิ้ง และถ้า CrashOnAuditFail เปิด ระบบทั้งก้อนหยุด (หมวด 5)1019 ทางที่ถูกคือรู้ว่าเลือกพฤติกรรมใด และมีกลไก — ส่งออกตามกำหนด หรือแพลตฟอร์มเก็บบันทึก — ที่เก็บข้อมูลก่อนถูกทับ

(3) ตัวควบคุมโดเมนกับเครื่องปลายทางต้องดูบันทึกคนละชุด 4624/4625 ถูกบันทึกบน เครื่องที่ถูกเข้าถึง56 ในทางกลับกัน การตรวจข้อมูลรับรองของบัญชีโดเมน (4776 ของ NTLM) ถูกบันทึกบน เครื่องที่มีอำนาจเหนือข้อมูลรับรองนั้น — สำหรับบัญชีโดเมนคือ DC7 — และความล้มเหลวของ Kerberos pre-authentication (4771) ถูกบันทึก เฉพาะบน DC8 «ไฟล์เซิร์ฟเวอร์ไม่มี 4625» ไม่ได้แปลว่า «ไม่มีการโจมตี» ภาพรวมได้เมื่อเทียบ 4776/4771 บน DC ด้วย ดู «อธิบาย NTLM และ Kerberos ด้วยแผนภาพ — ทำไมการรับรองจึง «ตก» ไป NTLM» สำหรับไหลจริงของแต่ละโพรโทคอลการรับรอง

(4) นาฬิกาคลาดแล้วเทียบไม่ได้ การเรียงบันทึกจากหลายเครื่องเพื่อไล่ «เครื่องใดเกิด 4625 ก่อน 4740 นี้» ใช้ได้ก็ต่อเมื่อนาฬิกาของทุกเครื่องตรงกัน ในสภาพแวดล้อมโดเมน Kerberos เองกำหนดเพดานความคลาดของนาฬิกา (ค่าเริ่มต้น 5 นาที) เกินนั้นการรับรองเองเริ่มล้ม20 จากมุมสอบสวน ความคลาดแค่ไม่กี่วินาที — ไม่ต้องถึงห้านาที — ก็ทำให้อ่านลำดับเหตุการณ์ผิดได้ ดังนั้นการตรวจสถานะซิงค์ของ w32time ควรเป็นขั้นแรกสุดของขั้นตอนสอบสวน อีกอย่าง เวลาที่บันทึกของเหตุการณ์ถูกเก็บเป็น UTC และการแสดงตามเขตเวลาของเครื่องที่ดู ดังนั้นเมื่ออ่าน .evtx ที่นำกลับจากสาขาต่างประเทศหรือเซิร์ฟเวอร์ที่ตั้งเป็น UTC อย่าลืมแปลงเขตเวลา

ข้อสมมติของการซิงค์เวลาและการสอบสวนแบบเทียบการสอบสวนที่เทียบบันทึกหลายเครื่องตามลำดับเวลาสมมติว่านาฬิกาของแต่ละเครื่องตรงกัน ความคลาดไม่กี่วินาทีก็ทำให้อ่านลำดับก่อนหลังผิด และหากคลาดเกินค่าเริ่มต้น 5 นาที การรับรอง Kerberos เองล้ม จึงใส่การตรวจซิงค์ของ w32time เป็นขั้นแรกของขั้นตอนสอบสวนตรงกันคลาดไม่กี่วินาทีเกินค่าเริ่มต้น 5 นาทีเทียบบันทึกหลายเครื่องนาฬิกาตรงกันเป็นข้อสมมตินาฬิกาคลาดแค่ไหน?ไล่ตามลำดับเวลาได้อ่านลำดับก่อนหลังผิดการรับรอง Kerberos ล้มตรวจ w32time เป็นขั้นแรกของขั้นตอน

ภาพ 20: การเทียบหลายเครื่องสมมติว่านาฬิกาตรงกัน ความคลาดไม่กี่วินาทีก็นำไปสู่การอ่านลำดับก่อนหลังผิด

8. สรุป

  • นโยบายการตรวจสอบมีสองระบบ «พื้นฐาน» และ «ขั้นสูง» การผสมทำให้ผลคาดไม่ได้ รวมฝั่งขั้นสูง ตรวจสถานะปัจจุบันด้วย auditpol /get /category:* แล้วออกแบบจากตรงนั้น
  • «เปิดทั้งหมด» ฆ่าการสอบสวนด้วยสัญญาณรบกวนและความพอง เริ่มจากคำแนะนำฐานของ Microsoft แล้วเดินตามตารางตัดสินในหมวด 3 ที่ยึดล็อกออน การจัดการบัญชี และการสร้างโพรเซส
  • 4624 อ่านด้วยชนิดล็อกออน 4625 ด้วยรหัส Status/Sub Status 4740 ด้วย Caller Computer Name และ 4688 ด้วยโพรเซสแม่กับบรรทัดคำสั่ง — แต่ละเหตุการณ์มีฟิลด์เฉพาะที่ต้องดู
  • ภาชนะของบันทึก (ขนาดสูงสุดและโหมดการเก็บ) คือครึ่งหนึ่งของการออกแบบการตรวจสอบ ตรวจจำนวนวันที่เก็บจริง กำหนดขนาดโดยคำนวณย้อนจากความต้องการ และส่งออกหรือรวบก่อนถูกทับ
  • ตรวจความเสี่ยงที่ความลับปนก่อนเปิดการบันทึกบรรทัดคำสั่งของ 4688 ที่ที่แต่ละเหตุการณ์ถูกบันทึก และการซิงค์นาฬิกา เป็นข้อสมมติของการเทียบข้ามเครื่อง
  • เริ่มสอบสวนด้วยตัวกรองของตัวแสดงเหตุการณ์ สลับไป Get-WinEvent -FilterHashtable เมื่อทำซ้ำ เก็บด้วย wevtutil epl อย่าพังลำดับ «เก็บก่อน แล้วค่อยวิเคราะห์»

บทความที่เกี่ยวข้อง

ด้านให้คำปรึกษาที่เกี่ยวข้อง

KomuraSoft LLC รับคำปรึกษาเรื่องนโยบายการตรวจสอบและการออกแบบบันทึกในสภาพแวดล้อม Windows การสอบสวน «เมื่อใด ใคร ทำอะไร» จากบันทึกเหตุการณ์ และการวิเคราะห์สาเหตุของปัญหาที่แอปธุรกิจเจอรอบการรับรองและการตรวจสอบ เริ่มจากขั้น «ถูกบอกให้ดูบันทึก แต่ไม่รู้จะเริ่มตรงไหน» ก็ได้

ลิงก์อ้างอิง

  1. Microsoft Learn, Advanced security auditing FAQ. ว่าด้วยความต่างระหว่างนโยบายการตรวจสอบพื้นฐาน (เก้าค่าใต้ Local Policies) กับนโยบายการตรวจสอบขั้นสูง ว่าด้วยการเปิดหมวดพื้นฐานหนึ่งหมวดเทียบเท่าการเปิดหมวดย่อยที่คู่กันทั้งหมด ว่าด้วยสองระบบเข้ากันไม่ได้และการใช้ร่วมทำให้ผลตรวจสอบอยู่ในสถานะที่คาดไม่ได้จึงห้ามผสม ว่าด้วยการใช้ฝั่งขั้นสูงผ่าน Group Policy จะล้างการตั้งค่าการตรวจสอบที่มีอยู่ ว่าด้วยความจำเป็นต้องเปิด «Audit: Force audit policy subcategory settings to override audit policy category settings» และว่าด้วยการลดปริมาณเหตุการณ์ด้วยการระบุและจำกัดทรัพยากร กิจกรรม และผู้ใช้ที่สำคัญ  2 3 4

  2. Microsoft Learn, auditpol. ว่าด้วยคำสั่ง auditpol ที่แสดง (/get) ตั้ง (/set) สำรองเป็น CSV (/backup) คืน (/restore) และล้าง (/clear) นโยบายการตรวจสอบของระบบได้  2

  3. Microsoft Learn, System Audit Policy recommendations. ว่าด้วยตารางค่าเริ่มต้นของ Windows คำแนะนำฐาน และคำแนะนำที่เข้มขึ้นแยกตามเวิร์กสเตชันกับเซิร์ฟเวอร์ ว่าด้วยคำแนะนำเป็นเพียงจุดตั้งต้นที่แต่ละองค์กรต้องพิจารณาและทดสอบตามภัยคุกคามและความทนต่อความเสี่ยง ว่าด้วยหมวดย่อย Logon ที่เปิดทั้งสำเร็จและล้มเหลวโดยค่าเริ่มต้นตั้งแต่ Windows 10 1809 ว่าด้วยการเฝ้าเวิร์กสเตชันสำคัญไม่แพ้การเฝ้าเซิร์ฟเวอร์ ว่าด้วยตัวอย่างเหตุการณ์ที่ควรเตือนเป็นรายครั้งอย่างการเพิ่มสมาชิกที่ไม่คาดคิดเข้ากลุ่มที่มีสิทธิ์พิเศษ และว่าด้วยการตรวจจับการพุ่งของล็อกออนที่ล้มโดยเทียบกับฐาน  2 3 4

  4. Microsoft Learn, Audit: Force audit policy subcategory settings (Windows Vista or later) to override audit policy category settings. ว่าด้วยการจัดการการตรวจสอบอย่างละเอียดผ่านกว่า 40 หมวดย่อย ว่าด้วยการปล่อยค่านี้เปิดเป็นแนวปฏิบัติที่ดี โดยค่าเริ่มต้นเปิดสำหรับไคลเอนต์ เซิร์ฟเวอร์สมาชิก และ DC และว่าด้วยคำเตือนว่าค่าที่เกิดเหตุการณ์มหาศาล เช่น การเปิดการตรวจสอบสำเร็จของทั้งหมวดย่อยการใช้สิทธิ์พิเศษ ทำให้หาเหตุการณ์อื่นในบันทึกความปลอดภัยยาก และกระทบประสิทธิภาพอย่างมีนัย  2 3 4

  5. Microsoft Learn, 4624(S): An account was successfully logged on. ว่าด้วย 4624 ที่ถูกบันทึกบนเครื่องที่ถูกเข้าถึงตอนสร้างเซสชันล็อกออน ว่าด้วยรายการชนิดล็อกออน (2 = Interactive, 3 = Network, 4 = Batch, 5 = Service, 7 = Unlock, 8 = NetworkCleartext, 9 = NewCredentials, 10 = RemoteInteractive, 11 = CachedInteractive) ว่าด้วยแฟล็ก Elevated Token ว่าด้วย Authentication Package (NTLM/Kerberos/Negotiate) และ Package Name ของ NTLM (NTLM V1/V2/LM) และว่าด้วยการเทียบผ่าน Logon ID กับเหตุการณ์อย่าง 4672  2 3 4 5

  6. Microsoft Learn, 4625(F): An account failed to log on. ว่าด้วย 4625 ที่ถูกบันทึกบนคอมพิวเตอร์ที่ถูกลองล็อกออน (การลองที่เครื่องผู้ใช้ก็คือเครื่องนั้น) ว่าด้วยหมวดย่อยคือ Account Lockout และ Logon ว่าด้วยความหมายของรหัส Status/Sub Status (0xC0000064 = ชื่อผู้ใช้ผิด, 0xC000006A = รหัสผ่านผิด, 0xC000006D = ชื่อผู้ใช้หรือข้อมูลการรับรองผิด, 0xC000006F = นอกช่วงเวลาที่อนุญาต, 0xC0000070 = เวิร์กสเตชันที่ไม่อนุญาต, 0xC0000072 = บัญชีถูกปิด, 0xC000015B = ชนิดล็อกออนที่ไม่อนุญาต, 0xC0000193 = บัญชีหมดอายุ, 0xC0000234 = ถูกล็อก) และว่าด้วย 0xC0000064 ที่เกิดซ้ำอาจเป็นสัญญาณการโจมตีแบบไล่ชื่อบัญชี  2 3 4 5

  7. Microsoft Learn, 4776(S, F): The computer attempted to validate the credentials for an account. ว่าด้วย 4776 ที่ถูกบันทึกทุกครั้งที่มีการตรวจข้อมูลรับรองสำหรับการรับรอง NTLM ว่าด้วยถูกบันทึกเฉพาะบนคอมพิวเตอร์ที่มีอำนาจเหนือข้อมูลรับรองนั้น — ตัวควบคุมโดเมนสำหรับบัญชีโดเมน หรือคอมพิวเตอร์ท้องถิ่นสำหรับบัญชีท้องถิ่น และว่าด้วยบันทึกทั้งสำเร็จและล้มเหลว  2 3 4

  8. Microsoft Learn, 4771(F): Kerberos pre-authentication failed. ว่าด้วย 4771 ที่ถูกบันทึกทุกครั้งที่ KDC ออก Kerberos TGT ไม่ได้ (รหัสผ่านผิด หมดอายุ เป็นต้น) และว่าด้วยเหตุการณ์นี้เกิดเฉพาะบนตัวควบคุมโดเมน  2 3 4

  9. Microsoft Learn, Get-WinEvent (Microsoft.PowerShell.Diagnostics). ว่าด้วยการดึงโครงบันทึก (LogMode, MaximumSizeInBytes, RecordCount) ผ่าน -ListLog ว่าด้วยการกรองอย่างมีประสิทธิภาพผ่าน -FilterHashtable ที่ระบุเป็นแฮชเทเบิลของ LogName, Id, StartTime เป็นต้น ว่าด้วยการอ่านไฟล์ .evtx ที่บันทึกไว้ผ่าน -Path และว่าด้วยการดึงเหตุการณ์จากเก่าสุดและตามจำนวนผ่าน -Oldest / -MaxEvents  2 3 4

  10. Microsoft Learn, wevtutil. ว่าด้วยการตั้งขนาดสูงสุด (/ms) และโหมดการเก็บ (/rt) ผ่าน set-log (sl) ว่าด้วยโหมดการเก็บ true หมายถึงเหตุการณ์ที่มีอยู่ถูกเก็บและเหตุการณ์ใหม่ถูกทิ้งเมื่อบันทึกเต็ม ส่วน false หมายถึงเหตุการณ์ใหม่ทับเหตุการณ์เก่าสุดที่มีอยู่ ว่าด้วยการส่งออกบันทึกเหตุการณ์ไปไฟล์ผ่าน export-log (epl) พร้อมตัวเลือก /q สำหรับจำกัดด้วยคิวรี XPath และว่าด้วยการรันคิวรีผ่าน query-events (qe)  2 3 4 5

  11. Microsoft Learn, 4688(S): A new process has been created. ว่าด้วย 4688 ที่ถูกบันทึกทุกครั้งที่โพรเซสใหม่เริ่ม ว่าด้วยมีบัญชีผู้สร้าง เส้นทางไฟล์ปฏิบัติการของโพรเซสใหม่ ชื่อโพรเซสผู้สร้าง (แม่) และชนิดการยกระดับโทเค็น และว่าด้วยฟิลด์ Process Command Line ว่างโดยค่าเริ่มต้น จะมีค่าเมื่อเปิดค่า Group Policy «Include command line in process creation events»  2 3

  12. Microsoft Learn, Command line process auditing. ว่าด้วยการบันทึกบรรทัดคำสั่งที่ต้องการทั้งการตรวจสอบการสร้างโพรเซสของนโยบายการตรวจสอบขั้นสูง และ «Include command line in process creation events» (Administrative Templates > System > Audit Process Creation ค่าเริ่มต้นยังไม่กำหนด) ว่าด้วยข้อควรระวังว่าพอเปิด ข้อมูลบรรทัดคำสั่งของทุกโพรเซสถูกบันทึกเป็นข้อความธรรมดาในบันทึกเหตุการณ์ความปลอดภัย และผู้ใช้ทุกคนที่มีสิทธิ์อ่านเหตุการณ์ความปลอดภัยจะอ่านอาร์กิวเมนต์ซึ่งอาจมีข้อมูลลับอย่างรหัสผ่านได้ และว่าด้วยนโยบายการตรวจสอบขั้นสูงที่ถูกทับด้วยค่าพื้นฐานจะเกิดเหตุการณ์ 4719 ซึ่งค่า «บังคับ» ป้องกันได้  2 3 4

  13. Microsoft Learn, Audit Account Lockout. ว่าด้วยหมวดย่อย Account Lockout ที่ตรวจสอบการล็อกออนที่ล้มต่อบัญชีที่ถูกล็อกอยู่ ว่าด้วยเหตุการณ์ที่เกิดคือ 4625(F) ว่าด้วยหมวดย่อยนี้ไม่มีเหตุการณ์สำเร็จจึงไม่มีประโยชน์ในการเปิดการตรวจสอบสำเร็จ และว่าด้วยการตรวจสอบความล้มเหลวถูกแนะนำสำหรับคอมพิวเตอร์ทุกชนิด 

  14. Microsoft Learn, Audit Security Group Management. ว่าด้วยหมวดย่อยนี้ตรวจสอบการสร้าง แก้ และลบกลุ่มความปลอดภัย รวมการเพิ่มและเอาสมาชิกออก ว่าด้วยรหัสเหตุการณ์ของการเพิ่ม/เอาสมาชิกออกต่างกันตามชนิดกลุ่ม — 4732/4733 สำหรับกลุ่มท้องถิ่น 4728/4729 สำหรับกลุ่มโกลบอล และ 4756/4757 สำหรับกลุ่มยูนิเวอร์แซล ว่าด้วยมีเหตุการณ์เฉพาะกลุ่มโดเมนอย่าง 4728 และว่าด้วยหมวดย่อยนี้ไม่มีเหตุการณ์ล้ม จึงแนะนำการตรวจสอบสำเร็จสำหรับคอมพิวเตอร์ทุกชนิด  2

  15. Microsoft Learn, 4698(S): A scheduled task was created. ว่าด้วย 4698 ที่ถูกบันทึกทุกครั้งที่มีการสร้างงานตามกำหนดเวลา ว่าด้วยหมวดย่อยคือ Other Object Access Events ว่าด้วยบันทึกชื่องานและ XML ทั้งก้อนของนิยามงานรวมคำสั่งที่รัน และว่าด้วยการเฝ้าเหตุการณ์การสร้างงาน โดยเฉพาะบนเครื่องสำคัญ ถูกแนะนำเพราะมัลแวร์ใช้งานตามกำหนดเวลาเพื่อคงอยู่ข้ามรีบูตเป็นประจำ  2

  16. Microsoft Learn, 4740(S): A user account was locked out. ว่าด้วย 4740 ที่ถูกบันทึกทุกครั้งที่บัญชีผู้ใช้ถูกล็อก ว่าด้วยหมวดย่อยคือ User Account Management และว่าด้วยฟิลด์ Caller Computer Name ที่บันทึกชื่อคอมพิวเตอร์ที่เป็นต้นทางของการลองล็อกออนที่ทำให้เกิดการล็อก 

  17. Microsoft Learn, 4720(S): A user account was created. ว่าด้วย 4720 ที่ถูกบันทึกบนตัวควบคุมโดเมน เซิร์ฟเวอร์สมาชิก และเวิร์กสเตชันทุกครั้งที่มีการสร้างวัตถุผู้ใช้ใหม่ และว่าด้วยหมวดย่อยคือ User Account Management 

  18. Microsoft Learn, 1102(S): The audit log was cleared. ว่าด้วยเหตุการณ์ 1102 ที่ถูกบันทึกทุกครั้งที่มีการล้างบันทึกการตรวจสอบความปลอดภัยของ Windows 

  19. Microsoft Learn, Audit: Shut down system immediately if unable to log security audits. ว่าด้วยระบบที่หยุดด้วยข้อความ STOP C0000244 {Audit Failed} หากค่านี้เปิดและบันทึกการตรวจสอบความปลอดภัยไม่ได้ ว่าด้วยค่าเริ่มต้นคือ Disabled ว่าด้วยอาจถูกพลิกเป็น DoS ด้วยการจงใจทำให้เกิดเหตุการณ์ความปลอดภัยปริมาณมากเพื่อบังคับชัตดาวน์ และว่าด้วยความเสี่ยงที่ข้อมูลแอปใช้ไม่ได้เพราะการหยุดกะทันหัน  2

  20. Microsoft Learn, Maximum tolerance for computer clock synchronization. ว่าด้วย Kerberos v5 ที่ใช้ตราประทับเวลาเป็นกลไกต้านการโจมตีแบบรีเพลย์ จึงตั้งความคลาดสูงสุดของนาฬิการะหว่างไคลเอนต์กับตัวควบคุมโดเมน (ทั้งค่าเริ่มต้นและคำแนะนำคือ 5 นาที) และหากเกิน ตราประทับเวลาจะไม่ถือว่าแท้ 

บทความล่าสุดที่มีแท็กเดียวกัน เพื่อเจาะลึกหัวข้อใกล้เคียง

คู่มือปฏิบัติ Group Policy (GPO) — กลไก การยืนยันการใช้ และการเลือกระหว่าง GPO กับ Intune

ยังแตะสภาพแวดล้อม AD โดยไม่รู้จริงว่าการแจกผ่าน GPO หมายความว่าอะไรอยู่หรือไม่ บทความนี้อธิบายกลไกของ Group Policy ลำดับการใช้ LSDOU การย...

เชิงลึกของการจำลองเสมือนบน Windows (ตอนที่ 2) — หน่วยความจำที่แม้เคอร์เนลก็มองไม่เห็น: กลไกของ VBS, HVCI และ Credential Guard

เมื่อติดตั้งใหม่บนฮาร์ดแวร์ที่รองรับ VBS จะเปิดตามค่าเริ่มต้น และใช้ hypervisor กับ SLAT สร้างการแยกที่แข็งกว่าเคอร์เนล บทความนี้อธิบายโค...

Named Pipe ในทางปฏิบัติ — IPC มาตรฐานของ Windows ตั้งแต่การออกแบบถึงความปลอดภัย

คู่มือเชิงปฏิบัติเรื่อง named pipe ซึ่งเป็นการสื่อสารระหว่างโปรเซสมาตรฐานของ Windows บทความนี้จัดระเบียบจากแหล่งปฐมภูมิ ทั้งการเลือกระหว่...

จาก Group Policy สู่ Intune — คู่มือโยกย้ายการจัดการอุปกรณ์สำหรับธุรกิจขนาดกลางและเล็ก

เมื่อเซิร์ฟเวอร์ AD ถึงรอบเปลี่ยน ควรอยู่กับ Group Policy หรือย้ายไป Entra ID บวก Intune? บทความนี้จัดสำหรับธุรกิจขนาดกลางและเล็กถึงความต...

หน้าเหล่านี้วางหัวข้อไว้ในบริบทที่กว้างขึ้นของบริการและการตัดสินใจ

บทความนี้เกี่ยวข้องโดยตรงกับบริการต่อไปนี้

คำถามที่พบบ่อย

คำถามที่มักพบในการปรึกษาเกี่ยวกับหัวข้อของบทความนี้

ไม่ได้ตั้งนโยบายการตรวจสอบเลย ทำไมบันทึก Security ยังมี 4624 และ 4625?
เพราะ Windows มีหมวดย่อยการตรวจสอบที่เปิดโดยค่าเริ่มต้น หมวดย่อย «ล็อกออน» ตัวอย่างเช่น เปิดทั้งสำเร็จและล้มเหลวโดยค่าเริ่มต้นตั้งแต่ Windows 10 เวอร์ชัน 1809 ดังนั้น 4624 (สำเร็จ) และ 4625 (ล้มเหลว) ถูกบันทึกแม้คุณไม่ได้ตั้งอะไรเอง แต่ถ้าปล่อยค่าเริ่มต้นไว้ เหตุการณ์จำนวนมากที่อยากได้ตอนสอบสวน — การตรวจข้อมูลรับรอง (4776) หรือการสร้างโพรเซส (4688) เป็นต้น — จะไม่ถูกบันทึก ตรวจว่าอะไรเปิดในสภาพแวดล้อมของตนเองด้วย `auditpol /get /category:*` จากนั้นแนวปฏิบัติคือเปิดหมวดย่อยที่ขาดอย่างชัดเจนฝั่งนโยบายการตรวจสอบขั้นสูง
อยากสอบสวนการลงชื่อเข้าใช้ที่ล้ม แต่หา 4625 ในบันทึก Security ของเซิร์ฟเวอร์เป้าหมายไม่เจอ ควรดูที่ไหน?
ยืนยันหลักก่อน: 4625 ถูกบันทึกบน «คอมพิวเตอร์ที่ถูกลองล็อกออน» การลงชื่อเข้าใช้ที่เครื่องผู้ใช้ล้ม ให้ดูเครื่องนั้น การเข้าถึงไฟล์เซิร์ฟเวอร์ล้ม ให้ดูไฟล์เซิร์ฟเวอร์ ต่อมาใช้ `auditpol /get /category:*` ตรวจว่าการตรวจสอบความล้มเหลวของหมวดย่อย «ล็อกออน» เปิดอยู่หรือไม่ สำหรับบัญชีโดเมน ร่องรอยมักไปอยู่ที่การตรวจข้อมูลรับรอง (4776) หรือความล้มเหลวของ Kerberos pre-authentication (4771) บนตัวควบคุมโดเมน และเมื่อระบุเครื่องไม่ได้ การเริ่มจากฝั่ง DC มักเร็วกว่า หากยังไม่เจอ ให้ตรวจว่าเหตุการณ์เก่าถูกทับไปแล้วหรือไม่ (เทียบขนาดสูงสุดของบันทึกกับเวลาของเหตุการณ์เก่าสุด)
ควรเปิดการบันทึกบรรทัดคำสั่งของการสร้างโพรเซส (4688) หรือไม่?
คุณค่าต่อการสอบสวนสูงมาก แต่เป็นค่าที่ควรเปิดเมื่อเข้าใจความเสี่ยงแล้วเท่านั้น พอเปิด อาร์กิวเมนต์บรรทัดคำสั่งของทุกโพรเซสถูกบันทึกเป็นข้อความธรรมดาในบันทึก Security หากมีสคริปต์หรือแอปธุรกิจแม้ตัวเดียวที่ส่งรหัสผ่านหรือคีย์ API เป็นอาร์กิวเมนต์ ความลับนั้นจะเห็นได้สำหรับทุกคนที่อ่านบันทึก Security ได้ Microsoft เองระบุข้อควรระวังนี้ชัด ลำดับที่แนะนำคือตรวจก่อนว่าสคริปต์ของตนส่งความลับเป็นอาร์กิวเมนต์หรือไม่ แก้จุดที่ส่ง แล้วค่อยเปิดค่า
ขนาดสูงสุดของบันทึก Security ควรเท่าไร?
วิธีที่ถูกคือคำนวณย้อนจาก «อยากเก็บกี่วันไว้ในมือ» ไม่มีตัวเลขที่ใช้ได้ทุกที่ ตรวจค่าปัจจุบันและพฤติกรรมจริงด้วย `Get-WinEvent -ListLog Security` ผลต่างระหว่างเวลาของเหตุการณ์เก่าสุดกับเวลาปัจจุบันคือ «จำนวนวันที่เก็บจริงตอนนี้» การเพิ่มหมวดย่อยการตรวจสอบเพิ่มปริมาณเหตุการณ์ด้วย จึงต้องตรวจช่วงเก็บจริงนี้อีกครั้งหลังเปลี่ยนค่า การรับมือเหตุไม่ใช่เรื่องแปลกที่จะต้องการบันทึกหลายสัปดาห์ถึงหลายเดือนก่อน ดังนั้นการส่งออกเป็นระยะก่อนถูกทับ หรือรวบไปเครื่องอื่นด้วยกลไกเก็บบันทึก จะทำให้สบายใจกว่า
สอบสวนสาเหตุของการล็อกบัญชี (4740) อย่างไร?
เบาะแสแรกคือฟิลด์ «Caller Computer Name» ในเหตุการณ์ 4740 มันบันทึกคอมพิวเตอร์ที่เป็นต้นทางของการล็อกออนที่ล้มซึ่งทำให้เกิดการล็อก อย่างไรก็ตาม บันทึกความล้มเหลวเอง (4625) อยู่ฝั่งที่รับการลองล็อกออน ไม่ใช่เครื่องต้นทาง หากมาจากล็อกออนเครือข่าย ให้ไล่ตามเวลาผ่าน 4625 บนเซิร์ฟเวอร์ปลายทาง หรือถ้าเป็นบัญชีโดเมน ผ่าน 4776/4771 บนตัวควบคุมโดเมน พอระบุเครื่องต้นทางแล้ว ให้ไล่สิ่งที่ยังถือข้อมูลรับรองเก่าหลังเปลี่ยนรหัสผ่าน — ข้อมูลรับรองที่บันทึกไว้ เซสชัน Remote Desktop ที่ตัดค้าง หรือบริการหรืองานตามกำหนดเวลาที่ตั้งด้วยรหัสผ่านเก่า หากการล็อกเกิดซ้ำ ให้ตรวจด้วยว่าการซิงค์นาฬิกาคลาดหรือไม่

โปรไฟล์ผู้เขียน

หน้าแนะนำผู้เขียนบทความ

Go Komura

ผู้แทนของ KomuraSoft LLC

เชี่ยวชาญด้านการพัฒนาซอฟต์แวร์ Windows ที่ปรึกษาเทคนิค และการตรวจสอบบั๊ก โดยเฉพาะโปรเจกต์ที่มีระบบเดิมและบั๊กที่ทำซ้ำได้ยาก

ลิงก์สาธารณะ

กลับไปยังบล็อก