ซอฟต์แวร์รับประกันว่ามีข้อผิดพลาด โค้ดในซอฟต์แวร์อาจมีหลายพันบรรทัด และความผิดพลาดของมนุษย์หมายความว่าอย่างน้อยบางบรรทัดจะไม่ครบถ้วนตามที่ตั้งใจไว้ วงจรชีวิตการพัฒนาซอฟต์แวร์เป็นกระบวนการที่ออกแบบมาเพื่อพยายามลดปัญหาเหล่านี้ให้เหลือน้อยที่สุดโดยการทดสอบอย่างสม่ำเสมอ
ปัญหาคือการทดสอบมักทำโดยนักพัฒนาซึ่งอาจเรียนรู้วิธีการเขียนโค้ดบางอย่าง แต่อาจไม่ได้เรียนรู้วิธีปฏิบัติในการเข้ารหัสที่ปลอดภัย แม้ในระบบที่ผ่านการทดสอบอย่างละเอียดแล้ว การให้ผู้สังเกตการณ์จากภายนอกเข้ามาดูและนำมุมมองใหม่เข้ามาสามารถช่วยระบุปัญหาใหม่ได้
วิธีทั่วไปที่ทำคือผ่านการทดสอบการเจาะ ซึ่งโดยทั่วไปจะย่อเป็นการทดสอบแบบเพนเทสต์ สิ่งนี้เกี่ยวข้องกับการจ้างแฮ็กเกอร์มืออาชีพที่มีจริยธรรม เพนเทสเตอร์ เพื่อตรวจสอบระบบและค้นหาปัญหาด้านความปลอดภัย
เคล็ดลับ:มันคือ "เพนเทสต์" และ "เพนเทสเตอร์" ไม่ใช่ "การทดสอบด้วยปากกา" เพนเทสเตอร์ไม่ทดสอบปากกา “การทดสอบด้วยปากกา” เป็นที่ยอมรับมากกว่า “การทดสอบด้วยปากกา” เล็กน้อย แต่โดยทั่วไปแล้วควรหลีกเลี่ยงเช่นกัน
เป้าหมายของ Pentest
เป้าหมายของการทดสอบคือการระบุช่องโหว่ด้านความปลอดภัยทั้งหมดในระบบที่กำลังทดสอบและรายงานไปยังลูกค้า อย่างไรก็ตาม โดยปกติแล้ว การนัดหมายจะค่อนข้างจำกัดเวลาตามต้นทุน หากบริษัทมีเพนเทสเตอร์หรือทีมเพนเทสต์ภายใน พวกเขาอาจทำงานให้กับบริษัทอย่างถาวร ถึงกระนั้น บริษัทจำนวนมากที่มีขนาดดังกล่าวก็มีระบบมากมายที่ต้องได้รับการทดสอบ ซึ่งรวมถึงผลิตภัณฑ์ที่ขายและระบบธุรกิจของบริษัท
ดังนั้นพวกเขาจึงไม่สามารถใช้เวลาทั้งหมดไปกับการทดสอบสิ่งใดสิ่งหนึ่งได้ หลายบริษัทต้องการจ้างบริษัทภายนอกเพื่อดำเนินการทดสอบ ซึ่งยังคงมีเวลาจำกัดตามต้นทุน ต้นทุนเกิดจากข้อเท็จจริงที่ว่าเพนเทสต์เป็นกระบวนการที่ต้องใช้แรงงานคนมาก และชุดทักษะนั้นขาดตลาด
โดยปกติแล้ว เพนเทสต์จะถูกกำหนดขอบเขตตามกรอบเวลาที่กำหนด สิ่งนี้ทำโดยพิจารณาจากเป้าหมายที่เป็นปัญหาและควรใช้เวลานานเท่าใดจึงจะมั่นใจอย่างสมเหตุสมผลว่าพบทุกสิ่ง เส้นเวลาในการค้นหาช่องโหว่โดยทั่วไปจะเป็นเส้นโค้งรูประฆัง พบไม่มากนักในทันทีที่ผู้ตรวจสอบดูรอบ ๆ แอปพลิเคชัน จากนั้นการค้นพบส่วนใหญ่สามารถทำได้ภายในระยะเวลาที่กำหนดก่อนที่จะลดลง ในบางจุด ค่าใช้จ่ายในการใช้เวลามากขึ้นในการค้นหาก็ไม่คุ้มกับโอกาสที่ไม่มีอะไรให้ค้นหา
บางครั้งราคาที่เสนอสำหรับเวลาที่แนะนำก็มากเกินไป ในกรณีนี้ การทดสอบอาจเป็นแบบ “กรอบเวลา” นี่คือที่ที่ลูกค้ายอมรับว่าพวกเขาไม่ได้ทดสอบมากเท่าที่แนะนำ แต่ต้องการให้ผู้ทดสอบทำดีที่สุดเท่าที่จะทำได้ในกรอบเวลาที่สั้นลง โดยทั่วไป ข้อมูลนี้จะรวมไว้เป็นคำเตือนในรายงาน
กระบวนการด้วยตนเอง
มีเครื่องมือบางอย่างสำหรับทำการทดสอบความปลอดภัยโดยอัตโนมัติ สิ่งเหล่านี้มีประโยชน์ อย่างไรก็ตาม พวกเขามักจะมีอัตราบวกปลอมและลบปลอมสูง ซึ่งหมายความว่าคุณต้องใช้เวลาตรวจสอบปัญหาต่างๆ โดยรู้ว่าอาจไม่ครอบคลุมทั้งหมด เครื่องมือเหล่านี้ส่วนใหญ่จะมองหาตัวบ่งชี้เฉพาะ เช่น ซอฟต์แวร์เวอร์ชันที่มีช่องโหว่ที่รู้จักหรือฟังก์ชันที่มีช่องโหว่ที่รู้จัก อย่างไรก็ตาม มีหลายวิธีที่จะทำให้สิ่งเหล่านี้ไม่เป็นปัญหาจริงหรือบรรเทาลงได้ในทางปฏิบัติ
ช่องโหว่ด้านความปลอดภัยอาจมารวมกันจากชิ้นส่วนที่ดูเหมือนไม่มีพิษมีภัยมากมาย วิธีที่ดีที่สุดในการระบุสิ่งนี้คือการใช้ความพยายามของมนุษย์ Pentesters ใช้เครื่องมือ แต่รู้วิธีตีความผลลัพธ์ ตรวจสอบด้วยตนเอง และดำเนินการด้วยตนเองด้วยตนเอง ความพยายามด้วยตนเองนี้แยกการทดสอบเพนเทสต์ออกจากการสแกนช่องโหว่หรือการประเมินช่องโหว่
ประเภทของเพนเทสต์
โดยปกติแล้ว เพนเทสต์จะเกี่ยวข้องกับการทดสอบผลิตภัณฑ์ทั้งหมดเมื่อนำไปใช้จริง เป็นการดีที่จะเกิดขึ้นในสภาพแวดล้อมการผลิตจริง อย่างไรก็ตาม วิธีนี้ใช้ไม่ได้ผลเสมอไป ประการแรก มีความกลัวว่าการทดสอบอาจทำให้เป้าหมายออฟไลน์ได้ โดยทั่วไปแล้วความกลัวนี้ไม่มีมูลความจริง โดยทั่วไป Pentests จะไม่สร้างทราฟฟิกเครือข่ายมากเกินไป อาจเทียบเท่ากับผู้ใช้ที่ใช้งานอยู่สองสามคน นอกจากนี้ Pentesters จะไม่จงใจทดสอบปัญหาประเภทการปฏิเสธการให้บริการ โดยเฉพาะอย่างยิ่งในสภาพแวดล้อมการใช้งานจริง แต่โดยทั่วไปแล้วพวกเขาจะรายงานปัญหาการปฏิเสธบริการที่น่าสงสัยเพื่อให้ลูกค้าตรวจสอบด้วยตนเอง
นอกจากนี้ ยังเป็นที่น่าสังเกตว่าหากระบบเชื่อมต่อกับอินเทอร์เน็ต ระบบจะอยู่ภายใต้ "การทดสอบฟรี" อย่างต่อเนื่องจากแฮ็กเกอร์หมวกดำตัวจริงและบ็อตของพวกเขา อีกเหตุผลหนึ่งในการหลีกเลี่ยงสภาพแวดล้อมการใช้งานจริงคือปัญหาความเป็นส่วนตัวของข้อมูลผู้ใช้จริง Pentesters เป็นแฮ็กเกอร์ที่มีจริยธรรมภายใต้ NDA และสัญญา แต่ถ้ามีสภาพแวดล้อมการทดสอบและคล้ายกัน ก็สามารถใช้ได้
เคล็ดลับ: “การทดสอบฟรี” เป็นวิธีตลกขบขันในการอ้างถึงการถูกโจมตีจากกลุ่มหมวกดำบนอินเทอร์เน็ต
Pentests สามารถดำเนินการกับระบบเทคโนโลยีโดยทั่วไป เว็บไซต์และโครงสร้างพื้นฐานเครือข่ายเป็นประเภทการทดสอบที่พบบ่อยที่สุด คุณยังได้รับการทดสอบ API การทดสอบ "ไคลเอ็นต์แบบหนา" การทดสอบมือถือ การทดสอบฮาร์ดแวร์ และอื่นๆ
ความหลากหลายในธีม
ตามความเป็นจริงแล้ว ฟิชชิ่ง OSINT และแบบฝึกหัดของทีมสีแดงมีความเกี่ยวข้องกันแต่แตกต่างกันเล็กน้อย คุณน่าจะทราบดีถึงภัยคุกคามของฟิชชิง การทดสอบบางอย่างเกี่ยวข้องกับการทดสอบเพื่อดูว่าพนักงานตอบสนองต่ออีเมลฟิชชิ่งอย่างไร ด้วยการติดตามว่าผู้ใช้โต้ตอบหรือไม่โต้ตอบกับฟิชชิ่งอย่างไร คุณจะสามารถเรียนรู้วิธีปรับแต่งการฝึกอบรมฟิชชิ่งในอนาคตได้
OSINT ย่อมาจาก Open Source INTELLIGENCE การทดสอบ OSINT หมุนรอบการคัดลอกข้อมูลที่เปิดเผยต่อสาธารณะเพื่อดูว่าสามารถรวบรวมข้อมูลที่มีค่าได้อย่างไรและนำไปใช้อย่างไร ซึ่งมักเกี่ยวข้องกับการสร้างรายชื่อพนักงานจากที่ต่างๆ เช่น LinkedIn และเว็บไซต์ของบริษัท สิ่งนี้สามารถช่วยให้ผู้โจมตีสามารถระบุบุคคลระดับสูงที่อาจเป็นเป้าหมายที่ดีสำหรับการโจมตีแบบสเปียร์ฟิชชิง ซึ่งเป็นฟิชชิงที่ปรับแต่งให้เหมาะกับผู้รับแต่ละรายโดยเฉพาะ
การมีส่วนร่วมของทีมสีแดงมักจะเจาะลึกมากขึ้นและสามารถเกี่ยวข้องกับส่วนประกอบอื่น ๆ บางส่วนหรือทั้งหมด นอกจากนี้ยังสามารถรวมถึงการทดสอบความปลอดภัยทางกายภาพและการปฏิบัติตามนโยบายความปลอดภัย ในด้านนโยบาย สิ่งนี้เกี่ยวข้องกับวิศวกรรมสังคม ที่พยายามโน้มน้าวให้คุณเข้าไปในอาคาร สามารถทำได้ง่ายๆ เช่น ออกไปสังสรรค์ในพื้นที่สูบบุหรี่และกลับเข้าไปพร้อมกับผู้สูบบุหรี่หลังจากเลิกสูบบุหรี่
มันสามารถวางตัวเป็นทางการหรือขอให้ใครมาเปิดประตูให้คุณในขณะที่ถือถาดถ้วยกาแฟ ในด้านความปลอดภัยทางกายภาพ อาจเกี่ยวข้องกับการพยายามเจาะระบบทางกายภาพ ทดสอบความครอบคลุมของกล้อง คุณภาพของการล็อก และอื่นๆ การมีส่วนร่วมของทีมสีแดงมักจะเกี่ยวข้องกับทีมของผู้คนและสามารถใช้เวลานานกว่าการทดสอบปกติ
ทีมสีแดง
แบบฝึกหัดของทีมสีแดงอาจดูมีจริยธรรมน้อยกว่าแบบฝึกหัดมาตรฐาน ผู้ทดสอบกำลังหลอกล่อพนักงานที่ไม่สงสัย กุญแจสำคัญคือพวกเขาได้รับอนุญาตจากผู้บริหารของบริษัท ซึ่งโดยปกติแล้วมาจากระดับคณะกรรมการบริษัท นี่เป็น เหตุผล เดียวที่ทีมสีแดงสามารถบุกเข้าไปได้ แม้ว่าจะไม่มีอะไรยอมให้มีความรุนแรงก็ตาม การฝึกแบบทีมสีแดงจะไม่พยายามทำให้เจ้าหน้าที่รักษาความปลอดภัยบาดเจ็บหรือล้มคว่ำ เพื่อหลีกเลี่ยงหรือหลอกล่อพวกเขา
เพื่อป้องกันไม่ให้ทีมสีแดงถูกจับกุม โดยทั่วไปแล้วพวกเขาจะถือสัญญาที่ลงนามแล้วพร้อมลายเซ็นจากสมาชิกคณะกรรมการผู้อนุมัติ หากถูกจับได้ สามารถใช้เพื่อพิสูจน์ว่าพวกเขาได้รับอนุญาต แน่นอนว่าบางครั้งสิ่งนี้ถูกใช้เป็นการบลัฟสองครั้ง ทีมสีแดงสามารถถือใบอนุญาตได้ 2 ใบ ใบจริงและใบปลอม 1 ใบ
เมื่อถูกจับได้ ในตอนแรกพวกเขาส่งมอบสลิปอนุญาตปลอมเพื่อดูว่าพวกเขาสามารถโน้มน้าวใจความปลอดภัยได้หรือไม่ว่าถูกต้องตามกฎหมายแม้ว่าจะไม่ใช่ก็ตาม เพื่อจุดประสงค์นั้น มักจะใช้ชื่อจริงของคณะกรรมการบริษัท แต่รวมหมายเลขโทรศัพท์ยืนยันที่จะส่งไปยังทีมงานสีแดงอีกคนที่สรุปข้อมูลเพื่อยืนยันเรื่องราวปก แน่นอนว่าหากการรักษาความปลอดภัยเห็นสิ่งนี้ จะมีการมอบใบอนุญาตตัวจริงให้ สิ่งนี้อาจได้รับการปฏิบัติด้วยความสงสัยอย่างมาก
ขึ้นอยู่กับว่าทีมสีแดงถูกจับได้อย่างไร อาจเป็นไปได้ที่จะทำการทดสอบต่อไป โดยถือว่าพวกเขาได้หลบเลี่ยงเจ้าหน้าที่รักษาความปลอดภัยที่จับได้ อย่างไรก็ตาม เป็นไปได้ว่าข้อมูลระบุตัวตนของผู้ทดสอบอาจ "ถูกลบ" ซึ่งโดยพื้นฐานแล้วจะเป็นการลบข้อมูลเหล่านั้นออกจากการทดสอบตัวต่อตัวเพิ่มเติมใดๆ ณ จุดนี้ สมาชิกในทีมคนอื่นอาจแลกเปลี่ยนโดยมีหรือไม่มีการแจ้งความปลอดภัย
บทสรุป
เพนเทสต์คือการมีส่วนร่วมซึ่งขอให้ผู้เชี่ยวชาญด้านความปลอดภัยทางไซเบอร์ทดสอบความปลอดภัยของระบบคอมพิวเตอร์ การทดสอบเกี่ยวข้องกับการค้นหาและตรวจสอบช่องโหว่ด้วยตนเอง อาจใช้เครื่องมืออัตโนมัติเป็นส่วนหนึ่งของสิ่งนี้ เมื่อสิ้นสุดการทดสอบ จะมีการรายงานรายละเอียดปัญหาที่พบและให้คำแนะนำในการแก้ไข
สิ่งสำคัญคือรายงานนี้ไม่ได้เป็นเพียงผลลัพธ์อัตโนมัติจากเครื่องมือเท่านั้น แต่ทั้งหมดได้รับการทดสอบและตรวจสอบด้วยตนเอง สามารถทดสอบระบบคอมพิวเตอร์ ฮาร์ดแวร์ เครือข่าย แอปพลิเคชัน หรืออุปกรณ์ใดๆ ได้ ทักษะที่จำเป็นสำหรับแต่ละทักษะนั้นแตกต่างกันไป แต่มักจะเสริมกัน