Brute force attack คืออะไร ทำไมต้องเขียนบทความนี้ขึ้นมา โดยอธิบายง่ายๆ คือ การสุ่มเดารหัสผ่านของเรา ทั้งการสุ่มเดา username และ Password ที่เราใช้ ยกตัวอย่างการส่มเดารหัส Admin ของ WordPress ของเรา เพื่อจะมายึด Blog ของเรา
จากบทความ JetPack และ Akismet Anti-Spam ซึ่งเป็นการพูดถึงการป้องกันการ Hack WordPress หากต้องการอ่านบทความสามารคลิกไปอ่านได้ที่ JetPack และ Akismet Anti-Spam ของเราโดยป้องกันการ Brute force โดยการสุ่มเดา user และ Password ซึ่งหาก Hacker เดา Password ของเราได้แล้วก็สามารถยึดเครื่องได้เลย
Brute force attack คืออะไร หลักการคือ
ในทาง Computer Security เป็นวิธีการโจมตีด้วยการพยายามสุ่มข้อมูลตามอัลกอริทึมที่ผู้โจมตีคิดค้น หรือ เลือกใช้ เพื่อให้ได้มายังซึ่งข้อมูลสำคัญหรือข้อมูลลับของระบบเป้าหมาย เช่น บัญชีผู้ใช้งาน (username) รหัสผ่าน (password) สำหรับเข้าสู่ระบบ หรือ ในบางครั้งผู้โจมตีอาจใช้เพื่อ สแกนหาไฟล์สำคัญของเว็บไซต์ ซึ่งการโจมตีในลักษณะนี้จะได้ผลกับการตั้งค่าที่คาดเดาง่าย หรือ เป็นค่าตั้ง ต้นของระบบ เช่น การตั้งบัญชีผู้ใช้งานและรหัสผ่านที่ง่ายต่อการคาดเดา
เป็นการเดา password ทุกความเป็นไปได้ของตัวอักษรในแต่ละหลัก
ตัวอย่าง ATM Pin code มีจำนวน 4 หลัก แต่ละหลักสามารถตั้งค่าตัวเลข 0 – 9 ดังนั้น ในแต่ละหลักมีความเป็นไปได้ 10 วิธี เพราะฉะนั้น 4 หลักจึงมีความเป็นไปได้ทั้งหมด 10,000 วิธี….โปรแกรมจะทำการไล่ตัวเลขจาก 0000 ไปจนถึง 9999 ครบทั้งหมื่นวิธี ซึ่งแสดงให้เห็นว่า ในที่สุดจะได้ password ที่ถูกต้อง
ดังนั้น Brute force attack จึงเป็นวิธีที่จะสามารถหา password ที่ถูกต้องได้อย่างแน่นอน เพียงแต่ขึ้นอยู่กับระยะของเวลาของการสุ่มหา จะมากหรือน้อยขึ้นอยู่กับความซับซ้อนของการตั้ง password
เพื่อป้องกันภัย “Password Attack” ควรตั้ง password ให้มีความซับซ้อนเพิ่มมากยิ่งขึ้น โดย password ที่ดีไม่ควรเป็นคำศัพท์อยู่ใน dictionary และควรมีความยาวอย่างน้อย 8 ตัวอักษร, ผสม 3 ใน 4 แบบ และเปลี่ยนเป็นประจำอย่างน้อยทุกๆ 90 วัน (เพื่อป้องกัน Brute force Attack) หากคิด Password ไม่ออก ก็มีบริการ Gen Password อ่านได้ที่บทความ Password Online Generator ช่วยคิดรหัส
เทคนิคการทำ Brute force attack คืออะไรในปัจจุบัน
ในปัจุบันนี้มีบริการ Cloud สำหรับการทำ Brute force attack ให้เช่ากันเลย หากใครติดตามข่าวจะพบว่าส่วนมากทาง FIB และ CIA ของอเมริกาใช้อำนาจพิเศษในการจัดการกับบริการเหล่านี้ ส่วนบริการเหล่านี้ส่วนมากอยู่ที่ไหนก็พอเดาๆกันได้ ส่วนเทคนิคการทำ Password-Cracking สิบอันดับ ที่นิยมนำมาใช้ในหมู่แฮกเกอร์ มีดังนี้
Dictionary Attack
การโจมตีโดยวิธี Dictionary Attack เป็นการสุ่มเดา Password จากไฟล์ที่มีการรวบรวมคำศัพท์ต่างๆ ที่พบอยู่ใน Dictionary และคำศัพท์ที่สามารถพบได้บ่อยครั้ง ซึ่งจัดว่าเป็นวิธีการที่ถูกนำมาใช้กับ Password ของผู้ใช้มากที่สุด นี่ถือว่าเป็นเวอร์ชั่นที่ไม่ต้องใช้ประสบการณ์มากนัก เมื่อเทียบกับเวอร์ชันที่โหดสุดๆ อย่างการโจมตีแบบ Brute Force Attack แต่ก็ยังคงต้องอาศัยแฮกเกอร์ที่ต้องกระหน่ำโจมตีระบบด้วยการทดลองใส่ Password ไปเรื่อยๆ จนกว่าจะทำสำเร็จ
ในกรณีที่คุณคิดว่าการผสมคำต่างๆ เข้าด้วยกัน เช่น “superadministratorguy” จะช่วยป้องกันคุณจากการถูกโจมตีแล้วล่ะก็ ให้คุณลองทบทวนใหม่อีกครั้ง เพราะการโจมตีด้วยวิธี Dictionary Attack สามารถที่จะกำหนดสิ่งนี้ได้ แม้ว่าจะทำให้การ Hack ล่าช้าออกไปเพียงไม่กี่วินาที เท่านั้น
Brute Force Attack
ฟังก์ชั่นนี้ก็จะคล้ายๆ กับการโจมตีด้วยวิธี Dictionary Attack แต่การโจมตีด้วยวิธี Brute Force Attack นั้น ถือได้ว่าเป็นวิธีที่ต้องใช้ทักษะเพิ่มเติมอีกนิดหน่อย เพราะแทนที่จะใช้รายการคำศัพท์ต่างๆ จากที่ได้ทำการรวบรวมไว้ แต่วิธีการโจมตีแบบ Brute Force Attack สามารถสืบหาคำศัพท์ที่ไม่ใช่คำศัพท์จากพจนานุกรมได้ เช่น รหัสผ่านที่มีการผสมระหว่างตัวเลขและตัวอักษร ซึ่งก็หมายความว่า รหัสผ่านที่มีการความต่อเนื่อง อย่างเช่น “aaa1” หรือ “zzz10” ก็อาจจะมีความเสี่ยงจากการโจมตีด้วยวิธี Brute force Attack ได้มากขึ้น
ข้อเสียก็ของวิธีนี้ก็คือ มันทำได้ช้ากว่ามาก โดยเฉพาะเมื่อผู้ใช้ตั้ง Password ที่ยาวขึ้น อย่างไรก็ตามการโจมตีในรูปแบบนี้ มักจะได้รับการสนับสนุนจากประสิทธิภาพการประมวลผลที่เพิ่มขึ้นของเครื่องไม้เครื่องมือต่างๆ เพื่อลดระยะเวลาที่ใช้ในการ Hack ไม่ว่าจะเป็นการกำหนด CPU Resources ให้กับ Task มากขึ้น หรือจะโดยการสร้าง Farm ที่มีการประมวลผลข้อมูลแบบกระจาย (Distributed Processing) คล้ายๆ กับที่นำมาใช้กับกระบวนการขุดสกุลเงินดิจิตอลหรือCryptocurrency Mining นั่นเอง
Rainbow Table Attack
การโจมตีแบบ Rainbow Tables ชื่อนี้อาจจะฟังดูเหมือนไร้พิษภัย แต่จริงๆ แล้วมันเป็นหนึ่งในเครื่องมือที่พบได้ในคลังแสงของแฮ็กเกอร์ ที่มีประโยชน์อย่างไม่น่าเชื่อ เพราะเมื่อรหัสผ่านถูกเก็บไว้ในระบบคอมพิวเตอร์พวกเขาสามารถที่จะถูกแฮช (Hash) โดยใช้การเข้ารหัสแบบ One-way ซึ่งเป็นคุณสมบัติของกระบวนการนี้ และนั่นก็หมายความว่า มีความเป็นไปไม่ได้ที่จะเห็นรหัสผ่านที่ไม่มี Hash ที่เกี่ยวข้อง
พูดง่ายๆ เลยก็คือ ฟังก์ชั่น Rainbow Table เป็นฐานข้อมูลรหัสผ่านที่มีการคำนวณไว้ล่วงหน้าและค่า Hash ที่สอดคล้องกัน โดยสิ่งนี้จะถูกใช้เป็นดัชนีสำหรับ Hash ที่เกี่ยวโยงกับที่พบบนคอมพิวเตอร์ ซึ่งมีการคำนวณล่วงหน้าแล้วใน Rainbow Table ดังนั้น เมื่อเปรียบเทียบกับการโจมตีแบบ Brute Force Attack ที่จะต้องมีการคำนวณค่าต่างๆ เป็นจำนวนมากในระหว่างที่ดำเนินการ Rainbow Table ก็จะถูกย่อให้เหลือเพียงแค่การค้นหาผ่านตาราง ซึ่งวิธีนี้ก็จะใช้เพียงแค่การใช้ความสามารถในการค้นหาข้อมูลเท่านั้น ซึ่งไม่จำเป็นต้องใช้ความสามารถในการคำนวณที่ยุ่งยากแต่อย่างใด
อย่างไรก็ตาม Rainbow Table นั้นเป็นตารางขนาดใหญ่ที่เก็บผลลัพธ์ของการ Hash พวกเขาต้องการพื้นที่เก็บข้อมูลจำนวนมากเพื่อเรียกใช้งาน แต่ตารางดังกล่าวจะไร้ประโยชน์ในทันทีหาก Hash ที่พยายามค้นหานั้นถูกรวมเข้ากับ “Salt” ซึ่งเป็นการเพิ่มตัวอักษรที่สุ่มขึ้นมาและเพิ่มเข้าไปในรหัสผ่านของผู้ใช้ก่อนที่จะนำไป Hash
ก่อนหน้านี้มีการพูดถึง Rainbow Table ที่เกิดจากการเอา Salt มาใส่รวมกับรหัสผ่าน แต่สิ่งเหล่านี้มีขนาดใหญ่มากจนยากที่จะนำมาใช้ได้ในทางปฏิบัติ และดูเหมือนว่าพวกเขาน่าจะใช้ได้เฉพาะกับชุดอักขระสุ่ม (Random Character) ที่กำหนดไว้ล่วงหน้าและ Password Strings ที่มีความยาวต่ำกว่า 12 ตัวอักษร ตามขนาดของตาราง หรืออีกนัยหนึ่งก็เพื่อเป็นการควบคุมแฮกเกอร์ระดับรัฐนั่นเอง
Phishing
มีวิธีง่ายๆ ในการ Hack นั่นก็คือ การถามผู้ใช้งานเกี่ยวกับรหัสผ่านของพวกเขาโดยใช้วิธี Phishing Email ด้วยการหลอกล่อให้ผู้ใช้งานที่ไม่ระแวงสงสัยให้ไปยังหน้าเว็บไซต์หรือบล็อกที่ถูกสร้างขึ้นมา เพื่อเข้าสู่ระบบที่มีการเชื่อมโยงกับบริการต่างๆ ที่แฮ็กเกอร์ต้องการเข้าถึง โดยจะเริ่มต้นจากข้อความที่ดูเหมือนกับว่าเป็นการแจ้งเตือน และร้องขอผู้ใช้ให้แก้ไขปัญหาร้ายแรงต่างๆ ที่อาจจะเกิดขึ้นกับผู้ใช้ ด้วยการกรอกข้อมูลต่างๆ บนหน้าเว็บปลอมนั้น เช่น ชื่อผู้ใช้ รหัสผ่าน หรือแม้แต่ข้อมูลส่วนบุคคลอื่นๆ ซึ่งข้อมูลที่กรอกไว้นั้นจะถูกบันทึกโดยอัตโนมัติ เพื่อนำข้อมูลที่ได้ไปใช้ในการปลอมแปลงหรือสร้างความเสียหายในด้านอื่นๆ และยังรวมถึงการนำข้อมูลที่ได้ไปใช้ในการเข้าถึงระบบโดยไม่ได้รับอนุญาต ด้วยเช่นกัน
จะมีใครที่แอบสงสัยหรือไมว่า ทำไมแฮ็กเกอร์บางคนจะต้องยุ่งยากกับการถอดรหัสผ่านด้วยวิธีอื่นๆ ในเมื่อวิธีนี้ผู้ใช้ก็พร้อมที่จะมอบข้อมูลของพวกเขาให้กับคุณอยู่แล้ว?
Social Engineering
Social Engineering เป็นเทคนิคการหลอกลวงโดยอาศัยช่องโหว่จาก “พฤติกรรมของผู้ใช้” เพื่อให้เหยื่อเปิดเผยข้อมูล โดยไม่มีรูปแบบที่ตายตัว ซึ่งบางครั้งอาจจะไม่จำเป็นต้องใช้เทคโนโลยีขั้นสูงเข้ามาช่วยแต่อย่างใด ซึ่งแนวคิดของวิธีการนี้ก็คือ การโน้มน้าวให้เหยื่อเปิดเผยข้อมูลนอกกล่องจดหมาย (Inbox) ในขณะที่ Phishing นั้นมีแนวโน้มที่จะยึดตามและเข้าสู่โลกแห่งความเป็นจริง
วิธีการที่นิยมนำใช้ในการทำ Social Engineering มากที่สุดก็คือ การโทรหาสำนักงานโดยทำตัวเป็นเจ้าหน้าที่เทคนิคด้านการรักษาความปลอดภัยทางเทคโนโลยี (IT Security) จากนั้นก็เพียงแค่ขอรหัสผ่านการเข้าถึงเครือข่าย (Network Access Password) แล้วคุณจะต้องประหลาดใจ เมื่อรู้ว่าวิธีนี้ใช้ได้ผลบ่อยแค่ไหน นอกจากนี้ บางคนถึงกับต้องลงทุนสวมสูทและติดป้ายชื่อก่อนที่จะเดินเข้าไปในสำนักงานเพื่อสอบถามข้อมูลที่ต้องการกับพนักงานต้อนรับ โดยการตั้งคำถามแบบตัวต่อตัว
Malware
Keylogger หรือ Scraper Screen เป็นมัลแวร์ (Malware) ที่จะขโมยข้อมูลทุกอย่างที่อยู่บนเครื่องของคุณ โดยมันจะบันทึกทุกอย่างที่คุณพิมพ์หรือจับภาพหน้าจอ (Screenshot) ระหว่างกระบวนการล็อกอิน จากนั้นสำเนาของไฟล์เหล่านี้ก็จะถูกส่งต่อไปยังเซิร์ฟเวอร์ของแฮ็กเกอร์ เพื่อคัดกรองเอาข้อมูลที่สำคัญไปใช้ในทางมิชอบ เช่น นำข้อมูลของคุณไปใช้เพื่อข่มขู่ หรือนำรหัสบัตรเครดิตไปซื้อสินค้า เป็นต้น
นอกจากนี้ มัลแวร์บางตัวก็ยังมองหาไฟล์รหัสผ่านของ Web Browser Client ที่มีอยู่และคัดลอกสิ่งเหล่านี้ ถ้าหากเข้ารหัสอย่างเหมาะสมก็จะมีรหัสผ่านที่บันทึกไว้ ซึ่งสามารถเข้าถึงได้ง่ายจากประวัติการเข้าชมของผู้ใช้
Offline Cracking
มันเป็นเรื่องง่ายที่จะจินตนาการว่า Password นั้นปลอดภัย เมื่อระบบที่พวกเขาปกป้องเกิดการปิดล็อคผู้ใช้ หลังจากที่มีการเดาผิดสามหรือสี่ครั้ง ซึ่งเป็นการปิดกั้นแอพพลิเคชั่นการเดาอัตโนมัติ ถ้านั่นเป็นเรื่องจริงก็คงจะดี เพราะการแฮ็กรหัสผ่าน (Password Hacking) ส่วนใหญ่จะเกิดขึ้นแบบออฟไลน์ ซึ่งจะใช้ชุดของ Hash ในไฟล์รหัสผ่านที่ได้รับจากระบบที่ถูกบุกรุก
บ่อยครั้ง ที่เป้าหมายที่กล่าวถึงนี้ถูกบุกรุกผ่านการ Hack ของบุคคลที่สาม ซึ่งหลังจากนั้นก็จะเอื้ออำนวยให้สามารถเข้าถึงเซิร์ฟเวอร์ระบบและไฟล์แฮช (File Hash) ของรหัสผ่านผู้ใช้ที่สำคัญทั้งหมด ดังนั้น โปรแกรม Crack รหัสผ่าน (Password Cracker) จึงสามารถใช้เวลานานเท่าที่พวกเขาต้องใช้ความพยายามและถอดรหัส โดยไม่มีการแจ้งเตือนระบบเป้าหมายหรือผู้ใช้เฉพาะบางราย
Shoulder Surfing
ส่วนใหญ่ Hacker ที่มีความมั่นใจมากๆ ก็จะแต่งตัวเพื่อเลียนแบบพนักงานส่งพัสดุด่วน, ช่างซ่อมเครื่องปรับอากาศหรือผู้ให้บริการในรูปแบบอื่นๆ ที่ทำให้พวกเขาสามารถเข้าถึงตัวอาคารสำนักงานได้นั่นเอง
เมื่อพวกเขาอยู่ในฐานะของบุคคลากรด้านการให้บริการ พวกเขาก็จะได้รับมอบบัตรผ่านสำหรับเดินเที่ยวรอบๆ ได้อย่างอิสระโดยไม่ถูกจำกัด ซึ่งก็เป็นการเปิดโอกาสให้พวกเขาแอบสังเกตรหัสผ่านขณะที่พนักงานคนอื่นๆ กำลังทำการป้อนข้อมูล หรือแอบสังเกตในระยะประชิดขณะที่เหยื่อจดรหัสผ่านในกระดาษแผ่นเล็กๆ ที่ใช้สำหรับจดบันทึกข้อความสั้นๆ หรือ Notepad เป็นต้น
Spidering
แฮกเกอร์ที่มีความชำนาญต่างก็รู้ดีว่ารหัสผ่านขององค์กรจำนวนมากนั้นประกอบไปด้วยคำที่มีความเชื่อมโยงกับธุรกิจของตัวเอง ซึ่งจากการศึกษาสิ่งตีพิมพ์ขององค์กรต่างๆ พบว่า สื่อการขายทางเว็บไซต์หรือแม้แต่เว็บไซต์ของคู่แข่งและชื่อลูกค้าที่มีอยู่ในรายการของพวกเขา สามารถนำมาใช้เป็นอาวุธในการสร้างรายการคำที่กำหนดขึ้นเอง เพื่อใช้ในการโจมตีแบบ Brute Force Attack ได้เช่นกัน
การโจมตีในรูปแบบนี้ แฮ็กเกอร์ที่มีความเชี่ยวชาญจริงๆ พวกเขาจะมีกระบวนการแบบอัตโนมัติและปล่อยให้แอพพลิเคชั่นทำหน้าที่เป็นตัวไล่จับลำดับแต่ละลิงค์เพื่อหาว่า Web Application ทำงานยังไง ไปที่ไหน ทำอะไรบ้าง คล้ายๆ กับที่ใช้ให้ทำโดยเครื่องมือค้นหาระดับแนวหน้าเพื่อระบุคำหลัก, รวบรวมและตรวจสอบรายการให้กับพวกเขา
Guess
แน่นอนว่าโปรแกรม Password Cracker นั้นจัดว่าเป็นโปรแกรมที่ถูกนำมาใช้มากที่สุด เพราะมันคือการคาดการณ์เกี่ยวกับผู้ใช้ เว้นแต่จะได้รหัสผ่านแบบสุ่มที่ถูกสร้างขึ้นโดยใช้ซอฟต์แวร์เฉพาะสำหรับงาน เพราะรหัสผ่านแบบสุ่มที่ผู้ใช้สร้างขึ้นมานั้น ก็ไม่น่าจะทำอะไรในแบบเดียวกันนี้ได้
แต่ด้วยความผูกพันทางอารมณ์ของสมองของเรากับสิ่งที่เราชอบ ก็มีโอกาสที่รหัสผ่านแบบสุ่มเหล่านั้นจะขึ้นอยู่กับความสนใจ, งานอดิเรก, สัตว์เลี้ยง, ครอบครัวและอื่นๆ ที่เกี่ยวข้องกับเรา ซึ่งในความเป็นจริงแล้ว รหัสผ่านมีแนวโน้มที่จะขึ้นอยู่กับทุกสิ่งที่เราชอบพูดคุยบนเครือข่ายสังคมออนไลน์ (Social Network) และยังรวมไปถึงสิ่งต่างๆ ในโปรไฟล์ของเรา นอกจากนี้โปรแกรม Password Cracker ก็มักจะมีแนวโน้มที่จะดูข้อมูลเหล่านี้และบางครั้งก็แก้ไขให้ถูกต้องจากการเดาอย่างมีเหตุผล ในขณะที่พยายามจะถอดรหัส Password ในระดับ Consumer-level โดยไม่ต้องหันไปใช้พจนานุกรม (Dictionary) หรือการโจมตีแบบ Brute Force Attacks แต่อย่างใด
การป้องกันจาก Brute force attack คืออะไร
การป้องกันจาก Brute force attack สำหรับ WordPress ซึ่งในอนาคตจะทยอยลงบทความมาเรื่อยๆ สามารถติดตามกันได้ ส่วนบทความที่เคยลง คือ JetPack และ Akismet Anti-Spam ก็สามารถป้องกัน Brute force password และ Spam comment ได้ระบดับหนึง โดยการป้องกันการ Brute force password พออธิบายได้ดังนี้
- ควรมีการติดตั้ง Firewall ให้กับ ตัว Server เลย เปิด Port เฉาะจำเป็น
- ควรติดติด Web Application Firewall ซึ่งในอนาคนทาง IndyDiary.com จะอธิบายในส่วนนี้เพิ่มเติม
- ควรตั้ง Password ให้คาดเดายาก และไม่ตั้งเป็นชื่อตัวเอง วันเดือน ปี เกิด และ ไม่ควรตั้ง Password ที่อยู่ใน Dictionary
- เปลี่ยน Password ทุกๆ 90 วัน
บทสรุปในอนาคต
บทสรุปของบทความนี้ในอนาคตคือทาง IndyDiary.com จะอธิบายเกี่ยวกับการตั้ง Firewall และ Web Application Firewall และ Plugins ของ WordPress เพื่อป้องกันการ Hack หรือ Brute force Password และ การป้องกันการ DDOS ของตัว Blog รอคอยติดตามกัน