จากกระแสของแนวคิดการทดสอบและประเมินความปลอดภัยของระบบด้วยการจำลองการโจมตีตามพฤติกรรมของภัยคุกคาม หรือในชื่ออย่างเป็นทางการคือการทดสอบเจาะระบบแบบ Intelligence-lead (iPentest) ในวันนี้ทีม Intelligent Response จะมานำเสนอและทดสอบใช้งานอีกหนึ่งโครงการโอเพนซอร์สที่น่าสนใจซึ่งช่วยในการประเมินความปลอดภัยของระบบในเบื้องต้นได้ โดยโครงการนี้เป็นผลงานจากบริษัท Guardicore ซึ่งมีชื่อว่า Infection Monkey ครับ
การใช้เครื่องมือหรือวิธีการใดๆ ที่นำเสนอในบทความมีจุดประสงค์เพื่อการทดสอบและประเมินความปลอดภัยระบบ ทีม Intelligent Response และบริษัท ไอ-ซีเคียว จำกัด ขอปฏิเสธความรับผิดชอบหากมีการเนื้อหาของบทความไปใช้เพื่อสร้างความเดือดร้อนหรือกระทำผิดตามบทบัญญัติซึ่งระบุไว้ในพระราชบัญญัติว่าด้วยการกระทำความผิดเกี่ยวกับคอมพิวเตอร์ พ.ศ. 2550
ทำความรู้จักแนวคิดของ Automated Pentest ของ Infection Monkey
ก่อนที่เราจะไปดูฟีเจอร์ที่หวือหวาที่สุดของ Infection Monkey ซึ่งก็คือการทำงานโดยอัตโนมัติ ทีม Intelligent Response ต้องขอเล่าแนวคิดและเกร็ดเล็กน้อยเกี่ยวกับแนวคิดของ "ความอัตโนมัติ" ที่เกี่ยวข้องกับการหาและโจมตีช่องโหว่ความปลอดภัยกันซักหน่อยครับ
ไอเดียการพัฒนาแพลตฟอร์มแบบ Infection Monkey หรือการนำเอากระบวนการแบบอัตโนมัติเข้าไปครอบขั้นตอนของการประเมินความปลอดภัยระบบนั้นแท้จริงไม่ใช่เรื่องใหม่และมีมานานแล้วในแพลตฟอร์มประเมินความปลอดภัยระบบต่างๆ อาทิ
- ในรุ่นโอเพนซอร์สของ Metasploit หรือที่รู้จักกันในชื่อ Metasploit Framework นั้น ผู้ทดสอบเจาะระบบสามารถเรียกใช้โมดูลระดับตำนานชื่อ db_autopwn ซึ่งจะดำเนินการเรียกใช้โค้ดสำหรับโจมตีช่องโหว่โดยอัตโนมัติ อ้างอิงจากผลลัพธ์การสแกนด้วย NMAP หรือ Nessus หรือโมดูล Browser Autopwn ซึ่งถูกพัฒนาเพื่อเลียนแบบการโจมตีในรูปแบบ Drive-by download ได้
- เฟรมเวิร์คระดับตำนานสมัยยุค Backtrack "Armitage" ก็มีฟีเจอร์ Automatic Exploitation ซึ่งใช้แนวคิดเดียวกับ db_autopwn ในการโจมตีโดยอัตโนมัติด้วยเช่นกัน
- (ไม่ได้ขายของ) ในยุคต่อมาฟีเจอร์ Auto-Exploitation ได้กลายมาเป็นฟีเจอร์หากินสำคัญของ Metasploit Pro ซึ่งผมเชื่อว่าเราจะได้ยินฟีเจอร์นี้ทุกครั้งจากฝ่ายขายของทาง Rapid 7
ข้อแตกต่างที่เห็นได้อย่างชัดเจนของ Infection Monkey กับกลุ่มซอฟต์แวร์แบบโอเพนซอร์สด้านบนนั้นคือความสามารถในการทำ Automated Post Exploitation เบื้องต้น หรือกระบวนการหลังจากที่ผู้โจมตีสามารถเข้ายึดระบบได้สำเร็จ อาทิ Internal discovery และ Pivoting/Lateral movement ซึ่งในกรณีของกลุ่มซอฟต์แวร์อื่นๆ นั้น อาจจำเป็นต้องมีการใช้ฟีเจอร์เสริมหรือการพัฒนาส่วนเสริมเพื่อให้เกิดการทำงานในลักษณะนี้อีกทีหนึ่ง
ทั้งนี้ด้วยความที่เป็นโครงการโอเพนซอร์ส ความสามารถของ Infection Monkey จึงถูกจำกัดด้วยเทคนิคในการ Gaining access และ Post exploitation ซึ่งเราจะพูดถึงเทคนิคและช่องโหว่ซึ่ง Infection Monkey มีการใช้งานกันต่อในส่วนต่อไปครับ
การทำงานเบื้องต้นของ Infection Monkey
โครงการ Infecion Monkey จะประกอบไปด้วยสองโมดูลหลักๆ คือ Monkey และ Monkey Island
โมดูล Monkey คือไฟล์ประเภทไบนารีซึ่งถูกพัฒนาเพื่อทำหน้าที่เป็นมัลแวร์และสามารถแพร่กระจายได้ ในการใช้งานนั้นผู้ทดสอบจะต้องการเอ็กซีคิวต์เพื่อให้โมดูล Monkey เริ่มการทำงานที่ระบบเป้าหมาย โดยโมดูล Monkey จะเริ่มทำกระบวนการ Internal discovery และ Pivoting/Lateral movement โดยอัตโนมัติตามการตั้งค่า ในรุ่นล่าสุดของ Infection Monkey (1.6.3) ตัวโมดูลจะรองรับการทำงานเฉพาะในระบบปฏิบัติการ Windows (32-bit และ 64-bit) และ Linux (32-bit และ 64-bit)
โมดูล Monkey Island จะเป็นเว็บแอปพลิเคชันซึ่งทำหน้าที่เป็นเซิร์ฟเวอร์ Command & Control ซึ่งจะคอยแสดงสถานะและควบคุมการทำงานของ Monkey โดยผู้ทดสอบสามารถตรวจสอบและหยุดการทำงานของ Monkey ได้ผ่านหน้าแดชบอร์ด เมื่อดำเนินการจนเสร็จสิ้น เราจะทดสอบตรวจสอบ Security Report ได้จากโมดูลนี้ด้วย
สำหรับในรุ่นล่าสุด ผู้ทดสอบสามารถติดตั้ง Monkey Island ได้ทั้งในแพลตฟอร์มของ VMware, AWS, รูปแบบ container, GCP, Azure, Windows Server และแพ็คเกตสำหรับลินุกซ์ซึ่งใช้ Debain-based package managerpenetration testing
สำหรับในการใช้งานนั้น ผู้ทดสอบสามารถเริ่มใช้งานได้ตามขั้นตอนที่ Infection Monkey กำหนดไว้ ได้แก่
- ติดตั้งเซิร์ฟเวอร์ Monkey Island
- ตั้งค่ารูปแบบการทำงานของโมดูล Monkey
- เลือกให้ Monkey เริ่มทำงานที่เซิร์ฟเวอร์ Monkey Island หรือระบบที่ต้องการ
- นั่งดูผลลัพธ์การทำงานผ่าน Infection Map
- เมื่อการทำงานเสร็จสิ้น ตรวจสอบปัญหาซึ่งพบได้จากหน้า Security Report
เราสามารถแอบดูการทำงานของ Monkey จากเป้าหมายซึ่งเรานำโมดูลไปรัน โดยจะพบกับบันทึกการทำงานของโมดูลในการค้นหาระบบอื่นๆ, ทำการเก็บข้อมูลและพยายามโจมตีระบบด้วยช่องโหว่ที่มากับแพลตฟอร์มครับ
การตั้งค่าการทำงานของ Monkey และการใช้งานช่องโหว่
เราสามารถกำหนดการทำงานหรือฟีเจอร์ของโมดูล Monkey ได้ตามรายการดังต่อไปนี้
- Exploit user/password list หรือรายการของชื่อบัญชีและรหัสผ่านซึ่งจะถูกใช้ในการขั้นตอนของการ Gaining access
- Distance from Island คือจำนวน Hop ของระบบซึ่ง Monkey จะสามารถกระโดดและแพร่กระจายไปได้
- Network segmentation/exclusion คือรายการของหมายเลขไอพีแอดเดรสหรือ subnet ซึ่งจะถูกยกเว้นจากการพยายามเข้าถึง
- Custom post breach command คือรายการของคำสั่งทั้งในระบบ Linux/Windows ซึ่งจะถูกเอ็กซีคิวต์หลังจากที่ Monky สามารถเข้าถึงระบบได้สำเร็จ
- TCP scanner คือการตั้งค่าเกี่ยวกับการทำงานในขั้นตอน Discovery ทั้งรูปแบบการสแกนและรายการพอร์ต พอร์ตที่จะตรวจสอบว่าเป็นเซิร์ฟเวอร์ HTTP หรือไม่
- Exploits คือรายการของโค้ด/วิธีในการโจมตีช่องโหว่และการตั้งค่าต่างๆ ซึ่งจะใช้ในกระบวนการ Gaining access ได้แก่ Exploiter สำหรับ SMB, WMI, MSSQL, RDP, MS08-067, SSH, ShellShock, SambaCry, ช่องโหว่ ElasticGroovy, ช่องโหว่ Struts2, ช่องโหว่ Oracle Web Logic และช่องโหว่ Hadoop/Yarn
ประเมินการทดสอบด้วย Security Report
เมื่อกระบวนการ Infection เสร็จสิ้น ผู้ทดสอบสามารถตรวจสอบการทำงานรวมไปถึงการค้นพบช่องโหว่ได้จากฟีเจอร์ Securty Report
โดยในตัวอย่างของ Security Report ด้านบนนั้น Infection Monkey จะมีการระบุว่าสามารถโจมตีด้วยช่องโหว่ ShellShock ด้านในระบบใดบ้าง พร้อมข้อมูลสำหรับยืนยันตัวตนซึ่งสามารถขโมยมาได้จากระบบต่างๆ ด้วย
สรุป
เรามองว่า Infection Monkey เป็นแพลตฟอร์มที่ใช้งานได้ง่ายและมีประสิทธิภาพมากพอในการทดสอบและประเมินความปลอดภัยในบางสภาพแวดล้อม ด้วยรายการของช่องโหว่ที่เป็นที่รู้จักและมีผลกระทบค่อนข้างสูง และฟีเจอร์ในการแพร่กระจายโดยอัตโนมัติ ทำให้ Infection Monkey เป็นอีกหนึ่งแพลตฟอร์มที่น่าสนใจในการทดสอบและพัฒนาต่อครับ
ขอให้สนุกกับการแฮกนะครับ 🙂
You must be logged in to post a comment.