การโจมตีตั๋วเงิน
ในโพสต์แรกของซีรีส์เหล่านี้ เราได้แสดงให้เห็นว่าฝ่ายตรงข้ามสามารถค้นพบบัญชีบริการ Active Directory ด้วย PowerShell ได้อย่างไร และโพสต์ที่สองได้สาธิตวิธีถอดรหัสรหัสผ่านโดยใช้เทคนิค Kerberoasting ตอนนี้เรามาดูกันว่าผู้โจมตีสามารถใช้ประโยชน์จากบัญชีบริการที่ถูกบุกรุกโดยใช้ Kerberos Silver Tickets เพื่อปลอมตั๋ว TGS ได้อย่างไร
ภาพรวมตั๋วเงิน
Silver Tickets เป็นตั๋ว Ticket Granting Service (TGS) ปลอมแปลงที่ผู้โจมตีสร้างขึ้นโดยใช้แฮชรหัสผ่านของบัญชีบริการที่ถูกบุกรุก ดังตัวอย่างของเรา เมื่อผู้โจมตีถอดรหัสรหัสผ่านของบัญชีบริการ อาจดูเหมือนว่าพวกเขาไม่จำเป็นต้องปลอมตั๋วเพื่อดำเนินการในนามของผู้โจมตี
อย่างไรก็ตาม Silver Tickets มอบสิทธิประโยชน์หลายประการ ดังต่อไปนี้:
- ผู้โจมตีไม่จำเป็นต้องตรวจสอบบัญชีกับตัวควบคุมโดเมนเพื่อรับ TGS ปลอม ดังนั้นพวกเขาสามารถดำเนินการต่อได้โดยไม่ต้องสร้างการรับส่งข้อมูลเครือข่ายและบันทึกเหตุการณ์เพื่อหลีกเลี่ยงการตรวจจับ
- สามารถสร้าง Silver Ticket สำหรับบัญชีผู้ใช้ใดก็ได้ แม้แต่บัญชีสมมติ วิธีนี้ช่วยให้ผู้โจมตีสามารถใช้ประโยชน์จากบัญชีบริการโดยไม่เสี่ยงต่อการตรวจจับ ซึ่งอาจส่งผลให้มีการรีเซ็ตรหัสผ่านและสูญเสียการเข้าถึง
- Privileged Attribute Certificate (PAC) ในตั๋ว TGS ยังสามารถจัดการเพื่อยกระดับการเข้าถึงโดเมนของบัญชีได้ ในกรณีส่วนใหญ่ PAC จะไม่ตรวจสอบกับตัวควบคุมโดเมนเมื่อมีการจัดเตรียม TGS
ตัวอย่างเช่น ในโพสต์ที่แล้ว เราได้แสดงให้เห็นว่าผู้โจมตีสามารถโจมตีบัญชีบริการ SQL ได้อย่างไร แต่บัญชีนั้นไม่สามารถเข้าถึงฐานข้อมูลและไม่สามารถเข้าสู่ระบบแบบโต้ตอบกับคอมพิวเตอร์ได้ ดังนั้นจึงไม่มีสิ่งใดมากมายที่ผู้โจมตีสามารถทำได้ง่ายๆ Silver Tickets ช่วยให้พวกเขายกระดับสิทธิ์เพื่อให้สามารถใช้เพื่อควบคุมฐานข้อมูลทั้งหมดที่โฮสต์บน SQL Server ที่ถูกบุกรุกได้เต็มรูปแบบ ยิ่งไปกว่านั้น พวกเขาสามารถทำเช่นนี้ได้ในขณะที่ยังตรวจจับได้ยากอีกด้วย
ตั๋วเงิน: วิธีการทำงาน
ต่อไปนี้เป็นขั้นตอนที่เกี่ยวข้องกับการโจมตี Silver Ticket
ขั้นตอนที่ 1 รับแฮรหัสผ่านของบริการหรือบัญชีคอมพิวเตอร์
ในการปลอมตั๋ว TGS ฝ่ายตรงข้ามจะต้องมีแฮชรหัสผ่าน NTLM สำหรับบัญชีบริการที่ใช้บริการบนคอมพิวเตอร์หรือบัญชีคอมพิวเตอร์เอง ในโพสต์ที่แล้ว เรามุ่งเน้นที่การโจมตีบัญชีบริการที่ใช้บริการ SQL บนโฮสต์ใดโฮสต์หนึ่ง ประโยชน์ของการใช้บัญชีบริการคือบัญชีเหล่านี้อาจถูกบุกรุกได้โดยไม่ต้องมีสิทธิ์ยกระดับโดเมน เพื่อที่จะประนีประนอมแฮช NTLM ของบัญชีคอมพิวเตอร์ ฝ่ายตรงข้ามจะต้องได้รับสิทธิ์ของผู้ดูแลระบบในคอมพิวเตอร์เครื่องนั้น หากสามารถรับแฮช NTLM ของคอมพิวเตอร์ได้ พวกเขาสามารถปลอมตั๋วสำหรับบริการใดๆ ที่ทำงานเป็นบัญชีระบบภายในเครื่องได้ ซึ่งอาจรวมถึงบริการ Common Internet File System (บริการ CIFS) ซึ่งจะทำให้สามารถเข้าถึงไฟล์ทั้งหมดที่จัดเก็บไว้ในคอมพิวเตอร์ได้ Microsoft อธิบายบริการอื่นๆ ที่ทำงานบนระบบปฏิบัติการ Windows ที่นี่
สำหรับโพสต์นี้ เราจะดำเนินการต่อด้วยตัวอย่างของบัญชีบริการ SQL Server ที่ถูกบุกรุก
ขั้นตอนที่ 2 สร้างตั๋วบริการปลอมแปลงโดยใช้ Mimikatz
ด้วยแฮช NTLM ของบัญชีบริการตั้งแต่หนึ่งบัญชีขึ้นไป ผู้โจมตีสามารถสร้าง Silver Tickets โดยใช้ Mimikatz ข้อมูลที่จำเป็นในการสร้างตั๋วเหล่านี้ประกอบด้วย:
Domain SID — สามารถรับได้อย่างง่ายดายโดยการออกคำสั่ง “Whoami /User” จากพร้อมท์คำสั่ง และคัดลอกค่า SID โดยไม่มี Relative ID (RID) ในตอนท้าย
- เป้าหมาย— นี่คือโฮสต์ ซึ่งสามารถคัดลอกได้จากค่า SPN ในกรณีของเรา นี่คือ jefflab-sql02.jefflab.local:1433
- บริการ— นี่คือชื่อของบริการที่จะสร้างตั๋ว จะต้องเป็นบริการที่ทำงานเป็นบัญชีบริการที่ถูกบุกรุก ตัวอย่างของเราจะใช้ MSSQLSvc
- ผู้ใช้— นี่คือผู้ใช้ที่จะสร้างตั๋วให้ อาจเป็นบัญชีผู้ใช้ใดๆ ก็ได้ แม้แต่บัญชีผู้ใช้ที่ไม่มีอยู่ก็ตาม
- กลุ่ม— นี่คือรายชื่อกลุ่มที่จะเพิ่มลงใน PAC สำหรับบัญชี ตามค่าเริ่มต้น จะมีผู้ดูแลระบบโดเมนด้วย แต่สามารถใช้ชุดกลุ่มที่กำหนดเองแทนได้หากจำเป็น
นี่คือคำสั่งฉบับสมบูรณ์ที่ออกให้เพื่อสร้าง Silver Ticket สำหรับ MSSQLSvc ที่มีสิทธิ์ผู้ดูแลระบบโดเมนในฐานะผู้ใช้ชื่อ FakeUser
ขั้นตอนที่ 3 ผ่านตั๋ว
มีการระบุธง /ptt เพื่อแทรกตั๋วปลอมลงในหน่วยความจำโดยอัตโนมัติ
ขณะนี้ผู้โจมตีมีตั๋ว Kerberos ปลอมสำหรับบัญชี FakeUser:
ด้วยตั๋วนั้นในหน่วยความจำ ฝ่ายตรงข้ามเพียงต้องการวิธีในการออกคำสั่ง SQL กับโฮสต์เป้าหมาย ซึ่งจะรองรับการส่งผ่านตั๋ว พวกเขาสามารถใช้ยูทิลิตี Sqlcmd.exe ที่ Microsoft มอบให้ได้
ดังที่คุณเห็นในคำสั่งข้างต้น ฝ่ายตรงข้ามสามารถสร้างการเชื่อมต่อ SQL ไปยังโฮสต์เป้าหมายได้ ซึ่งมองว่าเป็น JEFFLABFakeUser ตอนนี้พวกเขาเชื่อมต่อกับฐานข้อมูล SQL ด้วยสิทธิ์ผู้ดูแลระบบเต็มรูปแบบในฐานะบัญชีที่ไม่มีอยู่ด้วยซ้ำ! นั่นทำให้การตรวจสอบการกระทำใดๆ ก็ตามของผู้โจมตีทำได้ยากขึ้นมาก และเพื่อให้เข้าใจว่าการเข้าถึงนี้ถูกบุกรุกตั้งแต่แรกอย่างไร
คุณสามารถดูได้โดยดูที่บันทึกความปลอดภัยของเซิร์ฟเวอร์ SQL ว่าจะติดตามเหตุการณ์การเข้าสู่ระบบในฐานะ FakeUser เช่นกัน:
ป้องกันการโจมตีจาก Silver Ticket
การตรวจจับการโจมตี Silver Ticket อาจทำได้ยากมาก เนื่องจากจะข้ามการตรวจสอบสิทธิ์ส่วน TGT ทั้งหมด และไม่สามารถตรวจสอบได้โดยดูที่บันทึกของตัวควบคุมโดเมน การตรวจสอบความผิดปกติในการเข้าสู่ระบบโดยใช้เหตุการณ์การเข้าสู่ระบบในเครื่อง ดังที่แสดงไว้ข้างต้น สามารถช่วยปกป้ององค์กรของคุณได้ แต่ตัวเลือกที่ดีที่สุดคือการบล็อกการโจมตีเหล่านี้โดยบังคับใช้การรักษาความปลอดภัยที่เหมาะสมกับบัญชีบริการ เพื่อไม่ให้ถูกบุกรุกตั้งแต่แรก




