จากกระแสของแนวคิดการทดสอบและประเมินความปลอดภัยของระบบด้วยการจำลองการโจมตีตามพฤติกรรมของภัยคุกคาม หรือในชื่ออย่างเป็นทางการคือการทดสอบเจาะระบบแบบ 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 เป็นอีกหนึ่งแพลตฟอร์มที่น่าสนใจในการทดสอบและพัฒนาต่อครับ
ขอให้สนุกกับการแฮกนะครับ 🙂