ค้นหาเว็บไซต์

การโจมตีตั๋วเงิน


ในโพสต์แรกของซีรีส์เหล่านี้ เราได้แสดงให้เห็นว่าฝ่ายตรงข้ามสามารถค้นพบบัญชีบริการ 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 ทั้งหมด และไม่สามารถตรวจสอบได้โดยดูที่บันทึกของตัวควบคุมโดเมน การตรวจสอบความผิดปกติในการเข้าสู่ระบบโดยใช้เหตุการณ์การเข้าสู่ระบบในเครื่อง ดังที่แสดงไว้ข้างต้น สามารถช่วยปกป้ององค์กรของคุณได้ แต่ตัวเลือกที่ดีที่สุดคือการบล็อกการโจมตีเหล่านี้โดยบังคับใช้การรักษาความปลอดภัยที่เหมาะสมกับบัญชีบริการ เพื่อไม่ให้ถูกบุกรุกตั้งแต่แรก

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