ผู้ดูแลระบบเงาคือผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบซึ่งมีสิทธิ์ที่ละเอียดอ่อนซึ่งให้สิทธิ์ระดับผู้ดูแลระบบแก่พวกเขาอย่างมีประสิทธิภาพ สิทธิ์ดังกล่าวอาจรวมถึงการเข้าถึงทรัพยากรโดยตรงหรือความสามารถในการแก้ไขการตั้งค่าของผู้ใช้รายอื่น (เช่น การรีเซ็ตรหัสผ่าน การได้รับสิทธิ์ "เขียนคุณสมบัติทั้งหมด" เป็นต้น) ในโพสต์บล็อกนี้ เราจะมุ่งเน้นไปที่ประเภทที่สอง
มีสาเหตุหลายประการที่ทำให้บัญชีผู้ดูแลระบบเงาถูกสร้างขึ้น: ความผิดพลาดของมนุษย์ การจัดการที่ผิดพลาด ความต้องการชั่วคราว หรือโดยผู้โจมตีที่สามารถเข้าถึงและต้องการซ่อนการแสดงตน
ผู้ดูแลระบบเงาเป็นความเสี่ยงที่ทราบกันดีสำหรับผู้ให้บริการข้อมูลประจำตัว (IdP) เกือบทุกราย รวมถึง Microsoft Active Directory (AD), ไมโครซอฟต์ Entra ID (เดิมชื่อ Azure AD) และ Okta และอื่นๆ อีกมากมาย ที่นี่ เราจะหารือเกี่ยวกับผู้ดูแลระบบเงาภายใน AD
ทีมระบุตัวตนค้นหาบัญชีผู้ดูแลเงาอย่างต่อเนื่องเพื่อเพิกถอนสิทธิ์ของผู้ดูแลระบบ แต่กระบวนการนี้มักจะใช้เวลานานและน่าเบื่อ โดยเฉพาะอย่างยิ่งหากองค์กรมีผู้ดูแลเงาจำนวนมาก ทีมงานของฉันและฉันอยากรู้เกี่ยวกับการกำหนดค่าสิทธิ์ทั่วไปที่อาจทำให้ผู้ใช้กลายเป็นผู้ดูแลเงา รวมถึงวิธีที่ดีที่สุดในการระบุและบรรเทาพวกเขา
ในบล็อกโพสต์นี้ เราจะใช้เครื่องมืออัลกอริทึมและทฤษฎีกราฟเพื่อนำเสนอวิธีการใหม่ในการเปิดเผยผู้ดูแลเงาภายในองค์กร วิเคราะห์และแก้ไข
ทำความเข้าใจกับภัยคุกคามของ Shadow Admins
A บัญชีผู้ใช้ กลายเป็นผู้ดูแลระบบเงาหากมีสิทธิ์ที่เหนือกว่าบัญชีผู้ดูแลระบบที่มีอยู่ ในทำนองเดียวกัน บัญชีอื่นๆ ที่มีสิทธิ์เหนือกว่าผู้ดูแลระบบเงาก็จะกลายเป็นผู้ดูแลระบบเงาเช่นกัน
ตัวอย่างเช่น ถ้าอลิซมีบัญชีปกติที่มีสิทธิ์ของผู้ดูแลระบบ เธอจะเป็นผู้ดูแลเงา ถ้าบ็อบได้รับอนุญาตอย่างเข้มงวดเหนืออลิซ เขาจะกลายเป็นผู้ดูแลเงาด้วย
ห่วงโซ่ของสิทธิ์นี้ทำให้เกิดความยุ่งยากมากมาย และความเป็นจริงแสดงให้เห็นว่าผู้ดูแลเงาจำนวนมากมีมากกว่าหนึ่งวิธีในการทำให้ตัวเองเป็นผู้ดูแลระบบ สิ่งที่ทำให้บัญชีผู้ดูแลเงาทั้งท้าทายและเสี่ยงคือการที่พวกเขาไม่ได้รับการตรวจสอบหรือดูแล และกิจกรรมของพวกเขาอาจถูกตรวจไม่พบ
สนใจเรียนรู้เพิ่มเติมเกี่ยวกับ shadow admins และวิธีที่พวกมันคุกคามองค์กรของคุณ? อ่านโพสต์บล็อกนี้: https://www.silverfort.com/blog/the-hidden-dangers-of-shadow-admins/
ดังนั้น เพื่อแก้ปัญหาความเสี่ยงของผู้ดูแลระบบเงา เราจำเป็นต้องเพิกถอนการอนุญาตบางอย่างที่มากเกินไป ซึ่งต้องใช้เวลาและความพยายาม ดังนั้นจึงสมเหตุสมผลที่องค์กรใด ๆ ที่มีผู้ดูแลเงาหลายคนมีเป้าหมายที่จะแก้ไขจำนวนผู้ดูแลเงาสูงสุดโดยใช้ความพยายามน้อยที่สุด (เช่น การเปลี่ยนแปลงสิทธิ์ขององค์กร)
ในการทำเช่นนี้อย่างมีประสิทธิภาพ เราสามารถดึงข้อมูลเกี่ยวกับสิทธิ์ของผู้ใช้และกลุ่มในชุดสิทธิ์การแก้ไขที่เลือกและตรวจสอบได้ เมื่อใช้บันทึก เราจะสามารถสร้างสายการอนุญาตและรับรายละเอียดเกี่ยวกับผู้ดูแลเงาในองค์กรได้
ในองค์กรใดๆ ที่มีผู้ดูแลเงา จะมีสายการอนุญาตหลายสายที่สร้างเส้นทางเชื่อมต่อระหว่างผู้ใช้และบัญชีการดูแลระบบที่พวกเขาสามารถเข้าควบคุมได้
เป้าหมายที่เราตั้งไว้สำหรับองค์กรคือการเปลี่ยนแปลงสิทธิ์ให้น้อยที่สุดเท่าที่จะเป็นไปได้ ในขณะที่แก้ไขส่วนใหญ่ของผู้ดูแลระบบเงา คำถามคือ: สิทธิ์เหล่านั้นคืออะไร?
ดังนั้น เรามาอธิบายปัญหากันใหม่: ระบุชุดสิทธิ์ K ที่เหมาะสมที่สุด ซึ่งหากยกเลิก จะลดจำนวนผู้ดูแลเงาสูงสุด
ตอนนี้เรามีคำจำกัดความนี้แล้ว เราสามารถแปลงปัญหาเป็นภาพโดยใช้ทฤษฎีกราฟ เราทำสิ่งนี้โดยแสดงทุกบัญชีหรือกลุ่มเป็นโหนดในกราฟ และทุกการอนุญาตเป็นขอบกำกับระหว่างโหนดเหล่านี้ สิ่งนี้ทำให้ห่วงโซ่การอนุญาตทั้งหมดของเราสามารถแสดงและเชื่อมต่อบนกราฟเดียวพร้อมกับสิทธิ์และคุณสมบัติที่เกี่ยวข้อง
เมื่อใช้ข้อมูลที่อยู่ในสายการอนุญาต เราสามารถระบุได้ว่าผู้ดูแลระบบและกลุ่มผู้ดูแลระบบขององค์กรคือใคร และทำเครื่องหมายเหล่านั้นในกราฟของเรา เนื่องจากเป็นเป้าหมายสุดท้ายของผู้ดูแลระบบเงา
ในขั้นตอนนี้ กราฟดังกล่าวจะมีลักษณะดังนี้:
ต่อไป เราจะเขียนคำชี้แจงปัญหาอีกครั้ง: ค้นหาชุดของขอบ K ที่เมื่อนำออก จะตัดการเชื่อมต่อผู้ดูแลเงาให้มากที่สุดเท่าที่จะเป็นไปได้จากส่วนที่เหลือของกราฟ (กล่าวคือ บรรเทาพวกเขา)
ทำลายแนวทาง
เมื่อมองแวบแรก เราจะเห็น Directed Acyclic Graph (DAG) ซึ่งแสดงถึงเครือข่ายที่เชื่อมต่อห่วงโซ่การอนุญาตต่างๆ ของเรา แต่ลองคิดถึงการแสดงกราฟและการเชื่อมต่อ ตลอดจนวิธีการที่แต่ละเอนทิตีสามารถถือครองสิทธิ์เหนืออีกอันหนึ่งได้ ในทางหนึ่ง เราสามารถจินตนาการว่าผู้ดูแลเงา "เคลื่อนที่" ในกราฟของเราจากโหนดหนึ่งไปยังอีกโหนดหนึ่งบนขอบของมัน บางทีผู้ดูแลระบบเงามากกว่าหนึ่งรายอาจสามารถเคลื่อนไหวดังกล่าวได้
ตอนนี้ลองจินตนาการว่าผู้ดูแลเงาทั้งหมดในองค์กรเริ่มเคลื่อนที่ไปยังโหนดสีแดงของเรา (ผู้ดูแลระบบ) จากนั้นในแต่ละเส้นทาง ผู้ดูแลเงาจำนวนหนึ่งจะ "ไหล" ไปยังเป้าหมายสุดท้ายของพวกเขา
โปรดทราบว่า ไม่สำคัญว่าผู้ดูแลเงาหลายคนจะไหลไปยังโหนดเดียวบนเส้นทางของพวกเขา หรือโหนดนั้นเป็นบัญชีเดียว นี่เป็นเพราะเมื่อผู้ดูแลเงาทั้งหมดไปถึงจุดนั้น จะมีเพียงบัญชีเดียวเท่านั้นที่สามารถดำเนินการต่อในเส้นทางได้
โดยวิธีการนี้ทำให้นึกถึง "ปัญหาการไหล" ที่มีชื่อเสียง ซึ่งเป็นสถานการณ์เกี่ยวกับไดนามิกของของไหลที่เรามีระบบที่ของเหลวไหลผ่านท่อจากโหนดต้นทางสองสามโหนดไปยังโหนดปลายทางสองสามโหนด
ตอนนี้เรามาดูทฤษฎีบทที่เรียกว่า “การตัดต่ำสุด–การไหลสูงสุด” ค่านี้ระบุว่าปริมาณการไหลสูงสุดในระบบที่ผ่านจากโหนดต้นทางไปยังโหนดปลายทางเท่ากับน้ำหนักรวมของขอบในการตัดขั้นต่ำ
เราจะกำหนดสิ่งต่อไปนี้:
- ความสามารถในการไหลของขอบ — สำหรับทุกขอบจะมีขีด จำกัด สูงสุดสำหรับการไหลผ่าน
- การอนุรักษ์การไหล — การไหลเข้าไปยังโหนดต้องเท่ากับการไหลขาออก
- ตัด — พาร์ติชันของโหนดที่จะแบ่งเครือข่ายออกเป็นสองส่วน:
- การตัดไม่สามารถมีทั้งโหนดต้นทางและโหนด sink
- น้ำหนักของการตัดจะเท่ากับผลรวมของความจุของคมตัด
เป้าหมายของอัลกอริทึมคือการค้นหาโฟลว์สูงสุดในเครือข่ายจากโหนดต้นทางไปยังโหนดซิงค์ ในขณะที่ลดความสามารถในการตัดที่แยกออกจากกัน อัลกอริทึมจะเพิ่มการไหลซ้ำๆ ตามเส้นทางจากต้นทางไปยังอ่างล้างจานจนกว่าจะไม่พบเส้นทางการเสริมอีกต่อไป
การแก้ปัญหาการไหลโดยใช้ทฤษฎีบทนี้ทำให้เราได้วิธีแก้ปัญหาการตัดขั้นต่ำซึ่งเทียบเท่ากับการระบุชุดของขอบ K ที่จะลบ เนื่องจากปัญหาความเป็นคู่คือการไหลสูงสุดที่เป็นไปได้ผ่านระบบ หมายความว่าเรากำลังค้นหาการตัดที่ลด น้ำหนักของการตัดในขณะที่ขยายพาร์ติชันให้ใหญ่ที่สุด กราฟผลลัพธ์ที่จะใช้อัลกอริทึมจะมีลักษณะดังนี้:
ผลลัพธ์และข้อสรุป
เมื่อใช้วิธีการของเรากับกลุ่มองค์กรมากกว่า 30 องค์กร เราพบว่าค่ามัธยฐานคือบัญชีที่ใช้งานอยู่ประมาณ 30 บัญชีต่อองค์กรที่ระบุว่าเป็นผู้ดูแลระบบเงา โดยมีองค์กรเพียงไม่กี่แห่งที่มีบัญชีดังกล่าวมากถึง 1,000 บัญชี
การใช้อัลกอริทึมส่งผลให้มีการตัดชุดของขอบน้อยที่สุด ซึ่งหากลบออก จะลดทอนผู้ดูแลระบบเงาส่วนใหญ่ด้วยการเปลี่ยนแปลงเล็กน้อยในการอนุญาตขององค์กร
ผลลัพธ์มีลักษณะดังนี้:
โดยเฉลี่ยแล้ว เราสามารถแก้ปัญหาประมาณ 70% ของผู้ดูแลระบบเงาขององค์กรได้ด้วยอัลกอริทึมซ้ำๆ เพียงครั้งเดียว นอกจากนี้ สิ่งที่จำเป็นเพื่อให้บรรลุเป้าหมายนั้นคือการเพิกถอนสิทธิ์โดยเฉลี่ยสามรายการ!
ซึ่งหมายความว่าเราสามารถจัดเตรียมชุดขอบที่แน่นอน (เช่น การอนุญาต) ที่องค์กรควรพิจารณาเพิกถอน ซึ่งจะทำให้ผู้ดูแลเงาลดลงได้ดีที่สุดโดยใช้ความพยายามน้อยที่สุด
คิดปิด
ผู้ดูแลเงาเป็นภัยคุกคามร้ายแรงที่มักถูกมองข้าม และไม่สามารถบรรเทาได้ง่ายๆ ด้วยวิธีการแบบดั้งเดิม การมีห่วงโซ่ของสิทธิ์ที่นำไปสู่ผู้ดูแลโดเมนไม่ได้มีการบันทึกไว้อย่างดีเสมอไป
หนึ่งในรูปแบบทั่วไปที่เราสังเกตเห็นคือ ในความเป็นจริงแล้ว มีหลายวิธีสำหรับผู้ใช้ในการเป็นผู้ดูแลเงา วิธีการอื่นทำได้ง่ายกว่ามาก แต่ไม่สามารถจัดการกับรูปแบบดังกล่าวและให้ผลลัพธ์ที่ไม่เหมาะสม
โซลูชันของเราตรวจสอบสิทธิ์ที่ได้รับในสภาพแวดล้อม IdP และสามารถสร้างชุดสิทธิ์ที่ดีที่สุดแบบไดนามิกเพื่อแก้ไขเพื่อลดจำนวนผู้ดูแลระบบเงาด้วยการดำเนินการเพียงเล็กน้อย
วิธีการเช่นนี้สามารถช่วยระบุชุดของการอนุญาตที่เหมาะสมที่สุดเพื่อแก้ไขโดยใช้ความพยายามน้อยที่สุด รับปัญหาจริงจากโดเมนความปลอดภัยทางไซเบอร์และแสดงภาพโดยใช้อัลกอริทึมที่รู้จักเพื่อหาทางออก