ผู้ป้องกันที่คิดเป็นรายการ, ผู้โจมตีที่คิดเป็นกราฟ (2015)
(github.com/JohnLaTwC)- การป้องกันเครือข่ายเริ่มจากการแจกแจงสินทรัพย์และจัดลำดับความสำคัญ แต่พื้นผิวการโจมตีจริงถูกก่อรูปขึ้นเป็น กราฟการพึ่งพาด้านความปลอดภัย ระหว่างสินทรัพย์
- ผู้โจมตีไม่ได้โจมตีสินทรัพย์ที่แข็งแกร่งที่สุดแบบตรง ๆ แต่จะมองหา เส้นทางอ้อมไปยังสินทรัพย์มูลค่าสูง ผ่านเวิร์กสเตชันหรือเส้นทางการดูแลระบบที่มีการป้องกันอ่อนกว่า
- ในเครือข่าย Windows ปัจจัยอย่างวิธีการล็อกออน, ข้อมูลรับรอง, Kerberos TGT, NTLM hash, รหัสผ่านผู้ดูแลระบบภายในเครื่องที่ใช้ร่วมกัน, และสคริปต์ล็อกออน ล้วนสามารถกลายเป็นเส้นเชื่อมของกราฟได้
- ผู้ป้องกันต้องเปลี่ยนรายการสินทรัพย์ให้เป็นกราฟ และลดการเชื่อมต่อด้วย การแบ่งส่วนโครงสร้างพื้นฐาน·ไซโลข้อมูลรับรอง·การลดสิทธิ์ให้น้อยที่สุด·การยืนยันตัวตนสองขั้นตอน·การหมุนเวียนข้อมูลรับรอง
- ผู้โจมตีไม่ได้เรียนรู้จากไดอะแกรมเก่า ๆ แต่เรียนรู้โครงสร้างพื้นฐานจริงทีละส่วน ดังนั้นผู้ป้องกันจะได้เปรียบก็ต่อเมื่อเข้าใจความสัมพันธ์การเชื่อมต่อของเครือข่ายปัจจุบันได้แม่นยำกว่า
สิ่งที่การป้องกันแบบมองเป็นรายการมองข้าม
- การป้องกันเครือข่ายจำนวนมากผิดทางตั้งแต่ก่อนจะสัมผัสกับผู้โจมตี เพราะเข้าใจสนามรบผิด
- ผู้ป้องกันมุ่งเน้นการปกป้องสินทรัพย์ การจัดลำดับความสำคัญ และการจัดเรียงตามเวิร์กโหลดกับฟังก์ชันทางธุรกิจ
- บริการจัดการระบบ, ฐานข้อมูล inventory สินทรัพย์, และสเปรดชีต BCDR เต็มไปด้วย รายการสินทรัพย์
- แต่สิ่งที่ผู้ป้องกันต้องรับมือจริง ๆ ไม่ใช่รายการสินทรัพย์แต่ละรายการ หากเป็น กราฟ ที่สินทรัพย์เชื่อมถึงกันด้วยความสัมพันธ์ด้านความปลอดภัย
- ผู้โจมตีจะลงจอดที่จุดใดจุดหนึ่งของกราฟด้วยเทคนิคอย่าง spearphishing แล้วมองหาระบบที่อ่อนแอเพื่อเคลื่อนที่ภายในเครือข่าย
- กราฟนี้ไม่ได้ถูกกำหนดมาจากภายนอก แต่ถูกสร้างขึ้นโดยผู้ป้องกันเองที่ออกแบบและปฏิบัติการเครือข่าย
กราฟภายในเครือข่ายหมายถึงอะไร
- กราฟของเครือข่ายคือชุดของการพึ่งพาด้านความปลอดภัยที่สร้าง คลาสสมมูล ระหว่างสินทรัพย์
- ปัจจัยที่ส่งผลต่อกราฟแบ่งกว้าง ๆ ได้สี่อย่าง
- การออกแบบเครือข่าย
- วิธีบริหารจัดการเครือข่าย
- ซอฟต์แวร์และบริการที่ใช้ในเครือข่าย
- พฤติกรรมของผู้ใช้
- ในกรณีของ domain controller เส้นทางการดูแลระบบที่อ่อนแอเพียงเส้นเดียวจะลดระดับความปลอดภัยของสินทรัพย์มูลค่าสูงทั้งหมด
- Bob ดูแล domain controller จากเวิร์กสเตชัน
- หากเวิร์กสเตชันนั้นไม่ได้รับการปกป้องเทียบเท่า domain controller ตัว domain controller เองก็อาจถูกเจาะได้
- บัญชีอื่นที่มีสิทธิ์ผู้ดูแลระบบบนเวิร์กสเตชันของ Bob ก็สามารถเจาะ Bob และ domain controller ได้เช่นกัน
- ผู้ดูแลเหล่านั้นล็อกออนเข้าเครื่องอื่นอย่างน้อยหนึ่งเครื่องตามหน้าที่งาน
- หากผู้โจมตีเจาะเครื่องใดเครื่องหนึ่งในนั้นได้ ก็จะเกิดเส้นทางไปยัง domain controller
Six Degrees of Mallory: การเคลื่อนที่ด้านข้างตามกราฟ
- ผู้โจมตีสามารถซุ่มรออยู่ในเครื่องที่เจาะได้ และใช้เครื่องมือ dump รหัสผ่านอย่าง mimikatz เพื่อรอการล็อกออนของบัญชีมูลค่าสูง
- คลัสเตอร์ทางซ้ายของกราฟตัวอย่างคือ Terminal Server เครื่องเดียวที่มีผู้ใช้หลายร้อยคนใช้งาน
- หากผู้โจมตีเจาะเครื่องนี้ได้ เมื่อเวลาผ่านไปก็จะสามารถ dump ข้อมูลรับรองของผู้ใช้จำนวนมากได้
- การค้นหากราฟเผยให้เห็นหลายเส้นทางที่มุ่งไปยัง High Value Asset
- การเจาะ Terminal Server ทำให้ User46 และ User128 ถูกเจาะได้ด้วย
- User46 เป็นผู้ดูแลของ Machine2821 และ User128 เป็นผู้ดูแลของ Machine115
- หากเจาะเวิร์กสเตชันเหล่านั้นได้ ก็จะเจาะ User1 และ User34 ได้
- ทั้ง User1 และ User34 ต่างเป็นผู้ดูแลของ High Value Asset
- เพื่อปกป้อง High Value Asset องค์ประกอบทั้งหมดที่สินทรัพย์นี้พึ่งพาต้องได้รับการปกป้องอย่างเข้มงวดเทียบเท่า High Value Asset และองค์ประกอบเหล่านี้รวมกันเป็น คลาสสมมูล หนึ่งเดียว
ความสัมพันธ์ที่สร้างการพึ่งพาด้านความปลอดภัย
- ในเครือข่าย Windows เมื่อผู้ใช้ทำการล็อกออนบางแบบ เช่น Interactive หรือ Terminal Server หากโฮสต์ฐานถูกเจาะ ข้อมูลรับรองของผู้ใช้ก็จะเสี่ยงต่อการถูกขโมย
- สิ่งที่เสี่ยงไม่ได้มีแค่ข้อมูลรับรอง แต่ยังรวมถึงสิ่งเทียบเท่า single sign-on อย่าง Kerberos TGT และ NTLM hash
- การพึ่งพาด้านความปลอดภัยยังถูกสร้างขึ้นจากความสัมพันธ์ด้านการดูแลระบบในชีวิตประจำวันด้วย
- บัญชีผู้ดูแลระบบภายในเครื่องที่ใช้รหัสผ่านร่วมกัน: หลังจาก dump รหัสผ่านผู้ดูแลระบบภายในเครื่องจากระบบหนึ่งแล้ว ก็สามารถนำไปใช้กับโฮสต์อื่นที่ใช้รหัสผ่านเดียวกันได้
- ไฟล์เซิร์ฟเวอร์และเซิร์ฟเวอร์อัปเดตซอฟต์แวร์ที่เก็บสคริปต์ล็อกออนซึ่งถูกเรียกใช้กับผู้ใช้จำนวนมาก
- พรินต์เซิร์ฟเวอร์ที่ส่งไดรเวอร์เครื่องพิมพ์ไปยังเครื่อง client เมื่อใช้งาน
- ผู้ออกใบรับรองที่ออกใบรับรองซึ่งใช้ได้กับการล็อกออนด้วยสมาร์ตการ์ด
- ผู้ดูแลฐานข้อมูลที่สามารถรันโค้ดในคอนเท็กซ์ของเซิร์ฟเวอร์ฐานข้อมูลซึ่งทำงานในฐานะผู้ใช้ที่มีสิทธิ์สูง
- ความสัมพันธ์ทางอ้อมก็เป็นส่วนหนึ่งของกราฟด้วย
- เมื่อเครื่องที่มีช่องโหว่ถูกเจาะ ผู้โจมตีสามารถสร้างเส้นเชื่อมใหม่ในกราฟได้
- หากผู้ใช้มีบัญชีที่ใช้รหัสผ่านเดียวกันในสองโดเมนที่ไม่มีความสัมพันธ์ trust กัน ก็จะเกิดเส้นเชื่อมที่ซ่อนอยู่ระหว่างโดเมน
วิธีป้องกันโดยลดกราฟ
- ขั้นแรกของผู้ป้องกันคือเปลี่ยนรายการสินทรัพย์ให้เป็น กราฟ เพื่อทำให้เครือข่ายมองเห็นได้ชัดเจน
- จากนั้นต้องหาเส้นเชื่อมที่ไม่ต้องการซึ่งทำให้การเชื่อมต่อขยายตัวอย่างมาก แล้วตัดแต่งกราฟ
- ใช้การแบ่งส่วนโครงสร้างพื้นฐานและไซโลข้อมูลรับรอง
- ลดจำนวนผู้ดูแลระบบ และลดสิทธิ์ให้น้อยที่สุดด้วยเทคนิค Just-In-Time / Just Enough
- ใช้การยืนยันตัวตนสองขั้นตอนเพื่อลดความเสี่ยงของการเคลื่อนที่ผ่านเส้นเชื่อมบางประเภท
- ใช้วิธีหมุนเวียนข้อมูลรับรองที่แข็งแรงเพื่อเตรียมรับมือการถูกเจาะบัญชีผู้ใช้
- ทบทวนความสัมพันธ์ forest trust
สร้างแบบจำลองความจริงที่ดีกว่าผู้โจมตี
- ผู้ป้องกันไม่ควรยกความได้เปรียบให้ผู้โจมตีเมื่อทำให้สนามรบมองเห็นเป็นภาพ
- ผู้ป้องกันสามารถมีข้อมูลครบถ้วนเกี่ยวกับเครือข่ายของตนเอง แต่ผู้โจมตีต้องเรียนรู้เครือข่ายทีละส่วน
- ผู้โจมตีไม่ได้ศึกษาจาก mental model ที่ไม่ถูกต้อง, ระบบ inventory สินทรัพย์ที่ไม่สมบูรณ์, หรือไดอะแกรมเครือข่ายเก่า ๆ แต่ศึกษา โครงสร้างพื้นฐานที่มีอยู่ในปัจจุบัน
- ผู้ป้องกันเองก็ต้องบริหารเครือข่ายโดยยึดความเป็นจริงเป็นหลัก จึงจะเข้าใกล้แนวคิดของผู้ป้องกันที่พร้อมรับมือ
อ่านเพิ่มเติม
- Heat-ray: Combating Identity Snowball Attacks Using Machine Learning, Combinatorial Optimization and Attack Graph: J. Dunagan, D. Simon, A. Zheng
- Two Formal Analyses of Attack Graphs: S. Jha, O. Sheyner, J. Wing
- Using Model Checking to Analyze Network Vulnerabilities: P. Ammann, R. Ritchey
- A Graph-Based System for Network-Vulnerability Analysis: C. Phillips, L. Swiler
- Automated Generation and Analysis of Attack Graphs: J. Haines, S. Jha, R. Lippman, O. Sheyner, J. Wing
- Modern Intrusion Practices: Gerardo Richarte
- Attack Planning in the Real World: Jorge Lucangeli Obes, Gerardo Richarte, Carlos Sarraute
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
โดยปกติผู้โจมตีมีภารกิจเดียว เช่น ขโมยข้อมูลสำคัญ ทำให้เป้าหมายไร้เสถียรภาพ หรือแรนซัมแวร์ และสามารถสำรวจเจาะลึกได้เท่าที่จำเป็นจนกว่าจะบรรลุภารกิจ
ในทางกลับกัน ฝ่ายป้องกัน ต้องติดตามสัญญาณและเวกเตอร์ภัยคุกคามจำนวนมากพร้อมกัน จึงเลี่ยงไม่ได้ที่จะคิดเป็นรายการ และยังต้องจัดลำดับความสำคัญของสิ่งที่ต้องดำเนินการเพราะข้อกำหนดกำกับดูแลด้วย
ถ้าไม่ใช่การวางฝ่ายป้องกันไว้ตามจุดต่าง ๆ ในกราฟแบบสุ่มเพื่อมองหากิจกรรมที่น่าสนใจ ก็ไม่แน่ใจว่าฝ่ายป้องกันจะ คิดเป็นกราฟ ได้อย่างไร สิ่งที่ผู้เขียนเสนอก็สุดท้ายเป็นเพียงสัญญาณในรายการที่ฝ่ายป้องกันต้องนำไปเทียบตรวจอยู่ดี
เมื่อฝ่ายป้องกันนำวิธีนั้นมาใช้ ก็สามารถระบุการโจมตีที่อาจเกิดขึ้นได้ก่อนที่ Red Team จะลงมือ ทีมที่ฉลาดจะนำเทคนิคของ Red Team เช่นการครอว์ล AWS เป็นกราฟเพื่อหาเส้นทางจากบัญชีมูลค่าต่ำไปยังบัญชีมูลค่าสูง มาใช้ทันที
นี่ไม่ใช่ประเด็นแบบ zero-sum หรือการเปลี่ยนแปลงครั้งใหญ่ แต่ฝ่ายป้องกันก็สามารถคิดให้เหมือนผู้โจมตีมากขึ้น และนำเครื่องมือของผู้โจมตีมาใช้ในการป้องกันบ่อยขึ้นได้
ดังนั้นจึงต้องปกป้องเส้นทางที่นำไปสู่เป้าหมายนั้น ไม่ว่าเส้นทางนั้นจะมีหน้าตาอย่างไร หรือจำกัดอยู่แค่ซอฟต์แวร์หรือไม่ก็ตาม
ผู้โจมตีอาจใช้ช่องโหว่ CVE ทำให้ระบบความบันเทิงอยู่ในภาวะปฏิเสธการให้บริการได้ แต่ก็เป็นคำถามว่าในทางปฏิบัติเรื่องแบบนั้นสำคัญแค่ไหน
การโจมตีจริงส่วนใหญ่ใกล้เคียงกับ “ลองเดินดูว่าหาอะไรได้บ้าง แล้วค่อยว่ากันว่าจะเอาไปใช้อย่างไร” มากกว่า กิจกรรมโจมตีจำนวนมาก เช่น การรวบรวมข่าวกรอง ปฏิบัติการสร้างอิทธิพล และโฆษณาชวนเชื่อ ก็เป็นแบบเดียวกัน
เหตุผลที่ฝ่ายป้องกันใช้รายการก็เพราะต้องจัดการสินทรัพย์หลายร้อยหลายพันรายการพร้อมกัน เมื่อมีสิ่งที่ต้องจัดการจำนวนมาก คุณก็จะทำรายการ ไล่ตรวจรายการนั้น และใช้ เช็กลิสต์
แน่นอนว่าฝ่ายป้องกันก็ควรสร้างกราฟ dependency ด้วย แต่ก่อนอื่นต้องทำรายการก่อน ตรวจว่ารายการนั้นอัปเดตหรือไม่ สมมติฐานเป็นแบบความไว้วางใจแบบจำกัดหรือไม่ และทรัพยากรถูกแยกกั้นหรือไม่ จากนั้นจึงสร้างกราฟ dependency
ฝ่ายป้องกันต้องคิดทั้งรายการและกราฟ พร้อมกับจัดการรายการจำนวนมหาศาล ส่วนผู้โจมตีต้องมองเพียงไม่กี่อย่าง
หากไม่มีอินไซต์ที่จะเปลี่ยนรายการให้เป็นกราฟ สุดท้ายก็จะถือแค่รายการ สินทรัพย์หลัก แล้วไล่อุดเส้นทางการเข้าถึงนับหมื่นแบบที่ตัวเองไม่ได้นึกถึงแบบตีตัวตุ่น
บทความนี้รู้สึกว่าลงลึกเกินไป หรือไม่ก็อาจให้เหตุผลถูกแต่สาเหตุผิด งานของฝ่ายป้องกันไม่ใช่การป้องกันโดยตัวมันเอง
ความปลอดภัยไซเบอร์ไม่ใช่การแข่งขันกีฬาที่มีเป้าหมายชัดเจนและเท่าเทียมกัน พร้อมตำแหน่งที่ผลัดกันรับ แต่เป็น อีเวนต์ข้างเคียง และสิ่งรบกวนถัดจากธุรกิจอื่นที่ฝ่ายป้องกันพยายามทำเป็นงานหลักมากกว่า
ในทางกลับกัน งานทั้งหมดของผู้โจมตีคือการโจมตีระบบ ไม่มีเป้าหมายอื่น เจ้าของรอง หรือข้อพิจารณาอื่นที่จะทำให้การโจมตีอ่อนลง
เหตุผลที่ผู้โจมตีชนะก็เหมือนเหตุผลที่ Microsoft ออกระบบปฏิบัติการได้ดีกว่า Cisco สำหรับ Cisco ระบบปฏิบัติการเป็นเครื่องมือ แต่สำหรับ Microsoft มันคือเป้าหมาย
ยังช่วยอธิบายได้ด้วยว่าทำไมบริษัทแทบไม่ถูกตลาดลงโทษจาก ข้อมูลรั่วไหล
การโจมตีไซเบอร์มีเป้าหมายชัดเจน เช่น การขโมยข้อมูล การขัดขวางบริการ มุมมองนี้อาจใช้ได้กับผู้กระทำที่ยังไม่เชี่ยวชาญซึ่งแค่อยากทำลายและสร้างความปั่นป่วน แต่ถ้าพิจารณา ผู้กระทำระดับรัฐ หรืออาชญากรที่มีแรงจูงใจทางการเงิน ก็ผิดทางไปโดยสิ้นเชิง
บทความนี้กลับรู้สึกว่ายังลงลึกไม่พอด้วยซ้ำ :-)
“รายการ” คือการแทนองค์ประกอบแบบย่อ ส่วน “กราฟ” คือการแทนการทำงานร่วมกันแบบย่อ มุมมองแบบองค์ประกอบคือการวิเคราะห์ ส่วนมุมมองแบบปฏิสัมพันธ์ยังไม่มีคำที่ดีนัก แต่ตามที่บทความว่าไว้ มักกลายเป็น attack surface
ระบบปรับตัวซับซ้อนมีองค์ประกอบและ message bus และประเด็นสำคัญคือ bus นี้เปิดทางให้องค์ประกอบต่าง ๆ ทำงานร่วมกันได้ คุณอาจจับมดทีละตัวได้ แต่ถ้าจะหยุดจริง ๆ ต้องกำจัดความสามารถในการทิ้ง ร่องรอยฟีโรโมน
คงดีถ้ามีคำอย่าง “การวิเคราะห์” สำหรับการทำความเข้าใจวิธีการทำงานร่วมกันด้วย อย่าง Gestaltysis ไหม?
ผมเคยทำงานช่วงสั้น ๆ ที่ บริษัทไซเบอร์ซีเคียวริตี้ แห่งหนึ่ง แต่ตอนนั้นอธิบายเป็นคำพูดไม่ได้ว่าทำไมถึงไม่ชอบผลิตภัณฑ์นั้น และทำไมแนวทางของบริษัทนั้นรวมถึงของอุตสาหกรรมส่วนใหญ่จึงให้ความรู้สึกเหมือนเป็นของปลอมในท้ายที่สุด
ตอนนี้เข้าใจแล้ว เรากำลังสร้างเครื่องมือที่สนับสนุนแนวปฏิบัติที่ไร้ประโยชน์ที่สุดในไซเบอร์ซีเคียวริตี้ นั่นคือ เช็กลิสต์ ระดับองค์กร
แกนกลางของทุกกิจกรรมคือรายการและตารางการทำซ้ำ ต้องโผล่มาเป็นประจำและทำสิ่งที่ต้องทำ
แน่นอนว่าผมเห็นด้วยว่าในขั้น “สิ่งที่ต้องทำ” นั้นจำเป็นต้องมีแนวทางที่ลึกและดีกว่านี้
เพื่อจะพูดว่า “เราทำตามเช็กลิสต์ทุกข้อแล้ว และซอฟต์แวร์รักษาความปลอดภัยก็จับไม่ได้ ดังนั้นไม่ใช่ความผิดของเรา”
ถ้าบริษัทใส่ใจเรื่องความปลอดภัยจริง ๆ ก็คงจ้างเรดทีม แทนที่จะจ่ายเงินให้สแกนเนอร์ไร้ประโยชน์ที่มีอัตราสัญญาณต่อสัญญาณรบกวนต่ำกว่า 1%
ดูวงการการบิน นักบินพึ่งพาเช็กลิสต์เพื่อเอาชีวิตรอด ไม่มีอะไรรับประกันได้ว่าปัญหาจะไม่เกิดขึ้นระหว่างบิน แต่การไม่ทำตามเช็กลิสต์หรือทำแบบไม่ใส่ใจคือการเชื้อเชิญหายนะ เช็กลิสต์แบบนั้นถูกสร้างขึ้นบนประสบการณ์ราคาแพงยาวนานหลายปี
แต่เช็กลิสต์ที่มีอยู่เพียงเพื่อให้พูดได้ว่า “เรามีเช็กลิสต์” หรือไม่ได้ถูกทบทวนและปรับปรุงเป็นประจำให้เข้ากับสภาพจริง ก็ไม่มีความหมาย
หลายบริษัทเข้าใจเรื่องนี้ผิด คิดว่าเช็กลิสต์เองคือความปลอดภัย แต่จริง ๆ แล้วเช็กลิสต์เป็นเพียงเครื่องมือเตือนให้รักษาสิ่งที่เคยทำถูกต้องไว้ต่อไปเท่านั้น เมื่อไหร่ที่ปฏิบัติกับเช็กลิสต์เหมือนเป็นเป้าหมาย เมื่อนั้นก็หลุดทางแล้ว
ในฐานะ penetration tester ผมว่า attacker ก็ไม่ได้จำเป็นต้อง คิดเป็นกราฟ เสมอไป
นอกจาก BloodHound แล้ว ผมนึกเครื่องมือที่ใช้กราฟไม่ค่อยออก
ในเว็บซีเคียวริตี้ก็ไม่เห็นภาพว่า “การคิดเป็นกราฟ” ถูกนำมาใช้ตรงไหน แทนที่จะเป็นแบบนั้น รายการการโจมตีที่ต้องทดสอบกลับใหญ่มาก: https://portswigger.net/web-security/all-topics
และสุดท้ายสิ่งที่อยู่ในรายงาน penetration test ก็ไม่ใช่กราฟ แต่เป็นรายการสิ่งที่ต้องทำ เช่น การเปิดใช้ SMB signing, อย่าใช้บัญชี domain admin เพื่อจัดการทุกเครื่อง และอื่น ๆ
เหตุผลหลักที่วลีนี้ได้รับความนิยมคือมันไปสะกิดอัตตาของชุมชนแฮ็กเกอร์ ประมาณว่า “พวกเราเป็นฝ่ายฉลาด ส่วน defender เอาแต่แตะ Excel sheet”
แต่ก็มีเศษเสี้ยวของความจริงอยู่ Defender อาจใช้เวลามากกับเรื่องที่ไม่สำคัญเท่าไร เช่น มัวแต่ใช้ CIS benchmark กับทุกเซิร์ฟเวอร์ด้วยมือ จนพลาด ผลไม้ที่ห้อยต่ำ ซึ่งจะสร้าง posture ด้านความปลอดภัยที่แข็งแกร่งได้
ในหลายบริษัท defender ก็เป็นเพียง system administrator ที่ไม่รู้ว่าควรโฟกัสเรื่องอะไร
ตัวอย่างที่นึกออกทันทีคือ bug chain การเอาช่องโหว่ระดับ CVSS 4~7 หลายตัวมาผูกกัน อาจเปลี่ยนเป็นผลลัพธ์ระดับ 9.8 อย่างการรันโค้ดจากระยะไกลอย่างสมบูรณ์ได้ การเชื่อมบั๊กแบบนี้โดยเนื้อแท้คือการเดินกราฟผ่านองค์ประกอบของการเจาะระบบ
BloodHound เป็นเครื่องมือที่ยอดเยี่ยม และเป็นเครื่องมือภาพที่ดีสำหรับทำความเข้าใจแนวคิด attack graph แต่มันก็เป็นเพียงส่วนหนึ่งของกระบวนการทำความเข้าใจโดเมนเป้าหมายจากมุมมองของ attacker
เหตุผลที่เว็บ penetration test ไม่มีเครื่องมือเรียบร้อยแบบ BloodHound ก็เพราะ chain ของการเจาะระบบย่อให้เหลือเป็นรูปแบบเครื่องมือได้ยาก AD มีขอบเขตความปลอดภัยที่เข้าใจและเข้ารหัสเป็นรูปธรรมได้ในระดับหนึ่ง แต่ chain ของเว็บแอปมักเฉพาะเจาะจงกับแอปพลิเคชันนั้น ๆ มากกว่ากรอบงานพื้นฐาน
การที่รายงาน penetration test มีรายการอย่าง SMB signing หรือ “อย่าจัดการทุกอย่างด้วยบัญชี DA” ก็เพราะสิ่งเหล่านั้นเป็น node ที่สว่างวาบมากในช่วงต้นของ chain การเจาะระบบ ในโลกจริงก็มักถูกเจาะด้วยรูปแบบนั้นบ่อย ๆ
ไม่ใช่ว่า penetration tester ไม่เข้าใจการคิดเป็นกราฟ แต่ใกล้เคียงกับกรณีที่ node แรกของกราฟแทบจะหมายถึงการถูกเจาะอย่างสมบูรณ์แล้ว จึงไม่มีเหตุผลต้องเดินต่อมากกว่า
นี่ใกล้เคียงกับการนำคำพูดที่ว่า defender ต้องป้องกันทุกจุดเข้า ในขณะที่ attacker แค่หา จุดอ่อนเดียว ก็พอ มาแต่งให้ดูเท่ขึ้น
ตัวอย่างเช่น อาจใช้ honeypot เพื่อป้อน zero-day exploit กลับเข้าไปยังอุปกรณ์ของ attacker ได้หรือไม่ อาจเป็นสิ่งที่ถูกออกแบบไว้โดยตั้งใจในผลิตภัณฑ์ของ Google, Microsoft ฯลฯ ก็ได้
คือไปให้สุดแบบ blackhat โดยยังมี plausible deniability บางอย่าง เช่น ป้อน ransomware กลับให้ attacker ที่ใช้ ransomware
เขียนไปเขียนมาดูเหมือนบริษัทผู้ทรงอำนาจชั่วร้ายใน SF ซึ่งบริษัทแบบนั้นมักถึงขั้นลอบสังหารศัตรูด้วย
ผมเคยทำ incident response และมีประสบการณ์ทั้ง penetration test กับ red team แม้จะเป็นการพูดแบบย่อ ๆ แต่ก็ถูกในระดับหนึ่ง และไม่จำเป็นต้องมองในแง่ลบเท่าที่บทความพูด
การป้องกันประกอบด้วยหลายองค์ประกอบ เช่น การพัฒนา control ที่มีประสิทธิภาพเพื่อลดความเสี่ยงและผลกระทบของเหตุการณ์ความปลอดภัย การระบุการโจมตีและการเจาะระบบ และการตอบสนองต่อเหตุการณ์ รายการมาตรฐานและการตอบสนองทำงานได้ดี
การป้องกันยังรวมถึง การตัดสินใจด้านสถาปัตยกรรม ที่ต้องคิดถึงกราฟเครือข่ายเพื่อออกแบบ control เหล่านี้ด้วย สาขาการป้องกันเองก็หลากหลาย เช่น สถาปัตยกรรม/วิศวกรรม การบริหารความเสี่ยง incident response, application security, การฝึกอบรม, threat intelligence เป็นต้น
สิ่งที่น่าสนใจคือผู้เขียนบอกเป็นนัยว่าปัญหาคือ defender คิดเป็นรายการ แล้วหลังจากนั้นก็นำเสนอรายการของสิ่งที่ควรพิจารณาเพื่อปรับปรุงการป้องกัน
เหตุผลที่ attacker ชนะคือหลังจากหาจุดอ่อนได้แล้ว เขาต้องสำเร็จแค่ครั้งเดียว Defender ต้องป้องกัน ทุกอย่างพร้อมกัน
ดูเหมือนว่าแต่ละเครือข่ายควรมี honeypot อย่างน้อยหนึ่งตัวเพื่อจับผู้บุกรุก เช่น credential คริปโตปลอม, ที่เก็บรหัสผ่านปลอม เป็นต้น